单片机大作业报告Word下载.docx
- 文档编号:17303640
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:20
- 大小:167.65KB
单片机大作业报告Word下载.docx
《单片机大作业报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机大作业报告Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
器件名称
型号
数量/组
1
IC
S52
2
IC座
40脚
3
20脚
4
74244
5
LED七段数码管
共阳BS
6
晶体振荡器
12MHz
7
独立式按钮
4脚
8
晶体三极管
PNP
9
电阻
3K
10
330
11
瓷片电容
30PF
12
电解电容
10UF
13
5V稳压电源
个
14
万用表
15
万用板
块
16
电烙铁
把
17
剪线钳
18
镊子
19
一字小螺丝批
20
焊锡
3米
21
3-4种色导线
各1米
5、电路图
6.程序说明:
程序中使用的地址标志说明:
7FH:
Flag1,当flag1=0时表示显示时间,当flag1=1时表示显示日期
7EH:
flag11,表示选中日期显示的年、月、日中的哪一位的标志位
30H:
flag2,表示选中时间显示的时、分、秒中的哪一位的标志位
31H:
flagn,表示判断平年、闰年的标志位
32H、33H:
与秒的两位显示有关
34H、35H:
与分的两位显示有关
36H、37H:
与时的两位显示有关
3BH、3CH:
与日的两位显示有关
3DH、3EH:
与月的两位显示有关
3FH、40H:
与年的两位显示有关
38H、39H、3AH:
分别存放秒、分、时内容
43H、44H、45H:
分别存放日、月、年内容
41H:
存放秒定时器的计数次数
42H:
用做数码管位选
以下为程序流程图:
源程序:
;
程序开始
ORG0000H;
初始化入口
LJMPBEGIAN
ORG000BH;
中断入口
LJMPIRQ;
调中断子程序
ORG0020H;
主程序开始地址
初始化程序
将数据区和标志位都进行初始化flag1=0;
flag11=0;
flag2=0;
flagn=0
32H~~~3AH,3CH,3EH,40H都为00H
BEGIAN:
CLR7FH;
flag1显示日期或者时间的标志取值0,1
CLR7EH
CLR31H
CLR30H
CLRA;
MOVTMOD,#01H;
设置T0工作方式
MOVR0,#30H;
标志和数据缓冲区清零
MOVB,#11H;
LOP1:
MOV@R0,A
INCR0
DJNZB,LOP1
MOV3BH,#01H;
日期为1日
MOV43H,#1
MOV3DH,#01H;
月份为1月
MOV44H,#1
MOV3FH,#09H;
年份为05年
MOV45H,#9
MOV41H,#100;
"
秒"
定时计数器计数初值
MOVTH0,#0D8H;
T0定时10mS时间常数
MOVTL0,#0F0H;
(Fosc=12MHz)
SETBTR0;
启动T0计数
SETBET0;
允许T0中断
SETBEA;
开系统中断
初始化结束
检查有无键按下(这里作为主程序)
没有键按下就调用显示子程序;
有键按下就判断是哪个键按下,然后调用相应
子程序,各个子程序返回后重新检查有无键按下;
如此循环
KEYCHK:
MOVA,P1;
读键盘
CJNEA,#0FFH,LOP2;
有键按下则转
LCALLDISPLAY;
用来显示时间或日期
SJMPKEYCHK;
转回去读键盘
LOP2:
MOVR3,A;
保键号
WAIT:
MOVA,P1
CJNEA,#0FFH,WAIT;
没有松键就等
MOVA,R3
JNBACC.0,LOP4;
第零键按下就转
JNBACC.1,LOP5;
第一键按下就转
JNBACC.2,LOP6;
第二键按下就转
JNBACC.3,LOP20;
第三键按下就转
SJMPKEYCHK;
不是所要的按键就转
LOP4:
LCALLKEY0;
调第零键功能子程序
SJMPKEYCHK
LOP5:
LCALLKEY1;
调第一键功能子程序
LOP6:
LCALLKEY2;
调第二键功能子程序
LOP20:
LCALLKEY3
RET
主程序到此结束
DISPLAY子程序
判断flag1,为0就调用tTIME子程序;
为1就调用DATE子程序
DISPLAY:
JB7FH,LOP7;
flag1=1就转
LCALLTIME;
调用time子程序
LOP7:
LCALLDATE;
调用date子程序
KEY0子程序
按下此键用于切换显示时间或者显示日期
按一下key0键,flag1取反;
接着判flag1是0还是1;
然后调用相应子程序
KEY0:
CPL7FH;
flag1取反
JB7FH,LOP8;
flag1=1转去调date
flag1=0调time
LOP8:
KEY1子程序
判flag1;
为1则flag11取反,返回;
为0则flag2加1,接着判flag2>
2否?
是的话flag2返回0值返回,否的话直接返回
KEY1:
JB7FH,LOP9;
MOVA,30H
ADDA,#1
MOV30H,A;
flag2+1
CJNEA,#3,LOP10;
flag2不等3就转
MOVA,#0;
flag2大于2则回0
送回flag2标志
LOP9:
MOVA,7EH
ADDA,#1
MOV7EH,A
CJNEA,#3,LOP10;
flag11不等于3就转
MOVA,#0;
flag11大于2就回0
MOV7EH,A;
送回flag11标志
LOP10:
RET
KEY2子程序
若flag1为1,先判flag11;
如果flag11为0,则日期加1;
如果flag11为1,
则月份加1;
然后调用DATE子程序
若flag1为0,先判flag2;
如果flag2为0,则秒数加1;
如果flag2为1,则
分钟加1;
如果flag2为2,则小时加1,然后调用TIME子程序
KEY2:
JB7FH,LOP11;
NEXT1:
MOVA,30H;
flag2的值送到A
CJNEA,#0,LOP12;
不是0就转
MOVA,38H;
秒+1
ADDA,#01H
MOV38H,A
SJMPLOP16;
LOP12:
CJNEA,#1,LOP13;
不是1就转
MOVA,39H;
分+1
MOV39H,A
LOP13:
MOVA,3AH;
时+1
MOV3AH,A
LOP16:
LCALLTIME;
LOP11:
MOVA,7EH
CJNEA,#0,LOP14
MOVA,43H;
日+1
MOV43H,A
SJMPLOP15;
调用DATE子程序
LOP14:
CJNEA,#1,LOPY
MOVA,44H;
月+1
MOV44H,A
CJNEA,#13H,LOP15
MOVA,#01H
MOV44H,A
SJMPLOP15
LOPY:
MOVA,45H
ADDA,#01H
MOV45H,A
LOP15:
LCALLDATE;
KEY3子程序
若flag1为1,先判flag11;
如果flag11为0,则日期减1;
则月份减1;
如果flag11为2,则年份减1;
若flag1为0,先判flag2;
如果flag2为0,则秒数减1;
分钟减1;
如果flag2为2,则小时减1,然后调用TIME子程序
CLRC
KEY3:
JB7FH,LOP21;
NEXT11:
CJNEA,#0,LOP22;
秒-1
SUBBA,#01H
CLRC
SJMPLOP26;
调用TIME子程序
LOP22:
CJNEA,#1,LOP23;
分-1
DAA
LOP23:
时-1
LOP26:
LOP21:
CJNEA,#0,LOP24
日-1
SJMPLOP25;
LOP24:
CJNEA,#1,LOPZ
MOVA,44H;
月-1
CJNEA,#00H,LOP25
MOVA,#12H
SJMPLOP25
LOPZ:
SUBBA,#01H
LOP25:
TIME子程序
将位选码初值和显示位数初值送相应单元,字型码表首址送DPTR
显示之前先熄灭显示器
秒,分,时通过38H,39H,3AH送到32H,33H,34H,35H,36H,37H,再从
P0口送到显示器显示
TIME:
MOV42H,#0DFH;
位选码初值送42H
MOVR2,#6;
显示位数初值送R2
MOVDPTR,#LCD;
字形码表首址送DPTR
MOVR1,#32H;
GUAN:
MOVA,#0FFH;
关显示器,位选码为0FFH
MOVP2,A
MOVP0,A;
字形码为0FFH送显示器
MOVA,42H;
取位选码送P2选位
MOVA,@R1
MOVCA,@A+DPTR;
查字型表
MOVP0,A;
送到P0口显示器
LCALLDEL3ms;
延时3ms秒
MOVA,42H;
准备显示下一位码
RRA;
移位
MOV42H,A
INCR1;
要显示的下一位
DJNZR2,GUAN;
六位还没显示完就转
RET
DATE子程序
日期,月份,年份通过43H,44H,45H送到3BH,3CH,3DH,3EH,3FH,40H再从
;
P0口送到显示器显示
DATE:
MOVR1,#3BH;
MIE:
DJNZR2,MIE;
IRQ中断子程序
T0每10ms中断一次,调用此中断子程序一次;
够一秒后就重装"
定时
计数器计数初值,并且秒加1;
接下来对时间进行BCD码调整,并查询是否
已经超出范围(是的话就复位),且送到相应单元;
调整日期和月份,进行
闰年,月份大小等进行判断,作出相应反应后送到相应单元
IRQ:
MOVTH0,#0D8H;
重装时间常数
MOVTL0,#0F0H
DJNZ41H,IRQ1;
未够1秒就转
SJMPIRQ2
IRQ1:
LJMPIRQ3
IRQ2:
MOV41H,#100;
重装"
INC38H;
MOVPSW,#00H;
清标志
调出秒数
DAA;
BCD调整
MOV38H,A;
38H已经是BCD码
CJNEA,#60H,LOP17;
小于60秒则转
MOVA,#00H;
等于60秒就变为0
INC39H;
LOP17:
MOVPSW,#00H;
清标志位
调出分数
MOV39H,A;
39H已经是BCD码
CJNEA,#60H,LOP18;
小于60分则转
等于60分就变为0
INC3AH;
LOP18:
MOVA,3AH;
调出时数
MOV3AH,A;
3AH已经是BCD码
CJNEA,#24H,LOP19;
小于24时则转
等于24时就变为0
INC43H;
LOP19:
MOVA,38H;
分拆秒
ANLA,#0FH
MOV32H,A
MOVA,38H
SWAPA
MOV33H,A
分拆分
MOV34H,A
MOVA,39H
MOV35H,A
分拆时
MOV36H,A
MOVA,3AH
MOV37H,A
将日转成BCD码
DAA
MOVA,44H;
将月转成BCD码
DAA
CJNEA,#02H,YUE1;
不是2月就转
MOVA,31H;
是否闰年(flagn=0)
CJNEA,#0,YUE2;
平年就转
闰年
CJNEA,#30H,YUE3;
不是29日就转
YUE4:
MOV43H,#01;
日子返回1日
YUE3:
清标志
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作业 报告