版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目六综合应用项目
任务1远程报警装置的设计任务2出租车计费器的设计任务1远程报警装置的设计
知识目标:了解和掌握单片机的外围基本芯片的搭接方法,掌握DS18B20温度模块、数据处理模块及显示模块的设计方法。
能力目标:掌握DS18B20的搭建方式、通信过程和LCD显示模块的设计方法。
1.任务要求
(1)以MCS-51系列单片机为核心器件,组成一个远程报警装置。
(2)本装置的温度范围为 -20℃~70℃。
(3)温度用LCD显示,至少能够显示一位小数。
(4)能设定报警温度。
2.硬件设计
本设计主要有DS18B20芯片、LCD显示模块及报警用的蜂鸣器,其硬件总体设计如图6-1所示。
3.主程序流程图
主程序流程图如图6-2所示。图6-1硬件总体设计图6-2主程序流程图
4.主程序设计
程序清单如下:
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
ADC EQU 35H
TCNTA EQU 36H
TCNTB EQU 37H
H_TEMP EQU 46H ;温度上限
L_TEMP EQU -14H ;温度下限
FLAG BIT 00H
H_ALM BIT P3.0
L_ALM BIT P3.1
SOUND BIT P3.7
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP INT_T1
START: MOV LED_0, #00H
MOV LED_1, #00H
MOV LED_2, #00H
MOV DPTR, #TABLE
MOV H_TEMP, #60
MOV L_TEMP, #30
MOV TMOD, #12H
MOV TH0, #245
MOV TL0, #0
MOV TH1, #(65536-1000)/256
MOV TL1, #(65536-1000)%256
MOV IE, #8aH
CLR C
SETB TR0 ;为ADC0808提供时钟
WAIT: SETB H_ALM
SETB L_ALM
CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$
SETB OE
MOV ADC,P1 ;读取A/D转换结果
CLR OE
MOV A,ADC
SUBB A,#30 ;判断是否低于下限
JC LALM
MOV A,H_TEMP
MOV R0,ADC
SUBB A,R0 ;判断是否高于上限
JC HALM
CLR TR1
LJMP PTOC
LALM: ;低温报警
CLR L_ALM
SETB TR1
CLR FLAG
LJMP PTOC
HALM: ;高温报警
CLR H_ALM
SETB TR1
SETB FLAG
LJMP PtOC
PTOC: MOV A,ADC ;数值转换
MOV B,#100
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#10
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP
SJMP WAIT
INT_T0: CPL CLOCK ;提供89C51时钟
RETI
INT_T1: MOV TH1,#(65536-1000)/256
MOV TL1,#(65536-1000)%256
CPL SOUND
INC TCNTA
MOV A,TCNTA
JB FLAG,I1 ;判断是高温警报还是低温警报
CJNE A,#30,RETUNE ;低温警报声
SJMP I2
I1: CJNE A,#20,RETUNE ;高温警报声
I2: MOV TCNTA,#0
INC TCNTB
MOV A,TCNTB
CJNE A,#25,RETUNE
MOV TCNTA,#0
MOV TCNTB,#0
LCALL DELAY2
RETUNE: RETI
DISP: MOV A,LED_0 ;数码显示子程序
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: MOV R6,#10
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
DELAY2: MOV R5,#20
D2: MOV R6,#20
D3: MOV R7,#250
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
RET
TABLE: DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,FH
END
5.知识链接
1)
DS18B20原理及引脚介绍
DS18B20数字温度计是DALLAS公司生产的1-Wire(即单总线器件),具有线路简单、体积小的特点。因此,用它来组成一个测温系统,线路简单,并且在一根通信线上,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点如下:
(1)只要求一个端口即可实现通信。
(2)在DS18B20中的每个器件上都有独一无二的序列号。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测量温度范围为-55℃~+125℃。
(5)数字温度计的分辨率用户可以从9位到12位选择。
(6)内部有温度上、下限告警设置。
DS18B20的引脚功能描述如下:
(1) GND—地信号。
(2) DQ—数据输入/输出引脚。开漏极单总线接口引脚。当工作于寄生电源时,也可以向器件提供电源。
(3) VDD—电源引脚。当工作于寄生电源时,此引脚必须接地。
2) DS18B20控制命令
DS18B20的ROM命令如表6-1所示。
DS18B20存储控制命令如表6-2所示。
表6-1DS18B20的ROM命令
表6-2DS18B20存储控制命令
DS18B20程序如下:
WENDU_L EQU29H ;用于保存读出温度的低字节
WENDU_H EQU28H ;用于保存读出温度的高字节
XIAOSHU EQU27H ;用于保存温度的小数部分
ZHENGSHU EQU26H ;用于保存整数部分
BIAOZHI BIT50H ;DS18B20检查位:1为存在,0为不存在
ORG
0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SCON,#00H
ACALL DUWEN
ACALL ZHENGHE
ACALL BCD
ACALL DISP
ACALL TIME1
AJMP MAIN
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;读温度子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
DUWEN: SETBP2.0
ACALLFUWEI
;读温度之前必须先复位
JBBIAOZHI,CUNZAI ;查看标志位看DS18B20是否存在,1为存在,0为不存在
RET
;不存在则返回
CUNZAI:
;存在则开始读温度
MOV A,#0CCH
;跳过ROM匹配
ACALL XIE
;调写子程序
MOV A,#44H
;发出温度转换命令
ACALL XIE
;调写子程序
ACALL TIME1
;调1秒延时,等A/D转换完成,现在分辨率为12位,
;温度最大转换时间为750ms
ACALL FUWEI
;读温前需要复位
MOV A,#0CCH
;跳过ROM匹配
ACALL XIE
MOV A,#0BEH
;发读温度命令
ACALL XIE
ACALL DUSHU
;将输出数据读回
CLR P1.2
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;复位子程序
;DS18B20复位需要将数据位拉低500μs
;DS18B20收到信号后要等待16~60μs,然后发出60~240μs的低脉冲
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
FUWEI: SETB P2.0
NOP
CLR P2.0
MOV R0,#3
INTE: MOV R1,#107
;设一个537μs延时
KK1: DJNZ R1,KK1
DJNZ R0,INTE
SETB P2.0
;拉高数据线,等待回应
NOP
NOP
NOP
MOV R0,#25
INTE1: JNB P2.0,INTE2 ;延时50μs等待DS18B20回应,若返回低脉冲则
;说明DS18B20存在
DJNZ R0,INTE1
AJMP INTE3
;经过反应时间而未检测到DS18B20的存在,
;则跳转去清零标志位
INTE2: SETB BIAOZHI
;检测到DS18B20存在,标志位置1
CLR P1.0
AJMP INTE4
INTE3: CLR BIAOZHI
;未检测到DS18B20,标志位清零
AJMP INTE5
INTE4: MOV R0,#120
;延时240μs,确定回应信号已发完
KK:
DJNZ R0,KK
INTE5: SETB P2.0
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;写DS18B20子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
XIE: MOV R2,#8
;写计数寄存器,一共有8位数据
CLR C
LP: CLR P2.0
MOV R3,#6
;设一个延时
LL1: DJNZ R3,LL1
RRC A
;右循环,先输出低位
MOV P2.0,C
MOV R3,#23
;设延时
LL: DJNZ R3,LL
SETB P2.0
NOP
NOP
DJNZ R2,LP
;判断是否完成数据传送
SETB P2.0
;完成传送,拉高数据位
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;从DS18B20中读出温度数据子程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
DUSHU: MOV R4,#2
;设读回数据个数指针
MOV R1,#WENDU_L
;把温度数据低位存入29H
RE: MOV R2,#8
;设数据长度指针
RE1:
CLR
C
SETB P2.0
NOP
NOP
CLR P2.0
NOP
NOP
NOP
SETB P2.0
MOV R3,#9
DJNZ R3,$
MOV C,P2.0
MOV R3,#23
NN:
DJNZ R3,NN
RRC
A
DJNZ R2,RE1
MOV @R1,A
DEC R1
;高位存入28H
DJNZ R4,RE
RET
;-----------------------------------------------------------------------
------------------------------------------------------------------------
;数据整合子程序
;温度源数据的整合,读出数据的高字节的低四位决定温度的整数部分
;低字节的低四位决定小数部分
;------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
ZHENGHE:
MOV A,#0FH
ANL A,WENDU_L
;低字节的低四位就是小数部分
MOV XIAOSHU,A
;获得小数部分
MOV A,WENDU_L
;将高字节的低四位移入低字节的高四位
MOV C,40H
;获得的新字节就是整数部分的数据
RRC A
MOV C,41H
RRC A
MOV C,42H
RRC A
MOV C,43H
RRC A
MOV ZHENGSHU,A
RET
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;显示数据拆解程序、显示程序、延时程序
;---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
;数据拆解程序
BCD:
MOV A,ZHENGSHU
MOV B,#10
DIV AB
MOV 50H,A
MOV 51H,B
MOV A,XIAOSHU
MOV R0,#52H
MOV R2,#4
D0: MOV B,#10
MUL AB
MOV B,#16
DIV AB
MOV @R0,A
INC R0
MOV A,B
DJNZ R2,D0
RET
;-----------------------------------
;显示程序
;----------------------------------
DISP:
ACALL TIME
MOV R7,#6
MOV DPTR,#TAB
MOV R0,#55H
LP1: MOV A,@R0;
MOVC A,@A+DPTR
CJNE R7,#2,NE1
ANL A,#07FH
NE1: MOV SBUF,A
JNB TI,$
CLR TI
DEC R0
DJNZ R7,LP1
RET
;----------------------------------------
;延时程序
;----------------------------------------
TIME1: MOV R6,#4
LOOP2: MOV R5,#250
LOOP1: ACALL D1MS
DJNZ R5,LOOP1
DJNZ R6,LOOP2
RET
TIME: MOV R6,#200
LOOP3: ACALL D1MS
DJNZ R6,LOOP3
RET
D1MS: MOV R7,#250
LOOP0: NOP
NOP
NOP
DJNZR7,LOOP0
RET
TAB: DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
DB0FFH
END任务2出租车计费器的设计
知识目标:了解应用单片机的定时/计数器以及中断。
能力目标:会使用定时/计数器和中断系统。
1.任务要求
本系统假设速度恒定60km/h(1km/min),单价一定1.2元/km,起步价6.0元,超过三公里开始计费,每公里加1.2元。由于速度恒定,所以计算的核心是时间。时间单元由单片机的定时/计数器来计算,延时1ms时间的初值由程序来设定。算法公式是:
费用 = 起步价 + (路程-3) × 1.2
路程 = 速度 × 时间(速度恒定,60km/h,也就是1km/min)
若路程小于等于3,则收起步价6元,否则按费用公式计算。
2.硬件电路的设计与制作(应用Proteus画电路原理图)
1)整体硬件电路图
整体硬件电路图如图6-3所示。图6-3硬件电路图由图6-3我们可以清楚地看到,本电路控制核心是AT89C51芯片。该方案采用动态显示的方法。P0口作为数据总线口,分别把数据输送到4个74LS273地址锁存器中,而锁存器的工作需要等待脉冲的到来。脉冲通过写地址端口P3.6和端口P2.0~P2.3并经过或非门来产生。只有把数据送到外部接口时,P3.6口才为低电平,P2.0~P2.3用来控制到底是把数据送往哪一个锁存器。
3.应用程序设计
1)程序流程图的设计
该计费器系统的软件设计分为主程序模块和显示子程序模块。
(1)主程序模块。在主程序模块中,需要完成对各接口芯片的初始化、出租车起步价和单价、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中,还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。其流程图如图6-4所示。图6-4软件设计流程图当按下轻触开关时,开始对系统初始化,价格和时间都显示0,再次按下开关后,时间单元开始计时,并计算时间是否超过3分钟,超过3分钟,则从第4分钟开始计费。价格单元从起步价6.0元开始计费,每多一分钟,价格单元多加1.2元。
(2)显示子程序模块。显示子程序由显示时间子程序DIS1和显示价格子程序DIS组成。时间由小时、分、秒三个单元组成,共六个数码管。价格由元和角两个单元组成,最大可显示999.9元。
2)程序清单及分析
ORG 0000H ;初始化段地址
LJMP MAIN ;长跳转到主函数MAIN处
ORG 000BH ;TT0开始地址
LJMP TT0 ;长跳转到TT0处
ORG 0030H ;主函数开始地址,避开00~30敏感段
MAIN: MOV SP,#40H ;设堆栈底指针,下一个数据将放在41H单元
MOV 70H,#60 ;价格单元的起步价
MOV 71H,#00 ;价格单元的十位和百位
MOV 72H,#00 ;秒单元清零
MOV 73H,#00 ;分单元清零
MOV 74H,#00 ;时单元清零
MOV 75H,#00 ;75H单元清零备用
CLR 00H
CLR 01H ;将00H、01H单元清零
MOV 6BH,#0AH ;将0AH(即十进制10)放入6B单元
MOV R1,#76H ;把76H放到R1中
KKK: MOV @R1,#00H ;将76H单元的内容清零
INC R1
DJNZ 6BH,KKK ;76H~7FH单元全部清零,备用
LCALL DIS;调用价格显示子程序
LCALL DIS1;调用时间显示子程序
MOV TMOD,#11H ;定时/计数器工作方式设置
MOV TH0,#3CH
MOV TL0,#0B0H ;这句和上一句设置延时50ms
MOV 6EH,#20 ;将6EH单元设置为20,达到1s的延时
G2: LCALL DIS;长调用价格显示子程序
LCALL DIS1;长调用时间显示子程序
JB P1.0,G2 ;开关未按下,等待按下,显示初始状态,全部为零
LCALL TIME1;调用TIME1延时子程序
JB P1.0,G2;开关未按下,跳到G2,否则转到下一步
G1: LCALL DIS
LCALL DIS1
JNB P1.0,G1;开关按下,继续显示价格和时间,并转到中断
SETB EA ;开中断
SETB ET0;定时器0中断允许,向CPU申请中断
SETB TR0 ;定时器0工作允许
SETB 01H ;01H单元置位
LLL: LCALL CHAI;调用现场保护子程序
LCALL DIS
LCALL JISUAN;调用计算子程序
LCALL DIS1
JB P1.0,G3;开关没按下,则返回
LCALL TIME1
JB P1.0,G3
CPL 01H;01H单元此时为零
JNB 01H,G5 ;01H单元内容为0,跳到G5
SETB ET0;定时器0中断允许,向CPU申请中断
G6: LCALL DIS
LCALL DIS1
JNB P1.0,G6;开关按下,显示所走的时间及费用
LJMP MAIN;重新等待下一个工作状态
G5: CLR ET0
G4: LCALL DIS
LCALL DIS1
JNB P1.0,G4
G3: LJMP LLL
TT0: CLR ET0 ;定时一秒
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB ET0
DJNZ 6EH,JJJ
LCALL ADD1
MOV 6EH,#20
JJJ: RETI
DIS: MOV 6DH,#06H ;价格显示子程序
MOV R0,#7AH
MOV 6CH,#0FEH
HHH: MOV DPTR,#0FDFFH;数据指针出口地址,低8位给P0口,高8给位P2口
MOV A,6CH
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TAB ;查表首地址
MOVC A,@A+DPTR ;查表值送A
MOV DPTR,#0FEFFH
MOVX @DPTR,A
LCALL TIME1
MOV A,6CH
RLA
MOV 6CH,A
INC R0
DJNZ 6DH,HHH
RET
DIS1: MOV 6DH,#04H ;时间显示子程序
MOV R0,#72H
MOV 6CH,#0FEH
HHH1: MOV DPTR,#0F7FFH ;FF给P0口,F7给P1.0~P1.3口
MOV A,6CH
MOVX @DPTR,A ;将6CH的内容放到0F7FFH中
MOV A,@R0
MOV DPTR,#TAB ;查表首地址
MOVC A,@A+DPTR ;查表值送A
MOV DPTR,#0FBFFH
MOV R1,6DH
CJNE R1,#03H,K1
ORL A,#80H
K1: MOVX @DPTR,A
LCALL TIME1
MOV A,6CH
RL A
MOV 6CH,A
INC R0
DJNZ 6DH,HHH1
RET
TIME1: MOV 6AH,#0AH /*延时子程序*/
FFF: MOV 69H,#0AH
GGG: DJNZ 69H,GGG
DJNZ 6AH,FFF
RET
JISUAN:
JB 00H,K2 /*判断是否超过3公里及计算价格子程序*/
MOV A,78H
CLR C
SUBB A,#03H
MOV 73H,#06H
JC K3
SETB 00H
LJMP K3
K2: MOV R3,71H
MOV R4,70H
MOV R2,#00H
MOV R5,#00H
MOV R6,#03H
MOV R7,#0E8H
LCALL NDIV42
MOV 75H,R4
MOV A,R6
MOV R3,A
MOV A,R7
MOV R4,A
MOV R2,#00H
MOV R7,#100
LCALL NDIV31
MOV 74H,R4
MOV A,R7
MOV B,#10
DIV AB
MOV 73H,A
MOV 72H,B
K3: RET
CHAI: MOV 6FH,#03H /*保护现场子程序*/
MOV R0,#77H
MOV R1,#7AH
ZZZ: MOV A,@R0
ANL A,#0FH ;保存77H单元中的低4位
MOV @R1,A
MOV A,@R0
SWAP A
ANL A,#0FH
INC R1
MOV @R1,A
INC R0
INC R1
DJNZ 6FH,ZZZ ;循环三次
RET
ADD1: MOV A,77H /*加一子程序*/
CJNE A,#59H,L18
LJMP L19
L18: ADD A,#01H
DA A
MOV 77H,A
LJMP L24
L19: MOV 77H,#00H
JNB 00H,S1
CLR C
MOV A,70H
ADD A,#12
MOV 70H,A
MOV A,71H
ADDC A,#00H
MOV 71H,A
S1: MOV A,78H
CJNE A,#59H,L20
LJMP L21
L20: ADD A,#01H
DA A
MOV 78H,A
LJMP L24
L21: MOV 78H,#00H
MOV A,79H
CJNE A,#23H,L22
LJMP L23
L22: ADD A,#01H
DA A
MOV 79H,A
L23: MOV 79H,#00H
L24: RET
NDIV42: MOV A,R1 /*四除二子程序*/
PUSH ACC
MOV B,#00H
NDV421: MOV A,R2
CLR C
SUBB A,R7
MOV R1,A
MOV A,R5
SUBB A,R6
JC NDV422
MOV R5,A
MOV A,R1
MOV R2,A
INC B
SJMP NDV421
NDV422: PUSH B
MOV B,#10H
NDV423: CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
XCH A,R5
RLC A
XCH A,R5
MOV F0,C
CLR C
SUBB A,R7
MOV R1,A
MOV A,R5
SUBB A,R6
JB F0,NCV424
JC NDV425
NCV424: MOV R5,A
MOV A,R1
MOV R2,A
INC R4
NDV425: DJNZ B,NDV423
POP ACC
CLR OV
JNZ NDV426
SETB OV
NDV426: XCH A,R2
MOV R7,A
MOV A,R5
MOV R6,A
POP ACC
MOV R1,A
RET
NDIV31: MOV A,R2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冀教版四年级上册数学第七单元 垂线和平行线 测试卷【a卷】
- 2024年沙石供应商指定合同2篇
- 长沙房屋租赁合同(31篇)
- 水果收购合同5篇
- 广东省佛山市2023-2024学年高一上学期期末考试化学试题(含答案)
- 让数学变得快乐大班学习新方式
- 设计合同补充协议的进度安排
- 诚信交易的基本原则
- 购车合同范本样本样本示例
- 购销合同延长协议的售后服务策略
- 架空输电线路检修规范
- 【课件】第六单元第十二节外国影视音乐课件-2021-2022学年高中音乐人音版(2019)必修音乐鉴赏
- 任务二模拟量输入通道
- 数据字典设计文档模板
- 篮球行进间运球教案
- 血凝报告单模板
- 光伏发电支架组件安装资料
- PBT装置主要设备操作规程20160329
- 护理的三基三严培训计划
- 日本文学史试卷
- 工程认证《大学物理》课程教学大纲
评论
0/150
提交评论