资源描述
淮南师范学院电气学院电子信息科学与技术专业proteus课程设计
成绩
课程论文
题 目: 数字电子钟的设计
学生姓名: 陈东梅
学生学号: 1008050103
系 别: 电气信息工程学院
专 业: 电子信息科学与技术
年 级: 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 仿真 8
6 结论 12
参考文献 12
附录 12
致谢 16
数字电子时钟设计
学生:陈东梅
指导教师:沈晓波
电气信息工程学院电子信息科学与技术专业专业
1.数字电子钟的研究背景
近年来,电子技术获得了飞速的发展,在其推动下,现代电子产品渗透了社会的各个领域, 大力推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读数快、时间准确显示到秒。而机械 式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”“分”“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在我的设计中采用了LED 数码管显示时、分、秒,以 24 小时计时方式,根据 数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。
在此次设计中,电路 具有显示时间的其本功能,还可以实现对时间的调整。数字钟是其小巧,价格低廉,走时精度高,使用 方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
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电路原理图设计
打开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数码管的结构
使用的LED数码管是7段LED,a—g呈“日”字形,结构如下图:
图3 LED结构图
图4 LED数码管的连接
表2.字形代码与十六进制数的对应关系
图5 n个LED数码管的连接
4.2.2.AT89C51的使用
单片机应用系统以单片机为核心,同时配以相应的外围电路及软件来完成某种或几种功能的系统。它包括硬件和软件两部分,硬件是系统的躯体,软件是系统的灵魂。
单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件: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.主流程图 图7按键控制处理流程图
图8定时器中断流程图 图9 显示器流程图
6 数字电子时钟设计的实现
6.1 仿真
打开keil uvision4,执行”Project-New Project”,z在弹出的“creat new project”输入项目名,在新建一个“file”,保存并加入“Group”,在“file”中输入C语言程序,检查错误并改错。再生成“.HEX”文件。
画好原理图并电器检测,生成网络表,双击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 ”导入元件,再执行“Tools-Auto Router”布线。
图12 PCB布线图
图13 3D效果图
6 结论
总结:在这次课程设计中,遇到很多问题,而且发现对proteus软件不是很熟悉,所以做得很慢,对于单片机的掌握也不是很好,还要多做多练。
参考文献
[1] 陈忠平. 基于Proteus的51系列单片机设计与仿真[P].北京:电子工业出版社,2012.05.
[2] 谭浩强. C语言程序设计教程[P].北京:高等教育出版社,2006.08.
[3] 谢维成,杨家国.单片机原理与应用及C51程序设计[P].第二版清华大学出版社.2003.
附录
C语言程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;
sbit k2=P3^3;
uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
uchar dis_buff[8];
uchar sec100,sec,min,hour;
void delay(uint k)
{
uint m,n;
for(m=0;m<k;m++)
{
for(n=0;n<120;n++);
}
}
void display(void)
{
P2=0x80;
P0=tab[dis_buff[0]];
delay(2);
P2=0x40;
P0=tab[dis_buff[1]];
delay(2);
P2=0x20;
P0=tab[dis_buff[2]];
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]];
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=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);
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;
}
void main(void)
{
int_init();
P0=0xFF;
P2=0x00 ;
hour=22;
min=59;
sec=0;
sec100=0;
while(1)
{
disp_data();
display();
}
}
致谢
首先必须感谢沈晓波老师在PROTEUS学习过程中对我的辅导,在本学期的学习中了解的不单单是PROTEUS,还弥补了一些在单片机学习过程中的不足。老师给我们补充了很多知识,在做实验过程中,很认真的指导我们,严格的要求我们,而且课堂时间很有趣,总是让人觉得时间好短。老师备课总是很认真,大家都看得出来,沈老师是个负责人的老师。
第 17 页
展开阅读全文