单片机电子表设计论文.docx
- 文档编号:6833595
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:18
- 大小:178.03KB
单片机电子表设计论文.docx
《单片机电子表设计论文.docx》由会员分享,可在线阅读,更多相关《单片机电子表设计论文.docx(18页珍藏版)》请在冰豆网上搜索。
单片机电子表设计论文
目录
一、电子表的设计要求与方案论证比较…………………………………………(4)
1.1设计要求………………………………………………………………………(4)
1.2方案论证比较…………………………………………………………………(5)
二、硬件电路设计………………………………………………………………(6)
三、电路板原理图…………………………………………………………………(7)
四、软件设计………………………………………………………………………(8)
(一)软件设计……………………………………………………………………(8)
(二)资源分配表………………………………………………………………(11)
五、程序……………………………………………………………………………(12)
六、调试……………………………………………………………………………(17)
七、结语……………………………………………………………………………(18)
摘要
随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的
作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基单片机原理与接口技术的简单应用。
运用所学的单片机原理和接口技术知识完成数字电子表的设计。
电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用C语言设计电子表显示程序,要求根据输入程序显示电子表画面。
研究电子表及扩大其应用,有着非常现实的意义。
关键词
LED,定时/计器数,C语言,调试,运行。
一、电子表的设计要求与方案
1.1设计要求
(1)
1)单片机只要采用51核的即可。
2)自动计时,用6位LED显示器显示时、分、秒。
3)使用三个按键设定当前时间,使用“设置/计时”键转换到设定状态,用“加1”和“减1”键来设定时间。
4)根据提供的材料清单,设计电路原理图,并用自己熟悉的软件画出原理图。
(2)1.硬件设计
1)
序号
材料
数量
1
单片机AT89S52
1
2
总线驱动器74LS244
1
3
6线驱动器7407
1
4
8段数码管(共阴极)
6
5
1kΩ电阻
7
6
300Ω×8排阻
1
7
200Ω电阻
4
8
22μF电解电容
1
9
50pF瓷片电容
2
10
12MHz晶振
1
11
复位按钮
4
2)启动PROTEL99SE软件,绘出原理图。
并绘制相应的印刷电路板,作为焊接的预演。
2.软件设计
1)任务分解,确定模块及相应的功能。
2)列出资源分配表。
3)画出各模块的框图。
4)编写汇编语言源程序,要有注释,书写要规范
3.调试
参考下面检测设备,制定检测方法
序号
设备
数量
1
Wave仿真器
1
2
单片机烧录器
1
3
数字式示波器
1
4
万用表
1
5
多用电源
1
1.2方案论证比较
1.计时方案
方案一:
利用可编程控制定时器进行定时,逐步完成时、分、秒的计数。
该方案西门子PLC,成本较高,且程序梯形图较为繁琐。
方案二:
利用MCS-51内部的定时器/计数器进行中断时,配合软件延时实现是、分、秒的计时。
该方案节省硬件成本,操作方便。
因此本系统采用此方案。
2.键盘/显示方案
方案一:
采用串口扩展,LED静态显示。
如图1
该方案用较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但占用口线多,硬件电路复杂,成本高。
方案二:
采用直接接口,LED动态显示。
如同1
采用动态显示方式比较节省I/O口,硬件也较静态显示方式简单。
但亮度不如静态显示方式,而且再显示位数较多时,CPU依次扫描,占用CPU较多的时间。
本系统采用此方案。
二、硬件设计
(一)计时方案
利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
(二)键盘/显示方案
AT89S52的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。
AT89S52是一种低功耗,高性能的CMOS8位微型计算机。
它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。
简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用此的设计方案,结构如图1-1如示。
三、电路原理图
启动PROTEL99SE软件,根据电子表要实现的功能和要求,绘出原理图如下:
四、软件设计
(一)软件设计分为以下几个模块
(1)主程序:
初始化与键盘监控。
(2)计时程序模块CLOCK:
如图所示。
(3)、时间设置程序模块MODIFY:
如图所示。
(4)、显示程序模块DISPLAY:
如图所示。
(5)键盘扫描
判断是否有键按下:
无键按下则循环等待;有键按下则求取键号并将键号送A累加器返回。
程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。
(二)资源分配表
地址
功能
名称
初始化值
30H-35H
显示缓冲去,时、分、秒
DISO0-DISP5
00H
3CH-3FH
计数缓冲区,时、分、秒、100ms
HOUR,MIN,SEC,MSEC
00H
50H-75H
堆栈区
F0
0
PSW.5
计时显示允许位
五、程序
*******************主程序MAIN******************
ORG0000H
AJMPMAIN
ORG000BH
AJMPCLOCK
ORG0030H
DISP0EQU30H
DISP1EQU31H
DISP2EQU32H
DISP3EQU33H
DISP4EQU34H
DISP5EQU35H
HOUREQU3CH
MINEQU3DH
SECEQU3EH
MSECEQU3FH
MAIN:
MOVSP,#50;设置堆栈区
CLRF0;允许计时显示
MOV#10H
MOVR0,#DISP0
CLRA
LOOP:
MOV@R0,A
INCR0
DJNZR7,LOOP;设置初值
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#3CH;定时器0的初始化,定时时间100ms
SETBTR0;启动定时器
SETBEA
SETBET0;开中断
BEGIN:
ACALLKEYSCAN;调用键盘扫描
CJNEA,#0AH,NEXT1;是CLR/RET键否?
CLRTR0;是则暂时停止计时
MOVR1,#HOUR;地址指针指向计时缓冲
区首地址
**********************键盘扫描子程序***************************
KEYSCAN:
ACALLTEST;调用判断按键是否按下
子程序TEST
JNZREMOV;有键按下则调消抖延时
ACALLDISPLAY
ACALLALARM
AJMPKEYSCAN;无键按下则继续判是否有
;键按下
REMOV:
ACALLDISPLAY;调用延时子程序消抖
ACALLTEST;再判是否有键按下
JNZLIST;有键按下则转逐列扫描
ACALLDISPLAY
ACALLALARM
AJMPKEYSCAN;无键按下则继续判断是否有键
按下
LIST:
MOVR2,#0FEH;首列扫描字送R2
MOVR3,#00H;首列键号送R3
LINE0:
MOVA,R2;首列扫描字送R2
MOVP2,A;首列扫描字P2口
MOVA,P0;读入P0口的行状态
JBACC.0LINE1;第0行无键按下,转第1行
MOVA,#00H;第0行有键按下,行首键号
;送A
AJMPTRYK;求键号
LINE1:
JBACC.1,LINE2;第一行无键按键,转第2行
MOVA,#04H;第一行有键按下,行首键号送A
AJMPTRYK;求键号
LINE2:
JBACC.2,NEXT;第2行无键按键,转第3行
MOVA,#08H;第2行有键按下,行首键号送A
AJMPTRYK;求键号
NEXT:
INCR3;扫描下一列
MOVA,R2;列扫描送A
JNBACC.3,EXIT;4列扫描完,重新进行下一轮扫描
RLA;4列未扫描完,扫描字左移扫描下一列
MOVR2,A;扫描字送A
AJMPLINE0;转向扫描下一列
EXIT:
AJMPKEYSCAN;等待下一次按键
TRYK:
ADDA,R3;按公式计算键码,求得键号
PUSHACC;键号如栈保护
LETK:
ACALLTEST;等待按键释放
JNZLETK;按键未释放,继续等待
POPACC;按键释放,键号出栈
RET;键盘扫描结束,返回
TEST:
MOVA,#00H
MOVXP0,A;全扫描字00H送P0口
MOVXA,P2;读入P2口行状态
CPLA;A取反,以高电平表示有键按下
ANLA,#07H;屏蔽高5位
RET
*****************显示子程序DISPLAY*********************************
DISPLAY:
JBF0,DISP;允许时间显示标志F0=1转DISP
ACALLSEPA;否则调用SEPA刷新显示缓冲区
DISP:
PUSHPSW ;动态扫描显示子程序
PUSHACC
SETBRS0
MOVA,#0FFH
MOVP2,A;关显示
MOVR0,#DISP0
MOVR7,#00H
MOVR6,#06H
MOVR5,#0FEH
DIS1:
MOVDPTR,#TAB
MOVA,@R0;取显示缓冲区数据
MOVCA,@A+DPTR;查表得字型码
MOVP1,A;字型码送P1口
.MOVA,R5
MOVXP0,A;位选码送P0口
HERE:
DJNZR7,HERE;延时
INCR0;更新显示缓冲区地址
MOVA,R5
RLA;位码左移
MOVR5,A
DJNZR6,DIS1;判断6位显示完否
CLRRS0
POPACC
POPPSW
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
;共阴极字型码表
*****************合字子程序COMB******************
COMB:
MOVR0,#DISP1;R0指向显示缓冲区小时低位
ACALLCOMB1;合字
CJNEA,#24H,CHK;小时大于24否?
CHK:
JNCEXIT1 ;大于24则取消本次设置,退出
MOV@R1,A ;否则,小时送计时缓冲区/闹钟
;值寄存区小时单元
INCR1
MOVR0,#DISP3;R0指向显示缓冲区分低位
ACALLCOMB1
CJNEA,#60H,CHK1
CHK1:
JNCEXIT1
MOV@R1,A
INCR1
MOVR0,#DISP5;R0指向显示缓冲区秒低位
ACALLCOMB1
CJNEA,#60H,CHK2
CHK2:
JNCEXIT1
MOV@R1,A
RET
EXIT1:
AJMPMAIN;输入不合法退出,重新清
;0计时
COMB1:
MOVA,@R0
ANLA,#0FH;取出低位
MOV43H,A;暂存于43H单元
DECR0;指向高位
MOVA,@R0
ANLA,#0FH
SWAPA;高位送高4位
ORLA,43H;高低位合并
RET
;***************拆字子程序SEPA***************
SEPA:
PUSHPSW
PUSHACC
SETBRS0
MOVR0,#DISP5;指向显示缓冲区秒低位
MOVA,SEC
ACALLSEPA1
MOVA,MIN
ACALLSEPA1
MOVA,HOUR
ACALLSEPA1
POPACC
POPPSW
CLRRS0
RET
SEPA1:
MOV44H,A;暂存44H
ANLA,#0FH;取出低位
MOV@R0,A;送显示缓冲区低位
DECR0;指向显示缓冲区高位
MOVA,44H
ANLA,#0F0H;取出高位
SWAPA;高位送往低4位形成高位数据
MOV@R0,A;高位数据送显示缓冲区高位
RET
*************定时器0中断服务子程序CLOCK*************
CLOCK:
MOVTL0,#0B7H
MOVTH0,#3CH;重装初值,时间校正
PUSHPSW
PUSHACC;保护现场
INCMSEC
MOVA,MSEC
CJNEA,#0AH,DONE
MOVMSEC,#00H
MOVA,SEC
INCA
DAA;二—十进制转换
MOVSEC,A
CJNEA,#60H,DONE
MOVSEC,#00H
MOVA,MIN
INCA
DAA
MOVMIN,A
CJNEA,#60H,DONE
MOVMIN,#00H
MOVA,HOUR
INCA
DAA
MOVHOUR,A
CJNEA,#24H,DONE
MOVHOUR,#00H
DONE:
POPACC
POPPSW;恢复现场
RETI
六、调试
1.硬件调试
(1)脱机检查。
用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。
(2)联机调试。
暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。
可以通过一些简单的测试软件来查看接口工作是否正常。
2.软件调试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。
程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。
联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。
调试的基本步骤如下:
(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。
例如将DISP0~DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。
若显示不正确,可在DISP子程序相应位置设置断点,调试检查。
然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。
(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:
00:
00开始正确计时。
若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。
然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:
58:
48,运行主程序(不按下任何键),检验能否正确进位。
(3)调试键盘扫描模块KEYSCAN,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。
(4)调试时间设置模块MODIFY。
首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0~DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。
然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,运行程序后查看时间设置缓冲区HOUR、MIN、SEC单元,最后联调MODIFY模块。
(5)运行主程序联调,检查能否用键盘修改当前时间。
七、结束语
通过本次课程设计,我去认真再次学习了汇编语言的,以及熟练了PROTEUS和KEIL软件的运用,还更好的锻炼了用VISIO画流程图。
有时间还是会更多锻炼的。
感觉这些软件都越来越顺手了,挺开心。
发现自己真是不逼就不学的人。
另外,我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。
损耗了过多的内存资源。
本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。
在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。
同时在课程设计过程中,我们巩固和学习了我们的单片机知识。
相信这对我以后的课程设计和毕业设计将会有很大的帮助!
参考文献
[1]李泉溪.《单片机原理与应用实例仿真》.北京航空航天大学出版社2009年
[2]江世明.《基于proteus的单片机应用技术》.电子工业出版社2008年
[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年
[4]万光毅.《单片机实验与实践教程》.北京航空航天大学出版社2004年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子表 设计 论文