任务实施
一、任务分析
因为LM35的输出电压是毫伏级,而ADC0808的输入电压范围为0~5 V,虽然在ADC0808的电压允许范围内,但电压信号较弱,直接进行模数转换会导致数字量太小、精度低等问题,因此需要经过放大后再输入到ADC0808进行转换。LM35的输出电压范围为0~0.8 V,放大5倍后,输出电压为0~4 V,在ADC0808的输入电压范围0~5 V内,LM35温度传感器的测温范围为0~80 ℃,完全可以满足日常生活的需要,所以设计放大倍数为5倍。
二、程序设计
程序执行流程图如图8-1-5所示。
参考程序:
#include<reg51.h>
#include<math.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define DATA_PORT P1 //定义宏变量DTAT_POTR来存放P1端口的数据
unsigned char temp[10]={'0','0','.','0','C'}; //定义字符数组 temp 来装温度
unsigned char array[16]="temperature:"; //定义字符数组array来装字符串
unsigned int frt,scn;
sbit RS = P2^0;
sbit LCDRW = P2^1;
sbit EN = P2^2;
sbit START = P2^3;
sbit ALE = P2^4;
sbit EOC = P2^5;
sbit OE = P2^6;
sbit clk = P2^7;
(https://www.daowen.com)

图8-1-5 程序流程图



三、电路仿真
1.绘制电路图
启动Proteus软件,创建“LM35”文件,放置元器件,所需元件见表8-1-2。把所需元器件放置完后,连接电路,完成后的电路图如图8-1-6所示。
2.编写程序
打开Keil软件,新建“LM35ADC0808”工程文件,新建“LM35adc0808.c”文件,编写程序,并生成LM35adc0808.hex文件。编写完成后的部分程序如图8-1-7所示。
表8-1-2 元件清单


图8-1-6 绘制电路图

图8-1-7 编写程序
3.电路仿真
双击“AT89C51”元件,打开“编辑元件”对话框,可以直接在“Clock Frequency”后进行频率设定,设定单片机的时钟频率为12 MHz。在“Program File”栏中选择已经生成的“LM35adc0808.hex”文件,导入单片机中,然后单击“确定”按钮保存,单击“仿真”按钮进行单片机的仿真,仿真结果如图8-1-8所示。

仿真视频

图8-1-8 仿真结果
仿真结果显示:当LM35模拟温度传感器的温度调到50.0 ℃时,1602显示模块将在第一行显示“temperature:”,第二行第七个字符处开始显示50.1 ℃,基本达到设计要求。