本科毕业设计论文proteus仿真动态数码管时钟仿真.docx
《本科毕业设计论文proteus仿真动态数码管时钟仿真.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文proteus仿真动态数码管时钟仿真.docx(15页珍藏版)》请在冰豆网上搜索。
本科毕业设计论文proteus仿真动态数码管时钟仿真
Proteus仿真论文
题目:
动态数码管时钟仿真
院系内蒙古大学鄂尔多斯学院
专业名称自动化
学生姓名吴启民
学号0135124180
2016年6月30日
摘要AT89C52是一个低电压,高性能CMOS 8位单片机,在proteus仿真中,单片机采用定时器中断方法,制作一个简易时钟,要求用定时器实现精确定时,使用数码管动态显示,完成时钟的秒走时显示。
本课程设计是利用两位共阴极数码管显示数字59,然后每隔1s顺序-1,减到00时,再循环从59-00。
关键词单片机仿真数码管
目录
1、绪论1
1.1背景介绍1
1.2AT89C52单片机1
1.3Proteus使用介绍3
1.4动态数码管设计任务与要求4
2、硬件设计5
2.1单片机最小系统5
2.2数码管显示部分5
2.3数码管驱动部分6
3、软件设计7
3.1仿真原理图8
3.2仿真参数设置8
3.3仿真结果9
4.总结10
5.参考文献11
6.附录13
附录1程序代码13
1、绪论
1.1背景介绍
随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐。
来自英国LabcenterElectronics公司的Proteus软件很好地诠释了利用现代EDA工具方便快捷开发单片机系统的优势。
它包括PROTEUSVSM(VirtualSystemModelling)、PROTEUSPCBDESIGN两大组成部分,在PC机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程。
本文讲述PROTEUSVSM单片机系统的PROTEUS设计与仿真功能,图1-2为基于PROTEUS仿真软件的单片机系统设计流程,它极大地简化了设计工作,得到众多设计师的青睐
1.2AT89C52单片机
下图分别为PDIP封装的AT89C52引脚图和实物图
图1.1引脚图
图1.2实物图
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
本课程设计中使用的是PDIP封装的AT89C52单片机。
1.3Proteus使用介绍
如图1.3为Proteus7.0的工作界面图
图1.3
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
1.原理布图
2.PCB自动或人工布线
3.SPICE电路仿真
革命性的特点
1.互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
2.仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境.
在学习单片机的过程中Proteus软件可以很好地代替开发板进行仿真实验,可以使学生比较灵活多样化的学习单片机。
1.4动态数码管设计任务与要求
课程设计功能:
单片机采用定时器中断方法,制作一个简易时钟,要求用定时器实现精确定时,使用数码管动态显示,完成时钟的秒走时显示。
本课程设计是利用两位共阴极数码管显示数字59,然后每隔1s顺序-1,减到00时,再循环从59-00.
2、硬件设计
2.1单片机最小系统
图2.1
单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。
单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成,它是单片机开发板中的核心部分。
时钟电路:
其核心部分是晶振,晶振的作用是为系统提供基本的时钟信号。
简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。
这里选用12MHZ晶振,便于产生精确的uS级时歇,方便定时操作。
复位电路:
当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行(这里不加也可以)。
2.2数码管显示部分
如图2.2所示
图2.2
数码管有共阴极数码管和共阳极数码管两种(这里选用两位共阴极数码管),如图2.2(b)所示,根据数码管的驱动方式的不同,可以分为静态式和动态式两类,这里只介绍动态方式。
动态显示:
将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2.3数码管驱动部分
这里使用74HC573来控制数码管的显示,如图2.3所示
74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
它是数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。
驱动数码管需要两个信号,一个是段选信号,一个是片选信号。
段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。
对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了2组共16个IO口,非常浪费使用573锁存器后,只占用8+2=10个IO口,其中2个用于控制锁存器使能,另外8个输出信号。
先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号,随后开启锁存,此时无论573的输入端如何变化,输出端都是不变的,也就是原来输入的信号被锁住了。
然后,再关闭控制段选的573的锁存功能,输出段选信号,再锁存,这样就巧妙的实现了数据线的复用,让一组IO口既输出段选又输出片选
3、软件设计
3.1仿真原理图
如图3.1所示
图3.1
由51单片机P0口接上拉电阻通过锁存器74HC573控制共阴极数码管段选,P1口控制数码管位选,P2^1控制74HC573使能端。
3.2仿真参数设置
如下列表格3.2所示
元器件编号
元器件名称
元器件参数
说明
U1
AT89C52
\
AT89C52单片机
U2
74HC573
\
三态锁存器
RP1
排阻
10K
上拉排阻
DSP
共阴极
\
共阴极红色显示
C1/C2/C3
电容
30pF,30pF,10uF
负载等
R1
电阻
10K
接地
S
按钮
\
复位电路用
表3.2两位共阴极数码管动态扫描显示实验电路元器件及参数值
3.3仿真结果
如图3.3
图3.3
经过多次试验,调试后现象正常,实现功能为:
数码管从59秒开始-1,减到0后,重新开始从59循环-1.
4.总结
通过这次课程设计,我真的学到了很多,接触到了平时难以接触或者常常忽视的东西。
在编辑好程序后,我在用Proteus仿真之前用拥有相同性质和原理的开发箱检验过,结果正常,可是在我用Proteus进行仿真时,发现延时较长数码管会一个一个数码管的显示,情况不正常;缩短延时时间后,数码管却显示的是乱码,围绕这个问题我调试了原理图,程序都换过,可就是行不通,后来通过查阅资料才知道原来软件仿真与硬件试验是有一定差别的,这里一定要进行延时,消隐才可以,终于经过一个多星期的奋战顺利完成了本次课程设计。
在此,我非常的感谢我的指导老师,感谢他在整个课程设计中给予我的无私帮助,同时也感谢同学在使用proteus软件时给予的帮助,正是由于老师和同学的热心帮助,我才知道自己的不足,才知道怎么才能及时发现问题并更好的去解决问题,相信通过这次课程设计中,在今后的学习,我会更加注重理论知识与实践的结合,团队合作等。
5.参考文献
[1]吴杰.基于ISP技术的电子公告牌系统[J].科技资讯2008.NO.14:
83-87.
[2]万光毅.单片机实验与实践教程[M].北京航空航天大学出版社.2005.1.
[3]张毅刚.单片机原理及应用[M].高等教育出版社.2003:
160-190.
[4]马忠梅.单片机的C语言应用程序设计[M].北京:
北京航空航天大学出版社.2006
[5]周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M].北京航空航天大学出版社.2005.
[6]金炯泰,金奎焕.如何使用KEIL8051C编译器[M].北京航空航天大学出版社.2002.
6.附录
附录1程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitLE=P2^0;//定义使能端
ucharnum,shi,ge,t0;
bitflag;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voiddisplay();
voiddelay(uintz)//延时函数
{
uinti,j;
for(i=z;i>0;i--)
for(j=50;j>0;j--);
}
voidmain()
{
num=60;
TMOD=0x01;
TH0=(65536-50000)/256;//定时器赋初值
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
if(flag==1)
{
flag=0;
num--;
if(num==-1)
{
num=59;
}
shi=num/10;
ge=num%10;
}
display();
}
}
voidtimer0()interrupt1
{
uchart0;
TH0=(65536-50000)/256;//定时器重装初值
TL0=(65536-50000)%256;
t0++;
if(t0==20)
{
t0=0;
flag=1;
}
}
voiddisplay()//显示函数
{
LE=0;
P0=table[shi];
LE=1;
LE=0;
P1=0x7f;
LE=1;
delay(10);
P0=0x00;//消隐(至关重要,否则会显示乱码)
LE=0;
P0=table[ge];
LE=1;
LE=0;
P1=0xbf;
LE=1;
delay(10);
P0=0x00;//消隐(至关重要,否则会显示乱码)
}