已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文单片机电子 表设计 论文(定稿) xx-xx第一学期单片机应用技术期末考核题目电子表的设计学号班级P11电气姓名摘要随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。 多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。 本课程设计是基单片机原理与接口技术的简单应用。 运用所学的单片机原理和接口技术知识完成数字电子表的设计。 电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。 由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。 尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用C语言设计电子表显示程序,要求根据输入程序显示电子表画面。 研究电子表及扩大其应用,有着非常现实的意义。 关键词LED,定时/计器数,C语言,调试,运行。 目录 一、电子表的设计要求与方案论证比较 (4)1.1设计要求 (4)1.2方案论证比较 (5) 二、硬件电路设计 (6) 三、电路板原理图 (7) 四、软件设计 (8)(一)软件设计 (8)(二)资源分配表 (11) 五、程序 (12) 六、调试 (17) 七、结语 (18) 一、电子表的设计要求与方案1.1设计要求 (1)1)单片机只要采用51核的即可。 2)自动计时,用6位LED显示器显示时、分、秒。 3)使用三个按键设定当前时间,使用“设置/计时”键转换到设定状态,用“加1”和“减1”键来设定时间。 4)根据提供的材料清单,设计电路原理图,并用自己熟悉的软件画出原理图。 (2)1.硬件设计1)序号材料数量1单片机AT89S5212总线驱动器74LS244136线驱动器7407148段数码管(共阴极)651k电阻763008排阻17200电阻4822F电解电容1950pF瓷片电容21012MHz晶振111复位按钮42)启动PROTEL99SE软件,绘出原理图。 并绘制相应的印刷电路板,作为焊接的预演。 2软件设计1)任务分解,确定模块及相应的功能。 2)列出资源分配表。 3)画出各模块的框图。 4)编写汇编语言源程序,要有注释,书写要规范3.调试参考下面检测设备,制定检测方法序号设备数量1Wave仿真器12单片机烧录器13数字式示波器14万用表15多用电源11.2方案论证比较1.计时方案方案一利用可编程控制定时器进行定时,逐步完成时、分、秒的计数。 该方案西门子PLC,成本较高,且程序梯形图较为繁琐。 方案二利用MCS-51内部的定时器/计数器进行中断时,配合软件延时实现是、分、秒的计时。 该方案节省硬件成本,操作方便。 因此本系统采用此方案。 2键盘/显示方案方案一采用串口扩展,LED静态显示。 如图1该方案用较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但占用口线多,硬件电路复杂,成本高。 方案二采用直接接口,LED动态显示。 如同1采用动态显示方式比较节省I/O口,硬件也较静态显示方式简单。 但亮度不如静态显示方式,而且再显示位数较多时,CPU依次扫描,占用CPU较多的时间。 本系统采用此方案。 P0口P2口8051P1口LED1LED24X4键图1-18051LED显示4X4键盘图1-2 二、硬件设计(一)计时方案利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。 该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。 (二)键盘/显示方案AT89S52的P0口和P2口外接由六个LED数码管(LED5LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。 AT89S52是一种低功耗,高性能的CMOS8位微型计算机。 它带有8K Flash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。 简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用此的设计方案,结构如图1-1如示。 三、电路原理图11AT89S52电路显示方框图按键电路晶振电路复位电路AT89S52驱动电路LED电源启动PROTEL99SE软件,根据电子表要实现的功能和要求,绘出原理图如下 四、软件设计(一)软件设计分为以下几个模块 (1)主程序初始化与键盘监控。 N Y开始定义堆栈区定时器 0、数据缓冲区初始化调用键扫描子程序是C/R键?地址指针指向计时缓冲区调用时间设置程序(a)主程序流程图 (2)计时程序模块CLOCK如图所示。 Y Y Y YN N N N保护现场时间校正重装定时器0初循环次数减1满20次秒单元加160s到秒单元清0分单元加160分分单元清0小时单元加1返回24小时到恢复现场小时单元清0(b)计时程序流程图 (3)、时间设置程序模块MODIFY如图所示。 (4)、显示程序模块DISPLAY如图所示。 保护现场调用键盘设置子程序ACALL KEYIN调用合字程序ACALL B恢复现场返回3-4时间设置流程图N Y保护现场返回允许显示计时时间动态扫描显示调用拆字程序3-5显示流程图 (5)键盘扫描判断是否有键按下无键按下则循环等待;有键按下则求取键号并将键号送A累加器返回。 程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。 (二)资源分配表地址功能名称初始化值30H-35H显示缓冲去,时、分、秒DISO0-DISP500H3CH-3FH计数缓冲区,时、分、秒、100ms HOUR,MIN,SEC,MSEC00H50H-75H堆栈区F00PSW.5计时显示允返回键盘扫描有键按下?有键按下?求取信号调用显示程序调定时比较程序用调用显示程序调定时比较程序用调用显示程序调定时比较程序用NNYY许位 五、程序*主程序MAIN*ORG0000H AJMP MAIN ORG000BH AJMPCLOCK ORG0030H DISP0EQU30H DISP1EQU31H DISP2EQU32H DISP3EQU33H DISP4EQU34H DISP5EQU35H HOUREQU3CH MINEQU3DH SECEQU3EH MSECEQU3FH MAIN:MOV SP,#50;设置堆栈区CLR F0;允许计时显示MOV#10H MOV R0,#DISP0CLR ALOOP:MOVR0,A INC R0DJNZ R7,LOOP;设置初值MOV TMOD,#01H MOVTL0,#0B0H MOVTH0,#3CH;定时器0的初始化,定时时间100ms SETBTR0;启动定时器SETB EASETB ET0;开中断BEGIN:ACALL KEYSCAN;调用键盘扫描CJNE A,#0AH,NEXT1;是CLR/RET键否?CLR TR0;是则暂时停止计时MOV R1,#HOUR;地址指针指向计时缓冲区首地址*键盘扫描子程序*KEYSCAN:ACALL TEST;调用判断按键是否按下子程序TEST JNZREMOV;有键按下则调消抖延时ACALL DISPLAYACALL ALARMAJMP KEYSCAN;无键按下则继续判是否有;键按下REMOV:ACALL DISPLAY;调用延时子程序消抖ACALL TEST;再判是否有键按下JNZ LIST;有键按下则转逐列扫描ACALL DISPLAYACALL ALARMAJMP KEYSCAN;无键按下则继续判断是否有键按下LIST:MOV R2,#0FEH;首列扫描字送R2MOV R3,#00H;首列键号送R3LINE0:MOV A,R2;首列扫描字送R2MOV P2,A;首列扫描字P2口MOV A,P0;读入P0口的行状态JB ACC.0LINE1;第0行无键按下,转第1行MOV A,#00H;第0行有键按下,行首键号;送A AJMPTRYK;求键号LINE1:JB ACC.1,LINE2;第一行无键按键,转第2行MOV A,#04H;第一行有键按下,行首键号送A AJMPTRYK;求键号LINE2:JB ACC.2,NEXT;第2行无键按键,转第3行MOV A,#08H;第2行有键按下,行首键号送A AJMPTRYK;求键号NEXT:INC R3;扫描下一列MOV A,R2;列扫描送A JNBACC.3,EXIT;4列扫描完,重新进行下一轮扫描RL A;4列未扫描完,扫描字左移扫描下一列MOV R2,A;扫描字送A AJMPLINE0;转向扫描下一列EXIT:AJMP KEYSCAN;等待下一次按键TRYK:ADD A,R3;按公式计算键码,求得键号PUSH ACC;键号如栈保护LETK:ACALL TEST;等待按键释放JNZ LETK;按键未释放,继续等待POP ACC;按键释放,键号出栈RET;键盘扫描结束,返回TEST:MOV A,#00H MOVX P0,A;全扫描字00H送P0口MOVX A,P2;读入P2口行状态CPL A;A取反,以高电平表示有键按下ANL A,#07H;屏蔽高5位RET*显示子程序DISPLAY*DISPLAY:JB F0,DISP;允许时间显示标志F0=1转DISP ACALLSEPA;否则调用SEPA刷新显示缓冲区DISP:PUSH PSW;动态扫描显示子程序PUSH ACC SETB RS0MOV A,#0FFH MOV P2,A;关显示MOV R0,#DISP0MOV R7,#00H MOV R6,#06H MOV R5,#0FEH DIS1:MOV DPTR,#TAB MOV A,R0;取显示缓冲区数据MOVC A,A+DPTR;查表得字型码MOVP1,A;字型码送P1口.MOV A,R5MOVXP0,A;位选码送P0口HERE:DJNZ R7,HERE;延时INC R0;更新显示缓冲区地址MOV A,R5RL A;位码左移MOV R5,A DJNZR6,DIS1;判断6位显示完否CLR RS0POP ACCPOP PSWRET TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;共阴极字型码表*合字子程序B*B MOVR0,#DISP1;R0指向显示缓冲区小时低位ACALL B1;合字CJNE A,#24H,CHK;小时大于24否?CHK JNC EXIT1;大于24则取消本次设置,退出MOVR1,A;否则,小时送计时缓冲区/闹钟;值寄存区小时单元INCR1MOVR0,#DISP3;R0指向显示缓冲区分低位ACALL B1CJNE A,#60H,CHK1CHK1JNC EXIT1MOVR1,A INCR1MOVR0,#DISP5;R0指向显示缓冲区秒低位ACALL B1CJNE A,#60H,CHK2CHK2JNCEXIT1MOVR1,A RETEXIT1AJMPMAIN;输入不合法退出,重新清;0计时B1MOV A,R0ANL A,#0FH;取出低位MOV43H,A;暂存于43H单元DEC R0;指向高位MOV A,R0ANL A,#0FH SWAP A;高位送高4位ORL A,43H;高低位合并RET;*拆字子程序SEPA*SEPA PUSH PSW PUSH ACCSETBRS0MOVR0,#DISP5;指向显示缓冲区秒低位MOV A,SEC ACALLSEPA1MOV A,MIN ACALLSEPA1MOV A,HOUR ACALLSEPA1POP ACCPOP PSWCLR RS0RET SEPA1MOV44H,A;暂存44H ANLA,#0FH;取出低位MOVR0,A;送显示缓冲区低位DEC R0;指向显示缓冲区高位MOV A,44H ANLA,#0F0H;取出高位SWAPA;高位送往低4位形成高位数据MOVR0,A;高位数据送显示缓冲区高位RET*定时器0中断服务子程序CLOCK*CLOCK MOVTL0,#0B7H MOVTH0,#3CH;重装初值,时间校正PUSHPSWPUSHACC;保护现场INC MSECMOVA,MSEC CJNEA,#0AH,DONE MOVMSEC,#00H MOVA,SEC INCA DAA;二十进制转换MOV SEC,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 DONEPOP ACCPOP PSW;恢复现场RETI 六、调试1.硬件调试 (1)脱机检查。 用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。 (2)联机调试。 暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。 可以通过一些简单的测试软件来查看接口工作是否正常。 2.软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。 程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。 联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。 调试的基本步骤如下 (1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。 例如将DISP0DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。 若显示不正确,可在DISP子程序相应位置设置断点,调试检查。 然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。 (2)运行主程序调试计时模块,不按下任何键,检查是否能从由000000开始正确计时。 若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。 然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为235848,运行主程序(不按下任何键),检验能否正确进位。 (3)调试键盘扫描模块KEYSCAN,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。 (4)调试时间设置模块MODIFY。 首先屏蔽B子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。 然后屏蔽KEYIN子程序,单独调试合字模块B,分别将R1设置为时间设置缓冲区和闹钟值寄存区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省哈尔滨市阿城区二中2025-2026学年高一上生物期末统考试题含解析
- 陕西宝鸡金台区2026届高一上生物期末综合测试试题含解析
- 湖南省浏阳一中2026届高二数学第一学期期末质量跟踪监视模拟试题含解析
- 山东省德州市平原中英文实验高级中学2026届高二数学第一学期期末质量检测试题含解析
- 上海市松江区市级名校2026届化学高二第一学期期末达标检测试题含解析
- 江西省永丰中学2025年高二上化学期末监测模拟试题含解析
- 2026届陕西省西安市西北工业大学高二上化学期末学业质量监测试题含解析
- 2025年江苏省苏北地区化学高一第一学期期中复习检测试题含解析
- 抗病性状分子标记-第1篇-洞察与解读
- 租车标准合同范本
- 中铝班组管理办法
- 冠脉搭桥术的手术方法和并发症
- 适岗评价管理办法
- 二年级上册数学应用题100道含完整答案【名师系列】
- 东台辅警招聘考试真题2025含答案
- 2025年度食品安全员考试复习题库(答案+解析)
- 学堂在线 创业导引-与创业名家面对面 期末考试答案
- 中国茶马古道课件
- 认知障碍的护理查房
- 礼盒车间质量管理制度
- 2025年湖北省武汉市黄陂区中考语文三模试题(含答案)
评论
0/150
提交评论