单片机秒表课程设计.docx
《单片机秒表课程设计.docx》由会员分享,可在线阅读,更多相关《单片机秒表课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
单片机秒表课程设计
摘要单片机是性能价格比高、体积小、对国民经济渗透力大、最有前途的微控制器。
单片机自20世纪70年代初研制成功并发展至今,已进入第四代。
它主要是在一块芯片上集成了CPU、存储器以及输入输出电路,在工业过程中被广泛应用在控制电路中。
从单片机的系列来看,国内外已超过50个系列、近500个品种,当前正处于更新换代、百花齐放的时期。
新的系列和专用系列正在不断涌现。
按位数分类有4位、8位、16位以及32位单片机等,4位单片机由于价格低和出现的早得到了广泛的应用,特别是在家电应用领域中其还有很大的优势,为了抵御8位机的竞争,4位机在结构和功能上都有很大的改进。
8位机的生产厂家以及品种都很多,在实际的生产中应用也最为广泛,其中Intel公司的8051系列单片机在我国应用最为广泛,另外8位单片机也在其功能和内部结构上不断的进行改进,目前功能是越来越强大。
16位单片机在数据处理以及单片机的性能上有了很大的改进。
32位单片机是随着高科技产业的发展而产生的。
一、设计任务
(一)设计内容
用AT89C51设计一个三位LED数码显示“秒表”,显示时间为00.0~99.9秒,每秒自动加一。
另设计一个“开始”按键和一个“复位”按键。
再增加一个“暂停”按键和一个“快加”按键(每秒快速加五)。
按键说明:
按“开始”按键,开始计数,数码管显示从00.0开始每秒自动加一;按“复位”按键,系统清零,数码管显示00.0;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“快加”按键,系统每秒快速加五,即数码显示管在原先的计数上快速加五。
(二)设计要求
了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到0.1秒。
要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并在实验箱实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零功能。
二、设计过程
(一)方案设计
本设计的最主要的元器件就是MCS-51单片机。
MCS-51单片机在一块芯片上集成了CPU存储器RAM,ROM以及输入与输出接口电路这种芯片习惯上被称为单片微型计算机简称单片机。
MCS-51单片机是INTEL公司在1980年推出的高档8位单片机。
它的典型产品有80518031875180C5180C3187C51
该实验要求进行计时并在数码管上显示时间,则可利用DVCC系列单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3做为外部中断1的入口地址,并实现“复位”按键的功能;P3.4实现“暂停”按键的功能;P3.5实现“快加”按键的功能。
其中“开始”按键接通时开始计时;“复位”按键接通时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
图2.1系统方框图
(二)器件选择
1、单片机的选择
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
与MCS-51兼容;4K字节可编程FLASH存储器;寿命:
1000写/擦循环;数据保留时间:
10年;全静态工作:
0Hz-24MHz;三级程序存储器锁定;128×8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
图2.2AT89C51管脚图
2、显示器件的选择
LCD液晶显示器的特点:
显示的内容多,控制简单,耗电低,可以显示字符,图片;缺点:
本身不发光,依靠背光显示,价格贵。
数码管的特点:
自发光,从远处可以看见,价格相对较低;缺点;显示的内容少,一般是数码,LED电子滚动显示,等等,很耗电,控制复杂。
所以我们选择数码管作为显示器件。
图2.3液晶及数码管图
(三)系统电路设计
1、复位电路
MCS-51单片机的复位是靠外部电路实现的。
MCS-51单片机工作之后,只要在他的RST引线上加载10ms以上的高点平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位和按键复位两种方式。
最简单的复位电路如图2.4
上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上的高电平,就能使单片机有效的复位。
在应有系统中,有些外围芯片也需要复位。
如果这些芯片复位端的复位电平与单片机的复位电平的要求一致,则可以将复位信号与之相连。
2、振荡器电路
MCS--51单片机单片机内部的振荡电路是一个到增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
单片机内部虽然有震荡电路,但要形成成时钟,外部还需要附加电路。
石晶振荡和陶瓷振荡均可采用.有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
51单片机的时钟产生方式有两种,分别为:
内部时钟方式和外部始终方式。
利用其内部的震荡电路XTAL1和XTAL2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2输出的时钟信号。
在MCS-51单片机一般常用内部时钟方式,就是在XTAL1和XTAL2之间连接晶体震荡器与电容构成稳定的自激震荡器,如图2.4
晶振和电容决定了单片机的工作时间精度为1微秒。
晶体可在1.2-12MHz之间选择。
MCS-51单片机在通常应用情况下,使用震荡频率为6MHZ的石英晶体,而12MHZ频率的警惕主要是在高速串行通信情况下才使用,在这里我用的是12MHZ石英晶体。
对电容无严格要求,但它在取直对震荡频率输出的稳定性、大小及震荡电路起震荡速度有一点影响。
C1和C2可在20-100PF之间取直,一般情况取30PF。
外部时钟方式是把外部震荡信号源直接接入XTAL1或XTAL2。
图2.4
3、显示电路
数码管只要是用于数字的显示。
数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同。
P0.0-P0.6对应了十位数码管的A,B,C,D,E,F,G,P2.0-P2.6对应了个位数码管的A,B,C,D,E,F,G,P1.0-P1.6对应了小数位数码管的A,B,C,D,E,F,G,小数点用发光二极管表示,这时只要P0、P1、P2口送出数字的显示代码,数码管就能正常显示需要的数字。
三位数码管循环电路图如图2.5
图2.5显示电路图
4、控制电路
图2.6控制电路图
(四)软件设计
程序见附录。
三、结果分析
按“开始”按键单片机开始计数,并显示在数码管上,每秒自动加一。
然后按“快加”按键,系统每秒快速加五,数码显示管在原先的计数上快速加五。
再按“暂停”按键单片机暂停计数,数码管显示的数值不变。
最后按“复位”按键,单片机原有的计数清空,且数码管清零。
仿真图如图3.1
图3.1仿真图
四、设计总结
经过一周的不懈努力单片机的课程设计终于完成了。
在这期间我们学会了很多,同时对单片机这门课程有了更深一步的理解和掌握。
1、本次课程设计使我们加深了对单片机课程的全面认识;对MC-51单片机有了更深入的了解;对I/O口的使用、晶振电路的接法以及复位电路等的掌握都有了很大程度的提高这为以后的实践打下了良好的基础。
2、掌握了定时器、外部中断的设置和编程原理。
3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑、校验。
4、还要根据实验的实际情况添加些额外程序来使系统更加的稳定,如开关的消震荡采用延迟。
5、程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁、更明白易懂。
6、我们在编程过程中还有好多不理解的地方,经过同学的帮助终于完成了这次设计。
在这个过程中体会到了合作的好处,更了解的互相帮助的重要性。
参考文献
[1]王东峰.单片机C语言应用100例[M].电子工业出版社,2009.
[2]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.
[3]李平等.单片机入门与开发[M].机械工业出版社,2008.
[4]张洪润等.单片机应用技术教程[M].清华大学出版社,2009年
[5]周景润等.基于PROTEUS的电路及单片机设计与仿真(第2版)[M].北京航空航天大学出版社,2010年.
[6]胡汉才.单片机原理及其接口技术(第3版)[M].清华大学出版社,2010年.
附录:
程序
ORG0000H
AJMPMAIN
ORG0003H
AJMPX0_INT
ORG000BH
AJMPT0_INT
ORG0013H
AJMPX1_INT
MAIN:
MOVTMOD,#01H;T0定时方式1
MOVTH0,#(65536-50000)/256;50ms@12MHz
MOVTL0,#(65536-50000)MOD256;
SETBTR0
SETBET0;开启定时中断
SETBEX0
SETBEX1
SETBEA;开中断
MOVR1,#0;0~99秒计数
MOVR2,#0;0.1秒数
MOVR7,#1;50ms计数
MOVP0,#0C0H;显示00.0
MOVP2,#0C0H
movp1,#0C0H
LOOP:
SJMPLOOP
;-----------------------------------------------------------
DELAY:
;延时子程序.
MOVR4,#0
DJNZR4,$
DJNZR4,$
RET
;-----------------------------------------------------------
X0_INT:
;启动/停止
CPLF0
RETI
;-----------------------------------------------------------
X1_INT:
;清零
MOVR1,#0
MOVP0,#0C0H
MOVP2,#0C0H
movp1,#0C0H
RETI
;-----------------------------------------------------------
T0_INT:
;50ms中断执行一次.
MOVTL0,#(65536-50000)MOD256;
MOVTH0,#(65536-50000)/256;50ms@12MHz
DJNZR7,T0_END;中断不到20次.
MOVR7,#2;#20
JNBF0,T0_END
mova,r2
adda,#1
daa
anla,#0fh
movr2,a
jnzdisp
MOVA,R1
ADDA,#1
DAA
MOVR1,A
disp:
mova,r2
anla,#0fh
movca,@a+dptr;查出段码
movp1,a;显示0.1秒
MOVA,R1
ANLA,#0FH
MOVDPTR,#TAB
MOVCA,@A+DPTR;查出段码
MOVP2,A;显示个位
MOVA,R1
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR;查出段码
MOVP0,A;显示十位
T0_END:
RETI
;-----------------------------------------------------------
TAB:
DB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H
END