找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6510|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机LM35温度检测与控制系统程序与电路整体方案设计

[复制链接]
跳转到指定楼层
楼主
ID:541429 发表于 2019-5-18 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本系统由单片机开发板AT89C51、集成温度传感器、连续渐进式A/D转换器ADC0804、运放LM324等元器件组成,采用 Protues 软件进行模拟电路仿真,完成模拟信号调理,通过51 单片机(内置 ADC)采集温度信号,最后通过数码管显示温度数值。
在基本要求实验中,采用的技术指标是①温度测试范围:0℃~110℃② 温度测试精度:±2℃③ 温度测试分辨率:0.2℃④ 温度显示方式:4 位数码管显示,第 1 位数码管显示符号(零下温度显示“—”号,零上及低于100℃不显示)第 2 位数码管显示温度的十位数值,第 3 位数码管显示温度的个位数值及小数点,第 4 位数码管显示温度测量值的小数点后第一位数值。
在提高实验中,采用了以下技术指标① 温度控制数值可在 40℃~70℃之间设置② 温度控制精度:±1℃③ 研究合适的温度控制算法。
② 温度测试精度:±2℃
③ 温度测试分辨率:0.2℃
④ 温度显示方式:4 位数码管显示,第1位数码管显示符号(零下温度显示“—”号,零上及低于100℃不显示),第2位数码管显示温度的十位数值,第3位数码管显示温度的个位数值及小数点,第4位数码管显示温度测量值的小数点后第一位数值。
2 、提高要求
(1)功能要求
① 实现温度自动控制功能,具有温度检测和温度控制两种工作状态,并可手动切换工作状态;
②对象温度控制:可通过单片机控制加热器进行温度自动调节,并可设置和显示温度恒定数值,控制对象为大功率电阻;
(2)技术指标
① 温度控制数值可在 40℃~70℃之间设置
② 温度控制精度:±1℃
③ 研究合适的温度控制算法。
1.2 设计要求
1.根据设计任务设计几种实现方案,经比较从中优选确定一种实现方案。
2.说明所选电路的组成及工作原理,并绘出原理框图。
3.设计各单元电路,计算元器件参数并选择元器件类别型号。
4.画出实际电路图,并用 Protues 软件进行电路仿真。
5.列出元器件清单。
6.组装并调试方案电路,记录调试步骤及结果。
7.设计单片机程序,完成数据采集、处理和显示。
8.对电路功能及技术指标进行测试,记录测试数据。


1.3 限定条件

1.模拟电路电源:+5V
2.单片机开发软件:Keil UV3 v8.02
3.电路仿真软件:Proteus
4.主要器件:
(1)温度传感器:LM35
(2)运放:LM324
(3)单片机模块:AT89C51单片机模块
5.除单片机模块外,其它电路在一块万用板上焊接好并调试正常,通过杜邦头跳线与单片机模块连接。传感器通过杜邦头跳线与电路板连接,集成电路使用插座实现引脚连接。


2.2 温度测量与温度传感器

温度测量方法可分为接触式和非接触式两类,接触式的测温方法是基于物体的热交换现象。选定某一测温器,与被测物体相接触,进行充分的热交换,待两者温度一致时,测温器输出的大小即反映被测温度的高低。接触式测温的优点是简单、可靠、测量精度高;缺点是测温时有较大的滞后,对运动物体测温较困难,测温器易影响被测对象的温度场分布,测温上限受到测温器件材料性质的限制,故所测温度不能太高。
温度传感器是把温度转换为电量的测温器。常用的温度传感器有:金属热电阻和半导体热敏电阻、热电偶、PN 结型传感器和集成温度传感器、石英晶体温度传感器、涡流式温度传感器、电容式温度传感器等。
采用集成温度传感器测量温度,具有省电、体积小、线性好、成本低等优点,而且能满足一般测温工作(-50℃~+150℃)的需要,本设计使用集成温度传感器,型号为 LM35。
传感器使用说明见附件 1:《LM35 数据手册》。
2.3 模拟信号调理

1.调零与调满度
半导体温度传感器有一个共同的特点,即其输出电压或电流与绝对温度成正比或线性关系。因为常用的温标为摄氏温度,而且为便于测量,希望在 0℃(传感器插入冰水中)时,测温电路输出显示为 0,在100℃(传感器插入沸水中)时,测温电路输出显示为 100。因此,半导体测温电路中需要设计调零电路和调满度(也称调灵敏度)电路。
2.放大与电平平移
模拟传感器输出的信号通常为非标准双极性或单极性小信号,为实现数据采集,需适应 A/D 转换器输入电平要求,因此要对模拟信号进行放大和电平平移。

2.4 模拟信号 A/D 转换

模拟信号需经 A/D 转换后,才能被采集到单片机中,完成后续的处理。

2.5 数码管显示

4 位数码管显示,电路设计参考硬件资料。
2. 电路调试过程
   ① 通过实验所给的信息和所学可以画出模拟实验电路图
  ②通过实验给的例程,实验要求以及所学的程序语言来完成实验程序,使其使程序无错误,并让电路图能够正常的运行。
   ③将程序编译运行后产生的hex文件导入proteus的程序中,打开电路开关,调节温度感应器的旋钮,并观察数码管的示数,让这两个示数的误差在±1℃之间。
5.2 实验调试过程
    若实验中温度感应器和数码管的示数之差过大,就可以通过调节电路图中的电阻阻值和电容值来调整实验电路图,使其满足实验要求。同时也可以调节实验程序来调节实验电路图,最后让其满足实验要求。
5.3 测量误差分析
     温度感应器和数码管之差误差过大,有以下原因:
1. 在模拟信号A/D转换过程中,对电阻阻值设计不合理,也就会导致示数误差过大。
2. 在ADC0804芯片的设计里,连接的电阻的电容的示数发生改变也就会导致示数存在误差过大。
3. 设计的程序代码中存在这失误,也就会导致误差过大。

结束语

  在本次综合电子实验中,我独立的完成了整个基本功能实验,这提高了我的实验动手能力,让我对这门有了深刻的了解,这次实验使我了解和掌握电子设计的方法和步骤,能够综合所学的理论知识提出设计方案并加以论证,并掌握系统方案的设计方法。能培养我独立分析问题、解决问题的能力。同时掌握了传感器检测、模拟信号调理、数据采集等技术的设计和实验方法。能够掌握单片机系统的软硬件工作原理及设计、调试方法, 我也学习了如何使用电子设计、仿真软件进行电路辅助设计,并正确绘制电路图,学习电路的实验调试和测试方法,提高实践能力。
在这次实验中,我也发现了自己的不足,自己缺少动手能力,对电路基础知识理解不深刻,总是犯一些低级失误,我也非常感谢老师和同学们对我的指导,让我对整个实验有了深刻的了解,让我完成了实验。
这次基本实验的不足是电路元器件的精确度和灵敏度较弱,使其在实验测试过程中出现了较大误差,动手能力较弱。也希望自己在接下来的学习生活中有和更大的进步。

基本实验电路图

表2. 软件模块清单

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit wr=P3^6;
  5. sbit rd=P3^7;
  6. sbit cs=P3^5;
  7. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管码表
  8. uchar s,g,f,l,x;//数码管显示变量
  9. float A;






  10. uint K;
  11. void delay(uint);
  12. void adc();
  13. void adc()
  14. {
  15.    //启动ADC0804采样//   
  16.   cs=0;wr=0;rd=1;
  17.    delay(50);
  18.    cs=1;wr=1;rd=1; //WR由低到高时,AD开始转换
  19.    delay(100);
  20.    //读AD数值//
  21.    cs=0;wr=1;rd=0;//读取转换数据结果
  22.    delay(50);
  23.    A=P1;//P1的新数据赋值给adval,用于数码管显示的s g f的分离
  24.     A=A*144/256;
  25.    K=P1*144/256;
  26.    cs=1;wr=1;rd=1;//停止AD读取
  27. }
  28. void main()
  29. {
  30. uint s,g,f,l,x;
  31.   while(1)
  32.     {
  33.        adc();
  34.       
  35.     s=K/10;
  36.     l=s/10;
  37.     x=s%10;
  38.     g=K%10;
  39.     f=(A-K)*10;
  40.     P2=0XFE; //11111110 选中十位数码管
  41.     P0=tab[l]; //显示
  42.     delay(50);
  43.      P2=0XFD; //11111110 选中十位数码管
  44.     P0=tab[x]; //显示
  45.     delay(50);
  46.     P2=0XFB; //11111101 选中个位数码管
  47.     P0=tab[g]+0x80; //显示
  48.     delay(50);      
  49.    



  50. P2=0XF7;//11111011 选中小数点后数码管
  51.     P0=tab[f]; //显示
  52.     delay(50);
  53.     }
  54. }
  55. void delay(uint m)//延时子程序,约500个机器周期
  56. {
  57.     while(m--);}
复制代码


以上图文的Word格式文档下载(内容和本网页上的一模一样,方便大家保存):
综合电子设计报告.docx (901.39 KB, 下载次数: 131)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:825367 发表于 2020-12-18 20:56 | 只看该作者
不错的东西有工程文件吗
回复

使用道具 举报

板凳
ID:915252 发表于 2021-5-3 14:53 | 只看该作者
为什么我的数码管显示的数值不会改变
回复

使用道具 举报

地板
ID:1018572 发表于 2022-4-16 11:06 | 只看该作者
楼主,有源代码吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表