网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

基于液晶显示的单片机温度控制设计

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
基于液晶显示的单片机温度控制设计
摘要  
    本篇论文主要通过DS18B20做传感器来测量温度,以及通过它来设置温度的上下限。首先是对DS18B20的深入了解并根据DS18B20的内部结构特点来设计硬件电路和软件程序。因考虑到在设置温度TH和TL所以本次设计采用四个按键来控制,通过按键之间的协调作用来完成温度设置值,由于温度的不同我们采取不同的信息来作为信号处理,所以在硬件电路中用蜂鸣器来报警做为提醒。我们采用1602液晶显示所测出来的温                                        
 
关键词  DS18B20;1602液晶显示器;原理图及程序
 
 
Abstract
This paper DS18B20 done mainly through sensors to measure temperature, and through it to set the temperature of the upper and lower limits. DS18B20 is the first in-depth understanding of and in accordance with the internal structure of DS18B20 to design hardware and software. By taking into account the temperature settings TH and TL So this design uses four buttons to control, through the coordinating role between the keys to complete the temperature setting values, as we take the temperature of different information to different as signal processing, hardware Circuit used as a warning to remind the buzzer. We use 1602 LCD measured by the temperature.Keywords  DS18B20 1602 LCD display schematics and procedures28
 

基于液晶显示的单片机温度控制设计
目       录

1 绪论... 1
1.1 单片机概述... 1
1.1.1 设计目的... 1
1.1.2 设计原理... 1
2硬件组成及有关参数计算... 2
2.1硬件组成结构... 2
2.2主要硬件的简单介绍... 2
2.2.1芯片AT89S51简单介绍………………………………………………………………………………………….
2.2.2 DS18B20简单介绍……………………………………………………………………………………………………..
2.2.31602液晶显示器简介……………………………………………………………………………………………..
 
3系统软件设计
4系统软件设计
4.1初始化程序……………………………………………………………………………………………………………..
  4.2主程序………………………………………………………
结论... 5
致谢... 6
参考文献... 7
附录... 8
附录1. 8
附录2. 8
 

基于液晶显示的单片机温度控制设计
1 绪论
结论
1.1单片机的概述                                                                                              单片机是70年代中期发展起来的一种大规模集成电路芯片,是CPU、RAM、ROM、I/O接口和中断系统集成于同一硅片的器件。单片机发展迅速,各类产品不断涌现,出现了许多好性能新兴机种,现已成为工厂自动化和各控制领域的支柱产业之一。由于生产工艺和设计能力的不断提高,单片机也在向着更高集成化、更多位多功能,更强化处理控制问题的能力、更快的运算速度、更廉价低功耗、更兼容开发和更好的软件固有化的方向发展。单片机是所有微处理机中性价比最高的一种,随着种类的不断增加,功能不断加强,其应用领域也迅速扩大。单片机在智能仪表、实时控制、机电一体化、办公机械、家用电器等方面都有相当的应用领域。当前,8位单片机主要用于工业控制,如温度、压力、流量、计量和机械加工的测量和控制场合;高效能的16位单片机(如MCS-96、MK-68200)可用在更复杂的计算机网络。单片机用于控制有利于实现系统控制的最小化和单片化,简化一些专用接口电路,如编程计数器、锁相环(PLL)、模拟开关、A/D和D/A变换器、电压比较器等组成的专用控制处理功能的单板式微系统。随着电子技术的飞速发展,电子控制器件不断向着小型化、智能化方向发展,同时可*性不断提高,单片机由于具有集成度高、功能强、通用性好、可*性高、抗干扰能力强、体积小、使用方便灵活等特点,无论是在国防工业、通讯尖端技术领域,还是在智能仪器、民用电器中都使用的越来越多。可以说,微机测控技术的应用已渗透到国民经济的各个部门,微机测控技术的应用是产品提高档次和推陈出新的有效途径。
在国内,由于单片机具有功能强、体积小、可靠性好、和价格低廉等独特优点,因此,在智能仪器仪表、工业自动控制、计算机智能终端、家用电器、儿童玩具等许多方面,都已得到了很好的应用,因而受到人们高度重视,取得了一系列科研成果,成为传统工业技术改造和新产品更新换代的理想机种,具有广阔的发展前景。随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且我们可以很容易地做到多点的温度检测,如果对此原理图稍加改进,我们还可以进行不同地点的实时温度检测和控制。
1.12设计目的
随着现代科技的不段发展,对温度测量的工具越来越多并且精度也是越来越高,但随着生活水平的不段提高,越来越多的人健康的关注倍加重视,特别是对冷暖空气的变化更加注意,在此我们特设计一有关温度控制的系统,通过它可以设置温度的上下限,当温度低于所设的温度的下限或是高于所设的温度的上限时就会发生报警,因此可以提醒您要注意温度变化。本制作轻巧灵便适合在私人家庭中运用,使用时可以通过四个按键的作用来设置系统初值,即可达到准确提醒您的作用。
1.12原理
本次设本系统主要研究的是利用MCS-51系列单片机中的AT89C51单片机来实现温度检测及控制,通过对89C51的P1口的高4位设置上限值、下限值、,因考虑到在设置温度TH和TL,所以本次设计采用四个按键来控制,通过按键之间的协调作用来完成温度设置值,由于温度的不同我们采取不同的信息来作为信号处理,所以在硬件电路中用蜂鸣器来报警做为提醒实现温度从IN0输入89C51的P1口低4位设置报警系统。ADC0809实现模拟输入到数字量的转换,通过1602数码管显示数据。
2系统硬件组成及有关参数计算
2.1、硬件组成结构
主要硬件由一片AT89S51芯片、一个DS18B20传感器、一个1602液晶显示器、一个蜂鸣器、一电位器(10K)、五个按键、两个开关、一个12MHZ晶振、两个30PF和一个10uF 电容、若干电阻、导线及三极管。
2.2、主要硬件的简单介绍
2.21芯片采用最常见的AT89S51
2.22DS18B20简单介绍
测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V--5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。                
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管角排列如下:1 GND为电源地 2 DQ为数字信号输入/输出端3 VDD为外接供电电源输入端若图片无法显示请联系QQ3710167
(3)1602液晶显示器简介
显示特性:   单5V电源电压,低功耗,长寿命,高可靠性。
         内置192种字符(160个5*7点阵字符和和32个5*10点阵字符)
         具有64个字节的自定义字符RAM,可自定义8个5*8的点阵字符或4个5*11点阵字符。
         显示方式:SIN、半透、正显。
         驱动方式:1/6DUTY,1/5BIAS
         视角方向:6点
         背光方式:底部LED
         通讯方式:4位或8位并口可选
         标准的借口特性,适配MC51和M6800系列MPU的操作时序。
物理特性:





外观尺寸

80*36*14

单位


可视范围

64.6(W)*16.0(H)

Mm


显示容量

16字符两行

 


点尺寸

0.55*0.75

Mm


点间距

0.08

mm
接口定义:





管脚号

符号

功能


1

Vss

电源地(GND)


2

Vcc

电源电压(+5)


3

Vo

LCD驱动电压(可调)


 
4

 
RS

寄存器选择输入端,输入MPU选择模块内容寄存器类型信号;
RS=0,当MPU进行写模块操作,指向数据寄存器;
当MPU进行读模块操作,指向地址计数器;
RS=1,无论MPU读操作还是写操作,均指向数据寄存器


5

R/W

读写控制输入端,输入MPU选择读/写寄存器信号;
R/W=0,读操作;R/W=1,写操作


6

E

使能信号输入端,输入MPU读/写模块操作使能信号;
读操作时,高电平有效;写操作时,下降沿有效


7

DB0

数据输入/输出口,MPU与模块之间的数据传诵通道


8

DB1

数据输入/输出口,MPU与模块之间的数据传诵通道


9

DB2

数据输入/输出口,MPU与模块之间的数据传诵通道


10

DB3

数据输入/输出口,MPU与模块之间的数据传诵通道


11

DB4

数据输入/输出口,MPU与模块之间的数据传诵通道


12

DB5

数据输入/输出口,MPU与模块之间的数据传诵通道


13

DB6

数据输入/输出口,MPU与模块之间的数据传诵通道


14

DB7

数据输入/输出口,MPU与模块之间的数据传诵通道


15

A

背光的正端+5V


16

K

背光的负端0V
3系统硬件电路设计
图一为温度控制系统设计的电原理图,温度测量系统采用DS18B20温度传感器测量并与p3.3口相连,当有温度信号时即可通过p3.3口传入单片机。显示数据的采用1602LCD液
晶显示,LCD的DB0—DB7分别与AT89S51芯片的P0口分别相连,信号通过P0口传入LCD,在LCD液晶的VCC端加一开关,用来控制液晶,防止液晶被烧坏。AT89S51芯片的第9脚为单片机的复位脚,采用简单的按键上电位复位电路,更能保护好电路的安全可靠,5、6、7、8脚分别用来接按键,用来设置LCD显示的设置温度值。
K1用来查看温度的设置值,即温度报警值的状态。
K2为进入温度报警的状态。
K3为退出查看温度报警状态,在设置温度状态值时K1为设定值加、减方式选择键(默认为减少)。
K2为TH值设定键,K3为TL值设定键。
K4为确定键即退出设定状态;
K2和K3以减的方式设定,当设定数值减到“0”时自动转换为加方式;
K2和K3以加方式设定,当设定数值TH=120、TL=99时,设定值均变为“0”。K4确定并退出设定温度报警值状态。
将设定温度报警值自动存入DS18B20的EEROM中,可永久保存。每次开机时自动从DS18B20的EEROM读出温度报警值。AT89S51芯片的17脚做为报警输出端,采用9013三极管驱动蜂鸣器;18、19脚接12MHZ晶振并分别接30PF的瓷片补偿电容。1602LCD液晶用10K的电位器来调节LCD的背光显示,其RS、R/W、E三键分别与AT89S51芯片的P2.0、P2.1、P2.2相连,当P2.0~P2.2为高电平时即完成LCD显示的准备工作,片外存储程序选择脚(31脚)接正电源。
 

基于液晶显示的单片机温度控制设计
图一  硬件电路图
若图片无法显示请联系QQ3710167 
4系统软件设计
 
4.1初始化程序
初始化程序内容包括P0、P1、P2口,P0口清零,P1.4~P1.7附值,置堆栈基址(70H),初始化DS18B20、1602LCD。
4.2主程序若图片无法显示请联系QQ3710167
DS18B20传感器有信号则将信号通过P3.3口发送到AT89S51芯片,经过温度转换后再将温度发送出去,检测P0口为高电平,则转发程序,并经过BCD处理使信号发送到LCD并显示,当温度小于或等于TL(设置温度下限)时,在报警范围内从而使蜂鸣器报警;当温度大于后等于TH(设置温度上限)时,同样在蜂鸣器报警的范围内。当温度不在蜂鸣器报警的范围内时则程序不断的进行扫描信号从而不断更新现场的温度信息。主程序流程图如

5系统调试及出现问题的解决方案
测试仪器:PC机,QTH—52在线仿真机,数字万用表,稳压电源,温度计,示波器。
测试方法:先对各单元的模快进行独立的测试,再进行上机整体的测试,通过后,进行脱机测试,以提高调试效率。
各单元模块的测试基本正常,有一些个别的接线和程序错误,进行简单的修改,可以进行正常的工作。
整体的测试;将测试好的各模块连接好,用QTH—52在线仿真机倒替89C51单片机进行模拟调试,用键盘设定一定范围值接通电源,按下复位按键,使电路进行初始化,按下LCD电源开关使LCD正常显示,此时显示的是当前的室内温度,如果此时蜂鸣器报警则说明此时的温度不在设置温度值TL和TH之间,反之则在TL和TH之间。当按下K2时即进入到设定温度报警值状态,再按一下K2则此时是对TH值的设定,接着按K1键是对TH值进行减方式操作,若此时按过K4后再按K1则是对TH进行加方式操作,如此就可以设定TH值了;若按下K2后再按K3键则是对TL值进行设定,方法与TH的设定值完全相同;当对温度进行设定完毕后就可以通过按下K4键退出设定程序,此时通过按键K1就可查看刚刚设定的数值的结果,再按下K3键就退出查看设定值状态,如果再调试时LCD上没有显示,通过用万用表查看是否硬件电路有故障,如果LCD上没有显示字的蓝色显示字的条框,此时最好调节电位器就能清晰的看到字迹了。
6、系统程序
主要程序如下:
    
TEMP_ZH   DATA  24H     ;实时温度值存放单元
TEMPL     DATA  25H     ;
TEMPH     DATA  26H     ;
TEMP_TH   DATA  27H     ;高温报警值存放单元
TEMP_TL   DATA  28H     ;低温报警值存放单元
K1     EQU  P1.4          K2     EQU  P1.5          K3     EQU  P1.6          K4     EQU  P1.7          BEEP   EQU  P3.7                FLAG1   EQU  20H.0    ;DS18B20是否存在标记          KEY_UD    EQU  20H.1    ;设定 KEY 的UP与DOWN 标记          DATE_LINE  EQU  P3.3;=====================================================           ORG  0000H           JMP  MAINMAIN:     MOV  SP,#60H          MOV  A,#00H          MOV  R0,#20H       ;将 20H-2FH 单元清零          MOV  R1,#10HCLEAR:    MOV  @R0,A          INC  R0           ;18B20复位子程序          JNB   FLAG1,START1   ;DS1820不存在          CALL  MENU_OK          CALL  READ_E2          CALL  TEMP_BJ        ;显示温度标记          JMP   START2START1:   CALL  MENU_ERROR          CALL  TEMP_BJ        ;显示温度标记          JMP  $START2:          CALL  RESET          JNB  FLAG1,START1    ;DS1820不存在          MOV   A,#0CCH        ; 跳过ROM匹配          CALL  WRITE                    MOV   A,#0BEH        ; 发出读温度命令          CALL  WRITE          CALL  READ          call CONVTEMP          Call DISPBCD          CALL CONV          CALL TEMP_COMP          CALL  PROC_KEY       ; 键扫描  SJMP START2;-----------------------------------------------------PROC_KEY:  JB  K1,PROC_K1    ; 按键K1处理         CALL  BEEP_BL         JNB  K1,contentnbsp;        MOV  DPTR,#M_ALAX1                  CALL  BEEP_BL         JMP  PROC_K2PROC_K1:                   ; 按键K2处理         JB  K2,PROC_END         CALL  BEEP_BL         JNB  K2,contentnbsp;        MOV   DPTR,#RESET_A1         MOV   A,#1         CALL  LCD_PRINT         CALL  SET_ALARM         CALL  RE_18B20           ;将设定的TH,TL值写入DS18B20内         CALL  WRITE_E2PROC_K2:         CALL  MENU_OK         CALL  TEMP_BJPROC_END:         RET;============================================;设定报警值 TH、TL;============================================SET_ALARM:         CALL  RESET_ALARM         CALL  LOOK_ALARMAS0:         JB         ;20H.1=0,DOWNASZ01:   JB  K2,ASZ02                ;TH值调整(增加)         CALL  BEEP_BL         INC  TEMP_TH         MOV  A,TEMP_TH         CJNE  A,#120,ASZ011         MOV  TEMP_TH,#0ASZ011:  CALL  LOOK_ALARM         MOV  R5,#10         CALL  DELAY         JMP  ASZ01ASZ02:   JB  K3,ASZ03                ;TL值调整(增加)       _TL,#00HASZ021:  CALL  LOOK_ALARM    ;         MOV  R5,#10         CALL  DELAY         JMP  ASZ02ASZ03:   JB  K4,AS0                 ;确定调整 OK         CALL  BEEP_BL         ,ASJ02                  ;TH值调整 (减少)         CALL  BEEP_BL         DEC   TEMP_TH         MOV  A,TEMP_TH                  JMP  AS0ASJ02:   JB  K3,ASJ03               ;TL值调整(减少)         CALL  BEEP_BL         DEC  TEMP_TL         LOOK_ALARM    ;         MOV  R5,#10         CALL  DELAY         JMP  AS0ASJ022:         RETRESET_ALARM:          MOV  DPTR,#RESET_A1     ;指针指到显示信息区
 

基于液晶显示的单片机温度控制设计
 MOVLCD_PRINT          RETRESET_A1:     DB  "RESET ALERT CODE";====================================================;实际温度值与标记温度值比较子程序;====================================================TEMP_COMP:         A,TEMP_ZH             ;减数>被减数,则          JC  CHULI1                      ;借位标志位C=1,转          MOV  A,TEMP_ZH          SUBB  A,TEMP_TL             ;减数>被减数,则          JC  CHULI2                      ;借位标志位C=1,转          MOV  DPTR,#BJ5          CALL  TEMP_BJ3
CALL BEEP_BL       DPTR,#BJ3          CALL  TEMP_BJ3         CALL  BEEP_BL          RET CHULI2:          MOV  DPTR,#BJ4          CALL  TEMP_BJ3          CALL  BEEP_BL          RET;-----------------------------------------TEMP_BJ3:          MOV  A,#0CEH          CALL WCOM         R0,#2BBJJ3:    MOV  A,R1          MOVC A,@A+DPTR          CALL  WDATA          INC R1          DJNZ  R0,BBJJ3          RETBJ3:      DB  ">H"BJ4:"         MOV  R0,#32HTSR2:JNB  DATE_LINE,TSR3        ;等待DS18B20回应         DJNZ  R0,TSR2         JMP  TSR4                        ; 延时TSR3:SETB  FLAG1                    ; 置标志位,表示DS1820存在         JMP  TSR5TSR4:CLR  TSR6:DJNZ  R0,contentnbsp;                     ; 时序要求延时一段时间TSR7:
SETB  DATE_LINE        RET;=======================================================RE_18B20:        JB  FLAG1,RE_18B20A        RETRE_18B20A:        CALL  RESET        MOV  A,#0CCH                    ;跳过ROM匹配        LCALL  WRITE        MOV  A,#4EH                      ;写暂存寄存器        LCALL  WRITE        MOV  A,TEMP_TH                ;TH(报警上限)                MOV  A,#7FH                      ;12位精确度        LCALL  WRITE        RET;------------------------------------------------------------WRITE_E2:        CALL  RESET        MOV        MOV  A,#48H                       ;把暂存器里的温度报警值拷贝到EEROM        LCALL  WRITE        RET;--------------------------------------------------------------READ_E2:        CALL  RESET        MOV  ;把EEROM里的温度报警值拷贝回暂存器        CALL  WRITE        RET;--------------------------------------------------------------;将自定义字符写入LCD1602的CGRAM中;--------------------------------------------------------------STORE_DATA:        CALL  WCOM        MOV  R2,#08H        MOV  DPTR,#D_DATA        MOV  R3,#00HS_DATA:        MOV  A,R3        ;写入数据        INC  R3        DJNZ  R2,S_DATA        RETD_DATA:    DB  0CH,12H,12H,0CH,00H,00H,00H,00H;==============================================================WRITE:
MOV          CLR  DATE_LINE                   ;开始写入DS18B20总线要处于复位(低)状态        MOV  R3,#07        DJNZ  R3,contentnbsp;                          ;总线复位保持16微妙以上        RRC  A                                 ;把一个字节DATA 分成8个BIT环移给C        MOV  DATE_LINE,C                ;写入一个BIT        _LINE                  ;重新释放总线        NOP        DJNZ  R2,WR1                       ;写入下一个BIT        SETB  DATE_LINE      MOV  R4,#4                      ; 将温度低位、高位、TH、TL从DS18B20中读出         MOV  R1,#TEMPL                ; 存入25H、26H、27H、28HRE00: 
MOV  R2,#8RE01:
CLR  CY        SETB  DATE_LINE        NOP        NOP        CLR  DATE_LINE                 ;读前总线保持为低
        NOP
        NOP        NOP        SETB  DATE_LINE                ;开始读总线释放        MOV  R3,#09                       ;延时18微妙        DJNZ  R3,contentnbsp;       MOV  C,DATE_LINE              ;从DS18B20总线读得一个BIT        MOV  R3,#3CH                            ;读下一个BIT        MOV  @R1,A        INC   R1
        DJNZ  R4,RE00
        RET;*****************************************************;  处理温度 BCD 码子程序;****************************************************CONVTEMP:      MOV  A,TEMPH         ;判温度是否零下               ANL  A,#80H               JZ  TEMPC1                     ;温度零上转
 

基于液晶显示的单片机温度控制设计
  CLR  C               MOV  A,TEMPL                 ;二进制数求补(双字节)               CPL  A                            ;取反加1               ADD  A,#01H               MOV  TEMPL,A               MOV  A,TEMPH               CPL  A               ADDC  A,#00H               MOV  TEMPH,A               SJMP  TEMPC11TEMPC1:        MOV  TEMPHC,#0AH     
TEMPC11:       MOV  A,TEMPHC               SWAP  A               MOV  TEMPHC,A               MOV  A,TEMPL               ANL  A,#0FH                                ;乘0.0625               MOV  DPTR,#TEMPDOTTAB               MOVC  A,@A+DPTR               MOV  TEMPLC,A                           ;TEMPLC LOW=小数部分 BCD        MOV  A,TEMPL                             ;整数部分               ANL  A,#0F0H                              ;取出高四位               SWAP  A               MOV  TEMPL,A               MOV  A,TEMPH                             ;取出低四位               ANL  A,#0FH               SWAP  A               ORL  A,TEMPL                              ;重新组合               MOV  TEMP_ZH,A               LCALL  HEX2BCD1               MOV  TEMPL,A               ANL  A,#0F0H               SWAP  A               ORL  A,TEMPHC                            ;TEMPHC LOW = 十位数 BCD               MOV  TEMPHC,A               MOV  A,TEMPL               ANL  A,#0FH               SWAP  A                                      ;TEMPLC HI = 个位数 BCD               ORL  A,TEMPLC               MOV  TEMPLC,A               MOV  A,R4               JZ  TEMPC12               ANL  A,#0FH               SWAP  A               MOV  R4,A               MOV  A,TEMPHC                            ;TEMPHC HI = 百位数 BCD               ANL  A,#0FH               ORL  A,R4               MOV  TEMPHC,ATEMPC12:       RET;---------------------------------------------------------------HEX2BCD1:              MOV  B,#064H                               ;十六进制-> BCD              DIV  AB                                       ;B= A % 100              MOV  R4,A                                   ;R7 = 百位数              MOV  A,#0AH              XCH  A,B              DIV  AB               ;B = A % B              SWAP  A              ORL  A,B              RET;-------------------------------------------------------------;  小数部分码表;-------------------------------------------------------------TEMPDOTTAB:         DB   00H,00H,01H,01H,02H,03H,03H,04H         DB   05H,05H,06H,06H,07H,08H,08H,09H;=====================================================LOOK_ALARM:         MOV  DPTR,#M_ALAX2              ;指针指到显示信息区          MOV  A,#2                               ;显示在第二行          CALL  LCD_PRINT      MOV  A,#0C6H          CALL  TEMP_BJ1          MOV  A,TEMP_TH                      ;加载TH数据          MOV  LCD_X,#3                        ;设置位置          CALL  SHOW_DIG2H                  ;显示数据          MOV  A,#0CEH          CALL  TEMP_BJ1          MOV  A,TEMP_TL                      ;加载TL数据          MOV  LCD_X,#12                       ;设置位置          CALL  SHOW_DIG2L                   ;显示数据          RET;--------------------------------------------M_ALAX1:     DB   " LOOK ALERT CODE",0M_ALAX2:     DB   "TH:      TL:    ",0;--------------------------------------------TEMP_BJ1:          CALL WCOM          MOV  DPTR,#BJ2                        ;指针指到显示信息区          MOV  R1,#0          MOV  R0,#2BBJJ2:    MOV  A,R1          MOVC A,@A+DPTR          CALL  WDATA          INC R1          DJNZ  R0,BBJJ2          RETBJ2:      DB  00H,"C";---------------------------------------------------SHOW_DIG2H:                                    ;在 LCD 的第二行显示数字          MOV  B,#100          DIV  AB          ADD  A,#30H          PUSH  B          MOV  B,LCD_X          CALL  LCDP2          POP  B          MOV  A,#0AH          XCH  A,B          DIV  AB          ADD  A,#30H          INC           POP  B          INC  LCD_X          MOV  A,B          MOV  B,LCD_X          ADD  A,#30H          CALL  LCDP2          RETSHOW_DIG2L:                                      ;在 LCD 的第二行显示数字          MOV  B,#100          DIV  AB          MOV  A,#0AH          XCH  A,B          DIV  AB          ADD  A,#30H          PUSH  B          MOV  B,LCD_X          CALL  LCDP2          POP  B          INC  LCD_X          MOV  A,B          MOV  B,LCD_X          ADD  A,#30H          CALL  LCDP2          RET;-------------------------------------------------------------;显示区 BCD 码温度值刷新子程序;-------------------------------------------------------------DISPBCD:A,TEMPLC              ANL  A,#0FH              MOV  70H,A                                          ;小数位              MOV  A,TEMPLC              SWAP  A              ANL  A,#0FH              MOV  71H,A                                           ;个位              MOV  A,TEMPHC                            MOV  A,TEMPHC              SWAP  A              ANL  A,#0FH              MOV  73H,A                                           ;百位              MOV  A,TEMPHC              ANL  A,#0F0H              CJNE  A,#010H,DISPBCD0              SJMP  DISPBCD2DISPBCD0:                                           ;十位数是0              MOV  A,TEMPHC              SWAP  A              ANL  A,#0FH              MOV  73H,#0AH                                       ;符号位不显示              MOV  72H,A                                            ;十位数显示符CONV:          MOV  A,73H                                         ;加载百位数据          MOV  LCD_X,#6                                    ;设置位置          CJNE A,#1,CONV1          JMP  CONV2CONV1:    MOV  A,#" "      X                       MOV  A,72H                             ;十位          CALL  SHOW_DIG2         INC  LCD_X          MOV  A,71H                             ;个位          CALL  SHOW_DIG2          INC  LCD_X          MOV  A,#'.'          MOV  B,LCD_X          CALL  LCDP2          MOV  A,70H                              ;加载小数点位          INC  LCD_X                              ;设置位置          CALL  SHOW_DIG2                     ;显示数据          RET;-------------------------------------------------------SHOW_DIG2:                                      ;在 LCD 的第二行显示数字          ADD  A,#30H          MOV  B,LCD_X                            ;设置显示地址         ADD  A,#0C0H                           ;设置LCD的第二行地址         CALL  WCOM                            ;写入命令         POP  ACC                                 ;由堆栈取出A         CALL  WDATA                           ;写入数据
 

基于液晶显示的单片机温度控制设计
     RET;---------------------------------------------------------SET_LCD:                                           ;对 LCD 做初始化设置及测试          CLR  LCD_EN          CALL  INIT_LCD                       ;初始化 LCD          CALL  STORE_DATA                   ;将自定义字符存入LCD的CGRAM          RETINIT_LCD:                                         ;8位I/O控制 LCD 接口初始化          MOV  A,#38H                            ;双列显示,字形5*7点阵          CALL  WCOM         CALL  DELAY1
          MOV  A,#38H          CALL  WCOM          CALL  DELAY1
        MOV  A,#38H          CALL  WCOM       CALL  DELAY1
          MOV  A,#0CH                                ;开显示,显示光标,光标不闪烁          CALL  WCOM         CALL  DELAY1          MOV  A,#01H                                 ;清除 LCD 显示屏          CALL  WCOM         CALL  DELAY1
          RET;==================================================CLR_LINE1:                                            ;清除LCD的第一行字符          MOV  A,#80H                                 ;设置 LCD 的第一行地址          CALL  WCOM                  MOV  R0,#24                                 ;设置计数值    C1:   MOV  A,#' '                                 ;载入空格符至LCD          CALL  WDATA                               ;输出字符至LCD          DJNZ  R0,C1                                 ;计数结束          RET;==================================================LCD_PRINT:                                    ;在LCD的第一行或第二行显示字符          CJNE  A,#1,LINE2                        ;判断是否为第一行  LINE1:  MOV  A,#80H                           ;设置 LCD 的第一行地址          CALL  WCOM                              ;写入命令          CALL  CLR_LINE                         ;清除该行字符数据          MOV  A,#80H                              ;设置 LCD 的第一行地址          CALL  WCOM                              ;写入命令          JMP  FILL LINE2:  MOV  A,#0C0H                          ;设置 LCD 的第二行地址          CALL  WCOM                              ;写入命令          CALL  CLR_LINE                         ;清除该行字符数据          MOV  A,#0C0H                            ;设置 LCD 的第二行地址          CALL  WCOM  FILL:   CLR  A                                    ;填入字符          MOVC  A,@A+DPTR                      ;由消息区取出字符          CJNE  A,#0,LC1                           ;判断是否为结束码          RET  LC1:    CALL  WDATA                           ;写入数据          INC  DPTR                                 ;指针加1          JMP  FILL                                  ;继续填入字符          RET;=========================================CLR_LINE:                                          ;清除该行 LCD 的字符          MOV  R0,#24   CL1:   MOV  A,#' '          CALL  WDATA          DJNZ  R0,CL1          RET   DE:    MOV  R7,#250          DJNZ  R7,contentnbsp;         RET;============================================WCOM:                                               ;以8位控制方式将命令写至LCD          MOV  P0,A                                ;写入命令          CLR LCD_RS                             ;RS=L,RW=L,D0-D7=指令码,E=高脉冲          CLR LCD_RW          SETB LCD_EN          ACALL DELAY1                  CLR LCD_EN          RET;=============================================WDATA:                                             ;以8位控制方式将数据写至LCD          MOV  P0,A                                ;写入数据          SETB  LCD_RS                  CLR  LCD_RW          SETB  LCD_EN                  CALL  DE          CLR  LCD_EN          CALL  DE          RET;=============================================;PRINT A CHAR ON LINE 1;A=ASC DATA, B=LINE X POS;==============================================LCDP1:                                              ;在LCD的第一行显示字符         80H                              ;设置LCD的第一行地址         CALL  WCOM                              ;写入命令         POP  ACC                                   ;由堆栈取出A         CALL  WDATA                             ;写入数据       100 BL2:    CALL  DEX1         CPL  BEEP         DJNZ  R6,BL2         MOV  R5,#10         CALL  DELAY         RET DEX1:   MOV  R7,#180 DE2:    NOP      50 DL1:    MOV  R7,#100         DJNZ  R7,contentnbsp;        DJNZ  R6,DL1         DJNZ  R5,DELAY         RETDELAY1:                                             ;延时5MS   R7,contentnbsp;        DJNZ  R6,DL2         RET;================================================         END
 

基于液晶显示的单片机温度控制设计
结论
MCS-51单片机,体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量,来开发所希望的单片机应用系统。本文的温度控制系统,只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智,使单片机的应用更加广泛化。另外本系统的设计方法有很多种,我的这个方法是比较简单的
致谢
 
 毕业论文正代表着大学的终结,完成它既有一种收获感,又有一种失落感,可无论如何它代表着我大学的努力,代表了我大学的历程。当它终于完工的时候,我不禁想起了很多人,尤其是辛勤培养我的老师们,谢谢你们!
此次毕业论文能够得以顺利完成,并非我一人之功劳,是指导过我的老师,帮助过我的同学和一直关心支持我的朋友帮助的结果。我要在这里对他们表示深深的谢意!     感谢我的指导老师——王立文老师,没有您的悉心指导就没有这篇论文的顺利完成。 生活虽然相处不久,却从您身上学到了太多,必将终身受益。感谢所有教授过我课程的老师们,是你们诲人不倦才有了现在的我。没有你们,就没有我的今天,你们的支持与鼓励,永远是支撑我前进的最大动力。
感谢那个神奇的宿舍:因为你们的存在,在我的天空只有彩虹,使乌云望而远之。
感谢张兄,你的才智与个性令我佩服,让我明白把困难放在前面,不抛弃+不放弃=成功的人生,使我明白一切皆有可能。
感谢在网络空间里和我一起兴奋,愤怒,焦急过的战友,天涯海角的我们因为共同的爱好结为朋友。
感谢所有校园里认识的和不认识的人,来过的和走了的人,愿你们珍惜握在手里的现在。
参考文献
[1] 杨加国.单片机原理与应用及C51程序设计.北京:清华大学出版社.
[2] 陈在平.plc单片机应用设计与实例子. 北京:清华大学出版社
[3] 韩全..单片机控制技术及应用 .电子工业出版社
[4] 王兆明.电气控制与plc技术  北京:.清华大学出版社.
[5] 孙建平.数字电子技术. 西安:西安电子科技大学
[6] 泰曾煌.电工技术〈上.下〉  高等教育出版社
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师