51单片机温度I2C通信键盘显示综合设计文档格式.docx
- 文档编号:19436188
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:147.58KB
51单片机温度I2C通信键盘显示综合设计文档格式.docx
《51单片机温度I2C通信键盘显示综合设计文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机温度I2C通信键盘显示综合设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
2、LinBiCMOSTM工艺技术
3、两个驱动器及两个接收器
4、±
30V输入电平
5、低电源电流:
典型值是8mA
6、符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28
7、ESD保护大于MIL-STD-883(方法3015)标准的2000V
(3)MAX485芯片简介
MAX485是用于RS-485与RS-422通信的低功耗收发器,
每个器件中都具有一个驱动器和一个接收器。
以减小,并降低由不恰当的终端匹配电缆引起的反射,实现最高250kbps的无差错数据传输。
这些收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在120(A至500(A之间。
另外,MAX481、MAX483与MAX487具有低电流关断模式,仅耗0.1uA。
所有器件都工作在5V单电源下。
(4)DS18B20简介
DS18B20数字温度计提供9-12位摄氏温度测量而且有一个由高到低电平触发的可编程的不因电源消失而改变的报警功能。
DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线。
它的测量温度范围-55~+125摄氏度,并且在-10~+85摄氏度精度为正负5摄氏度。
除此之外,18B20
能直接从单线通讯线上汲取能量,出去了对电源的需求。
五、实验代码:
b_bitEQU26H
a_bitequ25H
TEMPER_LEQU29H;
高温值存放单元
TEMPER_HEQU28H;
低温值存放单元
FLAG1BITF0;
DS18B20存在标志位
DQBITP1.3
CLKBITP3.3
DATBITP3.4
SDAEQUP1.1
SCLEQUP1.0
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
ACALLKEY
NEXT1:
CJNEA,#0AH,CONT
ACALLATT1
CONT:
CJNEA,#0BH,CONT1
ACALLJIE
CONT1:
CJNEA,#0CH,CONT2
ACALLWD_18B20
CONT2:
CJNEA,#0DH,CONT3
LCALLFW
SJMPMAIN
CONT3:
CJNEA,#0EH,CONT4
MOVA,50H
INCA
MOV50H,A
LCALLDELAY2
LCALLPRINT
SJMPMAIN
CONT4:
CJNEA,#0FH,CONT5
DECA
CONT5:
SJMPDISPLAY
KEY:
LCALLKS;
调用检测按键子程序
JNZK1;
有键按下继续
LCALLDELAY2;
无键按下调用延时去抖动程序
AJMPKEY;
返回继续检测有无按键按下
K1:
LCALLDELAY2
有键按下继续延时去抖动
再一次调用检测按键程序
JNZK2;
确认有按下进行下一步
无键按下返回继续检测
K2:
MOVR2,#0EFH;
将扫描值送入R2暂存
MOVR4,#00H;
将第一列的列值00H送入R4暂存,R4用于存放列值。
K3:
MOVP2,R2;
将R2的值送入P2口
L6:
JBP2.0,L1;
P2.0等于1跳转到L1
MOVA,#00H;
将第一行的行值00H送入ACC
AJMPLK;
跳转到键值处理程序
L1:
JBP2.1,L2;
P2.1等于1跳转到L2
MOVA,#04H;
将第二行的行值送入ACC
跳转到键值理程序进行键值处理
L2:
JBP2.2,L3;
P1.2等于1跳转到L3
MOVA,#08H;
将第三行的行值送入ACC
L3:
JBP2.3,NEXT;
P2.3等于1跳转到NEXT处
MOVA,#0CH;
将第四行的行值送入ACC
LK:
ADDA,R4;
行值与列值相加后的键值送入A
PUSHACC;
将A中的值送入堆栈暂存
K4:
调用延时去抖动程序
调用按键检测程序
JNZK4;
按键没有松开继续返回检测
POPACC;
将堆栈的值送入ACC
BACK:
RET
NEXT:
INCR4;
将列值加一
MOVA,R2;
将R2的值送入A
JNBACC.7,KEY;
扫描完成跳至KEY处进行下一回合的扫描
RLA;
扫描未完成将A中的值右移一位进行下一列的扫描
MOVR2,A;
将ACC的值送入R2暂存
AJMPK3;
跳转到K3继续
KS:
MOVP2,#0FH;
将P2口高四位置0低四位值1
MOVA,P2;
读P2口
XRLA,#0FH;
将A中的值与A中的值相异或
RET;
子程序返回
DELAY2:
MOVR5,#08H
L7:
MOVR6,#0FAH
L8:
DJNZR6,L8
DJNZR5,L7
RET
DISPLAY:
;
输出显示,入口A
PUSHACC
MOVDPTR,#TAB
MOVCA,@A+DPTR
LCALLDSP
POPACC
DSP:
SETBP3.2;
输出一位显示数据,入口A
MOVR7,#08H
LOOP:
CLRCLK
RLCA
MOVDAT,C
SETBCLK
DJNZR7,LOOP
DEL:
MOVR5,#04H
DEL3:
MOVR7,#0FFH
DEL1:
MOVR6,#0FFH
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
DJNZR5,DEL3
W008:
MOVP1,#0FFH
CLRSDA
MOVA,#0A0H
ACALLW08
MOVA,#30H
MOVA,#07H
LCALLW08
LCALLDELAY20
SETBSCL
SETBSDA
CLRA
ACALLDISPLAY
RET
W08:
MOVR7,#08
W01:
CLRSCL
MOVSDA,C
NOP
ACALLDELAY20
DJNZR7,W01
CLRSCL
JBSDA,$
RET
R008:
MOVP1,#0FFH
SETBACC.0
ACALLW08
RR1:
ACALLR08
ACALLDISPLAY
CLRSDA
SETBCLK
SETBSDA
R08:
R01:
MOVC,SDA
DJNZR7,R01
DELAY20:
NOP
WD_18B20:
CLRP3.6
LCALLINIT_18B20
LCALLGET_TEMPER
acallCHANGE
ret
;
**********DS18B20复位程序*****************
INIT_18B20:
SETBDQ
CLRDQ
MOVR0,#0FBH
TSR1:
DJNZR0,TSR1;
延时
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
TSR3:
SETBFLAG1;
置标志位,表明DS18B20存在
CLRP2.0;
二极管指示
AJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6
TSR7:
SETBDQ;
表明不存在
*****************读转换后的温度值****************
GET_TEMPER:
JBFLAG1,TSS2
若不存在则返回
TSS2:
MOVA,#0CCH;
跳过ROM
LCALLWRITE_18B20
MOVA,#44H;
发出温度转换命令
LCALLWRITE_18B20
LCALLD1MS;
延时
MOVA,#0BEH;
发出读温度换命令
LCALLREAD2_18B20;
读两个字节的温度
;
***************写ds18b20汇编程序************
WRITE_18B20:
MOVR2,#8
CLRC
WR1:
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR2,WR1
***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
MOVR4,#2;
低位存在29H,高位存在28H
MOVR1,#29H
RE00:
RE01:
SETBC
MOVR3,#7
MOVC,DQ
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
************读出的温度进行数据转换**************
CHANGE:
MOVA,29H
MOVC,28H.0;
将28H中的最低位移入C
MOVC,28H.1
MOVC,28H.2
MOVC,28H.3
MOV29H,A
LCALLDISPLAY1;
调用数码管显示子程序
ret
*******************DISPLAY******
DISPLAY1:
mova,29H;
将29H中的十六进制数转换成10进制
movb,#10;
10进制/10=10进制
divab
movb_bit,a;
十位
mova_bit,b;
个位
MOVA,b_bit
LCALLDISPLAY
mova,a_bit
LCALLDISPLAY
D1MS:
MOVR7,#20;
1MS延时
DJNZR7,$
*************************按下A键时子程序***************
ATT1:
CLRA
LCALLATTS
*************************甲机发数据***************
ATTS:
SETBP0.0
CLREA
MOVTMOD,#20H
MOVTL1,#0E8H
MOVTH1,#0E8H
MOVPCON,#00H
SETBTR1
MOVSCON,#50H;
***********初始化***************
ATT3:
********************发送数据**************
MOVSBUF,A
AWAIT2:
JNBTI,$
CLRTI
CLRP0.0
LCALLPRINT
************************乙机接受数据*********************
JIE:
CLREA
MOVTMOD,#20H
MOVTH1,#0E8H
MOVTL1,#0E8H
MOVPCON,#00H
SETBTR1
MOVSCON,#50H
BRR1:
JNBRI,$
CLRRI
SETBP0.0
BRR5:
MOVA,SBUF
MOV50H,A
******************按下D键时子程序**********************
FW:
anlb_bit,#0fh
mova,b_bit
swapa
anla_bit,#0fh
orla,a_bit
mov50h,A
lcallATTS
PRINT:
输出显示,入口50H
MOVDPTR,#TAB
MOVA,50H
ANLA,#0F0H
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
DLY:
MOVR7,#30H
MOVR6,#0
D1:
DJNZR6,$
DJNZR7,D1
TAB:
采用共阳极LED显示器
DB0C0H;
DB0F9H;
1
DB0A4H;
2
DB0B0H;
3
DB099H;
4
DB092H;
5
DB082H;
6
DB0F8H;
7
DB080H;
8
DB090H;
9
DB088H;
A
DB083H;
b
DB0C6H;
C
DB0A1H;
d
DB086H;
E
DB08EH;
F
CUN:
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 温度 I2C 通信 键盘 显示 综合 设计