基于单片机的8路温度巡检仪的毕业设计.docx
- 文档编号:8155873
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:11
- 大小:162.85KB
基于单片机的8路温度巡检仪的毕业设计.docx
《基于单片机的8路温度巡检仪的毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的8路温度巡检仪的毕业设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于单片机的8路温度巡检仪的毕业设计
8路温度巡检仪
设计任务:
8路温度巡检仪可以测量0-300oC范围内的8路输入温度值,并能在5位LED数码管上轮流显示,最高位显示通道数。
测量最大分辨率为0.05oC。
方案确定:
8路温度巡检仪电路由A/D转换,多路数据选择,数据处理及显示控制组成。
电路原理图如图所示。
A/D采集由集成电路AD7705组成,数据选择开关由CD4051组成,地址线决定对哪一路进行数据转换.扩展的外围芯片采用串行接口芯片,使整个系统体积小,功耗低,有极好的可维护性和较强的抗干扰性能。
单片机晶振为12M,AD7705的时钟线接单片机的LAE端,它将产生2M的时钟。
单片机P0口为数码管的段码,P2口为位选。
P3.0为A/D数据输入端,采用串行通信的方式0进行数据的读入。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
系统硬件设计:
1、A/D采样模块:
在这一部分电路中,AD7705是用于低频测量系统的前端器件,它分辨率高,且有节电模式,能够满足高精度和低功耗的要求。
此外,AD7705片内还有数字滤波电路、校准电路和补偿电路,因而能更好地保证高精度的实现温度测量。
AD7705使用5V单电源,它有两个模拟差分输入通道,在电源为5V、参考电压为3.3V.AD7705可直接接收传感器产生的小信号以进行A/D转换并输出串行数字信号。
它采用Σ-Δ技术来实现16位A/D转换。
采样速率由MCLKIN端的主时钟和放大器的可变增益来决定。
实际上,AD7705同时可以对输入信号进行片内放大、调制转换和数字滤波处理。
其数字滤波器的阻带可编程控制,以便调节滤波器的截止频率和输出数据更新速率。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
关于AD7705基准电压的选择中,
为了测量的精度,没有直接将电源电压作为基准电压,而是选用专门的稳压集成芯片ASM1117.并且要进行去耦处理。
该模块的电路图如右图所示。
2、数据选择模块:
该系统选用的CD4051相当于一个单刀八掷开关,开关接通哪一通道,由输入的3位地址码ABC来决定。
“INH”是禁止端,当“INH”=1时,各通道均不接通。
此外,CD4051还设有另外一个电源端VEE,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的CMOS电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰-峰值达15V的交流信号。
例如,若模拟开关的供电电源VDD=+5V,VSS=0V,当VEE=-5V时,只要对此模拟开关施加0~5V的数字控制信号,就可控制幅度范围为-5V~+5V的模拟信号。
该系统选用两快CD4051,作为8路通道的选择,因为A/D7705的模拟输入是以差分信号的方式输入,所以将两块CD4051的地址线(,使输入的差分信号同时选通。
U3与U4的第3管脚分别接AD7705的模拟输入端。
该模块的具体电路图如下图所示,在实际应用中,为了使得它们的导通特性相同,要选择同一型号的CD4051.
3、数码管显示模块:
该系统用动态扫描的方式进行显示。
在硬件设计中将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
选亮数码管采用动态扫描显示。
动态扫描显示的原理是轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
该方案与静态显示相比,硬件电路比较复杂,成本较高。
动态显示模块电路图如下图所示.在该电路中选用限流电阻为330Ω,但一定要加上它,因为每一个段码的发光二极管所能承受的最大电流为10mA-20mA。
在电源电压为5V时,如果不加限流电阻,则流过发光二极管的电流会有几百毫安,这样很快会烧坏发光二极管。
还需要说明的一点是,该系统选用共阳极数码管,这样在段码控制端口(P0口)为低电平时数码管导通点亮。
为什么选用共阳极数码管呢?
因为51单片机中或者是其它的一些集成电路中,它的灌电流要大于其输出电流,所以要选用共阳极数码管,让P0口以灌电流的方式提供驱动电流,以提高驱动能力。
还需要特别说明的一点是,用端口不能直接去驱动每个数码管的位选端口,因为51单片机的每个端口只能提供20mA的电流,如果去驱动的话,会很快烧坏单片机的端口。
系统硬件电路图
系统软件设计:
程序设计思想是首先上电/复位AD7705,配置AT89C51单片机的串行接口,然后将AD7705的通道1原始化,留心读写数据之前必须调用重新排序子程序。
查询DRDY引脚,如果为低电平,则读通道数据寄存器,把数据转化为温度值,再调显示子程序,调延时,返回,继续采集数据,查询DRDY,显示,直到结束。
主函数
系统上电后,对AD7705进行初始化。
然后调用显示子函数和A/D转换测量子函数进入循环,系统默认依次循环显示8个通道的电压值,每个通道的数据显示时间在0.5s左右,温度测量的周期为4s。
主函数执行流程图如图()所示。
主程序流程图
显示子函数
显示功能采用动态扫描法实现5为数码管的数值显示。
测量所得的A/D转换数据放在8个定义的ad_data[8]内存单元中,测量所得的A/D数据在在显示时需经过转换变成十进制BCD码。
列扫描采用扫描字代码,每位LED显示时间为1ms,每路温度数据显示时间为0.5秒。
模/数转换测量子函数
模/数(A/D)转换测量子函数用来控制对AD7705和CD4051的八路模拟输入的微小信号进行A/D转换并将对应的数值移入内存单元。
程序流程图如图所示。
Y
N
A/D转换测量子函数流程图
程序清单:
#include
#defineAddr_channelP1//八路通道地址端口
typedefunsignedcharuchar;//用关键字宏定义,其效率高
typedefunsignedintuint;
sbitDRDY=P3^2;
sbitDP=P0^7;
/***********内存单元定义*************/
//code以节省内存单元
ucharcodeseg7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9段码译码数组
ucharcodescan_con[5]={0xef,0xf7,0xfb,0xfd,0xfe};//4位列扫描控制字0xfe,0xfd,0xfb,0xf7,0xef
uintdataad_data[8]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};//8个通道AD数据内存单元
uint_dataad_data_buff[3]={0x0000,0x0000,0x0000};
uchardatadis[5]={0x00,0x00,0x00,0x00,0x00};//4个显示单元和1个数据存储单元
/************延时1ms函数*******************/
//减运算以节省代码存储空间
voiddelay1ms(uintt)
{
uinti,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);
}
/*******对八位数据进行倒序处理函数*******/
ucharreverse_order(ucharold_dat)
{
uchari,new_dat;
new_dat=old_dat&0x01;//取要转换数据最底位
for(i=0;i<7;i++)
{
new_dat<<=1;//将最低位左移一次
old_dat>>=1;//数据的第二位移到最底位
new_dat|=(old_dat&0x01);
}
returnnew_dat;
}
/***********向AD7705写一个字节的数据******************/
voidWrite_AD_reg(uchardat)
{
SBUF=dat;
while(!
TI);//等待发送完成
TI=0;
}
/********从AD7705读出两个字节的数据,AD转换值*******/
//返回值为unsignedint类型
uintRead_AD_reg()
{
ucharlow8,high8;
uintAD_out;
SCON=0x00;
Write_AD_reg(0x1C);//读数据通道0x38
while(DRDY);//为低电平时读取数据
REN=1;//接收使能
while(!
RI);//等待接收完
RI=0;
high8=SBUF;
while(!
RI);
RI=0;
low8=SBUF;
REN=0;
high8=reverse_order(high8);//对读回的高8位倒序
low8=reverse_order(low8);
AD_out=high8;
AD_out<<=8;
AD_out|=low8;
returnAD_out;
}
/************对AD7705初始化*****************/
voidAD_Init(void)//用串行数据输入时一定要将数据进行倒序处理
{
Write_AD_reg(0X04);//写0X20到通信寄存器,选择通道ANI(+)和ANI(-),下一个寄存器指向时钟寄存器。
.倒序:
0X04
Write_AD_reg(0X30);//写0X0C到时钟寄存器,接2M时钟,时钟二分频,输出跟新率50Hz.倒序:
0X30
Write_AD_reg(0x08);//写0x10到通信寄存器,到通信寄存器,下一个寄存器指向设置寄存器.倒序:
0X08
//Write_AD_reg(0x62);//写0x46到设置寄存器,自动校准,单极性,gain=1;缓冲模式,FASYNC=0.倒序:
0X62
//Write_AD_reg(0x6E);//写0x76到设置寄存器,自动校准,单极性,gain=64;缓冲模式,FASYNC=0.倒序:
0X6E
Write_AD_reg(0x76);//写0x6e到设置寄存器,自动校准,单极性,gain=32;缓冲模式,FASYNC=0.倒序:
0X76
}
/************温度采样函数*****************/
voidAD_samp(void)
{
uchari,m,n;
ucharj=0;
intk;
Addr_channel=j;
for(i=0;i<8;i++)
{
ad_data_buff[0]=Read_AD_reg();//在此也可以做中值滤波处理
ad_data_buff[1]=Read_AD_reg();
ad_data_buff[2]=Read_AD_reg();
for(m=0;m<3;m++)
{
for(n=0;n<3-m;n++)
if(ad_data_buff[n]>value_buf[n+1]){k=ad_data_buff[n];ad_data_buff[n]=ad_data_buff[n+1];value_buf[n+1]=k;}
}
ad_data[i]=ad_data_buff[1];//使模拟开关选通可靠,起延时的作用
j++;
Addr_channel=j;
}
Addr_channel=0x00;
}
/************显示处理函数*****************/
voiddisplay(void)
{
ucharm,n;
floath;
uinta,k,d;
dis[4]=0x01;//通道初值为0
for(m=0;m<8;m++)
{
h=ad_data[m]/65535.0;
k=h*300;
dis[3]=k/100;//对温度值取百位数
dis[2]=k/10%10;//对温度值取十位数
dis[1]=k%10;//对温度值取个位数
d=h*30000+5;//对温度小数部分的百分位四舍五入以精确到小数点后一位
dis[0]=d/10%10;//取温度扩大100倍四舍五入后的十位数
for(a=0;a<50;a++)
{
for(n=0;n<5;n++)
{
P0=seg7[dis[n]];//P0为数码管段选端口
if(n==1){DP=0;}//显示小数点
P2=scan_con[n];
delay1ms(5);//稳定显示
P2=0xff;//确保下次写数据正确
}
}//通道加1
dis[4]++;
}
}
voidmain(void)
{
Addr_channel=0x00;//通道地址初始为0
AD_Init();
SCON=0X00;//串口初始化
while
(1)
{
AD_samp();
display();
}
}
注意事项:
1、对AD7705用串行0方式写入和读出数据时要对数据进行倒序处理。
2、对AD7705用串行0方式写入和读出数据时对DIN和DOUT的引脚需接上拉电阻。
补充说明:
1、该程序并非是最优程序,若要对八路的温度进行闭环控制或完成其它任务时,改程序的效率就很差了。
这样就不易利用动态显示的方案。
可以采用max7219进行数码管的显示;
2、该系统将温度传感器PT100接入电桥电路经过变换,将其变为0-51.6mv,然后通过内部增益设置,其增益为32.而在300oC时PT100的阻值为212.02Ω(查PT100的分度表可知);
3、在实际应用中还需调试。
4、若有不用的输入端时,对不用的输入端接地。
避免读出错误的数据。
5、选用同一公司的CD4051
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 巡检 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)