《基于PROTEUS仿真51单片机动态数码管课程设计.doc》由会员分享,可在线阅读,更多相关《基于PROTEUS仿真51单片机动态数码管课程设计.doc(15页珍藏版)》请在三一办公上搜索。
1、学 号: 201200558 单片机课程设计题 目动态数码管显示学 院机电工程学院专业班级电子信息工程12-1班姓 名组 员指导教师张、王老师2015年5月30日课程设计量化评分标准指标最高分评分要素评分方案设计35方案选择合理,分析、设计正确,原理清楚,电路、程序流程图清晰,结构合理,程序简洁、正确。调试15过程清晰,调试方案设计合理,测试点选择适当,程序编写正确,调试步骤清楚。结果20电路及程序运行结果正确,达到预期效果。设计报告20报告结构严谨,逻辑严密,论述层次清晰,语言流畅,表达准确,重点突出,报告完全符合规范化要求,用计算机打印成文。工作态度10工作态度认真,按时完成设计任务。总
2、评 成 绩目 录一、概述1 1. 单片机简介1 2. Proteus简介2 3. 设计任务与要求3二、硬件设计3 1. 单片机最小系统设计1 2. 数码管显示部分4 3. 数码管驱动部分5三、软件设计6 1. 仿真原理图6 2. 仿真参数设置6 3. 仿真结果7 4. 程序流程图8 5. 程序代码.9四、心得体会.11五、参考文献12一、概述1. 单片机简介 如图1.1和图1.2分别为PDIP封装的AT89C52引脚图和实物图 图1.1 引脚图图1.2 实物图AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的
3、随机存取数据存储器(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等三种封装形式,以适
4、应不同产品的需求。本课程设计中使用的是PDIP封装的AT89C52单片机。2Proteus简介 如图1.3为Proteus7.0的工作界面图 图1.3Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路
5、协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。 在学习单片机的过程中Proteus软件可以很好地代替开发板进行仿真实验,可以使学生比较灵活多样化的学习单片机。3动态数码管设计任务与要求课程设计功能:单片机采用定时器中断
6、方法,制作一个简易时钟,要求用定时器实现精确定时,使用数码管动态显示,完成时钟的秒走时显示。本课程设计是利用两位共阴极数码管显示数字59,然后每隔1s顺序-1,减到00时,再循环从59-00.课程设计内容: 1.掌握数码管的接口方法;2.掌握数码管动态显示的原理;3.掌握数码管动态显示的方法;4.掌握单片机内部定时器的使用方法;5.数码管动态显示的原理可参阅课本。二、硬件设计1单片机最小系统设计 如图2.1所示 图2.1单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组
7、成,它是单片机开发板中的核心部分。 时钟电路:其核心部分是晶振,晶振的作用是为系统提供基本的时钟信号。简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。这里选用12MHZ晶振,便于产生精确的uS级时歇,方便定时操作。 复位电路:当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行(这里不加也可以)。2数码管显示部分 如图2.2所示 图2.2数码管有共阴极数码管和共阳极数码管两种(这里选用两位共阴极数码管),如图2.2(b)所示,根据数码管的驱动方式的不同,可以分为静态式和动态式两类,这里只介绍动态方式。 动态显示:将
8、所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度
9、足够快,给人的印象就是一组稳定的显示据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3数码管驱动部分这里使用74HC573来控制数码管的显示,如图2.3所示74HC573是拥有八路输出的透明锁存器, 输出为三态门,是一种高性能硅栅CMOS器件。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。它是数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。驱动数码管需要两个信号,一个是段选信号,一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与
10、数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了2组共16个IO口,非常浪费使用573锁存器后,只占用8+2=10个IO口,其中2个用于控制锁存器使能,另外8个输出信号。先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号,随后开启锁存,此时无论573的输入端如何变化,输出端都是不变的,也就是原来输入的信号被锁住了。然后,再关闭控制段选的573的锁存功能,输出段选信号,再锁存,这样就巧妙的实现了数据线的复用,让一组IO口既输出段选又输出片选三、软件设计1仿真原理图如图3.1所示图3.1由51单片机P0口接上拉电阻通过锁存器74HC573控
11、制共阴极数码管段选,P1口控制数码管位选,P21控制74HC573使能端。2仿真参数设置如下列表格3.2所示表3.2两位共阴极数码管动态扫描显示实验电路元器件及参数值元器件编号元器件名称元器件参数说明U1AT89C52AT89C52单片机U274HC573三态锁存器RP1排阻10K上拉排阻DSP共阴极共阴极红色显示C1/C2/C3电容30pF,30pF,10uF负载等R1电阻10K接地S按钮复位电路用3仿真结果如图3.3 图3.3经过多次试验,调试后现象正常,实现功能为:数码管从59秒开始-1,减到0后,重新开始从59循环-1.4程序流程图开始初始化定时器T0中断 进入中断N 1s时间到?Y
12、Num- 分离num十位,个位,数码管动态扫描显示N Num=-1? YNum=59 5程序代码#include#define uint unsigned int#define uchar unsigned charsbit LE=P20;/定义使能端uchar num,shi,ge,t0;bit flag;uchar code table =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void display();void delay(uint z) /延时函数uint i,j;for(i=z;i0;i-)for(j=50;j0;j-)
13、;void main()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(); void timer0() interrupt 1uchar t0;TH0=(65536-50000)/256;/定时器重装初值TL0=(65536-50000)%256;t0+;if(t0=20)t0=0;flag=1;void display
14、()/显示函数LE=0;P0=tableshi;LE=1;LE=0;P1=0x7f;LE=1;delay(10);P0=0x00; /消隐(至关重要,否则会显示乱码)LE=0;P0=tablege;LE=1;LE=0;P1=0xbf;LE=1;delay(10);P0=0x00; /消隐(至关重要,否则会显示乱码)四、心得体会通过这次课程设计,我真的学到了很多,接触到了平时难以接触或者常常忽视的东西。老师给定设计课题后,我就开始准备了,从搜集资料到画出动态数码管显示的Proteus仿真图也不过一天时间,原以为一切都会顺利的进展,可是在我写了一个简短的调试程序验证仿真图能否正常进行是却发现由AT
15、89C52单片机P0控制的锁存器74HC573不起作用,怎么都无法驱动数码管的段选,虽然自己之前也接触过单片机,但是由于一直以现成的开发箱或开发版作为学习和练习用,只知道关心怎么编辑程序,却忽视了对硬件的求知,因此,怎么都找不到为什么P0口不能驱动74HC573,后来我终于查到是因为P0需要接上拉电阻才能有足够的电流驱动锁存器,这时才想起其实这一点老师上课时也讲过,而这次正好体现出了我的不足,未能将理论知识与实践及时准确的结合起来学习,相信在以后的学习中我一定会注意这一点的。在编辑好程序后,我在用Proteus仿真之前用拥有相同性质和原理的开发箱检验过,结果正常,可是在我用Proteus进行仿
16、真时,发现延时较长数码管会一个一个数码管的显示,情况不正常;缩短延时时间后,数码管却显示的是乱码,围绕这个问题我调试了好几天原理图,程序都换过,可就是行不通,后来通过查阅资料才知道原来软件仿真与硬件试验是有一定差别的,这里一定要进行延时,消隐才可以,终于经过一个多星期的奋战顺利完成了本次课程设计。在此,我非常的感谢我的指导老师张少蔚老师和王淑娇老师,感谢她们在整个课程设计中给予我的无私帮助,同时也感谢其他老师和同学在使用proteus软件时给予的帮助,正是由于各位老师和同学的热心帮助,我才知道自己的不足,才知道怎么才能及时发现问题并更好的去解决问题,相信通过这次课程设计中,在今后的学习,我会更加注重理论知识与实践的结合,团队合作等。五、参考文献1 吴杰.基于ISP 技术的电子公告牌系统J.科技资讯2008.NO.14:83-87.2 万光毅.单片机实验与实践教程M.北京航空航天大学出版社.2005.1.3 张毅刚.单片机原理及应用M.高等教育出版社.2003:160-190.4 马忠梅.单片机的C 语言应用程序设计M.北京:北京航空航天大学出版社.20065 周润景.基于Proteus的电路与单片机仿真系统设计与仿真M.北京航空航天大学出版社. 2005.6 金炯泰,金奎焕. 如何使用KEIL8051C编译器M . 北京航空航天大学出版社.2002.