单片机温度计课程设计

2024-11-10

单片机温度计课程设计(共8篇)

单片机温度计课程设计 篇1

基于单片机的数字温度计设计

引言

随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单片机作为主控制器件,DSl8B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.1℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。

系统硬件设计方案

根据系统功能要求,构造图1所示的系统原理结构框图。

图1

系统原理结构框图

2.1

单片机的选择

AT89C51作为温度测试系统设计的核心器件。该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS—48单片机的体系结构和指令系统。单片机小系统的电路图如图2所示。

图2

单片机小系统电路

AT89C51单片机的主要特性:

(1)与MCS-51

兼容,4K字节可编程闪烁存储器;

(2)灵活的在线系统编程,掉电标识和快速编程特性;

(3)寿命为1000次写/擦周期,数据保留时间可10年以上;

(4)全静态工作模式:0Hz-33Hz;

(5)三级程序存储器锁定;

(6)128*8位内部RAM,32可编程I/O线;

(7)两个16位定时器/计数器,6个中断源;

(8)全双工串行UART通道,低功耗的闲置和掉电模式;

(9)看门狗(WDT)及双数据指针;

(9)片内振荡器和时钟电路;

2.2

温度传感器介绍

DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

温度传感器DS18B20引脚如图3所示。

8引脚封装

TO-92封装

图3

温度传感器

引脚功能说明:

NC

:空引脚,悬空不使用;

VDD

:可选电源脚,电源电压范围3~5.5V。当工作于寄生电源时,此引脚必须接地。

DQ

:数据输入/输出脚。漏极开路,常态下高电平。

GND

:为电源地

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

该字节各位的意义如下:

TM

R1

R0

低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位)

表1

DS18B20温度转换时间表

R1

R0

分辨率/位

温度最大转向时间

0

0

93.75

0

187.5

0

375

750

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

2.3

温度传感器与单片机的连接

温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时。如执行MOVX

DPTR指令,则表示P2端口送出高8位的地址数据。在访问8位地址的外部数据存储器时,可执行MOVX

RI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。图4为DSl8820内部结构。图5为DSl8820与单片机的接口电路。

图4

DS18B20内部结构图

图5

DS18B20和单片机的接口连接

2.4

复位信号及外部复位电路

单片机的P1.6端口是MAX813看门狗电路中喂狗信号的输入端,即单片机每执行一次程序就设置一次喂狗信号,清零看门狗器件。若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。若使用频率为12

MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。

2.5

单片机与报警电路

系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

2.6

电源电路

由于该系统需要稳定的5

V电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。该电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端3个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。图6为电源电路连接图。

图6

电源电路连接图

2.7

显示电路

采用技术成熟的74HCl64实现串并转换。LED显示分为静态显示和动态显示。这里采用静态显示,系统通过单片机的串行口来实现静态显示。串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。图7为显示电路的连接图。

图7

显示电路的连接图

2.8

看门狗电路

系统中把P1.6作为看门狗的“喂狗”信号;将MAX813的RESET与单片机的复位信号RST连接。由于单片机每执行一次程序,就会给看门狗器件一个复位信号,这样也可以用手工方式实现复位。当按键按下时,SW—SPST就会在MAX813引脚产生一个超过200

ms的低电平,其实看门狗器件在1.6

s时间内没有复位,使7引脚输出一个复位信号的作用是相同的,其连接图如图8所示。

图8

看门狗器件的MAX813的连接图

软件设计

DSl8820的主要数据元件有:64位激光Lasered

ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5

V电源,给DSl8820供电。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图9为读取数据流程图。

开始

DS18B20的初始化

启动温度转换

读取温度寄存器

跳过读序列号的操作

跳过读序列号的操作

DS18B20的初始化

RET

LOW-低八位

HIGH-高八位

图9

读取数据的流程图

读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。图10为温度数据处理程序的流程图。

开始

提取整数部分存入HT

提取小数部分存入LT

LT右移三位,将精度降低到0.5摄氏度

HT++

将小数部分整数化

提取符号部分存入sign

LT是否大于5

Sign=?0XF0

RET

负数表示flag=1

HT=~HT+1

Y

N

N

Y

图10

温度数据处理流程图

数据测试

将温度传感器与冰水混合物接触,经过充分搅拌达到热平衡后调节系统,使显示读数为0.00(标定0℃);利用气压计读出当时当地的大气压强,并根据大气压强和当地重力加速度计算出当时的实际压强;根据沸点与压强的关系查出沸点温度。把温度传感器放入沸水中,待显示读数稳定后重新调节,使显示器显示读数等于当地当时沸点温度后工作结束。该温度计的量程为-50℃~150℃,读数精度为0.1℃,实际使用一般在0℃~100℃。采用0℃~50℃和50℃~100℃的精密水银温度计作检验标准,对设计的温度计进行测试,其结果表明能达到该精度要求。

总结与体会

作为一名电子信息工程的大四学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。

在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。

附录1

仿真图

附录2

程序源代码

DATA_BUS

BIT

P3.3

FLAG

BIT

00H

;标志位

TEMP_L

EQU

30H

;温度值低字节

TEMP_H

EQU

31H

;温度值高字节

TEMP_DP

EQU

32H

;温度小数

TEMP_INT

EQU

33H

;温度值整数

TEMP_BAI

EQU

34H

;温度百位数

TEMP_SHI

EQU

35H

;温度十位数

TEMP_GE

EQU

36H

;温度个位数

DIS_BAI

EQU

37H

;显示百位数

DIS_SHI

EQU

38H

;显示十位数

DIS_GE

EQU

39H

;显示个位数

DIS_DP

EQU

3AH

;显示小数位

DIS_ADD

EQU

3BH

;显示地址

ORG

0000H

AJMP

START

ORG

0050H

;初始化

START:

MOV

SP,#40H

MAIN:

LCALL

READ_TEMP

;调读温度程序

LCALL

PROCESS

;调数据处理程序

AJMP

MAIN

;读温度程序

READ_TEMP:

LCALL

RESET_PULSE

;调用复位脉冲程序

MOV

A,#0CCH

;跳过ROM命令

LCALL

WRITE

MOV

A,#44H

;读温度

LCALL

WRITE

LCALL

DISPLAY

;显示温度

LCALL

RESET_PULSE

;调用复位脉冲程序

MOV

A,#0CCH

;跳过ROM命令

LCALL

WRITE

MOV

A,#0BEH

;读缓存命令

LCALL

WRITE

LCALL

READ

RET

;复位脉冲程序

RESET_PULSE:

RESET:

SETB

DATA_BUS

NOP

NOP

CLR

DATA_BUS

MOV

R7,#255

DJNZ

R7,$

SETB

DATA_BUS

MOV

R7,#30

DJNZ

R7,$

JNB

DATA_BUS,SETB_FLAG

CLR

FLAG

AJMP

NEXT

SETB_FLAG:

SETB

FLAG

NEXT:

MOV

R7,#120

DJNZ

R7,$

SETB

DATA_BUS

JNB

FLAG,RESET

RET

;写命令

WRITE:

SETB

DATA_BUS

MOV

R6,#8

CLR

C

WRITING:

CLR

DATA_BUS

MOV

R7,#5

DJNZ

R7,$

RRC

A

MOV

DATA_BUS,C

MOV

R7,#30H

DJNZ

R7,$

SETB

DATA_BUS

NOP

DJNZ

R6,WRITING

RET

;循环显示段位

DISPLAY:

MOV

R4,#200

DIS_LOOP:

MOV

A,DIS_DP

MOV

P2,#0FFH

MOV

P0,A

CLR

P2.7

LCALL

DELAY2MS

MOV

A,DIS_GE

MOV

P2,#0FFH

MOV

P0,A

SETB

P0.7

CLR

P2.6

LCALL

DELAY2MS

MOV

A,DIS_SHI

MOV

P2,#0FFH

MOV

P0,A

CLR

P2.5

LCALL

DELAY2MS

MOV

A,DIS_BAI

MOV

P2,#0FFH

MOV

P0,A

MOV

A,TEMP_BAI

CJNE

A,#0,SKIP

AJMP

NEXTT

SKIP:

CLR

P2.4

LCALL

DELAY2MS

NEXTT:

NOP

DJNZ

R4,DIS_LOOP

RET

;读命令

READ:

SETB

DATA_BUS

MOV

R0,#TEMP_L

MOV

R6,#8

MOV

R5,#2

CLR

C

READING:

CLR

DATA_BUS

NOP

NOP

SETB

DATA_BUS

NOP

NOP

NOP

NOP

MOV

C,DATA_BUS

RRC

A

MOV

R7,#30H

DJNZ

R7,$

SETB

DATA_BUS

DJNZ

R6,READING

MOV

@R0,A

INC

R0

MOV

R6,#8

SETB

DATA_BUS

DJNZ

R5,READING

RET

;数据处理

PROCESS:

MOV

R7,TEMP_L

MOV

A,#0FH

ANL

A,R7

MOV

TEMP_DP,A

MOV

R7,TEMP_L

MOV

A,#0F0H

ANL

A,R7

SWAP

A

MOV

TEMP_L,A

MOV

R7,TEMP_H

MOV

A,#0FH

ANL

A,R7

SWAP

A

ORL

A,TEMP_L

MOV

B,#64H

DIV

AB

MOV

TEMP_BAI,A

MOV

A,#0AH

XCH

A,B

DIV

AB

MOV

TEMP_SHI,A

MOV

TEMP_GE,B

MOV

A,TEMP_DP

MOV

DPTR,#TABLE_DP

MOVC

A,@A+DPTR

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_DP,A

MOV

A,TEMP_GE

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_GE,A

MOV

A,TEMP_SHI

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_SHI,A

MOV

A,TEMP_BAI

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_BAI,A

RET

DELAY2MS:

MOV

R6,#3

LOOP3:

MOV

R5,#250

DJNZ

R5,$

DJNZ

R6,LOOP3

RET

TABLE_DP:

DB

00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

DB

06H,07H,08H,08H,09H,09H

TABLE_INTER:

DB

03FH,006H,05BH,04FH,066H

DB

06DH,07DH,07H,07FH,06FH

END

单片机温度计课程设计 篇2

本设计控制器为单片机STC89C52, 温度传感器为DS18B20和4位共阴极数码管来实现温度显示。

1.1 控制器STC89C52

主电源引脚:VCC电源输入, 接+5V电源。GND接地线外接晶振引脚:XTAL1片内振荡电路的输入端;XTAL2片内振荡电路的输出端。控制引脚:RST/VPP复位引脚, 引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG (Pin30) 地址锁存允许信号。PSEN外部存储器读选通信号。EA/VPP (Pin31) 程序存储器的内外部选通, 接低电平从外部程序存储器读指令, 如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚:PO口8位双向I/O口线, 名称为P0.0~P0.7。P1口8位准双向I/O口线, 名称为P1.0~P1.7。P2口8位准双向I/O口线, 名称为P2.0~P2.7。P3口8位准双向I/O口线, 名称为P3.0~P3.7。

1.2 显示电路

显示电路采用4位共阴极LED数码管, 其中P0口输出段码, P2.0~P2.3作为片选端。如果在焊接电路板的时候发现数码管亮度不够, 可以在P2.0~P2.3端口接四个10K的电阻和NPN的三极管, 使数码管高亮显示。

1.3 温度传感器

采用DS18B20温度传感器它能直接读出被测温度, 可根据实际要求实现9~12位的数字值读数方式。

(1) 电压范围3.0~5.5V, 在寄生电源方式下可由数据线供电;

(2) DS18B20支持多点组网功能, 多个DS18B20可以并联在唯一的三线上;

(3) DS18B20在使用中不需要任何外围元件;

(4) 测温范围-55℃~+125℃, 在-10~+85℃时精度为±0.5℃;

(5) 在9位分辨率时最多在93.75ms内把温度转换为数字, 12位分辨率时最多在750ms内把温度值转换为数字;

(6) 测量结果直接输出数字温度信号;

(7) 电源极性接反时, 芯片不会因发热而烧毁, 但不能正常工作。

2、系统仿真与调试

系统设计完成之后, 要进行硬件调试和软件设计。软件设计可以利用仿真系统进行。

(1) 硬件调试:利用万用表检查电路中各器件以及引脚是否连接正确, 是否有短路故障。先要将单片机STC89C52芯片取下, 对电路板进行通电检查, 通过观察看是否有异常, 然后用万用表测试各电源电压, 若这些都没问题, 则接上仿真机进行联机调试观察各接口线路是否正常。

(2) 软件设计:主程序的任务是控制单总线, 实现系统的初始化、DS18B20的初始化、数码管的初始化, 并调用温度采集、数据处理、数码管显示等子程序。其中DS18B20初始化、数码管初始化的流程图不再画出。主程序流程:开始→系统初始化→DS18B20初始化→数码管初始化→读18B20的温度→数据处理函数→显示函数→读18B20的温度 (循环) (如图1) 。

读取DS18B20温度值的子程序流程:设置采集分辨率→启动温度转换→延时函数→写入读温度命令→延时函数→读入温度值。

3、结语

本文对STC89C52、DS18B20、数码管的功能及特点进行了详细阐述, 设计出了温度采集, 最小系统, 显示电路等电路原理图, 并进行说明, 最后给出了主要程序流程图。实践证明本系统硬件电路设计简单, 程序简洁, 通用性强, 具有人机交互界面。

摘要:本文将介绍一种基于单片机控制的数字温度计, 该温度计属于多功能温度计, 可以设置上下报警温度, 当温度不在设置范围内时, 可以报警, 且具有读数方便, 测温范围广, 测温精确, 数字显示, 适用范围宽等特点。

基于单片机的数字温度计设计 篇3

关键词:温度测量DS18820AT89C51单片机LM016L液晶模块

中图分类号:TP2文献标识码:A文章编号:1007-3973(2010)012-084-02

近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。温度控制系统在国内各行各业的应用虽然已经十分广泛,传统的温度控制方式,主要缺点是温度波动范围大,不能满足高精度,高速度的控制要求。本文将介绍一种基于单片机控制的数字温度计,具有体积小、可靠性高、抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。

1系统硬件构成

本次设计主要由单片机、测温模块、显示模块、报警模块、按键模块、复位电路和晶振电路构成。利用单片机控制温度传感器进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片以获取时间数据,在数据处理同时显示时间,并且可以对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过串口与计算机进行串口通信,方便的采集和整理时间温度数据。

2关键硬件设计

2.1单片机的选择

单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

80C51有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定nO/计数器。80C51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(mm)组成。

2.2温度传感器

DALLAS最新单线数字温度传感器DS18820是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18820可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18820通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18820可以采用两种方式供电,一种是采用电源供电方式,此时DS18820的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图2所示单片机端口接单线总线,为保证在有效的DS18820时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18820处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。

2.3LCD液晶显示

显示器是人与机器沟通的重要界面,本文采用LM016L做为显示屏。LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,HD44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数mm(DDmm),字符发生器ROMA(cGOROM)字符发生器mm(CGmm),地址计数器mm(Ac)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDmm和CGmm,或者暂存从DDmm和CGmm读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。

如图3所示,用89C51的P2口作为数据线,用P3.2、P3.1、P3.0分别作为LCD的E、R/W、RS。其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5~7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示,首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。

2.4串口通讯模块

80C51内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准,MAX232是一种双组驱动器,接收器,每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。·每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。即EIA接口,就是把5V转换为-8V到*15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为OV。MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。

3软件程序设计

从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程见图4。

4结论

单片机课程设计设计项目 篇4

学生:09级通信1、2、3班指导教师:周秋茜

一、16×16点阵LED电子显示屏的设计

1.功能要求

设计一个室内用16×16点阵LED图文显示块,要求在目测条件下LED显示屏个点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移出、移入等显示方式

2.设计要求

根据功能要求,应采用动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式。

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握动态显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握串行数据传输方式的应用。

(5)实现利用AT89S51单片机控制的LED图文屏正常工作;

二、数字电压表系统设计

1.功能要求

简易数字电压表可以测量0~5V范围内的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。其测量最小分辨率为0.02V

2.设计要求

按照系统功能实现要求,控制系统采用51单片机,A/D转换采用ADC0808。

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握数据显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握ADC的使用。

(5)实现利用AT89S51单片机测量电压并显示出来;

三、交通灯控制系统的设计

1.功能要求

设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态四面均为红灯,持续时间为2S;然后转为状态1(10S),为东西红、南北绿;状态2(3S),为东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态3(15S),为东西绿、南北红;状态4(3S),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最

后回到状态1,依次循环。如遇特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后将开关拨回原位。系统恢复原状态运行

2.设计要求

可选用12只单色LED发光管作为交通灯,也可选用4只双色LED发光管。控制系统采用51单片机,可选用片内带ROM型单片机,以简化电路,降低成本

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握控制系统及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(5)实现AT89S51单片机对交通灯控制系统的有序管理

四、数字时钟设计

1.功能要求

时钟计时器要求用单片机用6位LED数码管显示时、分、秒,以24小时计时方式运行,使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)等功能

2.设计要求

按照系统功能实现要求,控制系统采用51单片机,显示系统采用LED显示器

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握数据显示原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握定时器的使用的使用。

(5)实现AT89S51单片机产生频率可调的多种波形的输出;

五、简易低频信号源的设计

1.功能要求

简易低频信号发生器要求能输出0.1~50HZ的正弦波、三角波和方波信号,其中正弦波和三角波信号可以用按键选择输出,输出信号的频率可以从0.1~50HZ范围内调整。

2.设计要求

按照系统功能需要,要求选用AT89C51单片机作为控制器,用DAC0832作为D/A转换器。功能键使用单片机的三个端口

(1)熟悉AT89S51单片机系统的使用方法。

(2)掌握DAC0832转换原理及实现方法。

(3)初步掌握AT89S51单片机编程方法。

(4)掌握定时器的使用。

(5)实现利用AT89S51单片机精确计时并显示出来;

单片机课程设计 篇5

基于AT89S51单片机的密码锁设计,具体功能如下:(1)总共可以设置8位密码,每位密码值范围为1~8。(2)用户可自行设定和修改密码。(3)按每个密码时都有声音提示。

(4)若键入的8位开锁密码不完全正确,则报警5s已提醒他人注意。

(5)开锁密码连续错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。

(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1s的提示音。(7)电磁锁的电磁线圈每次充电5s,然后恢复初态。

(8)密码键盘上只允许有8个密码按键。锁内有备用电池,只有内部上电复位才能设置或修改密码,因此,仅仅在门外按键是不能修改或设置密码的。(9)密码设置完毕后要有2s的提示音。硬件设计

2.1 设计思路

按照系统设计的要求和功能,将系统分为主控模块;按键扫描模块;蜂鸣器;电源电路;复位电路晶振电路;驱动电路几个模块,系统组成框图如图1-1所示。主控模块采用AT89S51单片机。

电源电路复位电路主控模块晶振电路AT89S51按键扫描模块驱动器蜂鸣器 图1-1 基于AT89S51单片机的密码锁组成框图 镇江高等专科学校课程设计2.2 硬件图及说明(硬件图见图1-2,)

元件型号单片机晶振电容型号数量/个用途元件型号蜂鸣器电阻型号数量/个用途AT89S52 1 控制核心12MHz 1 晶振电路30pF 2 晶振电路1 报警电路1kΩ10kΩ4.7kΩ1 上拉电路1 复位电路1 放大电路电阻电阻继电器电源电解电容20uF/10V 1 复位电路按键三极管二极管9 按键电路8550 2 放大电路IN4004 1 5V 1 控制对象+5V/0.5A 1 提供+5V电源 图1-3 基于AT89S51单片机的密码锁元件清单

注:1.AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.蜂鸣器的工作原理: 软件设计

2.1 设计思路 镇江高等专科学校课程设计应位置的,分析程序时可以仔细对照参考。该密码锁中RAM存储单元的分配方案如下所示

如图1-3所示给出了该单片机密码锁电路的软件软件流程图。图中AA1~AA8以及START,SET,SAVE是程序中的标号,是为了理解程序而专门标在流程图的对 31H~38H;依次存放8位设定的密码,首位密码存放在31H单元中。 R0:只指向密码地址  R2;已经输入密码的位数

 R3:存放允许的错码次数3与实际错码次数的差值。 R4~ R7:延时用。 00H:错码标志位。

对于ROM存储单元的分配,由于程序比较短,而且占用的存储空间的较少,因此,在无特殊要求时,可以从0030H单元(其他地址也可以)开始存放主程序。3.2 程序流程图

开始初始化1s提示音等待设置密码NN有键按下?Y短音提示保存设置密码N是否够8位?Y长音提示错误次数清零错误标识清零N有键按下?Y短音提示密码对否?Y是否够8位?Y标志=1?N开锁并长音提示延时锁恢复错误清零错3次?Y报警1 min错误次数清零报警5s错误标志清零Y错误次数加1NN错误标志置1 图1-4 基于AT89S51单片机的密码锁程序流程图

3.3 程序清单(注释)

LOC OBJ LINE SOURCE

0000 1 ORG 0000H 0000 0130 2 AJMP START 0030 3 ORG 0030H 镇江高等专科学校课程设计0030 11A1 4 START:ACALL BP 0032 7831 5 MOV R0,#31H 0034 7A08 6 MOV R2,#8 0036 7590FF 7 SET1:MOV P1,#0FFH 0039 E590 8 MOV A,P1 003B B4FF02 9 CJNE A,#0FFH,L8 003E 0136 10 AJMP SET1

0040 11B0 11 L8: ACALL DELAY 0042 B4FF02 12 CJNE A,#0FFH,SAVE 0045 0136 13 AJMP SET1 0047 11A1 14 SAVE: ACALL BP 0049 F6 15 MOV @R0,A 004A 08 16 INC R0 004B DAE9 17 DJNZ R2,SET1 004D 7D10 18 MOV R5,#16 004F 11A1 19 D2S: ACALL BP 0051 DDFC 20 DJNZ R5,D2S 0053 7831 21 MOV R0,#31H 0055 7B03 22 MOV R3,#3 0057 7A08 23 AA1: MOV R2,#8 0059 7590FF 24 AA2: MOV P1,#0FFH 005C E590 25 MOV A,P1 005E B4FF02 26 CJNE A,#0FFH, L9 0061 0159 27 AJMP AA2 0063 11B0 28 L9:ACALL DELAY 0065 B4FF02 29 CJNE A,#0FFH,AA3 0068 0159 30 AJMP AA2 006A 11A1 31 AA3: ACALL BP 006C C3 32 CLR C 006D 96 33 SUBB A, @R0 006E 08 34 INC R0 006F B40002 35 CJNE A,#00H,AA4 0072 0176 36 AJMP AA5 0074 D200 37 AA4: SETB 00H 镇江高等专科学校课程设计0076 DAE1 38 AA5: DJNZ R2,AA2 0078 20000E 39 JB 00H,AA6 007B C2B5 40 CLR P3.5 007D 7D08 41 L3:MOV R5,#8 007F 11A1 42 ACALL BP 0081 DCFA 43 DJNZ R4,L3 0083 7B03 44 MOV R3,#3

0085 D2B5 45 SETB P3.5 0087 0157 46 AJMP AA1 0089 DB0C 47 AA6: DJNZ R3,AA7 008B 7D18 48 MOV R5,#24 008D 7CC8 49 L5: MOV R4,#200 008F 11A1 50 L4: ACALL BP 0091 DCFC 51 DJNZ R4,L4 0093 DDF8 52 DJNZ R5,L5 0095 7B03 53 MOV R3,#3 0097 7D28 54 AA7: MOV R5,#40 0099 11A1 55 ACALL BP 009B DDFA 56 DJNZ R5,AA7 009D C200 57 AA8: CLR 00H 009F 0157 58 AJMP AA1 00A1 C2B7 59 BP: CLR P3.7 00A3 7FFA 60 MOV R7,#250 00A5 7E7C 61 L2: MOV R6,#124 00A7 DEFE 62 L1: DJNZ R6,L1 00A9 B2B7 63 CPL P3.7 00AB DFF8 64 DJNZ R7,L2 00AD D2B7 65 SETB P3.7 00AF 22 66 RET 00B0 7F14 67 DELAY:MOV R7,#20 00B2 7E7D 68 L7: MOV R6,#125 00B4 DEFE 69 L6: DJNZ R6,L6 00B6 DFFA 70 DJNZ R7,L7 00B8 22 71 RET 镇江高等专科学校课程设计 72 END 3.4 程序调试

按键AN1~AN7分别代表数码1~7,按键AN0代表8。在没有键按下时,P1.0~P1.7全是高电平1;若某个键被按下,相应的口就变为低电平0.加入设定的密码是612345678,当按键AN6被按下时,P1.6变为低电平,P1端口其余口线为高电平,此时从P1口输入的数值为10111111,存到31H单元的密码值就是10111111,也就是BFH。以此类推,存到32H至38H单元的密码值分别是FDH,FBH,F7H,EFH,DFH,7FH,FEH。开锁时必须先按AN6,使从P1口读入的第一个密码值与31H单元存储的设定值相同,再按顺序按AN1,AN2,AN3,AN4,AN5,AN7,AN0才能开锁。否则不能开锁,同时开始报警。小结

通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。

此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰

参考文献:(另起一页)

【1】杨居义。单片机课程设计指导。北京:北京大学出版社,2009。

单片机课程设计报告 篇6

课程设计报告

设计题目: 基于80C51单片机系统实验板的制作

与程序设计

业:应用电子专业

级: 11应电班

名: 丁文俊

指导教师: 余静老师

2013 年 5 月20 日

目录 前 言………………………………………………………………… 2 课程设计的目的及要求…………………………………………… 3 硬件电路设计……………………………………………………… 4 软件程序设计…………………………………………………… 5 小结………………………………………………………………

参考文献 附录A 电路总图 附录B 程序清单

基于80C51单片机系统实验板的制作与程序设计

1.前言

2、课程设计的目的及要求 2.1课程设计目的

2.2课程设计要求

3、系统主要硬件电路设计

3.1 STC89C51单片机简介

MCS-51是美国Intel公司生产的一系列单片机的总称,包括多个品种,如8031、8051、8751、8032、80C52、8752等。其中8051是最典型的产品,其他单片机都是在其基础上进行功能增减而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。Intel公司将MCS-51的核心技术授权给了多家公司,这些厂家生产的单片机在功能上或多或少有些改变,以满足不同的需求,其中美国的ATMEL公司生产的AT89C51是曾经在我国非常流行的51单片机。当前AT89C51/52已经停产,其替代产品为AT89S51/52。深圳宏晶公司出品的STC89C51可以直接代替传统的AT89S51和AT89C51芯片,也可以代替菲利普、华帮等其他公司的89C51,由于时代的发展,工艺的进步,STC89C51功能更强,寿命更长(4K字节Flash存储器、128字节片内RAM、支持ISP下载编程)

图2.1 STC89c51单片机

单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

图2-2中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选11.0592MHz。

为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图2-2中R9和Cl组成上电复位电路,其值R取为10K, C取为10μF.4

图2.2 最小系统结构图

3.2 电平转换电路 3.3

4、软件程序设计

5、小结

参考文献

[1] 张伟,《单片机原理及应用》,机械工业出版社,2005(这是格式)

附录

江西工业职业技术学院电子与信息工程系

课程设计指导教师评语

班级:

学生姓名:

学号:

指导教师评语(包括工作态度,遵守纪律;基本理论、知识、技能;独立工作能力和分析解决问题的能力;完成任务情况及水平):

学生成绩(五级分制):

指导教师签名:

单片机温度计课程设计 篇7

温度控制是科研和实际生产中经常用到的一类控制系统, 为保障生产的安全进行, 提高产品的质量和数量, 降低工人的劳动强度, 节省人力、节约能源等, 常常要实现温度的自动控制。然而, 要实现高精度的温度自动控制就必须采用计算机控制系统, 它可以实现温度信号的采集、显示及控制等, 并可用计算机软件实现升温、降温和闭环自动控制。

2 系统结构和原理

系统设计框图如图1所示。系统主要包括16位单片机MSP430F427、温度采集模块DS18B20、语音播报模块ISD1420、液晶显示模块RT1602、键盘控制和执行机构等几个部分。它能够完成多点测温, 可整点的或随时地用语音播报温度值和时间, 并可随时地显示当前温度及年、月、日、星期及时、分、秒等信息。

3 系统的组成

3.1 MS P 430 F427单片机

MSP430系列单片机是美国德州仪器 (TI) 的一种16位的混合信号处理器 (Mixed Signal Processor) , 称之为混合信号处理器。它具有极低的功耗、丰富的片内外设和方便灵活的开发手段。它采用了精简指令集 (RISC) 结构, 具有丰富的寻址方式 (7种源操作数寻址、4种目的操作数寻址) 、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度, 在8 MHz晶体驱动下指令周期为125 ns。这些特点保证了可编制出高效率的源程序。

在运算速度方面, MSP430系列单片机能在8 MHz晶体的驱动下, 实现125 ns的指令周期。16位的数据宽度、125 ns的指令周期以及多功能的硬件乘法器 (能实现乘加) 相配合, 能实现数字信号处理的某些算法。

MSP430系列单片机的中断源较多, 并且可以任意嵌套, 使用时灵活方便。当系统处于省电的备用状态时, 用中断请求将它唤醒只用6μs。

在使用过程中很方便, 外围器件很少。MPS430F427的16位AD输入为差动输入, 范围为±600 m V。AD内部有放大器, 放大的倍数可以为1、2、4、8、16、32倍。

3.2 DS 18B20测温模块

采用单总线数字温度传感器DS18B20测量温度, 直接输出数字信号。便于单片机处理及控制, 节省硬件电路。且该芯片的物理化学性很稳定, 此元件线形性能好, 在0~100℃时, 最大线形偏差小于1℃。DS18B20的最大特点之一是采用了单总线的数据传输, 它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号, 根据序列号可访问不同的器件。这样一条总线上可以挂接多个DS18B20传感器, 实现多点温度测量, 轻松的组建传感网络。

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器, 具有耐磨耐碰性、体积小、使用方便、封装形式多样, 与传统的热敏电阻等测温元件相比, 它能直接读出被测温度, 并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

3.3 音频模块

ISD1420为美国ISD公司出品的优质单片语音录放电路, 由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由1个麦克风、1个喇叭、2个按钮、1个电源、少数电阻电容组成。录音内容存入永久存储单元, 提供零功率信息存储, 这个独一无二的方法是借助于美国ISD公司的专利———直接模拟存储技术 (DAST TM) 实现的。利用它, 语音和音频信号被直接存储, 以其原本的模拟形式进入EEPROM存储器, 直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现, 仅语音质量优胜, 而且断电语音保护。

3.4 时钟模块

DS1302是美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路。主要特点是采用串行数据传输, 可为掉电保护电源提供可编程的充电功能, 并且可以关闭充电功能。采用普通32.768 k Hz晶振。电路的主要功能是向单片机提供时间的信息, 包括年、月、日、星期及具体的时、分、秒值等信息。可编程芯片DS1302内部有寄存器及RAM, 通过编程可由单片机完成对DS1302内部的时钟/日历提供的秒、分、时及年、月、日、星期等信息进行读出, 并可根据需要进行修改。

3.5 按键设计

该系统中用到8个按键的功能分别是:SW1设定时间;SW2设定温度上下限用;SW3确认;SW4实时播报时间、温度;SW5加l;SW6减l;SW7切换屏幕显示;SW8保留扩展。P0的8个I/O口接8个独立式按键即可满足需要。按下其中一个按键, 则可由单片机准确判断, 去执行相应的程序。

3.6 显示模块

采用RT1602两行16个字符的显示, 能同时显示日期、时间、星期、温度。采用液晶显示器件, 可使显示平稳、省电、美观, 对后续的功能兼容性高, 只需将软件作修改即可, 可操作性强, 也易于读数。

在实际电路中, P2与RT1602的D0—D7相接, R/W与单片机的WR相连接, RS与单片机的RD相接, E与单片机的T1相接, 控制RT1602的显示。

3.7 报警电路

报警电路, 由功放三极管9012及蜂鸣器BELL组成。当温度传感器检测到的温度高于温度的上限或低于温度的下限设定值时, 由单片机的P3.4引脚发出低电平信号, 9012三极管导通, 使蜂鸣器发出响声, 发出声音报警, 以提醒人员注意温度超出了范围。

4 系统主程序流程图

系统主程序流程图如图2所示。

5 结语

本设计充分利用了单片机的语音播报功能, 并采用了高智能化的集成温度采集芯片DS18B20, 使系统具有极高的集成度和稳定性, 并且在系统功能扩展上具有极大的潜力, 有良好的应用前景和科研价值。

参考文献

[1]靳达.单片机应用系统开发实例导航.北京:人民邮电出版社, 2003

[2]魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航空航天大学出版社, 2002

单片机温度计课程设计 篇8

关键词:DS18B20;8051单片机;温度

1 引言

传统的单片机温度控制器用热敏电阻测量温度,须包含模拟测量电路及A/D转换器,且占用单片机的口线多,必要时须增加I/O扩展接口芯片,电路器件多,降低了可靠性。而采用新型的单线数字温度传感器DS18B20测量温度则克服了上述缺点。DS18B20是美国DALLAS半导体公司近年推出的一种改进型智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并可根据实际要求通过简单的编程实现9-12位的数字值读数方式,无需外加测量电路及A/D转换器,简化了电路;而且从DS18B20读出或写入信息仅需一根口线,大大降低了单片机的硬件资源占用。基于DS18B20的单片机温度控制器具有电路简单、可靠性高的优点。

本温度控制器对温度进行实时测量并显示,用户可设定最高限报警温度值和最低限报警温度值,有一定的温度控制功能。

2 DS18B20的特性

2.1 DS18B20的主要性能特点

(1) 独特的单线接口方式:当DS18B20与微处理器连接时,仅需要一条数据线即可实现与微处理器的双向通信。

(2)使用中不需要任何外围元件。

(3)测温范围为-55-+125℃。固有测温分辨率为0.5℃。

(4)通过编程可实现9-12位的数字读数方式。

(5)用户可设定非易失性的报警上下限值。

(6)多个DS18B20可并联在惟一的数据线上,实现多点测温。

2.2 DS18B20的引脚功能

GND为接地引脚,VCC为电源引脚。

DQ为双向数据线,用它与微处理器连接实现DS18B20与微处理器的双向通信。

3 温控器的具体功能及硬件连接

本温度控制器采用DS18B20与8051单片机连接测量温度,硬件连接如图2所示。对温度进行实时测量,并用二位数码管显示温度值的整数部分,一位数码管显示小数点后一位。

具体温度控制:当外界温度高于设定最高报警温度时,启动风扇降温,当温度降至最高报警温度以下,风扇即停止运转。当外界温度低于最低报警温度时,将发出报警声。

用户可设定最高限报警温度值和最低限报警温度值,这可通过按键实现。告警温度设定范围为1~99°C。

4 温控器的软件设计

4.1 DS18B20的软件设计

由于DS18B20是本温控器的温度测量核心器件,因此首先介绍其软件设计。

(1)DS18B20的操作协议。

对DS18B20的各种操作的软件设计必须依据其操作协议。

DS18B20的操作协议:每一次对DS18B20进行操作,必须先经过3个步骤:成功初始化DS18B20(复位DS18B20)-〉发送ROM操作指令-〉发送存储器操作指令,然后才能处理数据。

(2)DS18B20的程序设计。

① DS18B20操作的通用子程序模块。

DS18B20单线通信功能是分时完成的,且有严格的时隙概念,因而时序很重要,对其操作的程序设计必须严格按照时序的先后次序与延时时间,才能保障对其操作的可靠实现。由DS18B20的操作协议,根据DS18B20的初始化时序、写时序、读时序要求,设计出对DS18B20操作的通用初始化子程序模块、写字节子程序模块、读字节子程序模块。

以下选取初始化子程序说明其设计:

初始化子程序INIT18B20的功能:对DS18B20进行一次复位,复位成功令FLAG标志置1,不成功令FLAG为0。子程序流程图如图3:

另两个子程序的功能如下:

写字节子程序WRITE18B20的功能:将单片机A寄存器中的字节写入DS18B20中;该子程序在DS18B20初始化成功后才能生效。

读字节子程序READ18B20的功能:从DS18B20中读出一个字节存放入A中。

② 本温控器对DS18B20的操作的程序。

本温控器对DS18B20的操作的程序有两个:第一,参数设置程序CONFIG,功能:对DS18B20设置最高限告警温度和最低限告警温度、温度转换分辨率(选择范围9-12位)。第二,温度采集程序GETTEMP,功能:控制DS18B20进行温度转换,转换完成后,从它讀取两个字节的温度值,低位字节存入TEMPL单元,高位字节存入TEMPH单元。它们的设计都是基于DS18B20的操作协议。以下选取GETTEMP说明其程序实现:

GETTEMP还需调用读字节子程序READ18B20。

源程序:

4.2 温控器的总体软件设计

本温度控制器软件设计采用模块化程序结构,程序结构清晰紧凑。

温度控制器软件由主程序MAIN和键盘中断程序KEYDEAL、显示定时中断程序DISPLAY组成。

主程序功能是完成系统的初始化、进行温度值的不断采集及数值转换;当温度值超出设定范围时,进行控制、报警。它主要由以下三个子程序模块组成:

(1)系统初始化程序:首先完成定时器、中断允许及中断优先级、堆栈指针的设定,温度最高限、最低限初始告警值的设定、DS18B20的温度转换分辨率的设定(范围为9-12位)。此程序调用了参数设置程序CONFIG(说明见前面)。

(2)温度采集程序GETTEMP:对DS18B20发出温度转换命令,待其转换完毕,则从它读取两个字节的温度数据。其详细说明见前面。

(3)温度数值转换程序TEMPBCD:根据精度要求将采集到的温度值转换成便于显示的BCD码值。

由于对应9-12位温度转换分辨率,DS18B20的转换时间为几十-几百ms,温度采集程序的执行时间较长,因而将温度采集与温度数值转换设为不断循环执行的主体程序,以保障温度测量的实时性。

在此情况下,为了令按键响应迅速,采用键盘中断方式进行按键处理,中断优先级别设为低。键盘中断服务程序KEYDEAL功能是扫描确定按下了那一个键,从而执行相应的键功能,主要完成最高限温度、最低限温度的设定,此程序调用了参数设置程序CONFIG。

为保障显示清晰稳定,必须保证每隔设定的时间即对显示器进行扫描,因此采用定时器中断方式进行扫描,每隔设定的定时时间即产生中断,到中断程序DISPLAY中进行数码管的动态扫描,显示实时温度或设定温度值;此中断优先级设为高,优先保障扫描显示工作的执行,不会受键盘低优先级中断的干扰。

本温控器软件设计采用模块化程序结构的优点还在于可以利用一些通用的子程序。以上各程序调用的通用子程序模块如下:DS18B20初始化子程序、DS18B20写字节子程序、DS18B20读字节子程序、延时程序YANSHI1(延时80us)、YANSHI2(延时500us)、YANSHI3(延时100ms)。

5 结语

基于DS18B20的8051单片机温度控制器,无需模拟测量电路及A/D转换器,且温度数字值传输只需占用单片机的一根口线,令电路大大简化,器件减少,提高了可靠性。本设计严格依据DS18B20的时序要求,设计了对其可靠操作的程序。通过合理设计软件,保障了本温控器温度测量、控制的实时性,并令显示清晰稳定,键盘响应迅速。

参考文献

上一篇:致北京奥委会叔叔阿姨们的一封信作文下一篇:关于质量部员工个人年度工作总结