1、淮南师范学院电气学院电子信息科学与技术专业proteus课程设计 成绩 课程论文 题 目: 数字电子钟的设计 学生姓名: 陈东梅 学生学号: 1008050103 系 别: 电气信息工程学院 专
2、 业: 电子信息科学与技术 年 级: 10 级 任课教师: 沈晓波 电气信息工程学院制 2013年1月 目录 1.数字电子钟的研究背景 1 2.数字电子钟设计的基本理论 2 3.1系统框图 2 4.数字电子时钟的电路设计 3 4.1电路原理图设计 3 4.2数字电子时钟设计的理论推导 3 4.2.1LED数码管的结构 3 4.2.2.AT89C51的使用 6 5 数字电路设计的算法流程图 6 6 数字电子时钟设计的实现 8 6.1
3、 仿真 8 6 结论 12 参考文献 12 附录 12 致谢 16 数字电子时钟设计 学生:陈东梅 指导教师:沈晓波 电气信息工程学院电子信息科学与技术专业专业 1.数字电子钟的研究背景 近年来,电子技术获得了飞速的发展,在其推动下,现代电子产品渗透了社会的各个领域, 大力推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来
4、非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读数快、时间准确显示到秒。而机械 式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”“分”“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在我的设计中采用了LED 数码管显示时、分、秒,以 24 小时计时方式,根据 数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。 在此次设计中,电路 具有显示时间的其本功能,还可以实现对时间的调整。数字钟是其小巧,价格低廉,走时精度高,使用 方便,功能多,便于集成化而受广大消费的喜爱,因此得到了
5、广泛的使用。 2.数字电子钟设计的基本理论 数字电子时钟采用内部硬件定时器来进行计时,计时最小单位sec100为10ms。若sec100每记满100次,表示已经计时1s,则sec100清零且sec加1。如果sec等于60,应将sec清零,同时min加1。如果min等于60,应将min清零并hour加1。如果hour大于23时,应该将hour清零。 用AT89C51对系统进行控制,并加上外部中断按钮K1、K2来实现。 3.数字电子时钟方案设计 3.1系统框图 图1.电子时钟系统的原理框图 4.数字电子时钟的电路设计 4.1电路原理图设计
6、 打开Proteus ISIS,在Proteus ISIS编辑窗口中单击元件列表之上的“p”按钮,添加下表所列的元器件。添加元器件后,绘制原理图。 表1.元件表 单片机AT89C51 电解电容CAP-ELEC 10Uf 瓷片电容CAP22pF 电阻RES 晶振 CRYSTAL11.592MHz 数码管7SEG-MPX8-CA-BLUE 三极管NPN 按钮BUTTON 上拉排阻RESPACK-8 图2 原理图 4.2数字电子时钟设计的理论推导 4.2.1LED数码管
7、的结构 使用的LED数码管是7段LED,a—g呈“日”字形,结构如下图: 图3 LED结构图 图4 LED数码管的连接 表2.字形代码与十六进制数的对应关系 图5 n个LED数码管的连接 4.2.2.AT89C51的使用 单片机应用系统以单片机为核心,同时配以相应的外围电路及软件来完成某种或几种功能的系统。它包括硬件和软件两部分,硬件是系统的躯体,软件是系统的灵魂。 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小
8、芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前 大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。 在本设计中,用了INT0和INT1两个中断,分别作为按钮K1和K2。初始化为TMOD=0x01; TH0=0xDC;TL0=0x00; TR0=1; ET0=1; EX0=1; IT0=0; EX1=1;IT1=0; EA=1;加上排阻RESPACK-8,驱动,电流不够,加排阻增加电流嘛,排阻一般有九个脚,一个脚接VCC,其他脚接单片机I/o口。 5 数字电路设计的算法流程图 图6
9、主流程图 图7按键控制处理流程图 图8定时器中断流程图 图9 显示器流程图 6 数字电子时钟设计的实现 6.1 仿真 打开keil uvision4,执行”Project-New Project”,z在弹出的“creat new project”输入项目名,在新建一个“file”,保存并加入“Group”,在“file”中输入C语言程序,检查错误并改错。再生成“.HEX”文件。 画好原理图并电器检测,生成网络表
10、双击AT89C51,在弹出的“Edit Compeonet”对话框的“Progam File”栏中选择刚刚生产的HEX文件,单击调试按钮,进行调试。如图所示: 图10 仿真图1 图11 仿真图2 点击“Design-Design Explorer”,会看到有没有封装的元件。打开“Ares”封装元件,并加入自己的库里,再回到原理图加封装,“Design-Design Explorer”,元件都封装后。 再生成网络表。执行“Tools-Netlist to ARES”,进入PCB。执行 “File-load netlist”,再执行“Tools-Auto place ”
11、导入元件,再执行“Tools-Auto Router”布线。 图12 PCB布线图 图13 3D效果图 6 结论 总结:在这次课程设计中,遇到很多问题,而且发现对proteus软件不是很熟悉,所以做得很慢,对于单片机的掌握也不是很好,还要多做多练。 参考文献 [1] 陈忠平. 基于Proteus的51系列单片机设计与仿真[P].北京:电子工业出版社,2012.05. [2] 谭浩强. C语言程序设计教程[P].北京:高等教育出版社
12、2006.08.
[3] 谢维成,杨家国.单片机原理与应用及C51程序设计[P].第二版清华大学出版社.2003.
附录
C语言程序:
#include
13、dis_buff[8];
uchar sec100,sec,min,hour;
void delay(uint k)
{
uint m,n;
for(m=0;m 14、];
delay(2);
P2=0x10;
P0=tab[dis_buff[3]];
delay(2);
P2=0x08;
P0=tab[dis_buff[4]];
delay(2);
P2=0x04;
P0=tab[dis_buff[5]];
delay(2);
P2=0x02;
P0=tab[dis_buff[6]];
delay(2);
if(hour>9)
{
P2=0x01;
}
Else
{
P2=0x00;
}
P0=tab[dis_buff[7 15、]];
delay(2);
}
void disp_data(void)
{
dis_buff[7]=hour/10;
dis_buff[6]=hour%10;
dis_buff[5]=16;
dis_buff[4]=min/10;
dis_buff[3]=min%10;
dis_buff[2]=16;
dis_buff[1]=sec/10;
dis_buff[0]=sec%10;
}
void inc_hour(void)
{
hour++;
if(hour>23)
{
hour= 16、0;
}}
void inc_min(void)
{
min++;
if(min>59)
{
min=0;
inc_hour();
}
}
void inc_sec(void)
{
sec++;
if(sec>59)
{
sec=0;
inc_min();
}
}
void int0() interrupt 0
{
delay(150);
if(INT0==0)
{
inc_hour();
}
}
void int1() interrupt 2
{
delay(150);
17、
if(INT1==0)
{
inc_min();
}
}
void timer0() interrupt 1
{
TH0=0xDC;
TL0=0x00;
sec100++;
if(sec100>=100)
{
sec100=0;
inc_sec();
}}
void int_init(void)
{
TMOD=0x01;
TH0=0xDC;
TL0=0x00;
TR0=1;
ET0=1;
EX0=1;
EX1=1;
IT0=0;
IT1=0;
EA=1;
}
v 18、oid main(void)
{
int_init();
P0=0xFF;
P2=0x00 ;
hour=22;
min=59;
sec=0;
sec100=0;
while(1)
{
disp_data();
display();
}
}
致谢
首先必须感谢沈晓波老师在PROTEUS学习过程中对我的辅导,在本学期的学习中了解的不单单是PROTEUS,还弥补了一些在单片机学习过程中的不足。老师给我们补充了很多知识,在做实验过程中,很认真的指导我们,严格的要求我们,而且课堂时间很有趣,总是让人觉得时间好短。老师备课总是很认真,大家都看得出来,沈老师是个负责人的老师。
第 17 页






