返回主页  单片机教程 XL2000开发板  单片机学习 自制编程器  单片机资料   电子技术  产品介绍  如何购买  进入论坛

第一章:xl600单片机综合仿真试验仪简介

第5章:xl600单片机系统实验

实验12 DA转换dac0832的原理与应用

1.2各个模块接口的定义

基础:MCS-51单片机引脚说明

实验13 模拟/数字转换器ADC0804

第2章:快速入门篇用xl600作跑马灯实验

实验2 最简单的八路跑马灯

实验14 小喇叭警报器试验
2.1软件安装 

实验3 8路指示灯读出8路拨动开关的状态 

实验15 红外线遥控试验
2.2软件界面介绍 

实验4 数码管静态扫描 

实验17 1602液晶显示屏显示A 
2.3软件操作

实验5 数码管动态扫描显示01234567

实验19 24C02储存开机次数实验

第3章:ISP下载部份的应用

实验6 端口按键判断技术(按键显示数字)

实验20 步进电机实验 
ISP下载部份介绍 

实验7 矩阵按键识别技术

实验21 93c46演示程序 

xl600下载头之插头定义

实验8 74LS14反向器实验 

实验22 串行双向通信实验 
常用芯片的ISP相关引脚连接方法实验9 74LS138 38译码器部分实验实验23 综合实验18B20数字温度显示系统 
第4章:xl600仿真操作指南实验10 74LS164串入并出实验第6章 怎样产生hex文件?
仿真概述实验11 74LS165并入串出实验第7章 常见问题解答
KEIL UV2软件操作指南第8章 系统配置和售后服务指南

*实验23综合实验 18B20数字温度显示系统

注意:xl600的18b20芯片为选配件 

综合实验:用18B20(数字温度采集)74LS47(数码管译码)74LS138(三八译码) DS18B20DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出.

主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。

 18b20原理图 

DS18B20的引脚:

运行程序数码管后4位显示当前测试到的温度。

 

在XL600实验系统中,18B20为选配件.请看上图的插入方向,(屁股方向为板上半圆方向)此芯片20元每片.

在本系统中: 为了简化程序, 采用了74LS47(数码管译码)74LS138(三八译码)。即P0口的P0.0,P0.1,P0.2,P0.3 四个端口接到74LS47进行硬件数码管译码,然后输出到数码管部分的数据口JP5。

P0.4,P0.5,P.0.6三个端口接到74LS138进行38译码, 然后输出到数码管的位控制JP8.

系统综合原理图:

;

 ;本程序测量温度范围:0~125度,精确到0.06;
DAT BIT P3.0 ;数据通信口
WDLSB DATA 30H ;读出的温度低字节
WDMSB DATA 31H ;读出的温度高字节
;***************************************************************
ORG 0000H
LJMP MAIN
ORG 000BH
SJMP TIMER0 ;定时显示

;****************************************************************
;定时显示子程序,采用循环扫描方式
;显示缓冲区40H~47H
ORG 0040H
TIMER0:

MOV P0,40H ;最后一位值送p0
ORL P0,#70H; 点亮最后一位
CALL T1MS
MOV P0,41H
ORL P0,#60H
CALL T1MS
MOV P0,42H
ORL P0,#50H
CALL T1MS
MOV P0,43H
ORL P0,#40H
MOV TH0,#LOW(65536-10000) ;定时器10MS中断
MOV TL0,#HIGH(65536-10000)
RETI
T1MS: movr5,#00h;延时子程序
tt:movr6,#9
djnzr6,$
djnzr5,tt
ret

;*********************************************************
;主程序:

MAIN: MOV SP,#60H
MOV P2,#0FFH
MOV R2,#8
MOV R0,#40H ;
OVER: MOV @R0,#00H
INC R0
DJNZ R2,OVER
MOV TMOD,#01H
MOV TH0,#LOW(65536-10000)
MOV TL0,#HIGH(65536-10000)
SETB EA
SETB ET0
SETB TR0
LOOP: LCALL DSWD ;调用读出DS18B20温度程序
SJMP LOOP ; 读出DS18B20温度程序
DSWD:
CLR EA
LCALL RST
JNB F0,KEND ;如果没有应答,返回主程序
MOV R0,#0CCH
LCALL SEND_BYTE ;跳过ROM匹配
MOV R0,#44H ;发出温度转换命令
LCALL SEND_BYTE
SETB EA
MOV P1,#00001111B
MOV 48H,#1 ;廷时75ms以上准备读
SS2: MOV 49H,#255
SS1: MOV 4AH,#255
SS0: DJNZ 4AH,SS0
DJNZ 49H,SS1
DJNZ 48H,SS2
MOV P1,#11111100B
CLR EA
LCALL RST
JNB F0,KEND
MOV R0,#0CCH ;跳过ROM匹配
LCALL SEND_BYTE
MOV R0,#0BEH ;发出读温度命令
LCALL SEND_BYTE
LCALL READ_BYTE
MOV WDLSB,A
LCALL READ_BYTE
MOV WDMSB,A
LCALL TRANS12
KEND: mov p1,#01010101b
SETB EA
RET
;**********************************************************
;温度转换程序:精确到:0.06 ;
TRANS12:MOV A,30H
ANL A,#0F0H
MOV 3AH,A
MOV A,31H
ANL A,#0FH
ORL A,3AH
SWAP A
MOV B,#10
DIV AB
MOV 43H,A
MOV 42H,B ;
MOV DPTR,#TABB
MOV A,30H
ANL A,#0FH
MOV B,#2
MUL AB
MOVC A,@A+DPTR
MOV 41H,A
MOV A,30H
ANL A,#0FH
MOV B,#2
MUL AB
INC A
MOVC A,@A+DPTR
MOV 40H,A
RET
TABB: DB 0,0,0,6,1,2,1,8,2,5,3,1,3,7,4,3,5,0
DB 5,6,6,2,6,8,7,5,8,1,8,7,9,3
;*************************************************

SEND_BYTE: ;发送一个字节程序
MOV A,R0
MOV R5,#8
SEN3: CLR C
RRC A
JC SEN1
LCALL WRITE_0
SJMP SEN2
SEN1: LCALL WRITE_1
SEN2: DJNZ R5,SEN3 ; 循环8次,写一个字节
RET
READ_BYTE: ;读一个字节程序
MOV R5,#8
READ1: LCALL READ
RRC A
DJNZ R5,READ1 ; 循环8次,读一个字节
MOV R0,A
RET
;复位程序,如果复位置位F0,没有就复位F0
RST: SETB DAT
NOP
NOP
CLR DAT
MOV R6,#250 ;主机发复位脉冲持续3μs×200=600μs
DJNZ R6,$
MOV R6,#50
DJNZ R6,$
SETB DAT ;主机释放总线,口线改为输入
MOV R6,#15
DJNZ R6,$
CALL CHCK ;调用应答检查程序
MOV R6,#60
DJNZ R6,$
SETB DAT
RET
CHCK: MOV C,DAT
JC RST0
SETB F0 ;检测到信号,置位F0
SJMP CHCK0
RST0: CLR F0 ;未准备好F0复位
CHCK0: RET

WRITE_0: ;写0
CLR DAT
MOV R6,#30
DJNZ R6,$
SETB DAT
RET
WRITE_1:CLR DAT ;写1
NOP
NOP
NOP
NOP
NOP
SETB DAT
MOV R6,#30
DJNZ R6,$
RET

;读一位数据程序
READ: SETB DAT ;先复位至少1US产生读起始信号
NOP
NOP
CLR DAT
NOP
NOP
SETB DAT ;置位DAT准备接收数据
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DAT
MOV R6,#23
DJNZ R6,$
RET
END

本程序测量温度范围:0~125度,精确到0.06

综合接线图:

1 用一根单条数据线把18B20的JP39接到CPU部分的JP53(P3口)的P3.0

2用一条4PIN的排线,把数码管译码部份的JP19接到CPU部份P0口的JP51的P0.0,P0.1,P0.2,0.3 四个端口。(即插入P0口的上半部分)。

3 用一条8PIN的排线。 把数码管译码部份的输出端JP88,接到数码管部分的数据口JP5

4用一条4PIN的排线,把38译码部份的JP22接到CPU部份P0口的JP51的P0.4,P0.5,P0.6,07 四个端口。(即插入P0口的下半部分)。此处不太好插入, 小心操作。

5 用一条8PIN的排线。 把38译码部份的输出端JP25,接到数码管部分的显示位口JP8。

精致外观

精致外观

精致外观

精致外观

精致外观

精致细节

1602液晶

精美包装

精美包装

精美包装

232电缆

usb电缆

精美包装

cd光盘

实验芯片

使用手册

包装铝箱

精美细节

精美细节

红外遥控