温度传感器设计报告.docx
- 文档编号:10185600
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:43
- 大小:849.73KB
温度传感器设计报告.docx
《温度传感器设计报告.docx》由会员分享,可在线阅读,更多相关《温度传感器设计报告.docx(43页珍藏版)》请在冰点文库上搜索。
温度传感器设计报告
设计报告
设计名称:
基于单片机的温度测量与控制系统
专业班级:
08级电子信息工程01班
设计者:
甘香军0804030105
马超0804030115
喻梦娇0804030127
设计时间:
2011年7月8日——2011年7月14日
武汉工程大学电气信息学院
项目设计摘要(中文):
本次设计以STC80C52单片机为设计主体,完成环境温度的采集及显示,也可以人为地设置温度,并显示该设置温度。
可以将设定的温度与实际温度对比,从而判断要达到既定的温度所需要的操作(加热,降温,保持)。
ProjectDesignSummary:
Thisdesigntakethe80C52monolithicintegratedcircuitasit’smaindesignbody,completestheambienttemperaturegatheringandthedemonstration,mayalsoartificialestablishthetemperature,anddemonstratesthisestablishmenttemperature.Contrastthesettemperatureandactualtemperature,andachievetheestablishedordertodeterminetherequiredoperatingtemperature(heating,cooling,keep).
应收集资料及主要参考文献:
《单片机原理与应用实践指导》吴飞青丁晓机械工业出版社
《单片机原理及应用》张毅刚高等教育出版社
《单片机应用技术》刘守义西安电子科技大学出版社
芯片的说明资源(一般为PDF格式,网上可下载)
设计评审标准(指导教师用)
评价内容
具 体 要 求
权重
调查论证
能独立查阅文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获得新知识的能力。
0.1
实践能力
能正确选择研究(实验)方法,独立进行研究工作。
如装置安装、调试、操作。
0.2
分析解决问题能力
能运用所学知识和技能去发现与解决实际问题;能正确处理实验数据;能对课题进行理论分析,得出有价值的结论。
0.2
工作量、工作态度
按期圆满完成规定的任务,工作量饱满,难度较大,工作努力,遵守纪律;工作作风严谨务实。
0.2
质量
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学;文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;论文结果有应用价值。
0.2
创新
工作中有创新意识;对前人工作有改进或独特见解。
0.1
目录
一、设计要求……………………………………………5
二、设计思路……………………………………………5
三、芯片及元器件………………………………………5
1、DS18B20温度传感器…………………………………5
2、单片机…………………………………………………6
3、1062字符型LCM………………………………………8
4、红黄绿二极管…………………………………………9
5、按键开关………………………………………………9
6、1K电阻…………………………………………………9
7、电源及地线……………………………………………9
8、74HC21…………………………………………………9
9、导线……………………………………………………9
四、详细设计……………………………………………9
1、软件仿真设计模块…………………………………9
1.1传感器部分…………………………………………9
1.2LED部分……………………………………………10
1.3指示电路……………………………………………10
1.4按键部分……………………………………………10
1.5整体框图……………………………………………11
1.6代码设计……………………………………………11
1.6.1读取与显示的主程序……………………………11
1.6.2LCD的显示程序……………………………………14
1.6.3按键控制程序………………………………………15
1.6.4DS18B20驱动程序…………………………………20
1.7仿真结果………………………………………………27
2、硬件实现………………………………………………27
五、设计总结……………………………………………28
一、设计要求
本次设计没有明确的课题要求,所选题目基于自己对相关知识的了解及熟练度,另一方面是为了锻炼动手能力。
此次我们所选的题目是基于单片机的温度控制系统。
该系统能完成对温度的测量及控制,通过将环境的实际温度与人工设置的温度做对比来实现对温度的自动控制,包括加热,降温,保持。
根据一般的日常生活情况,设置温度应该在零摄氏度到100摄氏度之间。
加热,降温,保持各用三种不同颜色的二极管来指示。
用温度传感器做温度采集,单片机做数据处理,输出数据到显示屏。
二、设计思路
温度传感器将采集到的温度转变成电信号传送给单片机,数据在单片机内部经处理后送到输出端口P0,P0与LED相连,数据显示在LED屏上。
用P0作为LED的控制端口,P2口作为加热等指示灯的控制端,P3.1作为数据的输入端口,P2.0作为设置红色指示灯控制点,灯亮说明系统处于加热状态。
P2.1作为设置黄色指示灯控制点,灯亮说明系统处于保持状态,P2.2作为,绿色指示灯控制点,灯亮说明系统处于降温状态,P2.3作为设置用指示灯,灯亮说明系统进入设置状态。
用按钮控制温度的设置值,依次设置为0—9,外加设置按钮10,设置确认按钮11,总共12个按键,用P1口控制按键。
以中断方式控制温度设置,即需要设置温度时,外部设备向单片机发出一个中断请求信号,请求中断,单片机接收中断信息进行中断处理。
中断采用P3.2,INT0作为输入口。
三、芯片及元器件
DS18B20温度传感器一个
图一
图二
温度传感器感知环境温度,转化成数字电信号从数据端口DQ,输入到单片机。
VDD接5V高电源,GND接地。
上面图一是器件的实物图,图二是器件引脚功能图。
单片机
本次我们采用的是80C52单片机.
80C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
80C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
·标准MCS-51内核和指令系统
·片内8kROM(可扩充64kB外部存储器)
·32个双向I/O口
·256x8bit内部RAM(可扩充64kB外部存储器)
·3个16位可编程定时/计数器
·时钟频率3.5-12/24/33MHz
·向上或向下定时计数器
·改进型快速编程脉冲算法
·6个中断源
·5.0V工作电压
·全双工串行通信口
·布尔处理器
·帧错误侦测
·4层优先级中断结构
·自动地址识别
·兼容TTL和CMOS逻辑电平
·空闲和掉电节省模式
VCC:
供电电压。
GND:
接地。
P0口:
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口:
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
P2口:
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口作为一些特殊功能口,管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
80C52单片机引脚图
1602字符型LCM
LCD是液晶显示器的代称,在单片机应用系统中,常使用点阵型LCD显示器。
要使用点阵字符型LCD显示器就必须有相应的LCD控制器,驱动器来对LCD进行扫描和驱动,还要有一定的RAM和ROM来存储单片机写入的命令和显示字符的点阵。
由于LCD面板较脆弱,现已发展为LCM。
LCM是将LCD控制器,驱动器,RAM,ROM和LCD显示器用PCB连到一起的液晶显示模块。
1062字符型LCM内部具有字符发生器ROM,即字符库。
可显示192个5*7点阵字符。
模块内有64字节的自定义字符RAM,用户可自定义8个5*7点阵字符。
模块内有80字节的数据显示存储器(DDRM)。
1062LCM有16个引脚,也有少数的LCM为十四个引脚,其中包括八条数据线,3条控制线和3条电源线。
引脚号
符号
引脚功能
1
GND
电源地
2
VDD
+5V逻辑电源
3
VEE
液晶驱动电源
4
RS
寄存器选择(1—数据寄存器,0—命令状态寄存器)
5
R/W
读写操作(1—读,0—写)
6
E
使能(下降沿触发)
7---14
DB0—DB7
数据总线
15
E1
背光电源
16
E2
背光电源地
LCM1602实物图
红黄绿二极管各一只
用于温度控制状态的指示灯。
红:
加热;黄:
保持;绿:
降温。
12只按钮开关
用于温度设置,0—9为数字键,设置温度,11为设置键,按下去之后会进入设置状态。
12为确认键,确认所设置的温度。
8只1K电阻
作为输出口的上拉电阻。
电源及地线
提供各器件的驱动电压,一般为+5V。
一个四输入与门
提供控制信息,进行中断响应。
这里我们选择了74HC21,它是一种两组四输入与门,外加正电压,地线,总共14个引脚。
其中两个引脚不用,处于悬空状态。
具体引脚图如下:
74HC引脚图
导线若干
四、详细设计
1、软件仿真设计模块
传感器部分,DQ输出传感器处理好的数据,送入单片机。
LED部分,P0口控制
指示电路P2.0—P2.3分别控制四个灯。
按键部分,P1口控制
整体框图
代码设计
代码的具体意义都在程序中以注释的方式显示出来,参照代码后的注释可了解程序的过程。
程序框架图
读取与显示数据的主程序:
#include
#include"lcd.h"
unsignedcharcodeask[10][2]={
0,0x30,
1,0x31,
2,0x32,
3,0x33,
4,0x34,
5,0x35,
6,0x36,
7,0x37,
8,0x38,
9,0x39,
};//LED数字代码段
externGetTemp();//声明引用外部函数
//externunsignedintidataTemperature;
externfloatidataTemperature;//声明引用外部变量
voiddelay(unsignedinti);//延时
unsignedcharLedOut[3];
unsignedlongLedNumVal;
unsignedcharlook_ascii(unsignedcharj)
{
unsignedcharascii;
unsignedchari;
for(i=0;i<10;i++)
{
if(ask[i][0]==LedOut[j])//查找按键通码
{
ascii=ask[i][1];//得到相应字符
}
}
returnascii;
}
voidsystem_Ini()
{
TMOD|=0x11;
TH1=0xDC;//11.0592M
TL1=0x00;
IT0=0;
IE=0x8B;//初始化晶振,计时器,中断允许
TR1=1;
}
main()
{
P1=0x0F;
LCD_init();
system_Ini();//初始化LCD
LCD_pos(0,1);
LCD_dat(0x53);
LCD_dat(0x45);
LCD_dat(0x54);
LCD_dat(0x3A);
LCD_dat(0x32);
LCD_dat(0x35);
LCD_dat(0x2E);
LCD_dat(0x30);
while
(1)
{
GetTemp();
LedNumVal=Temperature;
LedOut[0]=(LedNumVal*10)%10000/1000;
LedOut[1]=(LedNumVal*10)%1000/100;
LedOut[2]=(LedNumVal*10)%100/10;
//LCD_clr();
LCD_pos(0,0);
LCD_dat(0x4E);
LCD_dat(0x4F);
LCD_dat(0x57);
LCD_dat(0x3A);
LCD_dat(look_ascii
(1));//读入数据
LCD_dat(look_ascii
(1));
LCD_dat(0x2E);
LCD_dat(look_ascii
(2));
delay(800);}
}
//延时程序
voiddelay(unsignedintms)
{//延时子程序
inti;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
LCD的显示程序
#include
#include
sfrLCD_IO=0x80;//P0-0x80,P1-0x90,P2-0xA0,P3-0xB0;
sbitLCD_RS=P2^6;//LCD数据/命令选择端(H/L)
sbitLCD_RW=P2^5;//LCD读/写选择端(H/L)
sbitLCD_EN=P2^7;//LCD使能控制端
sbitLCD_BZ=LCD_IO^7;//LCD忙标志位
//检测LCD忙状态
voidLCD_busy(void)
{
do
{
LCD_EN=0;
LCD_RS=0;//指令
LCD_RW=1;//读出
LCD_IO=0xff;//除P0口外,其它口不需要此句!
!
!
LCD_EN=1;
_nop_();//高电平读出延迟时间1us
}while(LCD_BZ);//LCD_BZ=1表示忙,LCD_BZ=0表示空闲
LCD_EN=0;
}
//写入指令
voidLCD_cmd(unsignedcharcmd)
{
LCD_busy();//检测忙
LCD_RS=0;//指令
LCD_RW=0;//写入
LCD_EN=1;
LCD_IO=cmd;//传指令
LCD_EN=0;//下降沿有效
}
//写入数据
voidLCD_dat(unsignedchardat)
{
LCD_busy();//检测忙
LCD_RS=1;//数据
LCD_RW=0;//写入
LCD_EN=1;
LCD_IO=dat;//传数据
LCD_EN=0;//下降沿有效
}
//显示定位
voidLCD_pos(unsignedcharx,unsignedchary)
{
if(y)LCD_cmd(x|0xc0);//y=1第二行显示,y=0第一行显示0<=x<16
elseLCD_cmd(x|0x80);//数据指针=80+地址码(00H~27H,40H~67H)
}
//LCD初始化
voidLCD_init(void)
{
LCD_cmd(0x38);//设置LCD为16X2显示,5X7点阵,八位数据接口
LCD_cmd(0x06);//LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)
LCD_cmd(0x0f);//LCD开显示及光标设置(光标闪烁,显示"_")
LCD_cmd(0x01);//清屏
}
按键控制程序
#include
#include
#include"lcd.h"
#defineucharunsignedchar
#defineuintunsignedint
uchardis_buf;//定义下面需要的变量
uchartemp;
ucharkey;
voidkeywork(unsignedchari);
voidkeyscan(void);
ucharchange;
ucharflag1;//标志健,表示设置键按了几次
ucharflag2;
ucharaa[3];
uintb;
uintc;
sbitp23=P2^3;//定义端口
sbitp20=P2^0;
sbitp21=P2^1;
sbitp22=P2^2;
sbitp32=P3^2;
externunsignedcharLedOut[3];//定义外部变量,即LCD读取的数据
voiddelays(unsignedintms)
{//延时程序ms
inti;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
voidkeyscan(void)interrupt0//键盘中断程序
{EX0=0;
if(p32==0)
{
temp=0;
P1=0xF0;
delays(10);
temp=P1;
temp=temp&0xF0;
temp=~((temp>>4)|0xF0);
switch(temp)
{
case1:
key=0;break;//给按键编码
case2:
key=1;break;
case4:
key=2;break;
case8:
key=3;break;
default:
break;
}
P1=0x0F;
delays(5);
temp=P1;
temp=temp&0x0F;
temp=~(temp|0xF0);
switch(temp)
{
case2:
key=key+0;break;
case4:
key=key+4;break;//给按键编码
case8:
key=key+8;break;
default:
break;
}
dis_buf=key;
p23=0;
delays(10);
p23=1;
keywork(dis_buf);
}
while(!
p32);
EX0=1;
}
voidkeywork(unsignedchari)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度传感器 设计 报告