单片机制作的电子表设计报告.doc_第1页
单片机制作的电子表设计报告.doc_第2页
单片机制作的电子表设计报告.doc_第3页
单片机制作的电子表设计报告.doc_第4页
单片机制作的电子表设计报告.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012-2013第二学期课 程 设 计题目 电子表的设计与制作 姓 名 杨佳锐 学 号201103120211 系(院)电子电气工程学院 班 级 P11电气二班 指导教师_贲艳波_ 职 称_讲师_二O一三年 七 月 四 日摘 要 随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。本课程设计是基单片机原理与接口技术的简单应用。运用所学的单片机原理和接口技术知识完成数字电子表的设计。电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用汇编设计电子表显示程序,要求根据输入程序显示电子表画面。研究电子表及扩大其应用,有着非常现实的意义。关键词数码管,定时/计器数, 汇编,调试,运行。 目录一、方案的论证比较(4)1.1方案论证比较(5)二、 硬件电路设计 (6)2.1计时方案()2.2单片机最小系统()2.3显示电路()2.4键盘设计()2.5材料清单()2.6电路板原理图(7)三、软件设计(8)3.1程序框图(8)3.2资源分配表(11)3.3程序(12)四、调试(17)五、结语(18)一.方案的论证比1.1方案论证比较1. 计时方案 方案一:利用可编程控制定时器进行定时,逐步完成时、分、秒的计数。该方案西门子PLC,成本较高,且程序梯形图较为繁琐。方案二:利用MCS-51内部的定时器/计数器进行中断时,配合软件延时实现是、分、秒的计时。该方案节省硬件成本,操作方便。因此本系统采用此方案。2.显示方案方案一:采用串口扩展,LED静态显示。如图1该方案用较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但占用口线多,硬件电路复杂,成本高。P0口P2口8051P1口LED1LED24X4键盘图1-18051LED显示4X4键盘图1-2方案二:采用直接接口,LED动态显示。如同1采用动态显示方式比较节省I/O口,硬件也较静态显示方式简单。但亮度不如静态显示方式,而且再显示位数较多时,CPU依次扫描,占用CPU较多的时间。本系统采用此方案。3.键盘方案方案一:矩阵式键盘节约口线,适用于键盘较多的场所,但程序比较复杂方案二:独立式键盘程序编写比较简单,灵活,在按键较多的情况下占用口线较多,本课题中只有三个按键,所以本方案更适用于该设计。 二.硬件电路的设计2.1计时方案利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使我在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。2.2单片机最小系统AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以我采用AT89S51作为基本芯片构成单片机最小系统,并使用12mk的晶振构成时钟震荡电路,结构如图1-1如示。图1-1 单片机最小系统2.3显示方案AT89S52的P0口和P2口外接由六个LED共阴极数码管(LED5LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,用74ls244,7407芯片和8*300的排阻与6个1k电阻够成驱动电路,结构如下图1-2图1-22.4键盘设计采用独立式键盘,三个按键分别于p1.0,p1.1,p1.2相连,三个按键接三个上拉电阻,另一端接地,按键低电平有效。如图1-3图1-32.5材料清单序号材料数量1单片机AT89S5212总线驱动器74LS244136线驱动器7407148段数码管(共阴极)651k电阻763008排阻17200电阻4822F电解电容1950pF瓷片电容21012MHz晶振111复位按钮42.6电路板原理图14 AT89S52电路方框图原理图 图1-5三、软件设计3.1程序框图 Y(1) 计时程序模块CLOCK:如图所示。YYYYNNNN保护现场时间校正重装定时器0初值循环次数减1满20次秒单元加160s到秒单元清0分单元加160分到分单元清0小时单元加1返回24小时到恢复现场小时单元清0(b)计时程序流程图(2)、主程序:如图所示。开始时钟,中断,显示初始化调用显示子程序计时更新循环 3-4时间设置流程图(3)、显示程序模块DISPLAY:如图所示。NY保护现场返回允许显示计时时间动态扫描显示调用拆字程序3-5显示流程图(4)键盘扫有键盘中断就执行键盘子程序,无则执行主程序。一旦有中断必须有6次才能执行主程序。否则循环扫描键盘。返回键盘中断有键按下?有键按下?调用加法或减法主程序循环扫描扫描键盘循环扫描NNYY(二)资源分配表地址功能名称初始化值40H-45H显示缓冲去,时、分、秒00H46H-48H计数缓冲区,时、分、秒、HOUR,MIN,SEC,MSEC00H50H-75H堆栈区F00五、程序*主程序MAIN* ; 程序入口 ORG 0000H LJMP MAIN;跳转到主程序 ORG 0003H LJMP KEY ;键盘入口 ORG 000BH LJMP CON ;时钟中断 ORG 0020H ; 主程序MAIN:MOV SP,#50H;栈底 MOV IE,#83H ;开中断 MOV TMOD,#01H ;设置定时方式 MOV TH0,#3CH ;设定时初值 MOV TL0,#0B0H MOV 40H,#00H ;显示缓存区清零 MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00HSECOND EQU 46H ;秒单位 MIN EQU 47H ;分单位 HOUR EQU 48H ; 时单位 MOV SECOND,#00H;秒初始值 MOV MIN,#00H ;分初始值 MOV HOUR,#00H ;时初始值 MOV R3,#02H ;一秒钟定时 SETB TR0; 启动程序START:ACALL DISP ; 调用显示子程序 LJMP START ;循环DISP: MOV R0,#40H ; 显示缓冲区的首地址 MOV R4,#01H ;位选 MOV A,R0;取缓冲区第一个数据送aDISP1: MOV DPTR,#TAB;查表首地址送dptr MOVC A,A+DPTR ;查表得到的显示字符码送a MOV P0,A ;将字符码送p0口 MOV A,R4 ;位选送p2口 MOV P2,A RL A ;位选循环左移 MOV R4,A ;左移结果送r4 INC R0 ;指向缓冲区下一位 MOV A,R0 ;取显示缓冲区的下一位数据 CJNE R4,#40H,DISP1 ;判断六位是否显示完,若没有返回循环 RET; 返回主程序TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ; 定时器中断子程序CON:CLR EA ;关中断 PUSH ACC ;保护现场SETB EA ;开中断MOV TH0,#3CH ;重置定时器初值MOV TL0,#0B0H DJNZ R3,RN ;判断是否到一秒MOV R3,#02H ;重置初值INC SECOND ;秒单位加一MOV A,SECOND ;秒单位送aMOV R1,#41H ;指向显示缓冲区41hLCALL BINBCD ;调用拆字子程序MOV A,SECONDCJNE A,#60H,RN;判断是否到60秒,不到返回MOV A,#00HMOV SECOND,A;到60秒秒单位清零MOV R1,#41H ; 指向缓冲区41hLCALL BINBCD ; 调用拆字子程序MOV A,MIN ; 分单位送aINC A ; 分单位加一MOV MIN,A ;MOV R1,#43H ;指向缓冲区43hLCALL BINBCD ;调用拆字子程序MOV A,MIN CJNE A,#60H,RN;判断是否到60分,若不到则返回MOV A,#00H;MOV MIN,A ;到60分,分单位清零MOV R1,#43H ;指向缓冲区43hLCALL BINBCD;调用拆字子程序 MOV A,HOUR INC A;时单位加一MOV HOUR,A ; 加一结果送时单位MOV R1,#45H ; 指向缓冲区45hLCALL BINBCD ;调用拆字子程序MOV A,HOUR CJNE A,#24H,RN ; 是否到24小时,不到返回MOV A,#00H MOV HOUR,A ;到24时,时单位清零MOV R1,#45H ;指向缓冲区45hLCALL BINBCD ;调用拆字子程序 RN:CLR EA ;关中断POP ACC;恢复现场SETB EA;开中断RETI;返回主程序;拆字子程序BINBCD:MOV B,#10 ; DIV AB;除以10得到十位和个位 MOVX R1,A ;十位送相应的缓冲区 DEC R1;指向缓冲区的个位 MOV A,B;个位数据送a MOV R1,A ;个位数据送相应的缓冲区 RET;返回主程序 ; 键盘KEY: CLR EA ;关中断 PUSH ACC ;保护现场 SETB EA ;开中断 CLR TR0;停止计时SHAN:MOV R5,#00H;调整位初始化 CLR P2.0 ;熄灭调整位LCALL DELAY;延时一段时间MOV R1,#40H;指向显示缓冲区40hJBC ACC.1,KEY1 ;是否加一键按下,若是跳转到加一子程序JBC ACC.2,KEY2_1 ;是否减一键按下,若是跳转到减一子程序JBC IE0,MS;是否调整键按下,若是跳转到系一位AJMP SHAN ;否侧继续扫描MS:INC R5 CLR P2.1 LCALL DELAY MOV R1,#41H JBC ACC.1,KEY1 JBC ACC.2,KEY2 JBC IE0,FG AJMP MSFG:INC R5 CLR P2.3 LCALL DELAY MOV R1,#42H JBC ACC.1,KEY1 JBC ACC.2,KEY2 JBC IE0,FSFS:INC R5 CLR P2.4 LCALL DELAY MOV R1,#43H JBC ACC.1,KEY1 JBC ACC.2,KEY2 JBC IE0,SG AJMP FS KEY2_1:AJMP KEY2 SG:INC R5 CLR P2.5 LCALL DELAY MOV R1,#44H JBC ACC.1,KEY1 JBC ACC.2,KEY2 JBC IE0,SS AJMP SGSS:INC R5 CLR P2.6 LCALL DELAY MOV R1,#45H JBC ACC.1,KEY1 JBC ACC.2,KEY2 JBC IE0,CHU LJMP SSCHU:SETB TR0 ;开始计时CLR EA ;关中断POP ACC ;恢复现场SETB EA ;开中断 RETI ;返回主程序 ;加1子程序 KEY1:MOV A,40H ;缓冲区首地址送a ADD A,R5 ;取得调整位地址 MOV R0,A ;相加结果送r0 INC R0 ; 调整位数据加一 MOV A,R0 ;结果送a LCALL BINBCD;调用拆字子程序 LCALL DISP;显示 RET ;返回 ;减1子程序 KEY2:MOV A,40h ;缓冲区首地址送a ADD A,R5;取得调整位地址 MOV R0,A ;相加结果送r0 DEC R0 ;调整位数据减一 MOV A,R0;调整位数据送a LCALL BINBCD ;调用拆字子程序 LCALL DISP ;显示 RET ;返回;键盘查询子程序 KS:MOV A,#0FFH ;向p1口写1MOV P1,A MOV A,P1 ;p1口数据送aCPL A ;将a中数据取反RET;返回DELAY:MOV R7,#0AH ; 0.5秒的延时LP1:JB TF0,LP2 AJMP LP1 LP2:MOV TH0,#3CHMOV TL0,0B0H DJNZ R7,LP1RET;返回END;结束六、调试1. 硬件调试(1) 脱机检查。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。(2) 联机调试。暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。可以通过一些简单的测试软件来查看接口工作是否正常。2. 软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。调试的基本步骤如下:(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。例如将DISP0DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。若显示不正确,可在DISP子程序相应位置设置断点,调试检查。然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。(2) 运行主程序调试计时模块,不按下任何键,检查是否能从由00:00:00开始正确计时。若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:58:48,运行主程序(不按下任何键),检验能否正确进位。(3) 调试键盘扫描模块KEYSCAN,先用延时10 ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。(4) 调试时间设置模块MODIFY。首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论