单片机原理课程设计报告Word下载.docx
- 文档编号:16334747
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:24
- 大小:553.01KB
单片机原理课程设计报告Word下载.docx
《单片机原理课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机原理课程设计报告Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
1、设计任务:
基于MS-51系列单片机AT89C51,使用热敏电阻类的传感器件,设计一个数字显示温度计。
2、设计要求:
(1)、测量温度范围:
-50~110℃。
(2)、精度误差小于0.5℃。
(3)、LED数码自读显示。
(4)、@可以任意设计温度的上下限报警功能。
(5)、☆编程实现热敏电阻的非线性补偿。
(7)、☆实现语音报出测量的温度值。
二、步骤及方案
1、设计步骤
(1)、硬件电路图,由XX同学设计完成;
软件程序部分由XX同学编写调试;
实验设计报告由XX同学完成。
(2)、首先设计硬件电路,调试电路参数,找出温度变化与电压变化之间的关系,调试电路,实际结果为:
温度为-50℃时电路输出电压值为0.10V,温度为110℃时电路输出电压值为4.81V。
(3)、根据电路中温度与电压之间的关系,编写程序算法,对应关系为温度值=电压值×
0.66-55,根据设计要求编写调试程序。
(4)、根据设计要求,基于硬件电路与软件程序的设计思路撰写设计报告。
2、方案论证
根据系统的设计的要求,选择PT100作为本系统的温度传感器,选择单片机AT89C52为监测系统的核心来完成数据采集、处理、显示、报警等功能。
同时还选用8位A/D转换器ADC0808完成模数转换,省却了采样/保持电路、运放以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的设计总体思路如下,温度传感器PT100把所测得的温度发送到A/D转换器ADC0808上,完成模数转换;
接着再把信号传到AT89C52单片机上,经过52单片机的处理,将把温度在LED显示模块上显示,本系统采用4位共阳极LED数码管以动态扫描的方法实现。
测量温度范围:
按照系统设计功能的要求,确定系统由4个模块组成:
主控制器、A/D转换、测温电路和显示电路。
数字温度计总体设计电路结构图如图1所示:
图1数字温度计总体电路结构框图
三、硬件设计
1、总体电路设计图
数字温度计总体设计电路图如图2所示:
图2数字温度计总体设计电路图
2、主控制器
(1)单片机的选择
AT89C51作为温度测试系统的核心器件。
该器件是INTEL公司生产的MCS-51系列单片机的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。
不仅结合了HMOS的高速和高密度技术及HMOS的低功耗特征,而且继承和扩展了MCS-48单片机的体系结构和指令系统。
单片机小系统的电路图如图3所示。
图3单片机小系统电路
AT89C51单片机的主要特征:
A、与MCS-51兼容,4K字节可编程闪烁存储器;
b、灵活的在线系统编程,掉电标识和快速编程特性;
c、寿命为1000次写/擦周期,数据保留时间可10年以上;
d、全静态工作模式:
0HZ~33HZ;
e、三级程序存储器锁定;
f128×
8位内部RAM,32位可编I/O线;
g、两个16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个全双工I/O接口。
h、有位寻址功能、适于布尔处理的位处理机。
(2)单片机与报警电路
系统中的报警电路是由发光二极管和限电流电阻组成,并与单片机的P1.2端口连接。
P1端口的作用和接线方法与P2端口相同,不同的是Flash编程和程序校验,P1接收低8位地址数据。
(3)程序存储器
本系统的所需的没有必要外扩程序存储器,所以不用考虑存储器扩充容量的大小,单片机本身的存储器就已足够。
(4)数据存储器
根据系统的功能要求,不需扩展外部RAM,89C51本身的RAM就能满足要求。
(5)I/O接口芯片
根据系统的功能要求,I/O接口芯片的也不需进行扩展。
(6)总线驱动能力
MCS-51系列单片机的外部扩展功能很强,但4个8位并行的带负载的能力是有限的。
P0口能驱动8个TTL电路,P1~P3口只能驱动3个TTL电路。
在实际运用中,这些端口的负载不应超过总负载能力的70%,以保证留有一定的余量,以增强系统的抗干扰能力,在外接负载较多的情况下,应采用总线驱动电路,以提高端口的驱动能力和抗干扰能力。
3、A/D转换
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
利用ADC0808实现测量值为-50~110℃的温度,基准电压采用+5V电源电压。
由于ADC0808为8位A/D转换器,则A/D采样的最小分辨温度为5/150=0.03℃。
由此可知,显示的温度只要小数点后保留一位即可。
ADC0808芯片有28条引脚,采用双列直插式封装,如图4所示。
其时序图如图5所示,各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端。
11(Vcc):
主电源输入端。
13(GND):
地。
图40808的引脚图
图50808的时序图
4、测温电路
金属铂(Pt)的电阻值随温度的变化而变化,并具有良好的重视性和稳定性。
Pt100在-200℃~+850℃内比热电偶更精确、线性度更佳两端产生的降压远远大于热电偶的输出,并且不需要冷端补偿。
此外,Pt100还具有抗振动、防腐蚀、良好的互换性、重视性和稳定性等优点,常用于低中温测量。
Pt100的电阻值与温度的关系
Pt100在实际应用主要有以下要点:
、选型应该根据实际使用温度测量范围、精度、尺寸及安装固定方式。
、允许流过电流应小于5mA。
在进行电流电源激励Pt100(特别是采用电桥的电路形式)时,应注意满足该条件,负责会造成Pt100自然而影响测量精确度。
一般激励电流采用1mA,甚至更小。
、电路接入方式一般有两线制、三线制和四线制。
二线制时传感器电阻与连导线电阻值共同构成总的电阻值,所以导线电阻带来的附加误差会使实际测量值偏高,一般适用于低测量精度且引线短的场合;
三线制要求三根引线截面积和长度均相同、引线(正负线)电阻产生的影响才能相互抵消,工业中一般采用三线制;
四线制用在测量精确度高且变化很小的场合,因为在这些场合下引线电阻可能引入明显误差,这时可利用其中的两条条引线提供恒定电流,另外两条引线提供未知电阻的电压降,四线制也是经常使用。
、误差:
温度传感器在测量温度的过程中主要误差来源有传感器对分度表的误差;
绝缘不良引起的误差;
线路引起的误差;
测量仪表引起的误差以及传热误差、动态相应误差、干扰误差等。
其中有些误差只有在一定条件下才出现,并且可以通过一定措施来减小或消除误差。
该系统除了采用三线制的接入方式来减小引线电阻的影响外,还采用了二阶有源滤波放大电路来减小外部干扰所带来的误差。
5、低通有源滤波放大
由于被测温度是缓慢变化的,从而Pt100的输出信号也是缓慢变化的,采用如图6所示的低通有源滤波放大电路来调理信号,能有效地滤除一些低频干扰,使得输出信号更平滑,根据图中的参考数,可算出截止频率
图6低通有源滤波放大
6、显示电路
显示电路采用4位共阳极LED数码管,从P0口输出断码,列扫描P2.0~P2.3口分别作为LED的1、2、3、4。
LED显示分别为静态显示和动态显示。
这里采用静态显示,系统通过单片机的串行口来实现静态显示。
串行口为方式零状态,即工作在移位寄存器方式,波特频率为振荡频率的1/12。
当器件执行任何一条将SUBF作为目的的寄存器的命令时,数据便开始从RXD端发送。
信号有效时,相隔一个机器周期后发送控制器SEND有效,即允许RXD端发送数据,同时允许TXD端输出移位脉冲。
如图7为显示电路连接图,图8为读取数据的流程图。
图7显示电路连接图
图8读取数据的流程图
读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为一表示负数,全部为0表示正数。
所以先将数据提取出来,分为三个部分:
小数部分、整数部分和符合部分。
小数部分进行四舍五入处理,大于0.5℃的话,向个位进1;
小于0.5℃的时候,舍去不要。
当数据是负数的时候,显示之前要进行数据转换,将其整数部分反加一。
因为PT100的最温度只能为-50℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。
如图9为温度数据处理程序的流程图。
图9温度数据处理程序的流程图。
四、软件设计
系统程序主要包括主程序,计算温度子程序,数据转换子程序,报警子程序和显示数据子程序,其主程序流程图如图10所示。
图10主程序流程图
1、计算温度子程序
计算温度子程序将RAM所读的数据中进行BCD码转换运算,并进行温度值正负的判断,其流程图如图11所示。
图11计算温度子程序
2、数据转换子程序
数据转换子程序主要是将P1口送入b,判断输入的值是否大于83,通过各种线性关系分别显示数据,其流程图如图12所示。
图12数据转换子程序
3、报警子程序
报警子程序主要是对所读春的温度值进行判断是否超出量程,若大于110度,则红灯亮蜂鸣器响,若小于-50度绿灯亮蜂鸣器响,其流程图如图13所示。
图13报警子程序
五、系统调试
经软件调试——仿真软件Protues调试,将温度传感器调到一定的温度值,根据温度传感器PT100随温度变化电阻值发生变化的特性,利用A/D转换采集数据,利用AT89C51作为温度测试系统的核心器件将电压变化转换为温度变化。
待显示稳定后记录显示模块的温度值,观察对二者进行比较看是否对应,并将其记录下来。
进行多组测量,观察是否存在误差。
例如,仿真Protues,j将温度传感器调为0.0度,待显示稳定后读出测量结果为0.0度。
实验结果是,得到的有些数据存在误差,其余的都符合设计要求。
实验基本成功。
调试仿真结果如下:
1、当温度低于-50℃时,低温报警,发光二极管绿灯点亮,蜂鸣器发出报警声,仿真图如图14所示:
图14低温报警仿真图
2、当温度高于105℃时,高温报警,发光二极管红灯点亮,蜂鸣器发出报警声,仿真图如图15所示:
图15高温报警仿真图
3、当温度为0℃时,LED显示器应显示000.0℃,仿真图如图16所示:
图16温度为0℃时显示仿真图
六、课程设计体会
作为一名电气工程及其自动化专业的学生,我觉得做单片机课程设计是很有意义的,而且是很有必要的,在这次课程设计的过程中带给我们的影响很大,我们又一次的查阅大量的设计资料,每一步都有可能出现的问题,我们所做的就是迎接问题,改正错误,使自己的作品更加完善。
其次,在这次课程设计中,我们运用了以前学过的专业知识,如Protues仿真、汇编语言、C语言、模拟和数字电路的知识等。
虽然在电子技术大赛期间也曾独立运用过它们,但是在学习过程中带着问题去学习我发现效率很高,这就是在这次课程设计中的又一个收获。
最后,要做好一个课程设计,就必须做到在课程设计之前,对所用单片机的内部结构有一个系统的理解,知道该单片机有哪些资源:
要有一个清晰的思路和一个完整的软件电路图;
在程序设计时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路,要养成注释程序的好习惯,这样为资料的保留和交流提供了方便。
在今后的学习生活中,要牢记在实验中的经验教训,争取获得更大的进步。
七、参考文献
1、李雪莉、张岩.基于AVR单片机的多功能电源设计.现代电子技术.2009-09-01
2、吴亦锋、陈德为.单片机原理与接口技术.电子工业出版社.2010
3、北京赛亿凌科技有限公司.铂电阻温度传感器(pdf)..
4、赵继文.传感器与应用电路设计.科学出版社,2002
5、MCP60datas.
6、杨素行.模拟电子技术[M].高等教育出版社.2006
附录
源程序代码
//-------------------------------------------------------------------------------------
//名称:
用AD0808与单片机做数字温度计
#include<
reg51.h>
#defineuncharunsignedchar
#defineunintunsignedint
sbitST=P2^5;
//ADC0808引脚定义
sbitOE=P2^7;
sbitEOC=P2^6;
sbitCLK=P2^4;
sbitH_LED=P3^0;
//报警指示灯
sbitL_LED=P3^1;
sbitBEEP=P3^7;
//蜂鸣器
uncharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x80};
//数码管断码定义
uncharTemperature[]={0,0,0,0};
//待显示各温度数位
unchart=0;
uncharb,d,c;
//延时
//-------------------------------------------------------------------------------------
voidDelayMS(unintms)
{
unchari;
while(ms--)
for(i=0;
i<
120;
i++);
}
//显示函数
voidShow_Temperature()
{
unchari,DSY_IDX[]={0xF7,0xFB,0xFD,0xFE};
4;
i++)
{
P0=DSY_CODE[Temperature[i]];
if(i==1)
P0=DSY_CODE[Temperature[1]]|0x80;
P2&
=DSY_IDX[i];
DelayMS
(2);
P2|=0x0F;
}
voidShow_Temperature1()
if(i==3)
P0=0x40;
//--------------------------------------------------------------------------------------
//主程序
voidmain()
P0=0;
P0=P0|0x80;
IE=0x8a;
//允许T0、T1中断
TMOD=18;
//设置两个定时器的工作模式
TH0=245;
TL0=0;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
TR0=1;
//为ADC0808提供时钟
H_LED=L_LED=1;
while
(1)
{
ST=0;
ST=1;
ST=0;
//启动转换
if(EOC==1)
OE=1;
b=P1;
//读取A/D转换结果
OE=0;
if(b>
83)
{
intf=(int)(d*10);
d=b*0.66-55;
Temperature[3]=f/1000;
Temperature[2]=f%1000/100;
Temperature[1]=f%100/10;
Temperature[0]=f%10;
Show_Temperature();
}
else
intg=(int)(d*10);
d=256-d;
Temperature[3]=g/1000;
Temperature[2]=g%1000/100;
Temperature[1]=g%100/10;
Temperature[0]=g%10;
Show_Temperature1();
if(b<
7)//判断是否低于下限
TR1=1;
L_LED=!
H_LED;
if(d>
107)//判断是否高于上限
H_LED=!
L_LED;
TR1=0;
H_LED=L_LED=1;
break;
//----------------------------------------------------------------------------------------
//T0中断函数,为ADC0808提供时钟
voidTimer0_INT()interrupt1
CLK=!
CLK;
//T1中断
voidT1_INT()interrupt3
TL1=(65536-1000)%256;
BEEP=~BEEP;
//根据高温还是低温警报设定不同的时间间隔
if(L_LED==0)
{if(++t!
=110)return;
{if(--t!
=7)return;
t=0;
DelayMS(20);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 课程设计 报告