基于单片机的简易电子表的设计Word格式文档下载.docx
《基于单片机的简易电子表的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易电子表的设计Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
教研室审核意见:
教研室主任签字:
年月日
学年设计任务书
1引言…………………………………………………………………………1
2需求分析…………………………………………………………………………2
2.1二维平面……………………………………………………………………3
3概要设计…………………………………………………………………………4
3.1红黑树……………………………………………………………………5
4详细设计…………………………………………………………………………6
4.1部分代码……………………………………………………………………7
5调试与操作说明…………………………………………………………………8
5.1使用说明……………………………………………………………………9
6学年设计总结与体会……………………………………………………………10
6.1总结…………………………………………………………………………11
6.2体会…………………………………………………………………………11
致谢…………………………………………………………………………………12
[参考文献]………………………………………………………………………13
学年设计的主要内容
⒈目录
目录是将报告书内的章节标题依次排列。
⒉需求分析
主要内容包括本学年设计题目、学年设计任务及要求、学年设计思想、软硬件运行环境及开发工具。
⒊概要设计
主要叙述本课题设计的流程图(各功能模块)、主要的数据结构、完成本学年设计所用方法及其原理的简要说明。
⒋详细设计
主要是本课题所需要的硬件设计与软件设计,包含建立设计所需的数学模型并列出必要的计算公式、计算过程及说明,硬件电路的设计与实现,写出设计计算结果;
绘出计算机程序框图,写出自编的程序。
⒌调试与操作说明
系统调试分析与操作使用说明。
⒍学年设计总结与体会
主要对本课题开发过程进行归纳和总结,本课题在设计过程中所遇到的技术难点及解决方法。
还应包括本课题尚存在的问题,以及进一步开发的见解与建议。
并写出通过本次学年设计的收获和体会。
⒎致谢
以简短的文字对在设计研究和设计报告撰写过程中曾直接给予帮助的人员表示自己的谢意。
⒏参考文献
为了反映论文的科学依据和作者尊重他人研究成果的严肃态度以及向读者提供有关信息的出处,应列出本学年设计所涉及的主要参考文献。
⒐附录
有些材料编入文章主体会有损于编排的条理性和逻辑性,或有碍于文章结构的紧凑和突出主题思想等,可将这些材料作为附录编排于全文的末尾。
一.设计要求
1.P1.3接地,设置p1.3行上从左到右4个键依次为:
切换键,校正键,加1键,确定键。
2.切换键的功能:
每按一次切换键显示“月份日期”、“时分”、“分秒”。
如由“12.05”到“14.35”到“34.23"
或相反,表示由12月5日切换到“14点35分”再切换到“34分23秒”或相反。
3.校正键的功能:
第1次按下,校月,月份闪烁,通过加1键校正月份。
第2次按下,校日,日期闪烁,通过加1键校正日期。
第3次按下,校时,小时闪烁,通过加1键校正小时数。
第4次按下,校分,分钟闪烁,通过加1键校正分钟数。
第5次按下,校秒,秒钟闪烁,通过加1键校正秒钟数。
4.加1键的功能:
闪烁的内容不进位加1。
校月时,月份显示为1~12,校日时,日期显示为1~31,校时时,小时显示为0~23,校分时,分钟显示为0~59,校秒时,秒显示为0~59。
5.确定键的功能:
校正的内容生效,返回正常显示,在切换状态按下确定键,返回正常显示。
6.开机后从某一特定的时间开始显示,用第2个数码管的小数点以1秒的周期闪烁,切换到日期显示时该小数点不闪烁,其他3个数码管的小数点不亮。
7.按切换键时,始终任然走时。
8.按校正键时,时钟继续走时,按确定键后按新设定的时间继续走时。
二.设计内容
1.编写程序,完成上面要求,利用定时器中断和静态显示,实现电子钟走时和校时。
2.时间或日期显示用四个数码管分别显示时、分(分、秒)或月、天。
显示格式如下:
1
2
7
月日
或
4
8
时分
5
分秒
三.资源分配
40H存月,41H存天,42H存时,43H存分,44H存秒,30H、31H缓显区。
用YUE、TIAN、HOU、MIN、SEC、HHOU、HMIN,分别代替40H、41H、42H、43H、44H、30H、31H。
2FH.0校准状态指针,50H存等键释放处键值,51H存40H按加键时作需加1的地址指针,20H校准对象指针,21H中断次数指针,22H切换指针。
P1.4校正键,P1.5切换键,P1.6加键,P1.7确定键。
编程原理与思路
电子时钟的走时通过中断记时,中断时间到1S时,秒加1,到60S,秒重新记时分加1,分到60,分清0时加1,时到24,时清0天加1,天到31,天清0月加1,月到13,月置1。
有按键则进行按键处理,需显示的数送缓显区调用显示子程序,中断返回,等待下次中断。
键的判断放到中断里面处理,人正常按一次键所需时间在100ms左右,中断时间为1/16S,在中断里面判键肯定不会漏键,判键的前提要等键释放,无键或没放键不执行判键程序。
正常的等键释放如:
JNBP1.4$。
在中断里面这中方法行不通,如果你按键时间超过1/16S,当下次中断来临时,程序还在等键处(中断里面),无法执行中断。
此处等键释放用以下几条指令实现MOVA,P1;
CJNEA,50H,NEXT0;
NEXT0:
MOV50H,A(50H存上次的键码,取P1口,与上次的键码比较,相等则表示没按键或没放键,不相等则有新的按键,并把这次键码存下已便与下次的键码比较)。
校正状态做总线,在此基础上分别判断各按键,2FH.0做校正状态标志,第一次按下校正键,建立校正标志,20H做校正对象指针,20H置0。
校正状态时,每按一次校正键,20H加1,当20H等于5时清0。
校正时数码管闪烁,把前两个数码管看成高位,后两数码管看成低位。
当校月或时时,高位闪烁,校日、分或秒时,低位闪烁,用20H.0、20H.1判断是哪个位闪烁,如:
(20H.0)等与1,表示校正对象是日或分即低位闪烁,20H.2单独用来判断秒的闪烁。
加键只在校正状态下起作用,非校正状态下按此键无效。
每按一次加键,对应的值加1。
50H存月的地址,50H加20H的内容为要加1的地址,如:
校时是,按加键,时需加1,即((50H)+(20H))加1,(50H)+(20H)存放的值等于时的地址。
校正时,无进位加1,每按一次加键后,对应的数值加1,当数值加到最大时,则清0,但不进位。
切换键只在非校正状态下起作用,校正状态下按此键无效。
22H作切换指针,第一次按下切换键,显示日期,22H置1,每按一次切换键,22H加1,当22H等于3时清0,用22H的低3位判断显示“日期”、“时和分”或“分和秒”。
正常显示下20H置0即显示“分和秒”。
确定键按下,初始化各指针即可。
显示子程序里面有校正位闪烁和秒点闪烁(由于秒已显示出来,故秒点闪烁不再处理)。
数码管是共阳极的,当送#0FF时,数码管灭。
当在校正状态时,确定闪的位置方法与校正位置判断同理,不闪的数码管正常送数,取反F0,当F0等与1时,缓显地址里面的数,当F0等0时,送#0FFH。
四.数据流程图如下:
主函数流程图
中断程序流程图
N
Y
NY
(A)
YNY
N(A)
YN
YYY
NYN
Y
N
N
N
显示子程序
NN
NYY
加键子程序
YYYYY
记时子程序
仿真图运行与调试
五.设计的源程序
电子表程序
YUEEQU40H;
月
TIANEQU41H;
天
HOUEQU42H;
时
MINEQU43H;
分
SECEQU44H;
秒
HHOUEQU30H;
时间缓冲区
HMINEQU31H
ORG0000
LJMPMAIN
ORG000BH
LJMPTT0
;
主程序
ORG0030H
MAIN:
MOVSP,#65H
MOV2FH,#00;
校准状态指针
MOV21H,#00;
做中断次数指针
MOV50H,#0FFH;
处理等键释放
MOV51H,#40H;
按加键时,存放要加1的单元
MOV20H,#00;
做校准指对象指针
MOV22H,#00;
做切换键指针
MOVSCON,#00
MOVTMOD,#01
MOVTL0,#0EEH
MOVTH0,#85H
MOVHOU,#12H
MOVMIN,#25H
MOVSEC,#00
MOVHHOU,#00H;
时间缓冲区设初值
MOVHMIN,#00H;
MOVYUE,#03H
MOVTIAN,#09
SETBET0
SETBTR0
SETBEA
SJMP$
时间显示
XTIME:
MOVDPTR,#TAB
CLRTI
JNB2FH.0,KK3;
判断是否为校正状态
CPLF0
JB20H.0,KK3;
判断校正的对象
JB20H.2,KK3
JBF0,KK3
LCALLKK6
LJMPKK2
KK3:
MOVA,HHOU
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVSBUF,A
LCALLKK7
ANLA,#0FH
MOVC,21H.3
;
ANLC,20H.0;
点的闪烁
MOVACC.0,C
KK2:
JB20H.2,PP7;
是高电平则秒闪
JNB20H.0,KK4
PP7:
JBF0,KK4
LJMPEXIT
KK4:
MOVA,HMIN
LJMPEXIT3
EXIT2:
MOVA,#00
MOVSBUF,A
EXIT3:
RET
KK7:
JNBTI,$
中断处理(有按键处理)
TT0:
INC21H
MOVA,21H
CJNEA,#10H,NEXT1
MOV21H,#00
LCALLCTIME;
调用记时子程序
NEXT1:
MOVA,P1;
等键释放
CJNEA,50H,NEXT0
JNB2FH.0,NEXT8
LJMPTOP1
MOV50H,A
JNB2FH.0,NEXT2;
是否校正状态
JBP1.4,NEXT3;
P1.4做校正键,看是否按下此键
INC20H
MOVA,20H
CJNEA,#05,TOP1
MOV20H,#00
TOP1:
JB20H.1,PP5;
是高电平则显示时间
JB20H.2,PP3;
是高电平则显示分和秒
OUT1:
LJMPKK1
NEXT3:
LCALLAKEY;
调用是否有加键按下的子程序
JBP1.7,TOP1;
是否按下确定键
MOV2FH,#00
NEXT2:
JBP1.5,NEXT4;
P1.5做切换键,看是否按下此键
INC22H
MOVA,22H
CJNEA,#03,NEXT8
MOV22H,#00;
重新循环
CLRA
LJMPPP3
NEXT4:
JBP1.4,PP9;
判断校正键是否已按下
SETB2FH.0;
建立校正标记
校正指针置0
PP9:
判断是否按下确定键
MOV22H,#00
NEXT8:
CJNEA,#01,NEXT5;
是,则显示日期
KK1:
MOVHHOU,YUE
MOVHMIN,TIAN
SJMPXIAN
NEXT5:
CJNEA,#02,PP3
PP5:
MOVHHOU,HOU
MOVHMIN,MIN
PP3:
CJNEA,#00,EXIT;
相等显示分和秒
MOVHHOU,MIN
MOVHMIN,SEC
XIAN:
LCALLXTIME;
调用显示子程序
EXIT:
RETI
KEY:
JBP1.6,LP0
ADDA,51H
MOVR0,A
MOVA,#01
ADDA,@R0
DAA
MOV@R0,A
CJNER0,#YUE,LP1;
是否是月加1
CJNEA,#13H,LP0
MOVYUE,#01
LP1:
CJNER0,#TIAN,LP3;
是否是天加1
CJNEA,#32H,LP0
MOVTIAN,#01
LP3:
CJNER0,#HOU,LP4
CJNEA,#24H,LP0
MOVHOU,#00
LP4:
CJNER0,#MIN,LP5
CJNEA,#60H,LP0
MOVMIN,#00
LP5:
CJNER0,#SEC,LP0
LP0:
记时程序段
CTIME:
ADDA,SEC
MOVSEC,A
CJNEA,#60H,LP7
ADDA,MIN
MOVMIN,A
ADDA,HOU
MOVHOU,A
CJNEA,#24H,LP7
MOVHOU,#00
ADDA,TIAN
MOVTIAN,A
CJNEA,#32H,LP7
ADDA,YUE
MOVYUE,A
CJNEA,#13H,LP7
LP7:
闪烁子程序
KK6:
MOVACC.0,C
TAB:
DB0FCH,60H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,0FFH,0E6H
END
结束语
本文讨论了如何利用嵌入式技术来开发单片机电子表系统,基本满足了结构化,实时性,界面化,安全性,灵活性及稳定性等特点。
指导教师评语:
指导教师签名:
成绩
(此为最后一页)