DS18B20+DS1302项目报告(2)

2020-02-21 18:33

LCALL RST ;调用18B20复位子程序(初始化)

///////////////////////////////////////////////////////////////////

lcall

ds1302csh ;调用1302初始化子程序

;调用lcd初始化子程序 ;调用1302写子程序 ;调用1302读子程序

;调用显示子程序

lcall lcdcsh lcall w1302 lcall lcall

r1302

display

;************************************************************* main:

CALL MK1

;ds18b20的写读及显示加1302时钟显示

;判断DS18B20是否响应以及初始值的设定

CALL MK3 AJMP MAIN

;************************************************************* MK4: MK1:

AJMP MK2

;跳转到错误子程序

;DS1820不存在

JNB FLAG1,MK4

LCALL MENU_OK 序

CALL RET

RD_EEPROM

;DS1820存在,调用显示正确信息子程

;将报警温度值从EEPROM中读出来

;************************************************************* MK3:

LCALL RST

;调用DS18B20复位子程序

;DS18B20不存在跳转到错误显示子程

JNB FLAG1,MK4 序

MOV A,#0CCH LCALL WRITE

;跳过ROM匹配命令

;DS18B20数据写入操作子程序

;温度转换命令

MOV A,#44H LCALL WRITE LCALL RST

;DS18B20数据写入操作子程序

;调用DS18B20复位子程序

6

MOV A,#0CCH LCALL WRITE

;跳过ROM匹配

;DS18B20数据写入操作子程序

;读温度命令

MOV A,#0BEH LCALL WRITE LCALL READ

;调用DS18B20数据读取操作子程序 ;调用温度数据BCD 码处理子程序 ;调用温度数据显示子程序 ;调用LCD显示处理子程序

;调用实测温度值与设定温度值比较子

LCALL CONVTEMP LCALL DISPBCD LCALL CONV

LCALL TEMP_COMP 程序

LCALL PROC_KEY ;调用键扫描子程序

;**************************************************************************

LCALL

SHIZHONG

;调用1302时钟模块

SJMP MK3

;*********************************************************************

SHIZHONG:mov tmod,#01h ;用定时器0,方式一工作 mov th0,#70h ;为定时器赋初值 mov tl0,#00h setb tr0 lp1:

jbc tf0,lp2 ;定时器溢出跳到lp2处并将tf0清零 clr tr0

lp2: mov th0,#70h ;为定时器赋初值 mov tl0,#00h

lcall r1302 ;调用读1302子程序 lcall display ;调用显示程序 setb tr0

7

RET

;******************LCD初始化********************************** set_lcd:

CLR EN

LCALL INIT_LCD ;初始化 LCD

LCALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET

;///////////////////////////////////////////////////////////////////////////

;设置1302初值子程序

ds1302csh:mov second,#00h

mov minute,#57h mov hour,#15h mov day,#17h mov month,#03h mov week,#06h mov year,#12h

;miao秒

;分

;时 ;天 ;月 ;周 ;年

;/////////////////////////////////////////////////////////////////////

;lcd初始化子程序 lcdcsh:

mov

lcd,#38h

lcall xzl mov

lcd,#08h

lcall xzl mov

lcd,#01h

lcall xzl

lcd,#06h

mov

lcall xzl mov

lcd,#0ch

8

lcall xzl

;///////////////////////////// ;1302写数据子程序 w1302: clr ce

clr clk nop setb

ce

;复位脚置高电平 ;复位脚置低电平

;串行时钟置低电平

mov b,#8eh ;送操作地址 lcall wbit

;调用写字节子程序

mov b,#00h ;送操作数 lcall wbit setb

;调用写字节子程序

clk ;串行时钟置高电平,下降沿有效

clr ce ;禁止写入数据

mov r0,#second ;将秒寄存器送到r0 mov r1,#80h

;将80h送到A

mov r7,#7 ;将r7送7

//////////////////////////////////////////////////////////////////////////

wloop: clr ce

;复位脚置低电平

clr clk nop setb

;复位脚置低电平

ce ;复位脚置高电平,准备写数据

mov b,r1 ;将r1内的数据送给b

;调用写字节子程序

lcall wbit

mov a,@r0 ;将r0内地址中的数送到A mov hex,a ;将a中的数送到十进制寄存器 lcall hex_bcd mov b,a

;调用十进制转bcd码子程序

;将a内的数送给b

;调用写字节子程序

9

lcall wbit

inc r0 inc r1 inc r1 setb

;r0加一 ;r1加一

clk ;串行时钟下降沿写入

clr ce djnz

;禁止写入

r7,wloop ;判断是否将年月日等七组数写入1302

;禁止写入 ;

clr ce clr clk nop setb

ce ;准备写入

mov b,#8eh ;送操作地址 lcall wbit

;调用写字节子程序

mov b,#80h ;送操作数 lcall wbit setb

clk

;调用写字节子程序 ;下降沿有效

clr ce ret

;禁止写入

;子程序返回

;///////////////////////////// ;写字节子程序

wbit: mov r2,#08h ;给r2送8 w_loop:

a,b

;b送给a ;带进位的右移A

mov

rrc a mov b,a

mov dio,c ;sclk上升沿时写入数据 setb clk nop

clr clk

;禁止写入

djnz r2,w_loop ;判断是否送完

10


DS18B20+DS1302项目报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教科版三年级科学上册第一单元知识点整理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: