带提醒功能的可调时钟含PCB和原理图Word格式文档下载.docx
- 文档编号:19253027
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:182.34KB
带提醒功能的可调时钟含PCB和原理图Word格式文档下载.docx
《带提醒功能的可调时钟含PCB和原理图Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《带提醒功能的可调时钟含PCB和原理图Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
带提醒功能的时钟单片机设计
1、课程设计目的
1.1用单片机课程及已学电子电路知识设计一简易时钟显示装置,包括电路图的设计和制版等。
1.2通过课程设计加深对单片机课程的相关知识的学习和理解。
1.3初步学会一些设计思想和实践技能。
提高学生综合素质。
1.4让学生从设计过程中领悟到相互合作的重要性。
2、课程设计内容
2.1方案设计
2.1.1STC90C52AD的功能参数介绍
STC90C52AD是由宏晶公司生产的高性能八位单片机。
如图一所示。
该芯片采用FLASH存储技术,内部具有8KB字节快闪存存储器,采用DIP封装,是目前在中小系统中应用最为普及的单片机。
STC90C52AD可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。
只要程序长度小于8K,四个I/O口全部提供给用户。
可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,图一
适合许多嵌入式控制领域。
工作电压范围(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。
STC90C52AD芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。
P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。
STC90C52AD单片机为40引脚芯片如图一所示,在本设计中,主要用到P0口、P2口、P1.0口及P3.0、P3.1、P3.2口。
P0口可作为通用I/O口,但须外接上拉电阻,所以在设计显示数码管我们避免了使用P0口这样大大简化了动态显示电路。
P1口:
8位、双向I/0口,内部含有上拉电阻。
P1口可作普通I/O口。
输出缓冲器可驱动四个TTL负载;
用作输入时,先将引脚置1,由片内上拉电阻将其抬到高电平。
P1口的引脚可由外部负载拉到低电平,通过上拉电阻提供电流。
在FLASH并行编程和校验时,P1口可输入低字节地址。
在串行编程和效验时,P1.5/MO-SI,P1.6/MISO和P1.7/SCK分别是串行数据输入、输出和移位脉冲引脚。
P2口:
具有内部上拉电阻的8位双向I/O口。
P2口用做输出口时,可驱动4各TTL负载;
用做输入口时,先将引脚置1,由内部上拉电阻将其提高到高电平。
若负载为低电平,则通过内部上拉电阻向外部输出电流。
在FLASH并行编程和校验时,P2口可输入高字节地址和某些控制信号。
P3口:
具有内部上拉电阻的8位双向口。
P3口用做输出口时,输出缓冲器可吸收4各TTL的灌电流;
用做输入口时,首先将引脚置1,由内部上拉电阻抬位高电平。
若外部的负载是低电平,则通过内部上拉电阻向输出电流。
在本设计中,P3口作为时间设置的4按键输入,因为有上拉电阻,所以可以通过按键直接接地,简化了电路。
在与FLASH并行编程和校验时,P3口可输入某些控制信号。
P3口除了通用I/O口功能外,还有替代功能。
单片机使用宏晶公司支持串口下载程序(ISP)的单片机,为STC90C52AD课程设计配发的小电路板(ISP-MCUBasiccircuit)电路原理图见下图。
该板作为课程设计的核心电路板使用,板上有单片机及附属电路,RS-232通信驱动电路,高低电平测试电路等。
课程设计电路中需要的其他电路在此基础上扩展,通过插孔连接。
课程设计配发的小电路板(ISP-MCUBasiccircuit)电路原理图见下图。
扩展电路在万用板上制作用四位数码管显示小时与分钟,中间那个点用来区分小时与分钟;
每秒用一个LED闪烁一下;
用了4个按键,一个是选择键,一个是加键,一个是减键,
一个是确认键。
时间要精确,整点报时,声音间隔1秒,并且可以调整时间调整位闪烁提示。
扩展电路用到得器件:
4个按键,一个是调节键,一个是设置键,一个是加1键,一个是确定键;
四个DPY7-SEGDP共阴极动态LED;
四个NPN三极管;
8个300欧姆和四个1千欧的电阻;
导线;
一个74LS245进行驱动。
每各引脚可吸收8各TTL的灌电流。
作为输入时,首先应将引脚置1。
P0也可用做访问外部程序存储器和数据存储器时的低8位地址/数据总线的复用线。
在该模式下,P0口含有内部上拉电阻。
在FLASH编程时,P0口接收代码字节数据;
在编程效验时,P0口输出代码字节数据(需要外接上拉电阻)。
2.1.2综合电路设计
采用单片机的TO定时器,使其工作在方式1,产生一个100ms定时中断,循环10次,到1s时,秒加1;
秒到60时,分加1,秒清零;
分到60时,秒清零,分清零。
数码管采用动态显示,一个扫描周期共循环四次,依次显示秒的低位、秒的高位、分的低位、分的高位,每次显示延时4ms。
这期间要将不同的数送到P1口,以及将P2口的不同位置1。
调节时,调用相应的子程序,来完成功能。
2.2单元电路设计
2.2.1电源供电单元
如图二所示
图二
2.2.2动态显示驱动设计
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起。
2.2.3时钟产生单元
52单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如下图所示。
图中,电容器Col,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。
晶振频率的典型值为12MH2,采用6MHz的情况也比较多。
内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。
外部振荡方式是把外部已有的时钟信号引入单片机内。
这种方式适宜用来使单片机的时钟与外部信号保持同步。
2.2.4串口驱动电路单元
DB-9引脚定义
针脚
功能
5
信号地线
1
载波检测
6
数据准备完成
2
接受数据
7
发送请求
3
发送数据
8
发送删除
4
数据终端准备完成
9
振铃指示
如图五所示,MAX232是RS-232收发器,用于实现TTL电平与微机串口的RS-232电平信号之间的转换。
采用单+5V电源供电,数据传输速率为120kbit/s。
2.2.5蜂鸣器电路单元
另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的
数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms。
2.2.7按键电路单元2.2.8译码单元
其功能介绍如下:
BI:
4脚是消隐输入控制端,当BI=0时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:
3脚是测试输入端,当BI=1,LT=0时,译码输出全为1,不管输入DCBA状态如何,七段均发亮,显示“8”。
它主要用来检测数码管是否损坏。
LE:
锁定控制端,当LE=0时,允许译码输出。
LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
A1、A2、A3、A4、为8421BCD码输入端。
a、b、c、d、e、f、g:
为译码输出端,输出为高电平1有效。
2.3系统调试
硬件调试时可先检查印制板及焊接的质量情况,在检查无误后可通电检查LED显示器的点亮状况。
若亮度不理想,可以调整P1口的电阻大小,一般情况下取200Ω电阻即可获得满意的亮度效果。
实验室制作时,可结合示波器测试晶振及P1,P2端口的波形情况进行综合硬件测试分析。
硬件调试:
硬件调试是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试:
是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
第四步:
联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试:
是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
可以利用仿真器加以调试,对系统单个单元进行调试,当单元电路成功后,在对整个程序调试,最后在用CPU芯片调试。
2.4系统分析
通过软件编程,将相应的端口赋成变量的形式。
分别通过调用中断子程序,动态显示子程序,时间调整子程序,整点报时子程序等来控制各端口的输出,以达到理想的效果。
2.5系统设计
2.5.1程序流程图
如图
主程序
是
否返回
是
响10s
2.6系统实施
最后本次课设实现了简易时钟显示,可以实现整点报时,可以调整小时,分钟的显示位及调整位的闪烁。
2.7C语言程序:
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharmin,scd,a_min,a_scd,cnt=0,tiao_cnt=0,set_cnt=0,time_flag=1,buzzer_flag;
inttiao_flag=0,set_flag=0,a_cnt=0;
sbitKey_tiao=P3^2;
sbitKey_set=P3^3;
sbitKey_add=P3^4;
sbitKey_start=P3^5;
sbitwei_1=P2^0;
sbitwei_2=P2^1;
sbitwei_3=P2^2;
sbitwei_4=P2^3;
sbitbuzzer=P3^6;
sbitled=P3^7;
voidmy_delay10nums(uinti)
{
unsignedcharj;
for(i;
i>
0;
i--)
for(j=255;
j>
j--);
}
voiddelay(uintz)
{
intx,y;
for(x=z;
x>
0;
x--)
for(y=1;
y>
y--);
}
voidsmg_show(ucharmin,ucharscd)
{
if(tiao_flag!
=1)
{
//秒低位
wei_1=1;
wei_2=1;
wei_3=1;
wei_4=1;
if(set_flag)
P1=a_scd%10;
else
P1=scd%10;
wei_3=1;
wei_4=0;
delay(50);
}
=2)
//秒高位
P1=a_scd/10;
P1=scd/10;
wei_3=0;
//分低位
=3)
wei_1=1;
P1=a_min%10;
P1=min%10;
wei_2=0;
=4)
//分高位
P1=a_min/10;
P1=min/10;
wei_1=0;
voidKeyin()
if(Key_tiao==0)
{
my_delay10nums(10);
if(time_flag)
time_flag=0;
set_flag=0;
if(tiao_flag==0)tiao_flag=1;
elseif(tiao_flag==1)tiao_flag=2;
elseif(tiao_flag==2)tiao_flag=3;
elseif(tiao_flag==3)tiao_flag=4;
elseif(tiao_flag==4)tiao_flag=1;
while(!
Key_tiao);
my_delay10nums(5);
}
if(Key_set==0)
set_flag=1;
while(!
Key_set);
if(Key_add==0)
if((tiao_flag==1)||(tiao_flag==-1))
if(set_flag)
a_scd=a_scd+1;
if(a_scd%10==0)a_scd=a_scd-10;
else
scd=scd+1;
if(scd%10==0)scd=scd-10;
elseif((tiao_flag==2)||(tiao_flag==-2))
a_scd=a_scd+10;
if(a_scd>
60)a_scd=a_scd%10;
scd=scd+10;
if(scd>
60)scd=scd%10;
elseif((tiao_flag==3)||(tiao_flag==-3))
a_min=a_min+1;
if(a_min%10==0)a_min=a_min-10;
min=min+1;
if(min%10==0)min=min-10;
elseif((tiao_flag==4)||(tiao_flag==-4))
a_min=a_min+10;
if(a_min>
60)a_min=a_min%10;
min=min+10;
if(min>
60)min=min%10;
Key_add);
if(Key_start==0)
//while(!
Key_start);
tiao_flag=0;
time_flag=1;
voidinit_timer0()
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
voidmain()
init_timer0();
//初始化定时器0
smg_show(0,0);
while
(1)
Keyin();
//按键事件
smg_show(min,scd);
voidtimer0()interrupt1
tiao_cnt++;
if(tiao_cnt==2)
{
tiao_cnt=0;
tiao_flag=-tiao_flag;
set_cnt++;
if(set_cnt==2)
set_cnt=0;
set_flag=-set_flag;
cnt++;
if(cnt==10)
{
cnt=0;
//led=~led;
if(time_flag)
scd++;
if(scd==60)
{
scd=0;
min++;
if(min==60)
{
min=0;
}
}
if((set_flag==0)&
&
(a_min==min)&
(a_scd==scd))
buzzer=0;
//闹钟时刻到报警
buzzer_flag=1;
a_cnt=0;
//闹钟时间
if(buzzer_flag)
a_cnt++;
led=~led;
if(a_cnt>
10)//闹钟时间
a_cnt=0;
buzzer=1;
buzzer_flag=0;
led=1;
}
}
三、总结(自己写)
四、参考文献
[1]权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7(3):
17-18.
[2]张毅刚.单片机原理及应用.高等教育出版社,2003
[3]苏家键等.单片机原理及应用技术.北京:
高等教育出版社,2004
[4]钟睿.MCS-51
单片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 提醒 功能 可调 时钟 PCB 原理图