基于单片机实现的两位数码管显示设计.docx
《基于单片机实现的两位数码管显示设计.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的两位数码管显示设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机实现的两位数码管显示设计
两位数码管显示设计
摘要:
两位数码管的显示设计主要有硬件部分和软件部分组成,硬件部分以单片机为核心,在其周围有电源电路、时钟电路、复位电路、驱动电路和显示电路组成。
软件部分用汇编语言编程,用keil软件编译、调试。
最后用proteus软件仿真,形成以单片机为枢纽,以程序为动力,使两位数码管循环显示00-99。
关键词:
AT89C52数码管keilproteus汇编语言动态显示
1.设计背景
1.1设计课题及目的
本课题是以单片机为核心,通过动态扫面的方式,实现两位数码管的动态显示。
单片机即单片微型计算机,是集CPU,RAM,ROM,定时,计数,和多种接口于一体的微控制器,他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上,AT89C52单片机是各单片机中比较具有代表性的一种。
这次课程设计通过对他的学习,应用,从而达到学习,设计,开发软硬件的能力.
1.2相关技术与应用领域
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器的CPU、随机存储器RAM、只读存储器ROM、多种输入输出口和中断系统、定时器∕计数器等功能集成到一个硅片上构成一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到那个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种IC卡,民用豪华轿车的安全保障系统,录像机,摄像机,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动化控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师、科学家。
单片机广泛应用于仪表仪器、家用电器、医用设备、航空航天、专用设备的智能化管理以及过程控制等领域。
单片机是器件级的计算机系统,它可以嵌入任何对象体系中,实现智能化控制。
小到微型仪器,如手表、助听器。
若将经典电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。
单片机应用系统的硬件结构给予电子系统“身躯”,单片机应用系统的应用程序赋予其“生命”。
例如,在设计智能化仪器显示器的显示功能时,可在开机时显示系统自检结果,未进入工作时显示各种待机状态,仪器运行时显示运行过程,工作结束后可显示当前结果、自检结果、原始数据、各种处理报表等。
在无人值守时,可给定各种自动运行功能。
2.设计方案
2.1静态设计
两位数码管的静态显示,是将两个数码管的共阳极接连在一起并接+5V,每位的段码线a-g,分别于单片机的一个P口相连,之所以称为静态显示,是因为各个LED的显示字符一经确定,相应的段码将维持输出不变,知道送入另一个字符的段码为止。
正因为如此,静态显示器的亮度都比较高。
静态显示的程序设计,是将一个两位数的个位与十位分开,并且用查表指令,输出对应位的表格代码。
2.2动态显示
两位数码管的动态显示,是将两个数码管相应的段码线并联接在一起,有一个I/O口控制形成段码线的多路复用,而两位数码管的共阳极分别由相应的I/O口线控制,形成各位的分时选通。
若要各位数码管能够同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,即让某一位的位选线处于选通状态,而且其他各位的位选线处于关闭状态,同时段码线输出相应位要显示的字符的段码,这样在同一时刻,两个数码管只有选通的哪一位显示出字符,而另一个是熄灭的,同样,在下一时刻,只让第二个的位选线处于选通状态,而其他的位选线处于关闭状态,如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余晖和人眼的视觉暂留作用,只要每位显示间隔足够短吗、,就可以造成两位同时亮的假象,达到同时显示的效果。
动态显示器件少,亮度弱。
设计基本与静态设计相同,不同之处是在多了片选信号。
在程序设计中在每次要输出字符时,都要使相应的位置位,另一位要复位,确保每次只有一个数码管亮。
2.3硬件电路设计方案
如图
(1)所示,,我组成员将整个硬件电路的设计划分为三个模块:
单片机主控制电路、数据显示电路、电源电路。
其中,单片机控制电路又分为时钟电路和复位电路,单片机采用AT89C52;数据显示电路用的是两个一位数码管显示以及两个三极管9051、若干阻值的电阻组成;电源电路由桥堆2W10、滤波电容、三端稳压器TA7805三部分组成。
图
(1)硬件整体布局
3.方案实施
3.1方案论证
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态显示和动态显示两类。
动态显示驱动:
数码管的动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所数码管的8个显示笔画”a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM端增加位选通控制电路,位选通有各自独立的I/O线控制,当单片机输出字型码时,所有数码管都接受到相同的字型码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮,通过分时轮流控制各个数码管的COM,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1-2ms,由于他、人的视觉暂留现象看、及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就使一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功能更低。
静态显示驱动:
静态驱动也称直流驱动,静态驱动是指每个数码管的每一个段码都有一个单片机的I/O端口进行驱动,静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。
因为设计要求和器件的限制,我们的课程设计采用的是数码管的动态显示。
3.2设计内容
硬件设计:
电源电路;时钟电路;复位电路;驱动电路;显示电路。
软件设计:
主程序,延时程序,
3.3硬件设计
电源电路:
主要有桥堆2w10和三端稳压器7805构成,将有变压器降压后的交流电压转化为5v的直流电压。
电路图如图
(2)所示。
T1是变压器,得到一定值得交流电压。
图
(2)电源电路
复位电路:
复位电路是通过复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平有复位电路采样一次,然后才能得到内部复位操作所需要的信号,复位电路采用按键手动复位的电平方式,电路如图(3)所示。
图(3)复位电路
时钟电路:
单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊的一拍一拍的工作,本次设计的时钟电路采用外部时钟方式。
单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
电路如图(4)所示。
图(4)时钟电路
显示驱动电路:
这部分电路主要有两个PNP型三极管9015和两个共阳极数码管组成。
三极管起的是开关和放大电平作用,并且具有片选的作用,数码管起的是显示的作用,电阻器的是限流的作用,防止冲击电流过大,烧坏数码管。
电路如图(5)所示。
图(5)显示和驱动电路
3.4软件设计
这次课程设计使用汇编语言编写源程序,使用keil软件调试、编译,最后生成hex文件共我们在proteus软件上仿真和向单片机烧录程序使用。
本次程序设计采用循环控制结构,以R1为变量,将R1的十位与个位分开,并且分别向P2传送数据,传送数据完之后,修改变量,并且判断传送的数据是否到99,如果是的话,则返回主程序重新开始运行程序,如果不是的话,则修改变量,并且执行显示程序,程序框图如图(6)所示。
图(6)程序框图
4.结果与结论
4.1结果
将程序烧录到单片机内,通电后,两位数码管循环显示00-99,当按下复位开关后,两位数码管立刻显示00
4.2结论
这次的课程设计圆满的完成了所有任务,用数码管的动态显示,实现在数码管上循环显示00-99。
。
这次课程设计的主要技术难点是数码管的显示。
由于采用的是动态扫描显示,只使用一组I∕O口,所以要用其它的口的某两位作为位选端,连接三极管来驱动数码管,通过位选端电平的高低来控制扫描期间数码管的顺序亮灭,所以说两位数码管的显示是闪烁的,要想消除闪烁,只要每位显示间隔足够短,就可以造成两位同时亮的假象,达到同时显示的结果,但同时还要的注意发光二极管从导通到发光有一定的延时时间,到同时间太短,则发光太弱,人眼无法看清。
我想可以采用译码器驱动数码管的显示和位选,这样可以有效地消除闪烁。
5.收获与致谢
5.1收获与致谢
这是我第一次用单片机设计制作系统,在设计过程中,我对单片机的了解进一步加深,学会了对KEIL软件和PROTEUS软件的使用。
程序是整个系统的核心,没有程序,硬件就无法运行,所以程序的编写就使我们学习的重点,学好了每一个软件的使用方法,自己就可以在软件里做自己想实现的功能。
单片机作为我们的主要专业课之一,虽然在开学初我们对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后,我发现自己在一点一滴的努力对单片机的兴趣也在逐渐增加,我觉得做单片机课程设计是十分有意义的,而且是十分必要的,在一度过的大学时间里,我们大多数接触的是专业课,我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础理论知识运用到实践中去呢?
我想做课程设计就为我们提供了良好的实践平台。
要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内部有哪些资源,要有一个清晰的思路和一个完整的软件流程图,再设计程序时,不要妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。
回顾此次的单片机课程设计,从理论到实践,在连个星期的日子里,可以说是得的苦多于甜,但是可以学到很多的东西,不经巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实践动手能力和独立思考的能力。
感谢学校给了我们这样一个平台单片机课程设计,是我们有机会自己设计和制作事物,同时也要感谢老师指导,如果没有老师在课堂上的详细讲解,我们不可能在两个星期内完成这次课程设计所有任务。
6.参考文献
[1]张毅刚·单片机原理及应用·北京:
高等教育出版社,2009·2
[2]徐爱钧·智能化测量控制仪表原理与应用·北京:
北京航空航天大学出版社,2007·8
[3]童诗白,华成英·模拟电子技术基础·北京:
高等教育出版社,2009·3
[4]阎石·数字电子技术基础·北京:
高等教育出版社,2008·5
[5]
[6]
[7]
7.附件
7.1仿真原理图
7.2汇编程序
org10h
start:
movr1,#00h
begin:
calltt
calldel
incr1
cjner1,#100,begin
sjmpstart
tt:
movr2,#25
dd:
movdptr,#tab
mova,r1
movb,#10
divab
movca,@a+dptr
setbp0.0
movp2,a
clrp0.1
calldel
mova,b
movca,@a+dptr
setbp0.1
movp2,a
clrp0.0
calldel
djnzr2,dd
ret
del:
movr6,#250
del11:
movr7,#100
djnzr7,$
djnzr6,del11
ret
tab:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
ret
end
7.3LED的段码
显示字符
共阳极段码
显示字符
共阳极段码
0
C0H
C
C6H
1
F9H
D
A1H
2
A4H
E
86H
3
B0H
F
8EH
4
99H
P
8CH
5
92H
U
C1H
6
82H
T
CEH
7
F8H
Y
91H
8
80H
H
89H
9
90H
L
C7H
A
88H
‘灭’
FFH
B
83H
……
……
7.4元件清单
元件名称
元件数量
AT89C52单片机
1
共阳极数码管1位
2
晶振11.0592MHZ
1
瓷片电容33PF
2
LED指示灯
1
电阻300
9
桥堆2w10
1
三极管9015
2
7805
1
40脚底坐
1
按键开关
1
电解电容22uf
1
电阻1k
3
瓷片电容104
1
万能版
1
指导教师评语:
课程设计报告成绩:
,占总成绩比例:
30%
课程设计其它环节成绩:
环节名称:
考勤,成绩:
,占总成绩比例:
20%
环节名称:
综合,成绩:
,占总成绩比例:
50%
总成绩:
指导教师签字:
年月日
本次课程设计负责人意见:
负责人签字:
年月日