51单片机温度I2C通信键盘显示综合设计.docx
- 文档编号:6423576
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:147.58KB
51单片机温度I2C通信键盘显示综合设计.docx
《51单片机温度I2C通信键盘显示综合设计.docx》由会员分享,可在线阅读,更多相关《51单片机温度I2C通信键盘显示综合设计.docx(17页珍藏版)》请在冰豆网上搜索。
51单片机温度I2C通信键盘显示综合设计
接
口
技
术
实
验
设
计
报
告
小组成员:
徐胜林学号:
2010312118
李见云学号:
2010312169
接口技术实验设计报告
一、设计原理图
二、PCB版图
(1)、功能模版图
(2)、最小系统模块版图
三、功能说明
按下键盘0~9号键时,在数码管上显示相应的数字,当按下A键时,处于发送状态,按下B键时,时接受状态,按下C键时,时启动温度转换,并将温度显示在数码管上,按下D键时,时发送当前温度的值给乙机接收并显示,E键时实现自加功能,F是自减功能。
四、主要器件的简介
(1)AT24c02简介
24C02是低工作电压的2K位串行电可擦除只读存储器,内部组织为
256个字节,每个字节8位,该芯片被广泛应用于低电压及低功耗的工商业领域。
主要特性
1,工作电压:
1.8V~5.5V
2,输入/输出引脚兼容5V
3,应用在内部结构:
128x8(1K),256x8(2K),512x8(4K),1024x8(8K),2048x8(16K)
4,二线串行接口
5,输入引脚经施密特触发器滤波抑制噪声
6,双向数据传输协议
7,兼容400KHz(1.8V,2.5V,2.7V,3.6V)
8,支持硬件写保护
(2)MAX232简介
该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。
由于电脑串口rs232电平是-10v+10v,而一般的单片机应用系统的信号电压是ttl电平0+5v,max232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电
平。
每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。
主要特点
1、单5V电源工作
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
SJMPMAIN
CONT:
CJNEA,#0BH,CONT1
ACALLJIE
SJMPMAIN
CONT1:
CJNEA,#0CH,CONT2
ACALLWD_18B20
SJMPMAIN
CONT2:
CJNEA,#0DH,CONT3
LCALLFW
SJMPMAIN
CONT3:
CJNEA,#0EH,CONT4
MOVA,50H
INCA
MOV50H,A
LCALLDELAY2
LCALLPRINT
SJMPMAIN
CONT4:
CJNEA,#0FH,CONT5
MOVA,50H
DECA
MOV50H,A
LCALLDELAY2
LCALLPRINT
SJMPMAIN
CONT5:
MOV50H,A
SJMPDISPLAY
KEY:
LCALLKS;调用检测按键子程序
JNZK1;有键按下继续
LCALLDELAY2;无键按下调用延时去抖动程序
AJMPKEY;返回继续检测有无按键按下
K1:
LCALLDELAY2
LCALLDELAY2;有键按下继续延时去抖动
LCALLKS;再一次调用检测按键程序
JNZK2;确认有按下进行下一步
AJMPKEY;无键按下返回继续检测
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
AJMPLK;跳转到键值理程序进行键值处理
L2:
JBP2.2,L3;P1.2等于1跳转到L3
MOVA,#08H;将第三行的行值送入ACC
AJMPLK;跳转到键值处理程序
L3:
JBP2.3,NEXT;P2.3等于1跳转到NEXT处
MOVA,#0CH;将第四行的行值送入ACC
LK:
ADDA,R4;行值与列值相加后的键值送入A
PUSHACC;将A中的值送入堆栈暂存
K4:
LCALLDELAY2;调用延时去抖动程序
LCALLKS;调用按键检测程序
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:
MOVA,50H
;输出显示,入口A
PUSHACC
MOVDPTR,#TAB
MOVCA,@A+DPTR
LCALLDSP
POPACC
RET
DSP:
SETBP3.2;输出一位显示数据,入口A
MOVR7,#08H
LOOP:
CLRCLK
RLCA
MOVDAT,C
SETBCLK
DJNZR7,LOOP
RET
DEL:
MOVR5,#04H
DEL3:
MOVR7,#0FFH
DEL1:
MOVR6,#0FFH
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
DJNZR5,DEL3
RET
W008:
MOVP1,#0FFH
CLRSDA
MOVA,#0A0H
ACALLW08
MOVA,#30H
ACALLW08
MOVA,#07H
LCALLW08
CLRSDA
LCALLDELAY20
SETBSCL
LCALLDELAY20
SETBSDA
CLRA
ACALLDISPLAY
RET
W08:
MOVR7,#08
W01:
CLRSCL
RLCA
MOVSDA,C
NOP
SETBSCL
ACALLDELAY20
DJNZR7,W01
CLRSCL
ACALLDELAY20
SETBSCL
JBSDA,$
RET
R008:
MOVP1,#0FFH
CLRSCL
MOVA,#0A0H
ACALLW08
MOVA,#30H
ACALLW08
MOVP1,#0FFH
CLRSDA
MOVA,#0A0H
SETBACC.0
ACALLW08
RR1:
ACALLR08
ACALLDISPLAY
CLRSDA
ACALLDELAY20
SETBCLK
ACALLDELAY20
SETBSDA
RET
R08:
MOVR7,#08H
CLRSCL
R01:
SETBSCL
MOVC,SDA
CLRSCL
RLCA
DJNZR7,R01
NOP
SETBSCL
JBSDA,$
RET
DELAY20:
NOP
NOP
RET
WD_18B20:
CLRP3.6
LCALLINIT_18B20
LCALLGET_TEMPER
acallCHANGE
ret
;**********DS18B20复位程序*****************
INIT_18B20:
SETBDQ
NOP
CLRDQ
MOVR0,#0FBH
TSR1:
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
TSR3:
SETBFLAG1;置标志位,表明DS18B20存在
CLRP2.0;二极管指示
AJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6
TSR7:
SETBDQ;表明不存在
RET
;*****************读转换后的温度值****************
GET_TEMPER:
SETBDQ
LCALLINIT_18B20
JBFLAG1,TSS2
RET;若不存在则返回
TSS2:
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#44H;发出温度转换命令
LCALLWRITE_18B20
LCALLD1MS;延时
LCALLINIT_18B20
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#0BEH;发出读温度换命令
LCALLWRITE_18B20
LCALLREAD2_18B20;读两个字节的温度
RET
;***************写ds18b20汇编程序************
WRITE_18B20:
MOVR2,#8
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
;***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
MOVR4,#2;低位存在29H,高位存在28H
MOVR1,#29H
RE00:
MOVR2,#8
RE01:
CLRC
SETBC
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;************读出的温度进行数据转换**************
CHANGE:
MOVA,29H
MOVC,28H.0;将28H中的最低位移入C
RRCA
MOVC,28H.1
RRCA
MOVC,28H.2
RRCA
MOVC,28H.3
RRCA
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
MOV50H,A
LCALLDISPLAY
mova,a_bit
MOV50H,A
LCALLDISPLAY
ret
D1MS:
MOVR7,#20;1MS延时
DJNZR7,$
RET
;*************************按下A键时子程序***************
ATT1:
;CLRA
MOVA,50H
LCALLATTS
;*************************甲机发数据***************
ATTS:
SETBP0.0
CLREA
MOVTMOD,#20H
MOVTL1,#0E8H
MOVTH1,#0E8H
MOVPCON,#00H
SETBTR1
MOVSCON,#50H;***********初始化***************
ATT3:
;********************发送数据**************
MOVSBUF,A
AWAIT2:
JNBTI,$
CLRTI
CLRP0.0
MOV50H,A
LCALLPRINT
RET
;************************乙机接受数据*********************
JIE:
CLRP0.0
CLREA
MOVTMOD,#20H
MOVTH1,#0E8H
MOVTL1,#0E8H
MOVPCON,#00H
SETBTR1
MOVSCON,#50H
BRR1:
JNBRI,$
CLRRI
SETBP0.0
BRR5:
MOVA,SBUF
MOV50H,A
LCALLPRINT
RET
;******************按下D键时子程序**********************
FW:
anlb_bit,#0fh
mova,b_bit
swapa
anla_bit,#0fh
orla,a_bit
mov50h,A
lcallATTS
ret
PRINT:
;输出显示,入口50H
PUSHACC
MOVDPTR,#TAB
MOVA,50H
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
LCALLDSP
MOVA,50H
ANLA,#0FH
MOVCA,@A+DPTR
LCALLDSP
POPACC
RET
DLY:
MOVR7,#30H
MOVR6,#0
D1:
DJNZR6,$
DJNZR7,D1
RET
TAB:
;采用共阳极LED显示器
DB0C0H;0
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:
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 温度 I2C 通信 键盘 显示 综合 设计