单片机综合设计Word文档格式.docx

上传人:b****2 文档编号:706205 上传时间:2023-04-29 格式:DOCX 页数:34 大小:35.56KB
下载 相关 举报
单片机综合设计Word文档格式.docx_第1页
第1页 / 共34页
单片机综合设计Word文档格式.docx_第2页
第2页 / 共34页
单片机综合设计Word文档格式.docx_第3页
第3页 / 共34页
单片机综合设计Word文档格式.docx_第4页
第4页 / 共34页
单片机综合设计Word文档格式.docx_第5页
第5页 / 共34页
单片机综合设计Word文档格式.docx_第6页
第6页 / 共34页
单片机综合设计Word文档格式.docx_第7页
第7页 / 共34页
单片机综合设计Word文档格式.docx_第8页
第8页 / 共34页
单片机综合设计Word文档格式.docx_第9页
第9页 / 共34页
单片机综合设计Word文档格式.docx_第10页
第10页 / 共34页
单片机综合设计Word文档格式.docx_第11页
第11页 / 共34页
单片机综合设计Word文档格式.docx_第12页
第12页 / 共34页
单片机综合设计Word文档格式.docx_第13页
第13页 / 共34页
单片机综合设计Word文档格式.docx_第14页
第14页 / 共34页
单片机综合设计Word文档格式.docx_第15页
第15页 / 共34页
单片机综合设计Word文档格式.docx_第16页
第16页 / 共34页
单片机综合设计Word文档格式.docx_第17页
第17页 / 共34页
单片机综合设计Word文档格式.docx_第18页
第18页 / 共34页
单片机综合设计Word文档格式.docx_第19页
第19页 / 共34页
单片机综合设计Word文档格式.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机综合设计Word文档格式.docx

《单片机综合设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机综合设计Word文档格式.docx(34页珍藏版)》请在冰点文库上搜索。

单片机综合设计Word文档格式.docx

实时时钟芯片,提供时、分、秒、年、月、日、星期。

ZLG7290B:

有键盘输入和数码管显示功能,通过按键修改时间,通过数码管显示时间和温度。

DS18B20:

采集温度功能,将温度数据读取到单片机内再通过数码管显示出来。

蜂鸣器:

用作整点报时和温度报警。

5主程序中主要变量定义

变量名称

RAM单元/寄存器

功能

WSLA_8563

0A2H

PCF8563T口地址(写)

RSLA_8563

0A3H

PCF8563T口地址(读)

WSLA_7290

70H

ZLG7290B口地址(写)

RSLA_7290

71H

ZLG7290B口地址(读)

WSLA

DS18B20口地址(写)

RSLA

DS18B20口地址(读)

TEMPER_L

36H

存放读出温度低位数据

TEMPER_H

35H

存放读出温度高位数据

TEMPER

34H

存放转换后的8位温度值

TEMPER_NUM

60H

缓冲单元

TEMPER3

37H

存放温度整数值百位部分

TEMPER2

38H

存放温度整数值十位部分

TEMPER1

39H

存放温度整数值个位部分

TEMPER0

3AH

存放温度整数值小数部分

TEM

54H

存放设置温度上限值

DATA_1

40H

小数部分首地址

6系统软件中各个子程序的功能描述

子程序名称

入口参数

出口参数

功能描述

INT_RCT

PCF8563T的00H~0DH;

单片机38H~3FH

单片机10H~1DH,20H~26H;

ZLG7290B的10H~17H

时钟中断服务子程序。

每秒将8563中的当前时间读入单片机的10H~1DH中;

将8563的02H~08H读入单片机内部的20H~26H;

将单片机内部的38H~3FH写到7290的10H~17H;

整点报时

INT_7290

累加器A

修改时间和显示温度中断服务子程序。

通过功能键A、B、C、D、E进行时间修改、时间显示、温度显示

RDKEY

ZLG7290B的01H

读键值子程序

WR8563

RAM的10H~1DH

PCF8563T的00H~0DH

向日历芯片写入时间参数。

将RAM的10H~1DH中的时间参数(含控制字)写入芯片的00H~0DH单元

DISPLAY

PCF8563T02H~08H;

单片机20H~26H;

ZLG7290的10H~17H

显示当前时间子程序

LIGHT

ZLG7290的07H、08H

闪烁子程序

RING、RING1

蜂鸣器响程序

CHAIFEN

单片机20H~26H

单片机28H~2FH,38H~3FH

对20H~26H单元的参数拆分并在查表后送28H~2FH和38H~3FH

CF

R3、R4

将A中数据拆分为两独立的十六进制数并查表

ADJUST

20H~26H

屏蔽读出的7个字节参数无关位

DELAY

延时子程序延时256ms

DELAY2

延时子程序延时80us

SHOW

21H~24H

将小数部分的字型码转移到变量区

TEMPER_COV10

TEMPER3、TEMPER2、TEMPER1(25H~27H)

温度二进制转换为十进制显示

GET_TEMPER

35H、36H

从DS18B20中读出12位温度数据。

高位存于单片机的RAM的35H单元、低位存于36H单元

INIT_1820

FLAG1

初始化子程序(寻找DS18B20并建立标志)

TEMPER_COV

TEMPER_L、TEMPER_H

TEMPER_NUM、TEMPER

将读出的数据进行转换

WRITE_1820

向DS18B20中写入一个字节的数据

READ_18200

从DS18B20中读出两个字节的温度数据

7主程序程序流程图

开始

7290复位

设定T1、T0方式及定时初值

设定温度上限值

设定PCF8563T的时间和命令参数

将初值写入8563

开中断

等待中断

8程序清单

SDABITP1.0

SCLBITP1.1

WSLA_8563EQU0A2H

RSLA_8563EQU0A3H

WSLA_7290EQU70H

RSLA_7290EQU71H

WSLAEQU70H

RSLAEQU71H

TEMPER_LEQU36H;

TEMPER_HEQU35H;

TEMPEREQU34H;

TEMPER_NUMEQU60H;

FLAG1BIT00H;

20H单元中的bit位

DQBITP1.2;

一线总线控制端口

TEMPER3EQU37H;

TEMPER2EQU38H;

TEMPER1EQU39H;

TEMPER0EQU3AH;

TEMEQU54H;

DATA_1EQU40H

ORG8000H

LJMP8100H

ORG8013H;

INT1中断入口地址,每秒刷新一次时间

LJMPINT_RCT

ORG8003H

LJMPINT_7290;

INT0中断入口地址,修改时间

ORG8100H

START:

MOVSP,#60H;

CLRP1.7

LCALLDELAY

SETBP1.7

MOVTMOD,#11H;

T1方式1,T0方式1

MOVTL0,#33H;

设置定时0.5ms初值

MOVTH0,#0FEH

MOVTEM,#27

MOVDPTR,#LEDSEG

;

******************************

设定PCF8563T的时间和命令参数

MOV10H,#00H

MOV11H,#1FH

MOV12H,#20H;

MOV13H,#22H;

MOV14H,#16H;

MOV15H,#16H;

日期

MOV16H,#03H;

星期

MOV17H,#04H;

MOV18H,#15H;

MOV19H,#00H

MOV1AH,#00H

MOV1BH,#00H

MOV1CH,#00H

MOV1DH,#83H

*****************************

MOVR7,#0EH

MOVR0,#10H

MOVR2,#00H

MOVR3,#WSLA_8563

LCALLWRNBYT

SETBEA

SETBEX0;

开INT0中断

SETBIT0;

触发极性为下降沿

SETBEX1;

开INT1中断

SETBIT1;

SJMP$

时钟中断服务子程序

INT_RCT:

;

每秒将8563中的当前时间读入单片机的10H~1DH中

MOVR0,#10H;

键值缓冲单元

MOVR7,#0EH;

取第一个数据(键值)

MOVR2,#00H;

指向内部数据键值寄存器地址

MOVR3,#WSLA_8563;

取器件地址(写)

MOVR4,#RSLA_8563;

取器件地址(读)

LCALLRDADD

将8563的02H~08H读入单片机内部的20H~26H

MOVR7,#07H

MOVR0,#20H

MOVR2,#02H

MOVR4,#RSLA_8563

LCALLRDADD

LCALLADJUST

LCALLCHAIFEN

将单片机内部的38H~3FH写到7290的10H~17H

MOVR7,#08H

MOVR2,#10H

MOVR3,#WSLA_7290

MOVR0,#38H

LCALLWRNBYT;

显示

JNBP3.2,$

PUSHACC

MOVA,21H;

取分参数

CJNEA,#59H,JUD;

判断是否59分,若不是,判断是否整点

MOVA,20H

CJNEA,#56H,J1;

判断是否56秒

LCALLRING

SJMPEXIT

J1:

CJNEA,#57H,J2;

判断是否57秒

J2:

CJNEA,#58H,J3;

判断是否58秒

J3:

CJNEA,#59H,EXIT;

判断是否59秒

JUD:

CJNEA,#00H,EXIT

CJNEA,#00H,EXIT

LCALLRING1

EXIT:

POPACC

RETI

********************************

修改时间和显示温度中断服务子程序

INT_7290:

PUSH00H

PUSH02H

PUSH03H

PUSH04H

PUSH07H

PUSHPSW

LCALLRDKEY

CJNEA,#0AH,CMP1;

是否按A键修改小时,不是的话判断是否是按B键修改分钟

AKEY1:

LCALLDISPLAY;

显示当前时间

PUSHACC;

闪烁

MOVA,#0C0H

LCALLLIGHT

POPACC

JBP3.2,$;

等待再次按键修改小时十位

LCALLRDKEY;

读取所按键值

SWAPA;

将键值数据处理成小时数据的十位

ANL14H,#0FH

ORL14H,A;

将处理好的小时十位送14H单元

LCALLWR8563;

将修改后的参数送PCF8563T

LCALLDISPLAY

JBP3.2,$;

等待再次按键修改小时个位

ANL14H,#0F0H;

将键值数据处理成小时的个位

ORL14H,A

LJMPDOWN

CMP1:

CJNEA,#0BH,CMP2;

是否按B键修改分钟,不是的话判断是否是按C键修改秒

AKEY2:

MOVA,#18H

POPACC

等待再次按键修改分钟十位

SWAPA;

将键值数据处理成分钟数据的十位

ANL13H,#0FH

ORL13H,A;

将处理好的分钟十位送13H单元

LCALLWR8563;

等待再次按键修改分钟个位

ANL13H,#0F0H;

将键值数据处理成分钟的个位

ORL13H,A

CMP2:

CJNEA,#0CH,CMP3;

是否按C键修改秒,不是的话判断是否按D键显示日期

AKEY3:

MOVA,#03H

等待再次按键修改秒十位

将键值数据处理成秒数据的十位

ANL12H,#0FH

ORL12H,A;

将处理好的秒十位送12H单元

LCALLDISPLAY

等待再次按键修改秒个位

ANL12H,#0F0H;

将键值数据处理成秒的个位

ORL12H,A

CMP3:

CJNEA,#0DH,CMP4;

是否按D键显示日期,不是的话判断是否按E键显示温度

MOVR0,#28H

JBP3.2,$

CMP4:

CJNEA,#0EH,BB;

是否按E键显示温度,不是的话退出

SJMPLP1

BB:

LP1:

LCALLGET_TEMPER;

从DS18B20读出温度数据

LCALLTEMPER_COV;

转换读出的温度数据并保存

LCALLTEMPER_COV10;

将温度转换成10进制

**************************************************************

小数部分

MOVA,TEMPER0

CJNEA,00H,X1;

小数部分为0000

MOVDATA_1,#00H

MOVDATA_1+1,#00H

MOVDATA_1+2,#00H

MOVDATA_1+3,#00H

LCALLSHOW

LJMPNEXT

X1:

CJNEA,#01H,X2;

小数部分为0001

MOVDATA_1,#05H

MOVDATA_1+1,#02H

MOVDATA_1+2,#06H

X2:

CJNEA,#02H,X3;

小数部分为0010

MOVDATA_1+1,#05H

MOVDATA_1+2,#02H

MOVDATA_1+3,#01H

X3:

CJNEA,#03H,X4;

小数部分为0011

MOVDATA_1+1,#07H

MOVDATA_1+2,#08H

LJMPNEXT

X4:

CJNEA,#04H,X5;

小数部分为0100

MOVDATA_1+2,#05H

MOVDATA_1+3,#02H

X5:

CJNEA,#05H,X6;

小数部分为0101

MOVDATA_1+2,#01H

MOVDATA_1+3,#03H

X6:

CJNEA,#06H,X7;

小数部分为0110

MOVDATA_1+2,#07H

X7:

CJNEA,#07H,X8;

小数部分为0111

MOVDATA_1+2,#03H

MOVDATA_1+3,#04H

X8:

CJNEA,#08H,X9;

小数部分为1000

MOVDATA_1+3,#05H

X9:

CJNEA,#09H,X10;

小数部分为1001

MOVDATA_1,#05H

X10:

CJNEA,#0AH,X11;

小数部分为1010

MOVDATA_1+3,#06H

X11:

CJNEA,#0BH,X12;

小数部分为1011

X12:

CJNEA,#0CH,X13;

小数部分为1100

MOVDATA_1+3,#07H

X13:

CJNEA,#0DH,X14;

小数部分为1101

MOVDATA_1+3,#08H

X14:

CJNEA,#0EH,X15;

小数部分为1110

X15:

MOVDATA_1,#05H;

小数部分为1111

MOVDATA_1+3,#09H

*****************************************************************

温度大于上限报警

NEXT:

MOVA,TEMPER

CJNEA,TEM,XX

XX:

JCNEXT1

LCALLRING

NEXT1:

MOV20H,#0FCH;

使得数码管显示最后一位为0

MOVR7,#08H;

8位数码管显示温度

MOVR2,#10H

MOVR0,#20H

MOVR3,#WSLA

LCALLWRNBYT

LCALLDELAY

JBP3.2,AA

SJMPDOWN

AA:

LJMPLP1

DOWN:

CLRIE1;

清标志

POPPSW

POP07H

POP04H

POP03H

POP02H

POP00H

RETI

RDKEY:

MOVR0,#1FH;

MOVR7,#01H;

MOVR2,#01H;

MOVR3,#WSLA_729

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2