基于单片机的太阳能路灯控制器设计(7)

2019-03-04 14:45

安徽工程大学机电学院毕业设计(论文)

电时,我们对过充点进行温度补偿,补偿方式对于2V(铅酸蓄电池每格的电压)蓄电池,基准温度为25℃,温度每变化1℃,电压补偿3mV[14]。 4.2 子程序流程图

一、8253完成外部计数功能

单片机本身对信号的处理工程并不复杂,完成测控模块的关键在于使用合适的方法和合理的外围芯片处理和输出信号。本例中采用单片机的外围计数芯片,8253作为专用的计数芯片,单片机通过对外围计数芯片的控制,完成PWM信号的输出,在输出控制指令时,由于使用了外部计数器的计数脉冲,单片机只需要向8253等芯片的寄存器中发送控制脉宽的计数值,计数器能自动的根据计数值调节电平的高低变化,从而模拟PWM输出。

开始

定义8253寄存器地址

初始化中断和变量

开外中断和定时器中断

N有中断

Y

定时器0赋初值

8253计数器0=BFU810

8253计数器 1=BUF811

8253计数器 0=BFU812 返回

4-1 外部计数子流程图

采用外部计数器实现计数的具体过程如下:

(1)采用外部的晶振电路产生一定频率的计数脉冲

- 25 -

汪婷婷:基于单片机的太阳能路灯控制器设计

(2)将该频率的计数脉冲作为外部计数器的计数脉冲,而将需要测量的脉宽信号作为外部芯片的门控信号,外部芯片在该门控周期内对计数脉冲进行计数。 8353计数器子程序:

CODE SEGMENT

ASSUME CS: CODE

START: MOV AL, 10H ;设置8253计数器0为工作方式0,二进制计数 MOV DX, 283H

OUT DX, AL ;送方式控制字到控制口 MOV DX, 280H

MOV AL, 0FH ;计数初值为0FH

OUT DX, AL ;送计数初值到计数器0的端口 KKK: IN AL, DX ;读计数器当前计数值 CALL PRINT ;调用显示子程序 MOV AH, 1 ;判断是否有键按下 INT 16H

JZ KKK ;若没有,则转到KKK MOV AH, 4CH ;返回DOS INT 21H

PRINT PROC NEAR ;显示子程序 PUSH DX

AND AL, 0FH ;取低四位

MOV DL,

CMP DL, 9 ;判断是否小于或等于9 JLE NUM ;是(?-?),ASCII码加30H

ADD DL, 7 ;不是(?A?-?F?),ASCII码加37H NUM: ADD DL, 30H

MOV AH, 2 ;显示字符 INT 21H

MOV DL, 0DH ;回车 INT 21H

MOV DL, 0AH ;换行 INT 21H POP DX

RET ;子程序返回 PRINT ENDP CODE ENDS

END START

二、温度传感器DS18B20

使用单片机和温度传感器DS18B20完成对温度的检测和补偿,通过AT89C52完成对DS18B20芯片的控制和数据传输。主要完成对DS18B20的调用中断管理、测量温度值得计算及温度值得显示等功能,DS18B20自动的分辨

- 26 -

安徽工程大学机电学院毕业设计(论文)

率可以通过编程进行选择,显示程序的实现是对各温度值的显示,并且允许中断的产生以修正温度值,实现及时的温度测量。其工作的流程图如图

开始

初始化DS18B20

读DS18B20的序列号

Y检测DS18B20存在?

N

发送跳过ROM指令

温度转换

I=1,等待

DS18B20复位

发送DS18B20编码 读取温度数据

4-2 DS18B20的测温程序流程图

DS18B20的测温程序:

TEMPER_L EQU 36H ;存放读出温度低位数据 TEMPER_H EQU 35H ;存放读出温度高位数据 TEMPER_NUM EQU 60H ;存放转换后的温度值 FLAG1 BIT 00H DQ BIT P3.3 ;一线总线控制端口

ORG 0000H LJMP MAIN ORG 0100H MAIN:

MOV SP,#70H

- 27 -

汪婷婷:基于单片机的太阳能路灯控制器设计

LCALL GET_TEMPER ;从DS18B20读出温度数据 LCALL TEMPER_COV ;转换读出的温度数据并保存 SJMP $ ;完成一次数字温度采集

;-------读出转换后的温度值 GET_TEMPER: SETB DQ ; 定时入口 BCD: LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ; 若DS18B20不存在则返回 S22: LCALL DELAY1

MOV A,#0CCH ; 跳过ROM匹配------0CC LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 NOP

LCALL DELAY LCALL DELAY

CBA: LCALL INIT_1820 JB FLAG1,ABC LJMP CBA

ABC: LCALL DELAY1

MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820

MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820

LCALL READ_18200 ;READ_1820 RET

;-------读DS18B20的程序,从DS18B20中读出一个字节的数据 READ_1820: MOV R2,#8 RE1: CLR C SETB DQ NOP NOP

CLR DQ NOP NOP NOP

SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ

- 28 -

安徽工程大学机电学院毕业设计(论文)

MOV R3,#23 DJNZ R3,$ RRC A

DJNZ R2,RE1 RET

;-------写DS18B20的程序 WRITE_1820: MOV R2,#8 CLR C

WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP

DJNZ R2,WR1 SETB DQ RET

;-------读DS18B20的程序,从DS18B20中读出两个字节的温度数据 READ_18200:

MOV R4,#2 ; 将温度高位和低位从DS18B20中读出

MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)

RE00: MOV R2,#8 RE01: CLR C SETB DQ NOP NOP

CLR DQ NOP NOP NOP

SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A

- 29 -


基于单片机的太阳能路灯控制器设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一级泵站课程设计 - 图文

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

马上注册会员

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