




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南工程学院课 程 设 计课程名称 微机原理与应用 课题名称 单片机作息时间控制器 湖南工程学院课 程 设 计 任 务 书课程名称 微机原理与应用 课 题 单片机作息时间控制器 专业班级 自动化0702 学生姓名 罗 琦 学 号 200701020216 指导老师 王迎旭、李晓秀、林国汉 审 批 任务书下达日期 2010年 6 月 7日任务完成日期 2010年 6 月 20日设计内容与设计要求设计内容:本课题要求以单片机为核心,设计一个具有定时和计数功能的智能化作息时间控制器。该控制器要求有以下功能:1、 按作息时间接通/断开电铃;2、 课间接通/断开播放音乐设备;3、 时钟显示。设计要求:1
2、)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;*5)进行部分单元电路几应用程序的调试;主 要 设 计 条 件作息时间控制器常用于学校教学楼的时间控制,利用单片机内部定时器实现时间基准定时,并配合“启动”、“复位”等按键的操作完成铃声、音乐的开/停控制,显示的内容要求有时、分、秒各两位。说 明 书 格 式1. 课程设计任务书2. 目录3. 系统总体方案选择与说明4. 系统结构框图与工作原理5. 各单元硬件设计说明及计算方法6. 软件设计与说明(包括流程图)7. 调试结果与必要的调试说明8. 使用说明9. 程序清单10、总结11、参考文献附
3、录附录a 系统原理图附录b 程序清单评分表进 度 安 排设计时间两周第一周:星期一 讲课,布置课题任务, 借阅有关资料;星期二 上午:讲课及课题介绍;下午:分组进行总体方案讨论,初步确定设计方案;星期三 上午:方案论证与检查;下午:分组进行总体设计,硬、软件功能分配;星期四 硬、软件流程设计与计算; 星期五 小系统焊接与调试;第二周:星期一 分单元调试调试;星期二 写说明书初稿;星期三 检查设计情况,修改说明书;星期四 整理资料,准备答辩;星期五 交设计资料,答辩。参 考 文 献参考文献1张迎新.单片微型计算机原理、应用及接口技术.国防工业出版社2房小翠.单片机实用系统设计技术. 国防工业出版
4、社3何立民.单片机应用系统设计.北航出版社4王迎旭.单片机原理及及应用.机械工业出版社.2004年、目 录第一章 引 言71.1简介及技术要求 71.2计时方案 71.3键盘/显示方案7第二章 硬件设计 8 2.1 电路原理图 82.2 系统工作流程 92.3 系统使用说明 10第三章 系统软件设计 103.1 软件设计 103.2 系统工作流程 11第四章 程序模块设计. 15 4.1主程序模块 16 4.2定时中断服务程序模块 184.3扫描显示模块 224.4键扫描子程序 234.5键值处理子程序 274.6移位键处理程序模块 30第五章 调试及分析 32第六章 课程总结 33参考文献
5、34附录 35第1章 引 言因为单片机的种类多,而型号杂,也是我们学习中的困难,所以就mcs51系列的产品来说,就是一个典型的学习方法。对于类似汇编的单片机编程过程,也是一个十分有趣的过程。为了更好的说明,我以上介绍先从应用电路切入,同时介绍它们的使用方法,以便能快速掌握它们的应用。1.1简介及技术要求校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。如上下课打铃及扩音设备的开与关、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关的控制。技术要求如下:(1) 定时准确,月误差=10%。(2) 有显示和校时功能。(3) 具备到时响铃功能。1.2计时方案采用软件控
6、制利用mcs-51系列单片机内部的定时/计数器进行中数年定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使读者在定时/计数器的使用、中数年及程序设计方面得到锻炼与提高,因此本系统将采用软件方法实现计时。1.3键盘/显示方案对于实时时钟而言,显示显然是另一个重要的环节。如前所述,通常有两种显示方式:动态显示和静态显示。直接利用mc51单片机的p0和p2口,led动态显示。 该方案硬件连接简单,但动态扫描的显示方式需占用cpu较多的时间,在单片机没有太多实时测控任务的情况下可以采用。第2章 硬件设计考虑到在停电时本机仍需正常走时,故单片机选用coms低功耗产品如mcs51,由于l
7、ed显示电路耗电量较大,可将其电源与单片机电源分开,从而使得在停电时蓄电池仅对单片机供电,而不对显示电路供电,延长电池的供电时间。选用典型的并口扫描显示输出。用mcs51的p0口和p2口作为段码和位码输出口,并由2片uln2003作为每个端口的反相驱动。利用p1口的低六位作为6个功能键的键盘线,p3口部分口作为冬季或夏季作息时间的选择线、临时报时处理设置线和打铃输出控制(输出部分加光电隔离)。2.1电路原理框图报时钟电路的核心是mcs51单片机,其内部带有4kb的程序rom,无须外扩程序存储器。电脑时钟没有大量的运算和暂存数据,现有的128b片内ram已能满足要求,也不必外扩片ram。系统配备
8、5位led显示和6*1键盘,用p1口作为键盘接口电路,p2口作为5位led 显示的位选通口,p0口则作为字形码输出口。采用共阴极led数码管,p0口、p2口和数码管之间串接了反相驱动芯片uln2003,因此p2口输出高电平选中相应的位,而p0口输出低电平点亮相应的段。p3。2接用户自设定报时/作息时间报时的选择开关,开关闭合(p3。2为低电平)时,仅对用户自设定的时间点进行报时;开关断开时,则进行固定的作息时间表报时。 p3。3端口接夏令/冬令作息时间表,p3。3=1时选择择冬令作息时间表。p3。4端口外接光电隔离器,驱动扩音机电源的控制开关,低电平有效。键盘部分显示部分单片机控制部分响铃及扩
9、音部分 图2.1 单片机原理框图2.2系统工作流程本单片机报时控制系统具备以下功能:时钟显示。5位led从左到右依次显示时、分,采用24h计时。 图2.2 时间显示图(4) 键盘功能。采用4个独立按键,包括:移位键、加1键、减1键、校时置入键。(5) 移位键:(p1。0=0)每按动移位键一次,小数点从左向右移动1位。(6) 加1键:(p1。1=0)对小数点所在位的数什进行十进制加1。(7) 减1键:(p1。2=0)对小数点所在位的数值进行十进制减1。(8) 校时置入键:(p1。3=0)将显示的时间值置入实时时钟的计时缓冲区。 图2.3 键盘功能(9) 扬声器驱动电路: 图2.4 扬声器驱动电路
10、 2.3 系统的使用说明(1) 时间显示。通电后,系统自动进入时钟显示,从00:00:00:开始计时,此时可以设定当前时间。(2) 时间校对。按下“移位”键,小数点从左向右移动,每按动1次,小数点便移动1位;要修改设置哪一位,只需将小数点移到该位,便可用“加1键”或“减1键”对该位进行数字设定;时间的校对设定一共有5位,从左到右依次为星期、小时十位、小时个位、他的十位、分的个位。设置正确后“校时置入键”,时间校正便设置完成,报时钟开始按新设置的时间值开始走时和显示。(3) 用户报时时间设置/显示。用户可以自行设定10组报时时间点,这时led显示的最高位定义为组编号其他位定义不变;按下“报时设定
11、键”,系统根据“组编号”将用记设定的报时时间点(小时和分)存入内部ram相应存储单元中,用户如需修改和检查这些报时时间。如需修改,可用“移位键”、“加1键”,“减1 键”来重新设定,然后用“报时设定键”来转入并结束显示。(4) 报时输出的驱动过程。在报时处理程序上中,一旦当前时间与作息时间表中的某一时间点(时、分值)相同时,则建立f0报时标志,建立f1放音标志,扩音机播放报时音乐,并在26h中设置放音时间,放音时间到,则关闭驱动及清除f1标志位,完成1次报时驱动.第3章 软件设计3.1系统资源分配 (1)为方便阅读程序,先对系统的资源分配加以说明。1) 定时器。定时器0用作时钟定时,按方式1工
12、作,每隔100ms溢出中断1次。2) 片内ram及标志位的分配与定义见表1表1:地址功能名称初始化值2fh2bh显示缓冲区,星期、小时、分(高位在前)disp0disp400h24h20h计时缓冲区,星期、时、分、秒、100msweek,hour,min,sec,msec00h40h53h用户报时时间值寄存区(时、分)ahour、amin00h61h7fh堆栈区00hf0h报时开始标志位f0h0f1h放音开始标志位f1h0f3h分钟值变更标志位f3h0f4h键处理标志位f4h025h扩音机预热时间25h00h26h播放报时音乐时间26h00h(2)软件流程。根据上述工作流程,软件设计可分为以下
13、几个功能模块:1) 主程序:初始化与键盘监控。开始i/o端口初始化设置栈指针软件陷阱处理ram区清零定时器、中断初始化报时处理子程序调用键扫描子程序键扫描处理子程序调用显示子程序如有键则进行键处理判断是否有f3标志返回主程序入口2) 计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。3) 时间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。4) 显示:完成5位led动态显示。5) 键盘扫描:判断是否有键按下,并求取键号。6) 定时比较:判断报时时间到否,如时间到,则启动报时处理程序。7) 其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日停止报时等。第4章 程序
14、模块设计程序的模块设计非常重要,有很多功能的程序,列表如表2表2 :主程序程序的主体,调用其他子程序定时中断服务程序进行秒,分,时的累计计数,到时间到时,驱动蜂鸣器及继电器显示模块p0口作为段码,p2口作为位码输出,控制数码管。键扫描子程序检测p1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入a中键值处理子程序判断a中的值,根据a来选择调用哪个子程序4.1 主程序模块(main)在主程序模块中,先对各端口进行初始化,对内部ram区清零,设置堆栈和定时器初值,关闭显示器,启动定时及其中断。然后检测时钟分值变更标志位f3是否建立,如果已建立,则进行报时处理,否则再检测有无按键按
15、下,若有则进行按键处理,无则返回循环点。 org 0000h start: ajmp main ;跳转入主程序0030h org 000bh ajmp ctcint ;跳转到定时器t0的中断服务程序入口 org 0030hmain: nop ;主程序入口地址:0030h nop nop mov a,#offh ;关闭各输出口mov p0,a ;p0口为字形口,低电平有效mov p1,a;p1口作为6个键输入口mov p2,a ;p2口是字位口,低电平有效mov p3,a ;p3口报时方式控制和驱动输出口setb t0;关闭报时音乐输出(t0=1)setb t1 ;关闭报时扩音机电源(t1=1)
16、cjne sp,#07h,not1mov r0,#7fhmov r1,#7dh ;否则ram清零初始化clr aloop0: mov r0,a dec r0djnz r1, loop0 ;从内部ram区03h到7fh均清零not1: mov sp,#60h ;设置栈指针mov ip,#02h;设置定时器t0为最高中断优先级mov ie,#82h;定时器t0开中断mov tmod,#01h;设置定时器t0为方式1mov tl0,#0b0h;设置定时器t0初值mov th0,#3chsetb tr0;启动定时nopnextt: nop mov sp,#60h ;重置堆栈底位置lcall disp
17、;调用显示子程序nop ;检测标志是否出现,f3为定时分钟值变化的标志位jnb 0f3h,next1 ;f3=0,则转键扫描,判断有无键按下nop ;f3=1,调用报时处理子程序setb int0jnb int0 , users;如into=0,则调用用户自设定报时点lcall timera;into=1,调用timera,按作息时间表报时users: noplcall timerb;timerb为用户自设定报时点报时nopnext1:lcall checkey;调用按键扫描子程序,判断有无键按下jz nextt;无键按下,返回重新扫描noplcall keyacc;有键按下,调用按键处理子程
18、序nopsjmp nexttnopnop4.2定时中断服务程序模块该多好模块完成下述工作:对100毫秒(20h)、秒(21h)、分(22h)、小时(23h)进行累计计数,如果分值有计数变化并且无键按下,则将小时和分钟送显示缓冲区更新显示目录;如有报是处理标志,则对报时扩音机电源和报时音乐输出分别进行定时控制。ctcint:nop;t0的中断服务子程序mov tl0,#0b4h;设置定时器t0初值mov th0,#3chpush acc;保护主程序现场数据push pswnopsetb rs0;选择新的工作寄存器区(1区)clr rs1;select 1 areainc 20h;0.1s单元加1
19、mov a,20hjb of4h,lca;(f4h)为键处理标志位,在键处理过程中不显示秒点cjne a,#05h,ctnucctnuc: jc lc2;小于0.4s则秒点闪亮,大于0.4s则秒点熄灭clr 6chsjmp lcalc2: setb 6chlca: cjne a,#0eh,rtnh;未计满1s则退出中断mov 20h,#00h;毫秒计数单元清零jnb 0f0h,nexte;f0h=1为报时扩音机预热延时标志位mov a,25h;(25h)中存放报时扩音机预热延时时间值jnz nextfclr ofohclr ofohsetb of1hmov 26h,#1oh ;(26h)中存放
20、报时放音的延时时间值clr tonexte: jnb of1h,nextf ;(f1h=1)为报时放音的延时标志位mov a,26hdec amov 26h,ajnz nextf ;判断报时放音延时是否结束clr of1h ;延时时间到,清除报时放音标志位,关闭报时电源setb t1setb t2setb tosetb tonopnextf: nopmov a,21h ;对秒计数单元(21h)进行累计计数add a,#01hda amov 21h,acjne a,#06h,rtnh ;判断分计数是否计满clr amov 21h,asetb 0f3h ;(f3h)为分值有变更标志位next: m
21、ov a,22h ;对分(22h)进行累计计数add a,#01h;da amov 22h,acjne a,#60h,rtdnmov 22h,#00hmov a,23hadd a,#01h ;时单元加1da amov 23h,a ;对时(23h)进行累计计数cjne a,#24h,trndmov 23h,#00hmov a,24hadd a,#01h ;星期计数单元(24h)加1da amov 24h,acjne a,#07h,rtdnmov 24h,#00hrtdn: nopjnb of3h,rtdh ;确认(f3=0)分值无变更,则返回jb of4h,rtnh ;确认(f4=0)正在键处理
22、,则返回ldda: nop ;将当前的时间值显示缓冲区nopmov r0,#24h ;(24h、23h、22h、)送(2fh2bh)mov r1,#2fhmov r2,#02hmov a,r0 anl a,#0fhmov r1,adec r0dec r1ld1: mov a,r0 ;将1字节压缩的bcd码拆成两个字节,数数值存放在低字节内anl a,#of0hswap amov r1,adec r1mov a,r0anl a,#0fhmov r1,adec r0dec r1djnz r2,ld1noprtnh:nop ;中断返回,并恢复现场数据noppop pswpop accreti4.3扫
23、描显示模块 该模块为5位led扫描显示模块。p0口为字形码输出口,低电平有效;p2口为字位码输出口,高电平有。显示缓冲区为2fh2bh等5个字节,2fh存放显示的星期数,2eh、2dh存放显示的小时数,2ch、2bh存放显示的分钟数,其数值范围在00h0fh内时不显示该位的小数点,在10h1fh时则显示小数点。disp:nop ;disp为显示子程序nop mov a,#00h ;关闭显示mov p2,a ;p2口为字位码输出口mov a,#0ffh mov p0,a ;p0口为字形码输出口nopnopmov r0,#2fh ;显示子程序nop mov r1,#10h ;位控制字loop1:
24、mov a,r1nopmov p2,a ;输出位控制字mov p2,amov dptr,#tablemov a,r0 ;取显示缓冲区中的显示字符数movc a,a+dptr ;查表转换成字型代码cpl amov p0,a ;输出字形码mov r2,#00hloop2: djnz r2,loop2 ;延时2msdec r0 ;显示下一个字符mov a,r1clr crrc amov r1,ajnz loop1 ;判断5位扫描显示一遍是否完成ret nopnoptable:db 7fh,6fh,77h,7ch,39h,5eh,79h,71h db 0bfh,86h,0dbh,0cfh,0e6h,0
25、edh,0fdh,87h ;带小数点时的字符显示字形表db 0ffh,0efh、0f7h,0fch,0b9h,0f9h,0f1hnop4.4键扫描子程序 检测p1口,判断是否有键按下,如有键按下,进进行延时去抖动并读取键值,存入a中。checkeya:nop;键扫描子程序nopnopmov p1,#0ffhmov a,p1;判断是否有键按下cpl aanl a,#3fhjz retxlcall disp;延时去抖动lcall dispmov a,p1cpl aanl a,#3fhjz retxmov r6,a;当前值存放在r6中k1: lcall disp;等待释放按键mov a,p1cpl
26、aanl a,#3fhjnz k1mov a,r6nopnopretx:retnopi. 用户自设定报时时间点置入键程序模块。将显示缓冲区2fh2bh中的内容压缩后存入40h为首地址的片内ram中,其中2fh为定时时间点的编号,2eh、2dh为小时值,2ch、2bh为分钟数值。useset:nopmov r0,#2fhmov r1,#40h ;本次用户设定报时点首址为40hmov a,r0anl a,#ofhrl aadd a,r1 ;报时点编号乘2加首址,为本次存放的实际地址mov r1,adec r0nop;定时设定时间置入子程序nopmov r2,#02hldd: mov a,r0;an
27、l a,#0fhswap amov r7,adec r0mov a,r0anl a,#0fhadd a,r7mov r1,adec r0inc r1djnz r2,lddnopclr 0f4hnopretnopii. 减1键处理。在小数点点亮的对应位上进行十进制减1处理。 subone: nopnopjnb 7ch,sch74mov r0,#2fhsjmp sub1sch74: nopjnb 74h,sch6cmov r0,#2ehsjmp sub1sch6c:nop jnb 6ch,sch64mov r0,#2dhsjmp sub1sch5c: nop jnb 64h,sch5cmov ro
28、,#2chsjmp sub1sch5c: nopjnb 5ch,err1mov r0,#2bhsjmp sub1nopnoperr1:retnopsub1:nopmov a,r0add a,#99hda axchd a,r0retiii. 用户自设定报时时间点显示键处理模块。由(2fh)指定的用户自设定报时点编号,计算其在ram中存放的地址,再根据此地址找出该报时时间点的2个字节码,将其4个半字节分别存入2eh2bh单元低半字中。dspuse:nopmov r0,#2fh ;自设定报时点编号由(2fh)指定mov r1,#40h ;用户设定报时点首址为40hmov a,r0anl a,#0fh
29、rl aadd a,r1 ;报时点编号乘2加首址,为其存放的实际地址mov r1,adec r0nop ;取定时设定时间并置入显示缓冲区nopmov r2,#02hldr: mov a,r1 ;将小时和分钟值解压缩后装入相应显示单元中swap axchd a,r0dec r0inc r1djnz r2,ldrnopclr 0f4hnopretnop4.5键值处理子程序 keyacc: nop;键值处理子程序 nop;按键处理子程序jb acc0,shiftp ;是移位功能键转shiftpjb acc1,addone ;是加1键,转addonejb acc2,subone ;是减1键,转subo
30、nejb acc3, timset ;是时钟校对键转timsetjb acc,useset ;设置用户定时时间点jb acc5,dspuse ;显示用户定时时间点nopnopnopretnopiv. 加1键处理程序。在小数点点亮的对应位上进行十进制加1处理。addone:nopnopjnb 7ch,sech74mov r0,#2fhsjmp add1sech74:nopjnb 74h,sech6cmov r0,#2ehsjmp add1sech64c:nopjnp 6ch,sech64mov r0,#2bhsjmp add1nopnoperr2: retnopadd1: nopmov a,r0
31、add a,#01hda axchd a,r0retv. 校时时间置入程序模块。将设定的时间值置入相应的时间计数单元,并以该时间为起点开始计时。timset:nop ;校时时间置入程序段nopmov r0,#2fhmov r1,#24hmov r2,#02hmov a,r0anl a,#0fhmov r1,adec r0dec r1ld1: mov a,r0anl a,#0fhswap amov r7,adec r0mov a,r0anl a,0fhadd a,r7mov r1,adec r0dec r1djnz r2,ld1mov 21h,#00hclr 0f4hretnopnop4.6移位
32、键处理程序模块 将小数点从左向右依次移动1位。 小数点移动哪一位,那一位便可用加1或减1键进行修改数值。小数点如移到最右边1位,若再按1次移位键,小数点自动返回到最左边一位上。shiftp:nopjb 0f4h,nxterr:setb 0f4hsetb 5chclr 6chnxt: nop jnb 7ch,chk74clr 7chsetb 74hretchk74: nopjnb 74h,chk6cclr 74hsetb 74hsetb 6chretchk6c: nopjnb 6ch ,chk64clr 6chsetb 64hretchk64: nopjnb 64h,chk64clr 6chse
33、tb 5chretchk5c: nopjnb 5ch,errclr 5chsetb 7chret冬季和夏季的处息时间表区table2:db 06h,00h,06h,20h,60h,40h,07h,10h,07h,15h;冬令db 07h,20h,07h,50h,07h,58h,08h,00h,08h,45hdb 08h,53h,08h,55h,09h,40h,09h,55h,09h,58hdb 10h,00h,10h,45h,10h,53h,10h,55h,11h,40hdb 13h,00h,13h,13h,13h,15h,14h,00h,14h,13hdb 14h,15h,15h,00h,1
34、5h,13h,15h,15h,16h,00hdb 17h,30h,18h,15h,19h,00h,19h,35h,19h,40hdb 20h,30h,21h、00h,21h,30h,0ffh,0ffh,0ffhtable3:db 06h,00h,06h,20h,06h,40h,07h,10h,07h,15h;夏令db 07h,20h,07h,50h,07h,58h,08h,00h,08h,45hdb 08h,53h,08h,55h,09h,40h,09h,55h,09h,58hdb 10h,00h,10h,45h,10h,53h,10h,55h,11h,40hdb 13h,45h,13h,58
35、h,14h,00h,14h,45h,14h,50hdb 14h,58h,15h,00h,15h,45h,15h,53h,15h,55hdb 17h,25h,19h,00h,19h,35h,19h,40h,21h,00hdb 21h,30h,22h,00h,0ffh,0ffh,0ffh,0ffh第5章 调试及分析这里有两个问题需要特别重视。第一,定时器溢出产生中断请求,cpu并不一定立即响应中煌,而可能需要延迟一定的中断响应时间之后才能响应中断,中断响应时间大约为38个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时
36、器0初值的方法来减少定时器0定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器0重装初值设为3cb7h3cbfh。可以满足精度要求。第二,时间是按十进制递增,而mcs-51系列单片机只有二进制加法指令,因此用加法指令计时必须进行二一十进制转换。第6章 课程总结说实话,两周的时间说长不长,说短也不短,两周之前,我们对单片机仅停留在课本上,在理论层面上,那些芯片的具体应用都不知道怎么用,理论跟实际好像不能结合起来。 通过本次的课程设计,我学会了单片机的一般设计过程。虽然这一个系统参考了许多相关的文章,但是我还是从中学到了许多知识,并且在该系统中融入了自己的想法。在设计系统时通常都要
37、进行系统扩展与配置,因此,要完成一个单片机的设计工作,必须依次做到下述工作:1、硬件电路的设计、组装与调试;2、应用软件的编写、调试;3、完整应用软件的调试、固化和脱机运行。而在进行硬件系统设计时我们应当尽量做到:1、尽可能的选择典型电路,并符合单片机的常规使用方法;2、在充分满足系统功能要求前提下,留余地以便于二次开发;3、硬件结构设计应与软件设计方案一并考虑;4、整个系统相关器件要力求性能的匹配;5、硬件上要有可靠性与抗干扰设计;6、充分考虑单片机的带载驱动能力。所以本人用单片机编写了上面的程序,因为时间苍促,如有错误之处,还望老师理解,并加以批改。通过这次设计使我对单片机有了更深入的了解
38、以培养我们的动手能力。经过这次的单片机课程设计,我觉得我的动手能力得到了一个很大的提高,特别是对在芯片熟悉及认知方面,在这两周的实习中,王老师给我们的帮助是很大的,我们不懂的地方总能得到王老师细心的指点,这里,我们衷心的感谢我们的王迎旭老师,是您让我们在理论和实践之间建立起了一座桥梁,谢谢老师了! 参考文献1王迎旭.单片机原理及及应用.北京:机械工业出版社.2004年2任向民.微机接口技术应用使用教程.北京:清华大学出版社.2008年3房小翠.单片机实用系统设计技术.北京: 国防工业出版社4何立民.单片机应用系统设计.北京:北航出版社5张万奎.模拟电子技术.长沙:湖南大学出版社,2005附录:
39、元器件清单:stc89c52rc 一片 max232 一片 24c02 一片 继电器 一个 四位数码显示管 一个 拨码开关 一个12m晶振 一个 三极管 若干 二极管 若干 电阻 若干 电容 若干 程序清单: org 0000h start: ajmp main ;跳转入主程序0030h org 000bh ajmp ctcint ;跳转到定时器t0的中断服务程序入口 org 0030hmain: nop ;主程序入口地址:0030h nop nop mov a,#offh ;关闭各输出口mov p0,a ;p0口为字形口,低电平有效mov p1,a;p1口作为6个键输入口mov p2,a ;
40、p2口是字位口,低电平有效mov p3,a ;p3口报时方式控制和驱动输出口setb t0;关闭报时音乐输出(t0=1)setb t1 ;关闭报时扩音机电源(t1=1)cjne sp,#07h,not1mov r0,#7fhmov r1,#7dh ;否则ram清零初始化clr aloop0: mov r0,a dec r0djnz r1, loop0 ;从内部ram区03h到7fh均清零not1: mov sp,#60h ;设置栈指针mov ip,#02h;设置定时器t0为最高中断优先级mov ie,#82h;定时器t0开中断mov tmod,#01h;设置定时器t0为方式1mov tl0,#
41、0b0h;设置定时器t0初值mov th0,#3chsetb tr0;启动定时nopnextt: nop mov sp,#60h ;重置堆栈底位置lcall disp ;调用显示子程序nop ;检测标志是否出现,f3为定时分钟值变化的标志位jnb 0f3h,next1 ;f3=0,则转键扫描,判断有无键按下nop ;f3=1,调用报时处理子程序setb int0jnb int0 , users;如into=0,则调用用户自设定报时点lcall timera;into=1,调用timera,按作息时间表报时users: noplcall timerb;timerb为用户自设定报时点报时nopne
42、xt1:lcall checkey;调用按键扫描子程序,判断有无键按下jz nextt;无键按下,返回重新扫描noplcall keyacc;有键按下,调用按键处理子程序nopsjmp nexttnopnopctcint:nop;t0的中断服务子程序mov tl0,#0b4h;设置定时器t0初值mov th0,#3chpush acc;保护主程序现场数据push pswnopsetb rs0;选择新的工作寄存器区(1区)clr rs1;select 1 areainc 20h;0.1s单元加1mov a,20hjb of4h,lca;(f4h)为键处理标志位,在键处理过程中不显示秒点cjne
43、a,#05h,ctnucctnuc: jc lc2;小于0.4s则秒点闪亮,大于0.4s则秒点熄灭clr 6chsjmp lcalc2: setb 6chlca: cjne a,#0eh,rtnh;未计满1s则退出中断mov 20h,#00h;毫秒计数单元清零jnb 0f0h,nexte;f0h=1为报时扩音机预热延时标志位mov a,25h;(25h)中存放报时扩音机预热延时时间值jnz nextfclr ofohclr ofohsetb of1hmov 26h,#1oh ;(26h)中存放报时放音的延时时间值clr tonexte: jnb of1h,nextf ;(f1h=1)为报时放音
44、的延时标志位mov a,26hdec amov 26h,ajnz nextf ;判断报时放音延时是否结束clr of1h ;延时时间到,清除报时放音标志位,关闭报时电源setb t1setb t2setb tosetb tonopnextf: nopmov a,21h ;对秒计数单元(21h)进行累计计数add a,#01hda amov 21h,acjne a,#06h,rtnh ;判断分计数是否计满clr amov 21h,asetb 0f3h ;(f3h)为分值有变更标志位next: mov a,22h ;对分(22h)进行累计计数add a,#01h;da amov 22h,acjne a,#60h,rtdnmov 22h,#00hmov a,23hadd a,#01h ;时单元加1da amov 23h,a ;对时(23h)进行累计计数cjne a,#24h,trndmov 23h,#00hmov a,24hadd a,#01h ;星期计数单元(24h)加1da amov 24h,acjne a,#07h,rtdnmov 24h,#00hrtdn: nopjnb of3h,rtdh ;确认(f3=0)分值无变更,则返回jb of4h,rtnh ;确认(f4=0)正在键处理,则返回ldda: nop ;将当前的时间值显示缓冲区nop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告策划面试题及答案
- 2024商业美术设计师考试秘笈试题及答案
- 2024年纺织材料改性技术试题及答案
- 2024年广告设计师文化传播试题及答案
- 平台测评面试题及答案
- 电工技能操作试题及答案
- 数字转型对广告传播的深远影响分析试题及答案
- 大学数学试题题库及答案
- 2014四川试题及答案
- 安全保护法试题及答案
- 2022年四川绵竹高发投资有限公司招聘笔试题库及答案解析
- 电厂烟囱外壁防腐工程项目施工方案
- 篮球比赛计分表word版
- 上古卷轴5所有任务代码
- 2000年40个部门投入产出表
- 《教师职业道德》全书word版
- 唯美复古风人间烟火气相册宣传模板课件
- 高空作业安全会议记录内容
- 合同制消防员绩效考核细则详解
- 00510秘书实务-自考整合版
- 门禁一卡通系统解决方案
评论
0/150
提交评论