单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx

上传人:b****5 文档编号:18693740 上传时间:2022-12-31 格式:DOCX 页数:24 大小:187.58KB
下载 相关 举报
单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx_第1页
第1页 / 共24页
单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx_第2页
第2页 / 共24页
单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx_第3页
第3页 / 共24页
单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx_第4页
第4页 / 共24页
单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx

《单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx

单片机对输入信号进行模数转换执行软件程序后,由LED数码管显示温度值,每秒切换一个通道进行轮流显示。

通过键盘可以随时查看指定通道的温度值,当任何一路温度的3次平均值超过设定的下限值或上限值时,发出警告。

3、它有如下特点:

(1)可以监测8路环境温度信号,可以扩充;

对8路模拟信号输入进行循环采集,每路连线采集三次,取平均值。

(2)测量范围为-55℃~+125℃,精度为±

0.5℃

(3)LCD液晶显示或用4位LED数码管进行循环显示,其中最高位通道提示符A~H,低三位显示实际温度值,每秒切换一个通道进行轮流显示;

(4)键盘控制,可随时查看指定通道的温度值;

(5)可分别设定每一路的上限制和下限值,若采集平均值超过设定范围,则对应通道指示灯闪烁10后一直亮,指示灯闪烁是喇叭发声,以示警告。

三、系统硬件设计

本课题的整个系统是由传感器及其信号放大电路、单片机、显示电路、键盘电路、稳压电路、晶振电路、复位电路等构成。

3.1控制器--单片机设计:

本设计采用的单片机为STC12C5A32AD

STC12C5A32AD单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代单片机,全新的流水线/精简指令集结构。

STC12C5A32AD单片机主要性能:

●高速:

1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍

●工作电压:

5.5V--3.3V

●低功耗设计:

空闲模式,掉电模式(可由外部中断唤醒)

●工作频率:

0~35MHz

●时钟:

外部晶体或内部RC振荡器可选

●芯片内E2PROM功能

●ISP/IAP,在系统可编程/在应用可编程,无需仿真器

●8位8通道ADC,转换速度可达300K/S

●2个硬件16位定时器,兼容普通8051的定时器。

再加上2路PCA还可再实现2个16位定时器

●硬件看门狗(WDT)

●全双工异步串行口(UART),由于STC12系列单片机是高速的8051,可再用定时器或PCA软件实现多串口

如图3.1为STC12C5A32AD引脚图,各引脚功能说明如下:

图3.1STC12C5A32AD引脚图

●Vcc:

电源

●GND:

●P0口:

P0口是一个8位的双向I/O口。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

●P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,同时也是模拟量输入口,可以对8路模拟量进行模数转换。

●P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。

●P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口。

P3口亦作为特殊功能口使用,如表3-1所示。

表3-1STC12C5A32AD引脚号特殊功能

P3.0

RXD(串行输入)

P3.1

TXD(串行输出)

P3.2

INT0(外部中断0)

P3.3

P3.4

T0(定时器0外部输入和定时器0时钟频率输出)

P3.5

T1(定时器1外部输入和定时器1时钟频率输出)

P3.6

WR(外部数据存储器写选通)

P3.7

RD(外部数据存储器读选通)

●RST:

复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。

●ALE:

地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

●XTAL1:

振荡器反相放大器和内部时钟发生电路的输入端。

●XTAL2:

振荡器反相放大器的输出端。

3.2传感器检测电路设计:

LM35是由NationalSemiconductor所生产的温度传感器,其输出电压与摄氏温度成正比,具有10mv/℃的灵敏度,工作温度范围为4V~30V;

输出阻抗为0.1Ω。

LM35温度传感器,由于它采用内部补偿,所以输出可以从0℃开始,器件有三个引脚,分别是电源负GND,电源正Vcc,信号输出端。

电路需要两路运算放大电路,所以选择双路运算放大器,一路作跟随器另一路作同向放大器,LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。

图3.2.传感器检测电路

3.3显示电路设计:

如图3.3所示,本显示方案采用单片机I/O口外扩74HC573驱动器驱动4位LED数码管实现动态显示,所谓动态显示就是在任何时刻只有一位LED数码管处于显示状态,即单片机采用扫描的方式控制各个数码管的轮流显示。

动态显示具有编程简单,占用I/O口线少的优点。

图3.3显示电路

3.4键盘电路设计:

其原理图如下:

本设计中由于所用键盘不多,所以采用独立连接式的编程扫描方式键盘就能够满足设计要求。

键盘接口与键盘程序的根本任务就是要检测有没有键按下?

按下的是那个位置的键?

键值是多少?

在本次设计中采用了软件扫描的方法。

通过对键盘接口P3的查询判断是否有键按下。

图3.4键盘电路

3.5晶振电路设计:

晶振电路是单片机的心脏,它控制着单片机的工作节奏。

单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。

STC12C5A32AD内部有一个反相振荡放大器,XTAL1 

和XTAL2分别是该反向振荡放大器的输入端和输出端。

该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。

本设计采用的晶振频率为12MHZ。

其晶振电路如图3.5所示。

此外还可使用外部时钟。

在使用外部时钟时,外部时钟必须从XTAL1输入,而XTAL2悬空。

图3.5晶振电路

3.6复位电路的设计:

复位使单片机处于起始状态,并从该起始状态开始运行。

STC12C5A32AD的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。

复位后,只影响SFR中的内容,内部RAM中的数据不受影响。

外部复位有上电复位和按键电平复位。

由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。

为了便于本设计运行调试,复位电路采用按键复位方式。

如图3.6 

图3.6复位电路

3.7报警电路设计:

为了实现多点温度检测报警系统,本课题采用STC12C5A32AD单片机作为主控制器,采用扫描的方式对多点温度传感器获取对应该位置的温度值,经处理后,如温度不在设定的范围内,给出报警信号。

系统总体硬件电路图如下所示:

图3.7报警电路

3.83V稳压电路

为了给STC89LE516AD单片机提供精确的3V基准电压,本设计采用了LM117三端可调

正稳压集成电路。

它的输出电压范围是1.2V至37V,负载电流最大为1.5A。

仅需外接两个电阻就可以设置输出电压。

此外它的线性调整率和负载调整率都比较好。

图3.83V稳压电路

3.9总电路

见附录

四、系统软件设计

4.1系统主程序流程图

主程序主要实现系统的初始化,温度数据采集与处理,键值处理,显示数据,报警。

系统的初始化包括寄存器的初始化(控制寄存器、堆栈、中断寄存器等),LED显示的初始化,输出端口的初始化,采集、累计数据的初始化。

图4.1主程序流程图

4.2测温子程序的设计

数据采样程序功能:

温度检测通道,控制存放数据的地址和采样次数。

数据检测的方式是先对8个通道各采样一次,共采集三次。

采样程序采用中断方式。

在设置通道初值、通道数、采样次数和存放数据的开始地址后,启动A/D转换,随后检测标志位状态。

标志位被清零,标志着本通道的A/D转换已经结束,在修改通道号和数据存放地址后,对下一通道继续检测。

当8个通道的检测工作完成后,判断三次采样是否全部完成,若没完成,则对8个通道继续采样,直至完成三次采样工作。

数据采样程序流程框图如4.2所示。

图4.2测温子程序

4.3报警子程序设计

(1)采样被测参数

(2)比较采样值和给定的上下限。

(3)根据比较结果执行相应的处理程序。

如果发现采样值超过报警值,发出执行报警程序。

报警程序流程框图4.3所示。

4.3报警子程序流程图

4.4显示子程序设计

四位LED数码管进行轮流显示,其中最高位显示通道提示符A—H,低三位显示实际温度。

图4.4显示子程序流程图

五、结论

1、课题总结

本课题主要是实现对温度进行多点同时测量并准确显示。

整个系统由单片机控制,将能够接受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进行报警。

2、心得

六、参考文献

[1]王为青,程国刚.单片机KeilCx51应用开发技术[M].北京:

人民邮电出版社,2006.223-226.

[2]方佩敏编著·

智能化集成温度传感器原理与应用[M].北京:

电子工业出版社,2002.35-42.

[3]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:

高等教育出版社,2008.18-20,253-255,219-220,198-201.

[4]刘笃人,韩保军.传感器及应用技术[M].西安:

西安电子科技大学出版社,2003.112-124.

[5]童诗白.模拟电子技术基础[M].北京:

高等教育出版社,2004.213-216.

[6]阎石.数字电子技术基础[M].第五版.北京:

高等教育出版社,2006.524-535.

[7]闫玉德,葛龙,俞虹.单片机微型计算机原理与设计[M].北京:

中国电力出版社,2010.112-154,197-199.

[8]郁有文.传感器原理及工程应用[M].西安:

西安电子科技大学出版社,2008.215-238.

七、附录:

1.系统程序:

;

****************************************************************

常数定义

TMELEQU0E0H;

20ms,定时器0时间常数

TMEHEQU0B1H

TMEPHEADEQU36H

工作内存定义

BITSTDATA20H

TIMEISOKBITBITST.1

TEMPONEOKBITBITST.2

TEMPLDATA26H

TEMPHDATA27H

TEMPHCDATA28H

TEMPLCDATA29H

引脚定义

TEMPDINBITP3.7

中断向量区

ORG000H

LJMPSTART

ORG00BH

LJMPT0IT

系统初始化

ORG100H

START:

MOVSP,#60H

CLSMEM:

MOVR0,#20H

MOVR1,#60H

CLSMEM1:

MOV@R0,#00H

INCR0

DJNZR1,CLSMEM1

MOVTMOD,#00100001B

MOVTH0,#TIMEL

MOVTL0,#TIMEH

SJMPINIT

ERROR:

NOP

LJMPSTART

INIT:

SETBET0

SETBTR0

SETBEA

MOVPSW,#00H

CLRTEMPONEOK

LJMPMAIN

定时器0中断服务程序

T0IT:

PUSHPSW

MOVPSW,#10H

MOVTH0,#TIMEH

MOVTL0,#TIMEL

INCR7

CJNER7,#32H,T0ITI

MOVR7,#00H

SETBTIMEISOK

TOIT1:

POPPSW

RETI

主程序

MAIN:

LCALLLM35_1

JNBTIME1SOK,MAIN

CLRTIME1SOK

JNBTEMPONEOK,MAIN2

LCALLREADTEMP1

LCALLCONVTEMP

LCALLLM35_1

MAIN2:

LCALLREADTEMP

SETBTEMPONEOK

LJMPMAIN

子程序区

RESETLM35

INILM35:

SETBTEMPDIN

NOP

NOP

CLRTEMPDIN

MOVR6,#0A0H

DJNZR6,$

DJNZR6,$

MOVR6,#32H

MOVR6,#3CH

LOOPLM35:

MOVC,TEMPDIN

JCINILM35UT

DJNZR6,LOOPLM35

MOVR6,#064H

SJMPINILM35

RET

INILM35UT:

****************************************************************

读LM35的程序,从LM35中读出一个字节的数据

READLM35:

MOVR7,#08H

SETBTEMPDIN

READLM35LOOP:

CLRTEMPDIN

MOVR6,#07H

MOVC,TEMPDIN

MOVR6,#3CH

RRCA

DJNZR7,READLM35LOOP

写LM35的程序,从LM35中写一个字节的数据

WRITELM35:

WRITELM35LOP:

MOVTEMPDIN,C

MOVR6,#34H

SETBTENPDIN

DJNZR7,WRITELM35LOP

READTEMP

READTEMP:

LCALLINITELM35

MOVA,#0CCH

LCALLWRITELM35

MOVA,#44H

READTEMP1:

LCALLINILM35

MOVA,#0BEH

MOVR5,#09H

MOVR0,#TEMPHEAD

MOVB,#00H

READTEMP2:

LCALLREADLM35

MOV@R0,A

INCR0

READTEMP21:

LCALLCRC8CAL

DJNZR5,READTEMP2

MOVA,B

JNZREADTEMPOUT

MOVA,TEMPHEAD+0

MOVTEMPL,A

MOVA,TEMPHEAD+1

MOVTEMPH,A

READTEMPOUT:

RET

处理温度BCD码子程序

CONVTEAMP:

MOVA,TEMPH

ANLA,#80H

JZTEMPC1

CLRC

MOVA,TEMPL

CPLA

ADDA,#01H

MOVA,TEMPH

ADDCA,#00H

MOVTEMPHC,#0BH

SJMPTEMPCH

TEMPC1:

MOVTEMPHC,#0AH

TEMPC11:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

ANLA,#0FH

MOVDPTR,#TEMPDOTTAB

MOVCA,@A+DPTR

MOVTEMPLC,A

ANLA,#0F0H

ORLA,TEMPL

LCALLHEX2BCD1

ORLA,TEMPHC

ORLA,TEMPLC

MOVA,R7

JZTEMPC12

MOVR7,A

MOVA,TEMPHC

ORLA,R7

TEMPC12:

小数部分码表

TEMPDOTTAB:

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

DB06H,07H,08H,09H,09H

****************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1