找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LM35+ADC0809使用51单片机制作温度显示(问题解决)

  [复制链接]
跳转到指定楼层
楼主
本帖最后由 hslcac 于 2021-9-16 21:20 编辑

学习调试过程中,单独显示输入没问题,关键的ADC0809的数据不显示,请帮忙看一下哪里除了问题,谢谢。问题已经解决,谢谢各位老师指点,谢谢,后面附完成后的程序
  1. //以下为程序
  2. //#include <STC89C5xRC.H>
  3. #include <reg52.h>
  4. #include"LM35LCD1602.h"

  5. //ADC0809相关引脚定义
  6. //===========================
  7. #define ADC_DATA P1
  8. sbit ADC_EOC = P3^3;              
  9. sbit ADC_CLK = P3^4;               
  10. sbit ADC_START = P3^6;            
  11. sbit ADC_OE = P3^7;  

  12. //===========================
  13. //警报:LED与蜂鸣器引脚
  14. //===========================
  15. //sbit BEEP = P3^5; //高电平响
  16. //===========================
  17. //粗略延时函数  AT89C51 & 12MHz
  18. //===========================
  19. void delayms(unsigned int ms)
  20. {                    
  21.          unsigned char a,b,c;
  22.          while(ms--)
  23.          {
  24.             for(c=1;c>0;c--)
  25.                for(b=142;b>0;b--)
  26.                   for(a=2;a>0;a--);
  27.          }
  28. }

  29. //===========================
  30. //定时器初始化,配置ADC0809时钟
  31. //===========================
  32. void timer_init(void)
  33. {
  34.          //配置定时器0
  35.         ET0 = 1;
  36.         TMOD &= 0xF0;
  37.         TMOD |= 0x02;                //定时器0,模式2,自动重装定时器
  38.         TH0 = 200;                        //自动重装值
  39.         TL0 = 200;
  40.         TR0 = 1;                        //配置定时器1
  41.         ET1 = 1;
  42.         TMOD &= 0x0F;                //清除定时器1配置,不改动定时器0的配置
  43.         TMOD |= 0x10;                        //定时器1模式一,不改动定时器0的模式
  44.         TH1 = (65536 - 2000)/256;
  45.         TL1 = (65536 - 2000)%256;
  46.         TR1 = 1;
  47.         EA = 1;
  48. }
  49. //===========================
  50. //定时器0中断,为ADC0809提供时钟信号
  51. //===========================

  52. void timer0() interrupt 1
  53. {
  54.          ADC_CLK = ~ADC_CLK;
  55. }

  56. //============================
  57. //ADC0809 转换函数
  58. //============================

  59. uchar ADC0809_GET(void)
  60. {
  61.          ADC_START = 0;
  62.          ADC_OE = 0;
  63.          ADC_START = 1;
  64.          ADC_START = 0;
  65.          while(ADC_EOC == 0);
  66.          ADC_OE = 1;
  67.          return ADC_DATA;
  68. }

  69. uchar t1_flag = 0;                //用于标记显示第几位数码管
  70. uchar seg0 = 0;                //第0位数码管的值        
  71. uchar seg1 = 1;                //第1位数码管的值        
  72. uchar seg2 = 2;                //第2位数码管的值        
  73. uchar seg3 = 3;                //第3位数码管的值        

  74. //============================
  75. //显示电压值,输入0~255,显示0.000~5.000
  76. //============================
  77. uint print_volt(uchar num)
  78. {
  79.          uint volt = 0;
  80.          volt = num/255.0 * 5000 + 0.5;        //除255.0和除255有很大区别,除255.0会自动转换为float型,小数才能保持,而volt/255=0,+0.5四舍五入。
  81.          seg0 = volt/1000%10;
  82.          seg1 = volt/100%10;
  83.          seg2 = volt/10%10;
  84.          seg3 = volt%10;
  85.          return volt;
  86. }

  87. //============================
  88. //主函数
  89. //============================
  90. void main(void)
  91. {
  92.             uchar adc_num = 0;                //ADC采集到的值
  93.         uint volt = 0;                                        //电压值 0~5000,代表(0~5)V
  94.          lcd_init();
  95.                 lcd_wcom(0x80+0x0f);
  96.                 lcd_wdat(0xc3);//*"1",0*/
  97.                 lcd_wcom(0x80+0x0d);
  98.                 lcd_wdat(0xdf);//*"1",0*/
  99.                 lcd_wcom(0x80+0x0e);
  100.                 lcd_wdat(0x43);//*"1",0*/
  101.         timer_init();                                        //定时器0、定时器1初始化。

  102.          while(1)
  103.          {
  104.                  adc_num = ADC0809_GET();
  105.                  volt = print_volt(adc_num);                        //在数码管上显示电压值,并返回一个0~5000的值,用于判断是否要报警。
  106.             lcd_wcom(0x80+0x09);lcd_wdat(volt);
  107.                         lcd_wcom(0x80+0x0A);lcd_wdat(seg1);
  108.                         lcd_wcom(0x80+0x4A);lcd_wdat(seg2);
  109.                         lcd_wcom(0x80+0x4B);lcd_wdat(seg3);

  110.                  delayms(100);
  111.          }
  112. }

  113. //LCD1602显示程序


  114. /*------------------------------------*/
  115. #ifndef __LCD1602_H__
  116. #define __LCD1602_H__

  117. //#include"delay.h"
  118. #define uint unsigned int                //预定义
  119. #define uchar unsigned char

  120. sbit rs=P2^5;        //1602的数据/指令选择控制线?
  121. sbit rw=P2^6;         //1602的读写控制线?
  122. sbit en=P2^7;        //1602的使能控制线?
  123. /*P0口接1602的D0~D7*/

  124. //uchar h1,h2,h3,h4;//LCD显示变量
  125. //uchar table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};                 //要显示的内容放入数组table
  126. //uchar table1[43]="0123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZ";
  127. //uchar table2[]={0x15,0x0A,0x15,0x0A,0x15,0x0A,0x15,0x0A};
  128. //uchar table3[]=".VAWa";
  129. //uchar table3[]="8888888888";
  130. //uchar code table[]="I LIKE MCU!";
  131. void delayZ(uint n)                 //延时函数
  132. {        
  133.         uint x,y;        
  134.         for(x=n;x>0;x--)        
  135.                 for(y=110;y>0;y--);        
  136. }
  137. //void tablex(uint tab1);        

  138.         
  139. void lcd_wcom(uchar com)        //1602写命令函数
  140. {        
  141.         rs=0;        //选择指令寄存器?
  142.         rw=0;        //选择写?
  143.         P0=com;        //把命令字送入P0?
  144.         delayZ(5);        //延时一小会儿,让1602准备接收数据?
  145.         en=1;         //使能线电平变化,命令送入1602的8位数据口?
  146.         en=0;//        
  147. }        
  148. void lcd_wdat(uchar dat)        //1602写数据函数
  149. {        
  150.         rs=1;        //选择数据寄存器?
  151.         rw=0;        //选择写
  152.         P0=dat;        //把要显示的数据送入P2
  153.         delayZ(5);        //延时一小会儿,让1602准备接收数据
  154.         en=1;        //使能线电平变化,数据送入1602的8位数据口
  155.         en=0;        
  156. }        
  157. void lcd_init()                //1602初始化函数
  158. {        
  159.         lcd_wcom(0x38);                //8位数据,双列,5*7字形
  160.         lcd_wcom(0x0c);         //开启显示屏,关光标,光标不闪烁?
  161.         lcd_wcom(0x06);                //显示地址递增,即写一个数据后,显示位置右移一位
  162.         lcd_wcom(0x01);         //清屏?
  163. }
  164. /************
  165. void tablex(uint tab1)//数据分解
  166. {
  167.         uchar num;
  168.         h1=tab1/1000;//1023//1
  169.         h2=tab1%1000/100;//023//0
  170.         h3=tab1%100/10;//23//2
  171.         h4=tab1%10;//3
  172. }

  173. for(num=0;num<11;num++)
  174.                                 {
  175.                                         write_date(table[num]);           //a//写数据write_date(0x31); write_date('1');
  176.                                         delay(200);
  177.                         //                write_date('B');
  178.                                 }
  179. ****************/


  180. /*------------------------------------*/
  181. /*--------------------------------------------------------------*/
  182. #endif

  183.         

复制代码

lALPDh0cQirwNNLNAdvNAog_648_475.png (37.75 KB, 下载次数: 157)

有需要制版的我发给你

有需要制版的我发给你

lADPDhmOw4Yj78zNA8DNBQA_1280_960.jpg (45.58 KB, 下载次数: 153)

打样后制作显示ADC没有数据

打样后制作显示ADC没有数据

LM35温度测试程序.rar

42.9 KB, 下载次数: 30

程序与电路图

评分

参与人数 1黑币 +50 收起 理由
admin + 50

查看全部评分

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

使用道具 举报

沙发
ID:89072 发表于 2021-9-13 19:16 | 只看该作者
本帖最后由 hslcac 于 2021-9-13 19:58 编辑

有需要图纸打样的告诉我发给你,现在经过调试显示乱码,郁闷,请帮我看看,谢谢

lADPDgQ9y6mz5p3NA8DNBQA_1280_960.jpg (70.78 KB, 下载次数: 162)

lADPDgQ9y6mz5p3NA8DNBQA_1280_960.jpg

lALPDgfLSk5e1CfNAfzNAg8_527_508.png (35.49 KB, 下载次数: 170)

lALPDgfLSk5e1CfNAfzNAg8_527_508.png
回复

使用道具 举报

板凳
ID:752974 发表于 2021-9-14 08:28 | 只看该作者
显示不显示和0809无关,问题可能出现在数据处理上,仔细检查0809后的数据处理过程。
回复

使用道具 举报

地板
ID:89072 发表于 2021-9-14 09:36 | 只看该作者
munuc_w 发表于 2021-9-14 08:28
显示不显示和0809无关,问题可能出现在数据处理上,仔细检查0809后的数据处理过程。

出现乱码是不是0809数据错误啊
回复

使用道具 举报

5#
ID:161164 发表于 2021-9-14 11:20 | 只看该作者
经过半天排查
发现是你初始化了定时器1但又没有相应的中断函数
结果在定时器1第一次溢出后单片机就当机了
应加上
void timer1() interrupt 3
{
}

另外,LCD1602要显示字符,lcd_wdat();的形参要以ASCII值输入
lcd_wdat(volt);//自己想一下怎样改
lcd_wdat(seg1);>>>>>>>>>>>>lcd_wdat('0'+seg1);
lcd_wdat(seg2);>>>>>>>>>>>>lcd_wdat('0'+seg2);
lcd_wdat(seg3);>>>>>>>>>>>>lcd_wdat('0'+seg3);
回复

使用道具 举报

6#
ID:123289 发表于 2021-9-14 15:04 | 只看该作者
1、显示程序:应能显示某个变量于LED上,如A3。
2、采样程序:应能将采样的数值,转换成温度,再放入A3中。
做到以上两点不就OK了吗?有什么难度呢?
回复

使用道具 举报

7#
ID:89072 发表于 2021-9-15 09:13 | 只看该作者
lkc8210 发表于 2021-9-14 11:20
经过半天排查
发现是你初始化了定时器1但又没有相应的中断函数
结果在定时器1第一次溢出后单片机就当机了 ...

非常感谢,开始测试使用的中断刷新显示,调试后放在主函数内做显示,我再改一下试试。
回复

使用道具 举报

8#
ID:89072 发表于 2021-9-15 09:14 | 只看该作者
yzwzfyz 发表于 2021-9-14 15:04
1、显示程序:应能显示某个变量于LED上,如A3。
2、采样程序:应能将采样的数值,转换成温度,再放入A3中 ...

谢谢指导,我按您的办法试试。
回复

使用道具 举报

9#
ID:89072 发表于 2021-9-15 19:56 | 只看该作者
  1. //主程序
  2. //#include <STC89C5xRC.H>
  3. #include <reg52.h>
  4. #include"LM35LCD1602.h"

  5. #define ADC_DATA P1
  6. uchar Temp;
  7. uchar ggao[]="0123456789";
  8. uchar volt_data[]="volt:000.00v";

  9. uchar t1_flag = 0;                //用于标记显示第几位数码管
  10. uchar seg0 = 0;                //第0位数码管的值        
  11. uchar seg1 = 1;                //第1位数码管的值        
  12. uchar seg2 = 2;                //第2位数码管的值        
  13. uchar seg3 = 3;                //第3位数码管的值        
  14.                                                   //处理后的数据
  15. sbit  ADC_EOC = P3^3;              
  16. sbit  ADC_CLK = P3^4;               
  17. sbit  ADC_START = P3^6;            
  18. sbit  ADC_OE  = P3^7;  

  19. //*********************************************************************************
  20. //函数名:Delay
  21. //函数功能:软件延时函数
  22. //形式参数:uint i
  23. //*********************************************************************************
  24. void delayms(unsigned int ms)
  25. {                    
  26.          unsigned char a,b,c;
  27.          while(ms--)
  28.          {
  29.             for(c=1;c>0;c--)
  30.                for(b=142;b>0;b--)
  31.                   for(a=2;a>0;a--);
  32.          }
  33. }
  34. //===========================
  35. //定时器初始化,配置ADC0809时钟
  36. //===========================
  37. void timer_init(void)
  38. {
  39.          //配置定时器0
  40.         ET0 = 1;
  41.         TMOD &= 0xF0;
  42.         TMOD |= 0x02;                //定时器0,模式2,自动重装定时器
  43.         TH0 = 200;                        //自动重装值
  44.         TL0 = 200;
  45.         TR0 = 1;                        //配置定时器1
  46.         ET1 = 1;
  47.         TMOD &= 0x0F;                //清除定时器1配置,不改动定时器0的配置
  48.         TMOD |= 0x10;                        //定时器1模式一,不改动定时器0的模式
  49.         TH1 = (65536 - 2000)/256;
  50.         TL1 = (65536 - 2000)%256;
  51.         TR1 = 1;
  52.         EA = 1;
  53. }
  54. //============================
  55. //ADC0809 转换函数
  56. //============================

  57. uchar ADC0809_GET(void)
  58. {
  59.          ADC_START = 0;
  60.          ADC_OE = 0;
  61.          ADC_START = 1;
  62.          ADC_START = 0;
  63.          while(ADC_EOC == 0);
  64.          ADC_OE = 1;
  65.          return ADC_DATA;
  66. }
  67. /********************

  68. **********************/
  69. void timer0() interrupt 1
  70. {
  71.          ADC_CLK = ~ADC_CLK;
  72. }

  73. /********************************************  
  74. void timer1() interrupt 3
  75. {
  76.         TH1 = (65536 - 2000)/256;
  77.         TL1 = (65536 - 2000)%256;  
  78.      
  79.         if(t1_flag == 0)
  80.                 {
  81.                         lcd_wcom(0x80+0x01);lcd_wdat(ggao[seg0]);               ////选通第0位
  82.         }
  83.                 else if(t1_flag == 1)
  84.                 {
  85.                         lcd_wcom(0x80+0x02);lcd_wdat(volt_data[seg1]);
  86.          }
  87.          else if(t1_flag == 2)
  88.          {
  89.                         lcd_wcom(0x80+0x03);lcd_wdat(ggao[seg2]);
  90.          }
  91.          else if(t1_flag == 3)
  92.          {
  93.                         lcd_wcom(0x80+0x04);lcd_wdat(ggao[seg3]);               //选通第3位数码管
  94.         }

  95.          t1_flag++;                                //自加1
  96.          t1_flag =  t1_flag%4;                //让t1_flag 在0和3之间循环
  97. }
  98. *********************************************************/
  99. //============================
  100. //显示电压值,输入0~255,显示0.000~5.000
  101. //============================
  102. uint Display_volt()
  103. {
  104.         uchar num,Temp;// = 0;                //ADC采集到的值
  105.         Temp= ADC0809_GET;
  106.         num=(Temp*1.0/255*5)*100; //数据处理:输出值=输入值*5/255  参数5是基准电压5V
  107.         volt_data[10]=num%10+48;                  //取处理后的数据个位,对应显示温度值的小数2位
  108.         volt_data[9]=num/10%10+48;         //取处理后的数据十位,对应显示温度值的小数1位
  109.         volt_data[7]=num/100%10+48;        //取处理后的数据百位,对应显示温度值的个位
  110.         volt_data[6]=num/1000;          //取处理后的数据千位,对应显示温度值的十位
  111.         wsrt(0xc0,volt_data);
  112.         return num;

  113. }
  114. /*************
  115. uint print_volt(uchar num)
  116. {
  117.                 uchar volt = 0;
  118.                 volt = num/255.0 * 5000 + 0.5;        //除255.0和除255有很大区别,除255.0会自动转换为float型,小数才能保持,而volt/255=0,+0.5四舍五入。
  119.          seg0 = volt/1000%10;
  120.          seg1 = volt/100%10;
  121.          seg2 = volt/10%10;
  122.          seg3 = volt%10;
  123.          return volt;
  124. }
  125. *****************/
  126. //============================
  127. //主函数
  128. //============================
  129. void main()
  130. {
  131.         uint volt = 0;                                        //电压值 0~5000,代表(0~5)V
  132.          lcd_init();
  133.                  wsrt(0x80,ggao);
  134.                 lcd_wcom(0x80+0x0f);lcd_wdat(0xc3);//*"1",0*/
  135.                 lcd_wcom(0x80+0x0d);
  136.                 lcd_wdat(0xdf);//*"1",0*/
  137.                 lcd_wcom(0x80+0x0e);
  138.                 lcd_wdat(0x43);//*"1",0*/
  139.         timer_init();                                        //定时器0、定时器1初始化。

  140. /**********************
  141.         uchar adc_num = 0;                //ADC采集到的值
  142.     uint volt = 0;
  143.         timer_init();
  144.         lcd_init();
  145.         lcd_wcom(0x38);
  146.         lcd_wcom(0x0c);
  147.         lcd_wcom(0x06);
  148. **************************/
  149. while(1)
  150.         {
  151.                                  

  152.                 Display_volt();
  153.             delayms(5);
  154.         }
  155. }


  156. //LCD程序


  157. /*------------------------------------*/
  158. #ifndef __LCD1602_H__
  159. #define __LCD1602_H__

  160. //#include"delay.h"
  161. #define uint unsigned int                //预定义
  162. #define uchar unsigned char

  163. sbit rs=P2^5;        //1602/定义数据/命令选择端
  164. sbit rw=P2^6;         //定义读/写选择端
  165. sbit en=P2^7;        //定义使能端
  166. /*P0口接1602的D0~D7*/

  167. //uchar h1,h2,h3,h4;//LCD显示变量
  168. //uchar table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};                 //要显示的内容放入数组table
  169. //uchar table1[43]="0123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZ";
  170. //uchar table2[]={0x15,0x0A,0x15,0x0A,0x15,0x0A,0x15,0x0A};
  171. //uchar table3[]=".VAWa";
  172. //uchar table3[]="888888888888";
  173. //uchar code table[]="I LIKE MCU!";
  174. void delayZ(uint n)                 //延时函数
  175. {        
  176.         uint x,y;        
  177.         for(x=n;x>0;x--)        
  178.                 for(y=110;y>0;y--);        
  179. }
  180. //void tablex(uint tab1);        

  181.         
  182. void lcd_wcom(uchar com)        //1602写命令函数
  183. {        
  184.         rs=0;             //RS置0
  185.         rw=0;             //RW置0     RS、RW置零,指令寄存器写入
  186.         en=1;             //使能端置为高电平
  187.         P0=com;          //对液晶屏位置控制的命令
  188.         en=0;            //使能端置为低电平。使能端从高电平跳变低电平,液晶模块执行写操作
  189.           delayZ(5);       //延时一定时间
  190. }        
  191. void lcd_wdat(uchar dat)        //1602写数据函数
  192. {        
  193.         rs=1;            //RS置1  
  194.         rw=0;             //RW置0     RS置1,RW置零,数据寄存器写入
  195.         en=1;            //读取液晶模块信息
  196.         P0=dat;          //液晶屏显示的命令
  197.         en=0;             //使能端置为低电平。使能端从高电平跳变低电平,液晶模块执行写操作
  198.           delayZ(5);       //延时一定时间        
  199. }        
  200. void lcd_init()                //1602初始化函数
  201. {        
  202.         lcd_wcom(0x38);                //8位数据,双列,5*7字形
  203.         lcd_wcom(0x0c);         //开启显示屏,关光标,光标不闪烁?
  204.         lcd_wcom(0x06);                //显示地址递增,即写一个数据后,显示位置右移一位
  205.         lcd_wcom(0x01);         //清屏?
  206. }
  207. /************
  208. void tablex(uint tab1)//数据分解
  209. {
  210.         uchar num;
  211.         h1=tab1/1000;//1023//1
  212.         h2=tab1%1000/100;//023//0
  213.         h3=tab1%100/10;//23//2
  214.         h4=tab1%10;//3
  215. }

  216. for(num=0;num<11;num++)
  217.                                 {
  218.                                         write_date(table[num]);           //a//写数据write_date(0x31); write_date('1');
  219.                                         delay(200);
  220.                         //                write_date('B');
  221.                                 }
  222. ****************/


  223. /*-----------------        -------------------*/

  224. void  wsrt(unsigned char adr,unsigned char *p)    //显示位置及显示内容的函数
  225. {
  226.         lcd_wcom(adr);     //显示位置
  227.         while(*p!='\0')      //指针指向对象是否为字符结束符
  228.   {
  229.         lcd_wdat(*p);      //显示指针所指向对象
  230.         p++;       //指针指向数组的下一个元素
  231.         }
  232. }

  233. /*--------------------------------------------------------------*/
  234. #endif

  235.         
复制代码

显示正常了,为什么只显示0-9呢?哪里出错了

lADPDiCpwOp8n8fNA8DNBQA_1280_960.jpg (68.89 KB, 下载次数: 161)

lADPDiCpwOp8n8fNA8DNBQA_1280_960.jpg
回复

使用道具 举报

10#
ID:89072 发表于 2021-9-15 23:33 来自手机 | 只看该作者
请路过的大师帮我看一下
回复

使用道具 举报

11#
ID:161164 发表于 2021-9-16 00:40 | 只看该作者
定时器1的中断是2ms一次吧?
对LCD1602来说太频密了
再加上注释
你好像抄错了数码管的动态扫描代码了吧
回复

使用道具 举报

12#
ID:89072 发表于 2021-9-16 12:44 | 只看该作者
lkc8210 发表于 2021-9-16 00:40
定时器1的中断是2ms一次吧?
对LCD1602来说太频密了
再加上注释

是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊
回复

使用道具 举报

13#
ID:624769 发表于 2021-9-16 12:55 | 只看该作者
hslcac 发表于 2021-9-16 12:44
是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊

液晶屏刷新是电压翻转一次就定格了,一般,没有内容变化就不必反复刷新,和数码管需要不断的供电点亮是不同的,所以,8210才提醒你一下。
回复

使用道具 举报

14#
ID:89072 发表于 2021-9-16 13:18 | 只看该作者
188610329 发表于 2021-9-16 12:55
液晶屏刷新是电压翻转一次就定格了,一般,没有内容变化就不必反复刷新,和数码管需要不断的供电点亮是不 ...

嗯嗯明白了,谢谢,
回复

使用道具 举报

15#
ID:161164 发表于 2021-9-16 15:03 | 只看该作者
hslcac 发表于 2021-9-16 12:44
是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊

在网页看,没留意到那一段注释掉了
正因为注释掉了
又重覆了5楼的问题1
没有定时器1的中断函数,又当机了

第117行
volt_data[6]=num/1000;          //取处理后的数据千位,对应显示温度值的十位
缺了个"+48"
又重覆了5楼的问题2
回复

使用道具 举报

16#
ID:89072 发表于 2021-9-16 21:09 | 只看该作者
lkc8210 发表于 2021-9-16 15:03
在网页看,没留意到那一段注释掉了
正因为注释掉了
又重覆了5楼的问题1

为什么要加个‘’+48‘’,非常感谢,已经找到问题了,第一、没有加48,第二,num定义错误应该是uint型。再次非常感谢各位老师指点,谢谢,上传完成程序。
回复

使用道具 举报

17#
ID:89072 发表于 2021-9-16 21:16 | 只看该作者

问题已经解决,上传完成主程序,显示程序及电路没变。

LM35温度程序01(完成).rar

28.68 KB, 下载次数: 29

程序

回复

使用道具 举报

18#
ID:89072 发表于 2021-9-16 21:48 | 只看该作者
温度和AD0809输入电压名称标错位置了,电压显示的是LM358输出至0809IN0的电压,制作板子的时候没有计算好,358的最大输出电压测量3.74V,实际与显示的电压准确(没有具体检测),有借鉴制作温度及数控电源的程序比较接近(针对新手)。
回复

使用道具 举报

19#
ID:92810 发表于 2023-1-9 16:32 | 只看该作者
hslcac 发表于 2021-9-16 21:16
问题已经解决,上传完成主程序,显示程序及电路没变。

谢谢楼主分享啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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