河南理工大学单片机控制的多功能秒表系统设计Word下载.doc
- 文档编号:6965820
- 上传时间:2023-05-07
- 格式:DOC
- 页数:24
- 大小:342KB
河南理工大学单片机控制的多功能秒表系统设计Word下载.doc
《河南理工大学单片机控制的多功能秒表系统设计Word下载.doc》由会员分享,可在线阅读,更多相关《河南理工大学单片机控制的多功能秒表系统设计Word下载.doc(24页珍藏版)》请在冰点文库上搜索。
6.添加下翻页按钮,并实现快减功能。
2系统总体方案及硬件设计
2.1系统总体方案
本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计计时器,将软、硬件有机地结合起来。
单片机
外围
电路
电源
显示电路
键盘电路
图1系统电路原理
2.2硬件电路设计
本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等
(1)单片机简介
本系统设计采用AT89C51单片机。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容(由于在微机原理中学过C-51的具体知识,这里不再详细说明)。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。
(2)电源电路
电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。
(3)晶体振荡电路
MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:
电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。
图2晶体振荡电路
(4)复位电路
采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。
这不仅能使单片机复位,而且还能使
单片机的外围芯片也同时复位。
当程序出现错误时,可以随时使电路复位。
电路图如下:
图3复位电路
(5)显示电路
显示电路既可以选用液晶显示器,也可以选用数码管显示。
我们采用的是数码管显示电路。
用2个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。
在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;
动态显示所使用的端口比较少,可以节省单片机的I/O口。
在设计中,我们采用LED动态显示,用P0口驱动显示。
由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。
电路图如下所示:
图4显示电路
(6)键盘电路
在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有键按下等。
键盘扫描电路节省I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了使程序简化,我们采用按键电路,用部分P1口做开关,P1.0停止,P1.1快减,P1.2快加,P1.3暂停记录,P1.4下翻,P1.5上翻,用外中断INT0开始,另外用软件法消除抖动。
图5键盘电路
3软件设计
4.1软件设计概述
在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。
把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。
应用系统的程序由包含多个模块的主程序和各种子程序组成。
各程序模块都要完成一个明确的任务,实现某个具体的功能,如:
加计数、减计数、延时、快加、快减,计数和显示等,在具体需要时调用相应的模块即可。
功能描述:
用2位LED数码显示"
秒表"
,显示时间为00~99秒,每秒自动加1;
一个"
开始"
键,一个"
复位"
暂停"
键,一个“快减”键,一个“快加”键;
一个“记录”键,可同时记录四个相对独立的时间;
一个“上翻”键,一个“下翻”键,查看四个不同的计时值。
4.2程序流程图
(1)主程序:
这里采用分支结构,通过对按键的扫描,判断要实现什么功能。
如下所示:
开始
初始化
P1.0=0?
P1.1=0?
P1.2=0?
P1.3=0?
P1.4=0?
P1.5=0?
停止
快减
快加
下翻
上翻
够4个?
N
Y
暂停记录
(2)加1程序
(20H)A
进位清零
做加法
到100?
(20H)清零
个位十位分开
返回
N
Y
(3)定时器1程序
用定时器0实现定时1秒,定时器1实现定时10毫秒,定时初值都是0D8F0H,
这里只写定时1秒的流程图,如下所示:
压栈保护
赋定时初值
到1秒?
调用加1程序
调用显示程序
中断返回
4.3子程序模块设计
(1)停止子程序
按键后,使秒表停止,即关闭定时器0,1,程序如下:
STOP:
CLRTR0
CLRTR1;
关闭定时器0,1
ACALLDISP;
显示
(2)暂停记录子程序
按键结束后,将此时显示内存中的数送寄存器中保存,并通过条件转移指令判断是否存够4个数,若存够则停止,否则继续。
JILU:
MOVA,20H
MOV@R1,A
INCR1
DJNZ50H,HERE;
是否够四个数?
MOVR1,#71H
MOV50H,#04H
MOV51H,#04H
SJMPSTOP;
够4个数停止
(3)加1子程序
此程序只为简单的加1,并判断是否到100?
到则从0开始,否则继续,另外将显示内存中的数个位十位分开,以便于动态显示。
JIA1:
MOV A,20H;
CLRC
INCA
CJNEA,#100,GO1;
是否加到100?
MOV20H,#00H
RET
GO1:
MOV20H,A;
将个位十位分开显示
MOVB,#0AH
DIVAB
MOV31H,A
MOV30H,B
(4)显示子程序,采用动态显示
DISP:
MOV R0,#30H
MOV R3,#0FEH
MOV A,R3
PLAY:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.2,LD1
INCR0
MOVR3,A
LJMPPLAY
LD1:
RET
DL1:
MOV R7,#05H
DL:
MOV R6,#0FFH
DL6:
DJNZ R6,$
DJNZ R7,DL
RET
(5)延时子程序
例如延时10ms程序:
DELAY10:
MOVR4,#14H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
(6)按键消抖程序
延时10ms再次判断该位的状态,若仍是0则说明该键被按下,弹起后去执行该按键功能;
若为1,则说明是抖动则继续向下判断。
L1:
JBP1.1,L2;
P1.1=0,快减
ACALLDELAY10
JBP1.1,L2
JNBP1.1,$
LJMPKJIAN
(5)中断服务程序
用外部中断1实现开始,定时器0定时1S,定时器1定时10ms。
4Proteus软件仿真
4.1功能简介
功能描述如下:
连通电源后,按开始键,秒表正常运行;
按暂停记录键,记录4个数,上翻下翻键可以查看记录的4个数;
停止键可使暂停;
快加快减键可以实现快加快减功能,至停止键被按下;
复位键可使系统复位。
4.2WAVE编译
将所编写的汇编语言程序另存为秒表.ASM文件,并在WAVE中运行,显示结果如下:
图6运行结果
4.3PROTEUS仿真
用PROTEUS将编译生成的秒表.HEX文件下到单片机中,点击运行按相应的操作键即可看到下图的效果:
图7部分仿真结果A
图7部分仿真结果B
5课程设计体会
经过一个星期的课程设计,过程曲折可谓一语难尽。
在此期间我也失落过,也曾一度热情高涨。
从开始时激情高涨到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
在老师的指导下,我顺利完成了课程设计。
心得体会如下:
1、将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻。
对程序的编译过程了解透彻。
2、本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。
3、由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS和WAVE等的基本知识。
程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。
4、由于水平有限,实验程序运行有一定的限制,望见谅。
总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但这需要在实践中慢慢提高,还希望老师能够多多指导,促进我不断的进步。
参考文献
[1]余发山主编.单片机原理及应用技术.徐州:
中国矿业大学出版社.2003
[2]杨凌霄编著.微型计算机原理及应用.徐州:
中国矿业大学出版社,2004
[3]李群芳主编.单片机原理、接口及应用.北京:
清华大学出版社,2005
附1.源程序代码
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME1
ORG0013H
LJMPZHDUAN
ORG 001BH
LJMP TIME10
ORG 0100H
MAIN:
MOVSP,#50H
MOVTMOD,#11H
MOV TH1,#0D8H;
定时10ms
MOV TL1,#0F0H
MOV TH0,#0D8H;
MOV TL0,#0F0H
MOV 20H,#00H;
BINSECOND
MOV 30H,#00H;
SECOND
MOV 31H,#00H
MOV 40H,#100
MOV71H,#00H;
记录暂存区
MOV72H,#00H
MOV73H,#00H
MOV74H,#00H
MOV50H,#04H
MOV51H,#04H
MOVR1,#71H
SETBEA
SETBEX1
SETBET1
SETBET0
CLRPT0
CLRPT1
SETBPX1
SETBIT1
MOV P0,#0FFH
CLR TR0
CLR TR1
CLR 7FH
ML1:
ACALL DISP
START:
JBP1.0,L1;
P1.0=0,停止
JBP1.0,L1
JNBP1.0,$
LJMPSTOP
L2:
JBP1.2,L3;
P1.2=0,快加
JBP1.2,L3
JNBP1.2,$
LJMPKJIA
L3:
JBP1.3,L4;
P1.3=0,暂停记录
ACALLDELAY10
JBP1.3,L4
JNBP1.3,$
LJMPJILU
L4:
JBP1.4,L5;
P1.4=0,下翻
JBP1.4,L5
JNBP1.4,$
LJMPXFAN
L5:
JBP1.5,L;
P1.5=0,上翻
JBP1.5,L
JNBP1.5,$
LJMPSHFAN
L:
SJMPHERE
CLRTR0;
停止程序
CLRTR1
ACALLDISP
SJMPHERE
MOVA,20H;
暂停记录程序
DJNZ50H,HERE
SJMPSTOP
XFAN:
MOVA,@R1;
下翻程序
MOV20H,A
LCALLDISP
INCR1
DJNZ50H,HERE
SJMPHERE
SHFAN:
MOVA,@R1;
DECR1
MOVR1,#74H
SJMPHERE
KJIAN:
SETBTR1;
快减程序
CLRTR0
HEE1:
JNBTF1,HEE1
CLRTF1
ACALLJIAN1
ACALLDISP
JNBP1.0,STOP
SJMPHEE1
KJIA:
SETBTR1;
快加程序
HEE:
JNBTF1,HEE
ACALLJIA1
SJMPHEE
HERE:
LJMPML1
ZHDUAN:
SETBTR0 ;
启动定时器0
CLRTR1
RETI
TIME1:
PUSHACC;
定时1秒
PUSHPSW
MOV TH0,#0D8H
MOV TL0,#0F0H
DJNZ 40H,RET0
LCALLJIA1
RET0:
POPPSW
POPACC
TIME10:
PUSHACC;
定时10毫秒
MOV TL0,#0F0H
RET1:
MOV A,20H;
加1
CJNEA,#100,GO1
MOV20H,A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南 理工大学 单片机 控制 多功能 秒表 系统 设计