单片机温度检测报警器课程设计

基于单片机的温度测量电路设计

摘要

该温度测量报警系统以AT89C51单片机为核心控制芯片,实现温度检测报警

功能的方案。该系统通过调节可调电阻调节电压作为模拟输入量,通过A/D转换

成温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不

同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条

件,在工业中具有一定的实用价值和广泛的应用前景。另外该方案显示部分采用

数码管来显示温度。本文详细阐述了单片机和LED数码显示器的内部结构,系统

硬件电路和软件程序的设计及调试过程,同时给出了原理图、流程图等。涵盖了

从需求分析,系统设计,编程,原理图,PCB图以及最后的试验板焊制等产品开

发的基本过程。

目录

摘要 ........................................................................... 1

1. 引言........................................................................3

2 AT89C51与ADC0808简介及引脚功能 ............................................. 4

2.1 AT89C51单片机管脚介绍 .................................................. 4

2.2 ADC0808管脚介绍 ......................................................... 5

3 系统设计 ..................................................................... 7

3.1 设计任务与要求 ........................................................... 7

3.1.1 设计任务 ............................................................ 7

3.1.2 设计要求: .......................................................... 7

3.2设计思路 ................................................................. 7

3.3 设计方案 ................................................................. 7

3.4主程序设计 ............................................................... 8

4 系统硬件设计 ................................................................. 9

4.1电路原理图 ............................................................... 9

4.1.1主控器模块 .......................................................... 9

4.1.2 数码管显示模块 ...................................................... 9

4.1.3 A/D转换模块 ....................................................... 10

4.1.4 报警模块 ........................................................... 10

5系统仿真与调试 .............................................................. 12

5.1仿真软件简介 ............................................................ 12

5.2 protues仿真 ............................................................ 12

5.3仿真结果 ................................................................ 12

5.3.1 正常情况 ........................................................... 12

5.3.2 低于温度下限 ....................................................... 13

5.3.3 高于温度上限 ....................................................... 13

5.4系统调试 ................................................................ 13

6 总结 ........................................................................ 14

7附录 ........................................................................ 15

1 程序清单: .................................................................. 15

8参考文献 .................................................................... 20

1. 引言

随着计算机技术的飞速发展和普及,数据采集系统在多个领域有着广泛的应用。

数据采集是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域

的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及电压等参数。

同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测

得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高

产品的合格率,产生良好的经济效益。

随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这

一趋势,作这方面的研究就显得十分重要。在科学研究中,运用数据采集系统可

获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。总之,不

论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

采集系统,从严格的意义上来说,应该是用计算机控制的多路数据自动检测或巡

回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可

用的信息,供显示、记录、打印或描绘的系统。

温度测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的

要求也越来越高,而温度的测量与显示系统甚为重要。在课程设计中对一路温度

采集系统与显示系统作了基本的研究。电压采集与通信控制采用了模块化的设计,

并用单片机8051来实现,硬件部分是以单片机为核心,还包括模-数转换模块,

显示模块,和串行接口部分,还有一些简单的外围电路。1路被测电压通过通用

ADC0808模-数转换,实现对采集到的电压进行模拟量到数字量的转换,由单片机

对数据进行处理,用数码管显示模块来显示所采集的结果,由相关控制器完成数

据接收和显示,汇编程序编写了更加明了化数据显示界面。本系统主要包括四大

模块:数据采集模块、控制模块、显示模块、A/D转换模块。绘制电路原理图与

工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,

采用了汇编语言进行编程,开发环境使用相关集成开发环境。开发了显示模块程

序、A/D转换程序。

2 AT89C51与ADC0808简介及引脚功能

2.1 AT89C51单片机管脚介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器,是低电

压,高性能CMOS8位微处理器,俗称单片机。如图1

图1 管脚图

AT89C51管脚介绍:

VCC:供电电压。

GND:接地。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接

收输出4TTL门电流。 图2 AT89C51管脚

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,

输出4个TTL门电流,输出4个TTL门电流,当P2口被写“1”时,其管脚被内

部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将

输出电流。这是由于内部上拉的缘故。P2口在FLASH编程和校验时接收高八位地

址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL

门电流。P3口也可作为AT89C51的一些特殊功能口。

RST:复位输入。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收 8TTL门电流。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的

地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机

器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将

不出现。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.2 ADC0808管脚介绍

ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8

路模拟输入信号中的一个进行A/D转换。引脚图如图

2:

图2 ADC0808引脚图

DAC0808各引脚功能:

ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能

如下:

1~5和26~28(IN0~IN7):8路模拟量输入端。

8、14、15和17~21:8位数字量输出端。

6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)

使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。

9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端

输入一个高电平,才能打开输出三态门,输出数字量。

10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。

11(VREF(+))和16(VREF(-)):参考电压输入端

12(Vcc):主电源输入端。 22(ALE):地址锁存允许信号,输入,高电平有效。

13(GND):地。

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的

一路

3 系统设计

3.1 设计任务与要求

3.1.1 设计任务

基于AT89C51单片机设计温度检测报警,并且可以根据应用环境不同设定不

同的报警上下限。报警系统采用光报警和蜂鸣器报警。

3.1.2 设计要求:

(1)用可调电阻调节电压值作为模拟温度的输入量,当温度低于30℃时,发

出长嘀报警声和光报警,当温度高于60℃时,发出短嘀报警声和光报警。测量的

温度范围在0-99℃。并将实时的温度显示在数码管上。

(2)要求使用的元器件数目尽量少。

(3)设计硬件电路原理图,合理选择元器件;编写使用说明书,说明使用方法。

设计在实验板上实现该功能的程序并进行调试。

3.2设计思路

设计框图如图3

图3

3.3 设计方案

总体设计方案:

采用51系列单片机作为整机的控制单元,通过调节可调电阻将0-5V模拟

电压信号通过AD0808模数转换成数字量0--255,通过内部程序公式转换成温度

0--99然后通过数码管显示其温度值。根据设定的温度报警上下值可以进行光报警

和蜂鸣器报警

3.4主程序设计

主程序流程图如图4所示。

4 系统硬件设计

4.1电路原理图

主要包括主控模块,A/D转换模块,显示模块,报警模块如图

5

图5系统电路原理图

4.1.1主控器模块

本系统控制器芯片采用AT89C51单片机:

P0:与ADC0808 8位输出端口相连

P1:与数码管七段输入相连

P3.0接高温光报警,P3.1接低温光报警,P3.7接蜂鸣器

4.1.2 数码管显示模块

图6为液晶显示电路模块,图中为一个两位七段数码管,其接法为共阴极接法

图6数码管显示电路

4.1.3 A/D转换模块

采用ADC0808模数转换将0--5伏电压模拟量转换成数字量0--255。如图7

图7 ADC0808模数转换

4.1.4 报警模块

如图8

图8报警模块

5系统仿真与调试

5.1仿真软件简介

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: (1)实现了单片机仿真和SPICE电路仿真相结合。

(2)(2)支持主流单片机系统的仿真。

(3)(3)提供软件调试功能。如Keil C51 uVision2、MPLAB等软件。

(4)具有强大的原理图绘制功能。

总之,该软件是一款集单片机和S

PICE分析于一身的仿真软件,功能极其强大。

5.2 protues仿真

(1) 用Keil 3 软件加载C语言源程序并生成hex文件。

(2) 双击AT89C51,在Program File

一栏中加入hex文件并将Clock

Frequency改为12MHz。

(3)点击运行按钮,开始仿真。

5.3仿真结果

5.3.1 正常情况

数码管显示的数字在0--99范围内,结果如图9

图9正常情况

5.3.2 低于温度下限

数码管显示温数字低于30,P3.1为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图10。.

图10 低于下限

5.3.3 高于温度上限

数码管显示数字高于60,P3.0为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图11。.

图11 高于上限

5.4系统调试

在调试过程中主要是对程序的修改,特别是延时子程序。开始延较短时,

数码管同时显示但不稳定的显示这些温度。如果延时较长则温度数字不会同时显示出来。通过修改程序,将延时调到适中,系统正常工作。

6 总结

回顾起此次单片机课程设计,我仍感慨颇多,从理论到实践,在接近一月的日子里,可以说得是苦多于甜,但是可以学到很多的的东西,不仅是学习上的,而且是关于做人做事方面的感悟。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。我在设计的过程中遇到了许多问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不透彻。

此次课程设计由于刚开始对书本知识掌握不够,编程遇到了很多难题,不过在翁老师的指导下我明白了很多,也学到了很多,在此衷心感谢翁老师!

7附录

1 程序清单:

#include

#define uchar unsigned char

#define uint unsigned int

unsigned int temp;

unsigned char getdata;

unsigned char d;

UnsignedcharDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管的段选0~9显示

unsigned char DSY_IDX[]= {0xF7,0xFB,0xFD};//共阴数码管的低三位的位选

unsigned char Temperature[]={0,0}; //定义把采集到的温度数据个位十位百位放到该数组。该数组初值为0;

sbit ST= P2^5;//AD0809转换启动信号与地址所存允许引脚注意:在使用时ALE和STRT信号引脚连在一起

sbit OE= P2^7;//ADC0808输出允许信号

sbit EOC=P2^6;//ADC0808转换结束信号引脚

sbit CLK =P2^4;//ADC0808的时钟引脚

sbit H_LED=P3^0;//超过60度时的灯光指示

sbit L_LED=P3^1;//低于30度时的灯光指示

sbit SPK = P3^7;//超过60度和低于30度时的蜂鸣器报警

bit Flag0;

bit Flag1;

unsigned int cnta;

unsigned int cntb;

bit alarmflag;

void DelayMS(uint x)//N毫秒延时函数

{

uchar i;

while(x--)

for(i = 0;i

}

void Show_Temperature()//数码管显示函数

{

uchar i;

for(i=0;i

{

P1 = DSY_CODE[ Temperature[i] ];

P0显示

P2&=DSY_IDX[i];//相与是为了保证P2口的其它位的状态值保持不变,保持原来的值

DelayMS(5); //延时5毫秒给硬件反应时间

P2 |= 0x0F;//让数码管动态扫描显示

}

}

void Init() //定时器0和定时器1的初始化 定时器0给ADC0808提供时钟让其工作

{

IE = 0x8a;

TMOD = 18;

TH0 = 245;

TL0 = 0;

TH1 = (65536 -1000) /256; //给定时器1设置初值为1毫秒

TL1 = (65536 -1000) %256;

TR0 = 1; //开启定时器0给ADC0808提供时钟

}

void main()//主函数

{

Init();//定时器初始化

H_LED = L_LED = 1; //灯光提示灭

while(1)

{

//把采集回来的温度数字送入到

ST = 0;

ST = 1;

ST = 0;//寄存器SAR复位,及为ADC0809的起始信号

while(1)

{

if(EOC == 1)//ADC0808转换结束后改引脚为高低平

{

OE = 1;//输出允许信号为1时表示把ADC0808采集的数据输出 getdata=P0;//把采集到的数据送到P1口处理

OE = 0;//又打开ADC0808让继续开始转换

temp=getdata*25;//因为有AD采集回来的数为0~255;显示温度为0~99;及255/100=25.5及25个步进值代表1摄氏度及为一个等差数列公差为25

temp=temp/64; //temP就相当于温度 ,及等差数列中的N;而getdata就是等差数列的和

Temperature[1] = temp/10;//采集到数据的十位

Temperature[0] = temp%10;//采集到数据的个位

Show_Temperature();//送到显示函数显示

if(temp 60)//如果采集到的温度大于60度报警 { TR1 = 1; H_LED = 0; L_LED = 1; Flag0=0; Flag1=1;

} else //如果在30~60度之间则不报警 { TR1 = 0; H_LED = L_LED = 1; Flag0=0; Flag1=0; SPK=1; }

break;//跳出继续进行ADC0808的采集

}

}

}

}

void T0_INT() interrupt 1//定时器0的中断函数

{

CLK = ~CLK;

}

void T1_INT() interrupt 3//定时器1的中断函数

{

TH1 = (65536 -1000) /256; //给定时器1设置初值为1毫秒

TL1 = (65536 -1000) %256;

if(( Flag0==1) && ( Flag1==0))

{

cnta++;

if(cnta==800)

{

cnta=0;

alarmflag=~alarmflag;

}

if(alarmflag==1)

{

SPK=~SPK;

}

}

else if(( Flag0==0) && ( Flag1==1))

{

cntb++;

if(cntb==200)

{

cntb=0;

alarmflag=~alarmflag;

}

if(alarmflag==1)

{

SPK=~SPK;

}

}

else

{

alarmflag=0;

cnta=0;

cntb=0;

}

}

8参考文献

《单片微型计算机原理、应用及接口技术》张迎新主编,国防工业出版社 《单片机原理与接口技术》余锡存 主编 西安电子科技大学出版社 《微型计算机技术及应用》戴梅萼 编著 清华大学出版社

《微型计算机原理及应用》李伯成 主编 西安电子科技大学出版社 《微机原理与应用》 张宗根 主编 陕西师范大学出版社

基于单片机的温度测量电路设计

摘要

该温度测量报警系统以AT89C51单片机为核心控制芯片,实现温度检测报警

功能的方案。该系统通过调节可调电阻调节电压作为模拟输入量,通过A/D转换

成温度信息进行显示,程序内部设定有报警上下限,根据应用环境不同可设定不

同的报警上下限。该系统实现了对温度的自动监测,为设备的正常运行提供了条

件,在工业中具有一定的实用价值和广泛的应用前景。另外该方案显示部分采用

数码管来显示温度。本文详细阐述了单片机和LED数码显示器的内部结构,系统

硬件电路和软件程序的设计及调试过程,同时给出了原理图、流程图等。涵盖了

从需求分析,系统设计,编程,原理图,PCB图以及最后的试验板焊制等产品开

发的基本过程。

目录

摘要 ........................................................................... 1

1. 引言........................................................................3

2 AT89C51与ADC0808简介及引脚功能 ............................................. 4

2.1 AT89C51单片机管脚介绍 .................................................. 4

2.2 ADC0808管脚介绍 ......................................................... 5

3 系统设计 ..................................................................... 7

3.1 设计任务与要求 ........................................................... 7

3.1.1 设计任务 ............................................................ 7

3.1.2 设计要求: .......................................................... 7

3.2设计思路 ................................................................. 7

3.3 设计方案 ................................................................. 7

3.4主程序设计 ............................................................... 8

4 系统硬件设计 ................................................................. 9

4.1电路原理图 ............................................................... 9

4.1.1主控器模块 .......................................................... 9

4.1.2 数码管显示模块 ...................................................... 9

4.1.3 A/D转换模块 ....................................................... 10

4.1.4 报警模块 ........................................................... 10

5系统仿真与调试 .............................................................. 12

5.1仿真软件简介 ............................................................ 12

5.2 protues仿真 ............................................................ 12

5.3仿真结果 ................................................................ 12

5.3.1 正常情况 ........................................................... 12

5.3.2 低于温度下限 ....................................................... 13

5.3.3 高于温度上限 ....................................................... 13

5.4系统调试 ................................................................ 13

6 总结 ........................................................................ 14

7附录 ........................................................................ 15

1 程序清单: .................................................................. 15

8参考文献 .................................................................... 20

1. 引言

随着计算机技术的飞速发展和普及,数据采集系统在多个领域有着广泛的应用。

数据采集是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域

的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及电压等参数。

同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测

得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高

产品的合格率,产生良好的经济效益。

随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这

一趋势,作这方面的研究就显得十分重要。在科学研究中,运用数据采集系统可

获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。总之,不

论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

采集系统,从严格的意义上来说,应该是用计算机控制的多路数据自动检测或巡

回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可

用的信息,供显示、记录、打印或描绘的系统。

温度测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的

要求也越来越高,而温度的测量与显示系统甚为重要。在课程设计中对一路温度

采集系统与显示系统作了基本的研究。电压采集与通信控制采用了模块化的设计,

并用单片机8051来实现,硬件部分是以单片机为核心,还包括模-数转换模块,

显示模块,和串行接口部分,还有一些简单的外围电路。1路被测电压通过通用

ADC0808模-数转换,实现对采集到的电压进行模拟量到数字量的转换,由单片机

对数据进行处理,用数码管显示模块来显示所采集的结果,由相关控制器完成数

据接收和显示,汇编程序编写了更加明了化数据显示界面。本系统主要包括四大

模块:数据采集模块、控制模块、显示模块、A/D转换模块。绘制电路原理图与

工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,

采用了汇编语言进行编程,开发环境使用相关集成开发环境。开发了显示模块程

序、A/D转换程序。

2 AT89C51与ADC0808简介及引脚功能

2.1 AT89C51单片机管脚介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器,是低电

压,高性能CMOS8位微处理器,俗称单片机。如图1

图1 管脚图

AT89C51管脚介绍:

VCC:供电电压。

GND:接地。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接

收输出4TTL门电流。 图2 AT89C51管脚

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,

输出4个TTL门电流,输出4个TTL门电流,当P2口被写“1”时,其管脚被内

部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将

输出电流。这是由于内部上拉的缘故。P2口在FLASH编程和校验时接收高八位地

址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL

门电流。P3口也可作为AT89C51的一些特殊功能口。

RST:复位输入。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收 8TTL门电流。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的

地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机

器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将

不出现。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.2 ADC0808管脚介绍

ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8

路模拟输入信号中的一个进行A/D转换。引脚图如图

2:

图2 ADC0808引脚图

DAC0808各引脚功能:

ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能

如下:

1~5和26~28(IN0~IN7):8路模拟量输入端。

8、14、15和17~21:8位数字量输出端。

6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)

使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。

9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端

输入一个高电平,才能打开输出三态门,输出数字量。

10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。

11(VREF(+))和16(VREF(-)):参考电压输入端

12(Vcc):主电源输入端。 22(ALE):地址锁存允许信号,输入,高电平有效。

13(GND):地。

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的

一路

3 系统设计

3.1 设计任务与要求

3.1.1 设计任务

基于AT89C51单片机设计温度检测报警,并且可以根据应用环境不同设定不

同的报警上下限。报警系统采用光报警和蜂鸣器报警。

3.1.2 设计要求:

(1)用可调电阻调节电压值作为模拟温度的输入量,当温度低于30℃时,发

出长嘀报警声和光报警,当温度高于60℃时,发出短嘀报警声和光报警。测量的

温度范围在0-99℃。并将实时的温度显示在数码管上。

(2)要求使用的元器件数目尽量少。

(3)设计硬件电路原理图,合理选择元器件;编写使用说明书,说明使用方法。

设计在实验板上实现该功能的程序并进行调试。

3.2设计思路

设计框图如图3

图3

3.3 设计方案

总体设计方案:

采用51系列单片机作为整机的控制单元,通过调节可调电阻将0-5V模拟

电压信号通过AD0808模数转换成数字量0--255,通过内部程序公式转换成温度

0--99然后通过数码管显示其温度值。根据设定的温度报警上下值可以进行光报警

和蜂鸣器报警

3.4主程序设计

主程序流程图如图4所示。

4 系统硬件设计

4.1电路原理图

主要包括主控模块,A/D转换模块,显示模块,报警模块如图

5

图5系统电路原理图

4.1.1主控器模块

本系统控制器芯片采用AT89C51单片机:

P0:与ADC0808 8位输出端口相连

P1:与数码管七段输入相连

P3.0接高温光报警,P3.1接低温光报警,P3.7接蜂鸣器

4.1.2 数码管显示模块

图6为液晶显示电路模块,图中为一个两位七段数码管,其接法为共阴极接法

图6数码管显示电路

4.1.3 A/D转换模块

采用ADC0808模数转换将0--5伏电压模拟量转换成数字量0--255。如图7

图7 ADC0808模数转换

4.1.4 报警模块

如图8

图8报警模块

5系统仿真与调试

5.1仿真软件简介

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: (1)实现了单片机仿真和SPICE电路仿真相结合。

(2)(2)支持主流单片机系统的仿真。

(3)(3)提供软件调试功能。如Keil C51 uVision2、MPLAB等软件。

(4)具有强大的原理图绘制功能。

总之,该软件是一款集单片机和S

PICE分析于一身的仿真软件,功能极其强大。

5.2 protues仿真

(1) 用Keil 3 软件加载C语言源程序并生成hex文件。

(2) 双击AT89C51,在Program File

一栏中加入hex文件并将Clock

Frequency改为12MHz。

(3)点击运行按钮,开始仿真。

5.3仿真结果

5.3.1 正常情况

数码管显示的数字在0--99范围内,结果如图9

图9正常情况

5.3.2 低于温度下限

数码管显示温数字低于30,P3.1为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图10。.

图10 低于下限

5.3.3 高于温度上限

数码管显示数字高于60,P3.0为低电平,故在这路上的LED灯亮,蜂鸣器发出声音,结果如图11。.

图11 高于上限

5.4系统调试

在调试过程中主要是对程序的修改,特别是延时子程序。开始延较短时,

数码管同时显示但不稳定的显示这些温度。如果延时较长则温度数字不会同时显示出来。通过修改程序,将延时调到适中,系统正常工作。

6 总结

回顾起此次单片机课程设计,我仍感慨颇多,从理论到实践,在接近一月的日子里,可以说得是苦多于甜,但是可以学到很多的的东西,不仅是学习上的,而且是关于做人做事方面的感悟。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。我在设计的过程中遇到了许多问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不透彻。

此次课程设计由于刚开始对书本知识掌握不够,编程遇到了很多难题,不过在翁老师的指导下我明白了很多,也学到了很多,在此衷心感谢翁老师!

7附录

1 程序清单:

#include

#define uchar unsigned char

#define uint unsigned int

unsigned int temp;

unsigned char getdata;

unsigned char d;

UnsignedcharDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管的段选0~9显示

unsigned char DSY_IDX[]= {0xF7,0xFB,0xFD};//共阴数码管的低三位的位选

unsigned char Temperature[]={0,0}; //定义把采集到的温度数据个位十位百位放到该数组。该数组初值为0;

sbit ST= P2^5;//AD0809转换启动信号与地址所存允许引脚注意:在使用时ALE和STRT信号引脚连在一起

sbit OE= P2^7;//ADC0808输出允许信号

sbit EOC=P2^6;//ADC0808转换结束信号引脚

sbit CLK =P2^4;//ADC0808的时钟引脚

sbit H_LED=P3^0;//超过60度时的灯光指示

sbit L_LED=P3^1;//低于30度时的灯光指示

sbit SPK = P3^7;//超过60度和低于30度时的蜂鸣器报警

bit Flag0;

bit Flag1;

unsigned int cnta;

unsigned int cntb;

bit alarmflag;

void DelayMS(uint x)//N毫秒延时函数

{

uchar i;

while(x--)

for(i = 0;i

}

void Show_Temperature()//数码管显示函数

{

uchar i;

for(i=0;i

{

P1 = DSY_CODE[ Temperature[i] ];

P0显示

P2&=DSY_IDX[i];//相与是为了保证P2口的其它位的状态值保持不变,保持原来的值

DelayMS(5); //延时5毫秒给硬件反应时间

P2 |= 0x0F;//让数码管动态扫描显示

}

}

void Init() //定时器0和定时器1的初始化 定时器0给ADC0808提供时钟让其工作

{

IE = 0x8a;

TMOD = 18;

TH0 = 245;

TL0 = 0;

TH1 = (65536 -1000) /256; //给定时器1设置初值为1毫秒

TL1 = (65536 -1000) %256;

TR0 = 1; //开启定时器0给ADC0808提供时钟

}

void main()//主函数

{

Init();//定时器初始化

H_LED = L_LED = 1; //灯光提示灭

while(1)

{

//把采集回来的温度数字送入到

ST = 0;

ST = 1;

ST = 0;//寄存器SAR复位,及为ADC0809的起始信号

while(1)

{

if(EOC == 1)//ADC0808转换结束后改引脚为高低平

{

OE = 1;//输出允许信号为1时表示把ADC0808采集的数据输出 getdata=P0;//把采集到的数据送到P1口处理

OE = 0;//又打开ADC0808让继续开始转换

temp=getdata*25;//因为有AD采集回来的数为0~255;显示温度为0~99;及255/100=25.5及25个步进值代表1摄氏度及为一个等差数列公差为25

temp=temp/64; //temP就相当于温度 ,及等差数列中的N;而getdata就是等差数列的和

Temperature[1] = temp/10;//采集到数据的十位

Temperature[0] = temp%10;//采集到数据的个位

Show_Temperature();//送到显示函数显示

if(temp 60)//如果采集到的温度大于60度报警 { TR1 = 1; H_LED = 0; L_LED = 1; Flag0=0; Flag1=1;

} else //如果在30~60度之间则不报警 { TR1 = 0; H_LED = L_LED = 1; Flag0=0; Flag1=0; SPK=1; }

break;//跳出继续进行ADC0808的采集

}

}

}

}

void T0_INT() interrupt 1//定时器0的中断函数

{

CLK = ~CLK;

}

void T1_INT() interrupt 3//定时器1的中断函数

{

TH1 = (65536 -1000) /256; //给定时器1设置初值为1毫秒

TL1 = (65536 -1000) %256;

if(( Flag0==1) && ( Flag1==0))

{

cnta++;

if(cnta==800)

{

cnta=0;

alarmflag=~alarmflag;

}

if(alarmflag==1)

{

SPK=~SPK;

}

}

else if(( Flag0==0) && ( Flag1==1))

{

cntb++;

if(cntb==200)

{

cntb=0;

alarmflag=~alarmflag;

}

if(alarmflag==1)

{

SPK=~SPK;

}

}

else

{

alarmflag=0;

cnta=0;

cntb=0;

}

}

8参考文献

《单片微型计算机原理、应用及接口技术》张迎新主编,国防工业出版社 《单片机原理与接口技术》余锡存 主编 西安电子科技大学出版社 《微型计算机技术及应用》戴梅萼 编著 清华大学出版社

《微型计算机原理及应用》李伯成 主编 西安电子科技大学出版社 《微机原理与应用》 张宗根 主编 陕西师范大学出版社


相关内容

  • 智能测试系统课程报告
  • 智能测试系统课程报告 前言 通过智能测试系统的学习,我学到了很多的专业知识,知识内容丰富多彩,包含了传感器.控制工程.信号处理.仪器总线技术.单片机.虚拟仪器,基础电路等学科知识内容,综合性强,理论联系实际较多,对以后的测试计量技术与仪器专业知识的学习有很大的对动作用,对以后的课题研究也有很大的裨益 ...

  • 电阻炉温度控制系统
  • 目录 一.系统的简绍与设计指标 ................................................................................ 2 1.1系统的介绍 . ........................................ ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...

  • 温度上下限可调报警器
  • 单片机课程设计 题 目: 专 业: 测控技术与仪器 姓 名: 学 号: 指导教师: 2015 年 1 月 6日 [内容摘要] 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术, 单片机具有体积小.功耗低.控制功能强.扩展灵活.微型化和使用方便等优点 ...