较为全面的基于PROTEUS仿真51单片机动态数码管课程设计WORD版.docx
- 文档编号:8066294
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:14
- 大小:191.99KB
较为全面的基于PROTEUS仿真51单片机动态数码管课程设计WORD版.docx
《较为全面的基于PROTEUS仿真51单片机动态数码管课程设计WORD版.docx》由会员分享,可在线阅读,更多相关《较为全面的基于PROTEUS仿真51单片机动态数码管课程设计WORD版.docx(14页珍藏版)》请在冰豆网上搜索。
较为全面的基于PROTEUS仿真51单片机动态数码管课程设计WORD版
学号:
单片机课程设计
题目
动态数码管显示
学院
机电工程学院
专业班级
电子信息工程12-1班
姓名
组员
指导教师
张、王老师
2015
年
5
月
30
日
课程设计量化评分标准
指标
最高分
评分要素
评分
方案设计
35
方案选择合理,分析、设计正确,原理清楚,电路、程序流程图清晰,结构合理,程序简洁、正确。
调试
15
过程清晰,调试方案设计合理,测试点选择适当,程序编写正确,调试步骤清楚。
结果
20
电路及程序运行结果正确,达到预期效果。
设计报告
20
报告结构严谨,逻辑严密,论述层次清晰,语言流畅,表达准确,重点突出,报告完全符合规范化要求,用计算机打印成文。
工作态度
10
工作态度认真,按时完成设计任务。
总评成绩
1.单片机简介1
2.Proteus简介2
3.设计任务与要求3
1.单片机最小系统设计1
2.数码管显示部分4
3.数码管驱动部分5
1.仿真原理图6
2.仿真参数设置6
3.仿真结果7
4.程序流程图8
5.程序代码.9
一、概述
1.单片机简介
如图1.1和图1.2分别为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单片机。
2.Proteus简介
如图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软件可以很好地代替开发板进行仿真实验,可以使学生比较灵活多样化的学习单片机。
3.动态数码管设计任务与要求
课程设计功能:
单片机采用定时器中断方法,制作一个简易时钟,要求用定时器实现精确定时,使用数码管动态显示,完成时钟的秒走时显示。
本课程设计是利用两位共阴极数码管显示数字59,然后每隔1s顺序-1,减到00时,再循环从59-00.
课程设计内容:
1.掌握数码管的接口方法;
2.掌握数码管动态显示的原理;
3.掌握数码管动态显示的方法;
4.掌握单片机内部定时器的使用方法;
5.数码管动态显示的原理可参阅课本。
二、硬件设计
1.单片机最小系统设计
如图2.1所示
图2.1
单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。
单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成,它是单片机开发板中的核心部分。
时钟电路:
其核心部分是晶振,晶振的作用是为系统提供基本的时钟信号。
简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。
这里选用12MHZ晶振,便于产生精确的uS级时歇,方便定时操作。
复位电路:
当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行(这里不加也可以)。
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端口,而且功耗更低。
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口既输出段选又输出片选
三、软件设计
1.仿真原理图
如图3.1所示
图3.1
由51单片机P0口接上拉电阻通过锁存器74HC573控制共阴极数码管段选,P1口控制数码管位选,P2^1控制74HC573使能端。
2.仿真参数设置
如下列表格3.2所示
表3.2两位共阴极数码管动态扫描显示实验电路元器件及参数值
元器件编号
元器件名称
元器件参数
说明
U1
AT89C52
\
AT89C52单片机
U2
74HC573
\
三态锁存器
RP1
排阻
10K
上拉排阻
DSP
共阴极
\
共阴极红色显示
C1/C2/C3
电容
30pF,30pF,10uF
负载等
R1
电阻
10K
接地
S
按钮
\
复位电路用
3.仿真结果
如图3.3
图3.3
经过多次试验,调试后现象正常,实现功能为:
数码管从59秒开始-1,减到0后,重新开始从59循环-1.
4.程序流程图
5.程序代码
#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;//消隐(至关重要,否则会显示乱码)
}
四、心得体会
通过这次课程设计,我真的学到了很多,接触到了平时难以接触或者常常忽视的东西。
老师给定设计课题后,我就开始准备了,从搜集资料到画出动态数码管显示的Proteus仿真图也不过一天时间,原以为一切都会顺利的进展,可是在我写了一个简短的调试程序验证仿真图能否正常进行是却发现由AT89C52单片机P0控制的锁存器74HC573不起作用,怎么都无法驱动数码管的段选,虽然自己之前也接触过单片机,但是由于一直以现成的开发箱或开发版作为学习和练习用,只知道关心怎么编辑程序,却忽视了对硬件的求知,因此,怎么都找不到为什么P0口不能驱动74HC573,后来我终于查到是因为P0需要接上拉电阻才能有足够的电流驱动锁存器,这时才想起其实这一点老师上课时也讲过,而这次正好体现出了我的不足,未能将理论知识与实践及时准确的结合起来学习,相信在以后的学习中我一定会注意这一点的。
在编辑好程序后,我在用Proteus仿真之前用拥有相同性质和原理的开发箱检验过,结果正常,可是在我用Proteus进行仿真时,发现延时较长数码管会一个一个数码管的显示,情况不正常;缩短延时时间后,数码管却显示的是乱码,围绕这个问题我调试了好几天原理图,程序都换过,可就是行不通,后来通过查阅资料才知道原来软件仿真与硬件试验是有一定差别的,这里一定要进行延时,消隐才可以,终于经过一个多星期的奋战顺利完成了本次课程设计。
在此,我非常的感谢我的指导老师张少蔚老师和王淑娇老师,感谢她们在整个课程设计中给予我的无私帮助,同时也感谢其他老师和同学在使用proteus软件时给予的帮助,正是由于各位老师和同学的热心帮助,我才知道自己的不足,才知道怎么才能及时发现问题并更好的去解决问题,相信通过这次课程设计中,在今后的学习,我会更加注重理论知识与实践的结合,团队合作等。
五、参考文献
[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.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 较为 全面 基于 PROTEUS 仿真 51 单片机 动态 数码管 课程设计 WORD
![提示](https://static.bdocx.com/images/bang_tan.gif)