久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4417|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

LM35+ADC0809使用51單片機(jī)制作溫度顯示(問(wèn)題解決)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:89072 發(fā)表于 2021-9-13 19:09 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 hslcac 于 2021-9-16 21:20 編輯

學(xué)習(xí)調(diào)試過(guò)程中,單獨(dú)顯示輸入沒(méi)問(wèn)題,關(guān)鍵的ADC0809的數(shù)據(jù)不顯示,請(qǐng)幫忙看一下哪里除了問(wèn)題,謝謝。問(wèn)題已經(jīng)解決,謝謝各位老師指點(diǎn),謝謝,后面附完成后的程序
  1. //以下為程序
  2. //#include <STC89C5xRC.H>
  3. #include <reg52.h>
  4. #include"LM35LCD1602.h"

  5. //ADC0809相關(guān)引腳定義
  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. //警報(bào):LED與蜂鳴器引腳
  14. //===========================
  15. //sbit BEEP = P3^5; //高電平響
  16. //===========================
  17. //粗略延時(shí)函數(shù)  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. //定時(shí)器初始化,配置ADC0809時(shí)鐘
  31. //===========================
  32. void timer_init(void)
  33. {
  34.          //配置定時(shí)器0
  35.         ET0 = 1;
  36.         TMOD &= 0xF0;
  37.         TMOD |= 0x02;                //定時(shí)器0,模式2,自動(dòng)重裝定時(shí)器
  38.         TH0 = 200;                        //自動(dòng)重裝值
  39.         TL0 = 200;
  40.         TR0 = 1;                        //配置定時(shí)器1
  41.         ET1 = 1;
  42.         TMOD &= 0x0F;                //清除定時(shí)器1配置,不改動(dòng)定時(shí)器0的配置
  43.         TMOD |= 0x10;                        //定時(shí)器1模式一,不改動(dòng)定時(shí)器0的模式
  44.         TH1 = (65536 - 2000)/256;
  45.         TL1 = (65536 - 2000)%256;
  46.         TR1 = 1;
  47.         EA = 1;
  48. }
  49. //===========================
  50. //定時(shí)器0中斷,為ADC0809提供時(shí)鐘信號(hào)
  51. //===========================

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

  56. //============================
  57. //ADC0809 轉(zhuǎn)換函數(shù)
  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;                //用于標(biāo)記顯示第幾位數(shù)碼管
  70. uchar seg0 = 0;                //第0位數(shù)碼管的值        
  71. uchar seg1 = 1;                //第1位數(shù)碼管的值        
  72. uchar seg2 = 2;                //第2位數(shù)碼管的值        
  73. uchar seg3 = 3;                //第3位數(shù)碼管的值        

  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有很大區(qū)別,除255.0會(huì)自動(dòng)轉(zhuǎn)換為float型,小數(shù)才能保持,而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. //主函數(shù)
  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();                                        //定時(shí)器0、定時(shí)器1初始化。

  102.          while(1)
  103.          {
  104.                  adc_num = ADC0809_GET();
  105.                  volt = print_volt(adc_num);                        //在數(shù)碼管上顯示電壓值,并返回一個(gè)0~5000的值,用于判斷是否要報(bào)警。
  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                //預(yù)定義
  119. #define uchar unsigned char

  120. sbit rs=P2^5;        //1602的數(shù)據(jù)/指令選擇控制線?
  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};                 //要顯示的內(nèi)容放入數(shù)組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)                 //延時(shí)函數(shù)
  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寫命令函數(shù)
  140. {        
  141.         rs=0;        //選擇指令寄存器?
  142.         rw=0;        //選擇寫?
  143.         P0=com;        //把命令字送入P0?
  144.         delayZ(5);        //延時(shí)一小會(huì)兒,讓1602準(zhǔn)備接收數(shù)據(jù)?
  145.         en=1;         //使能線電平變化,命令送入1602的8位數(shù)據(jù)口?
  146.         en=0;//        
  147. }        
  148. void lcd_wdat(uchar dat)        //1602寫數(shù)據(jù)函數(shù)
  149. {        
  150.         rs=1;        //選擇數(shù)據(jù)寄存器?
  151.         rw=0;        //選擇寫
  152.         P0=dat;        //把要顯示的數(shù)據(jù)送入P2
  153.         delayZ(5);        //延時(shí)一小會(huì)兒,讓1602準(zhǔn)備接收數(shù)據(jù)
  154.         en=1;        //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口
  155.         en=0;        
  156. }        
  157. void lcd_init()                //1602初始化函數(shù)
  158. {        
  159.         lcd_wcom(0x38);                //8位數(shù)據(jù),雙列,5*7字形
  160.         lcd_wcom(0x0c);         //開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍?
  161.         lcd_wcom(0x06);                //顯示地址遞增,即寫一個(gè)數(shù)據(jù)后,顯示位置右移一位
  162.         lcd_wcom(0x01);         //清屏?
  163. }
  164. /************
  165. void tablex(uint tab1)//數(shù)據(jù)分解
  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//寫數(shù)據(jù)write_date(0x31); write_date('1');
  176.                                         delay(200);
  177.                         //                write_date('B');
  178.                                 }
  179. ****************/


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

  183.         

復(fù)制代碼

lALPDh0cQirwNNLNAdvNAog_648_475.png (37.75 KB, 下載次數(shù): 158)

有需要制版的我發(fā)給你

有需要制版的我發(fā)給你

lADPDhmOw4Yj78zNA8DNBQA_1280_960.jpg (45.58 KB, 下載次數(shù): 153)

打樣后制作顯示ADC沒(méi)有數(shù)據(jù)

打樣后制作顯示ADC沒(méi)有數(shù)據(jù)

LM35溫度測(cè)試程序.rar

42.9 KB, 下載次數(shù): 30

程序與電路圖

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:89072 發(fā)表于 2021-9-13 19:16 | 只看該作者
本帖最后由 hslcac 于 2021-9-13 19:58 編輯

有需要圖紙打樣的告訴我發(fā)給你,現(xiàn)在經(jīng)過(guò)調(diào)試顯示亂碼,郁悶,請(qǐng)幫我看看,謝謝

lADPDgQ9y6mz5p3NA8DNBQA_1280_960.jpg (70.78 KB, 下載次數(shù): 163)

lADPDgQ9y6mz5p3NA8DNBQA_1280_960.jpg

lALPDgfLSk5e1CfNAfzNAg8_527_508.png (35.49 KB, 下載次數(shù): 171)

lALPDgfLSk5e1CfNAfzNAg8_527_508.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:752974 發(fā)表于 2021-9-14 08:28 | 只看該作者
顯示不顯示和0809無(wú)關(guān),問(wèn)題可能出現(xiàn)在數(shù)據(jù)處理上,仔細(xì)檢查0809后的數(shù)據(jù)處理過(guò)程。
回復(fù)

使用道具 舉報(bào)

地板
ID:89072 發(fā)表于 2021-9-14 09:36 | 只看該作者
munuc_w 發(fā)表于 2021-9-14 08:28
顯示不顯示和0809無(wú)關(guān),問(wèn)題可能出現(xiàn)在數(shù)據(jù)處理上,仔細(xì)檢查0809后的數(shù)據(jù)處理過(guò)程。

出現(xiàn)亂碼是不是0809數(shù)據(jù)錯(cuò)誤啊
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2021-9-14 11:20 | 只看該作者
經(jīng)過(guò)半天排查
發(fā)現(xiàn)是你初始化了定時(shí)器1但又沒(méi)有相應(yīng)的中斷函數(shù)
結(jié)果在定時(shí)器1第一次溢出后單片機(jī)就當(dāng)機(jī)了
應(yīng)加上
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);
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2021-9-14 15:04 | 只看該作者
1、顯示程序:應(yīng)能顯示某個(gè)變量于LED上,如A3。
2、采樣程序:應(yīng)能將采樣的數(shù)值,轉(zhuǎn)換成溫度,再放入A3中。
做到以上兩點(diǎn)不就OK了嗎?有什么難度呢?
回復(fù)

使用道具 舉報(bào)

7#
ID:89072 發(fā)表于 2021-9-15 09:13 | 只看該作者
lkc8210 發(fā)表于 2021-9-14 11:20
經(jīng)過(guò)半天排查
發(fā)現(xiàn)是你初始化了定時(shí)器1但又沒(méi)有相應(yīng)的中斷函數(shù)
結(jié)果在定時(shí)器1第一次溢出后單片機(jī)就當(dāng)機(jī)了 ...

非常感謝,開始測(cè)試使用的中斷刷新顯示,調(diào)試后放在主函數(shù)內(nèi)做顯示,我再改一下試試。
回復(fù)

使用道具 舉報(bào)

8#
ID:89072 發(fā)表于 2021-9-15 09:14 | 只看該作者
yzwzfyz 發(fā)表于 2021-9-14 15:04
1、顯示程序:應(yīng)能顯示某個(gè)變量于LED上,如A3。
2、采樣程序:應(yīng)能將采樣的數(shù)值,轉(zhuǎn)換成溫度,再放入A3中 ...

謝謝指導(dǎo),我按您的辦法試試。
回復(fù)

使用道具 舉報(bào)

9#
ID:89072 發(fā)表于 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;                //用于標(biāo)記顯示第幾位數(shù)碼管
  10. uchar seg0 = 0;                //第0位數(shù)碼管的值        
  11. uchar seg1 = 1;                //第1位數(shù)碼管的值        
  12. uchar seg2 = 2;                //第2位數(shù)碼管的值        
  13. uchar seg3 = 3;                //第3位數(shù)碼管的值        
  14.                                                   //處理后的數(shù)據(jù)
  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. //函數(shù)名:Delay
  21. //函數(shù)功能:軟件延時(shí)函數(shù)
  22. //形式參數(shù):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. //定時(shí)器初始化,配置ADC0809時(shí)鐘
  36. //===========================
  37. void timer_init(void)
  38. {
  39.          //配置定時(shí)器0
  40.         ET0 = 1;
  41.         TMOD &= 0xF0;
  42.         TMOD |= 0x02;                //定時(shí)器0,模式2,自動(dòng)重裝定時(shí)器
  43.         TH0 = 200;                        //自動(dòng)重裝值
  44.         TL0 = 200;
  45.         TR0 = 1;                        //配置定時(shí)器1
  46.         ET1 = 1;
  47.         TMOD &= 0x0F;                //清除定時(shí)器1配置,不改動(dòng)定時(shí)器0的配置
  48.         TMOD |= 0x10;                        //定時(shí)器1模式一,不改動(dòng)定時(shí)器0的模式
  49.         TH1 = (65536 - 2000)/256;
  50.         TL1 = (65536 - 2000)%256;
  51.         TR1 = 1;
  52.         EA = 1;
  53. }
  54. //============================
  55. //ADC0809 轉(zhuǎn)換函數(shù)
  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位數(shù)碼管
  94.         }

  95.          t1_flag++;                                //自加1
  96.          t1_flag =  t1_flag%4;                //讓t1_flag 在0和3之間循環(huán)
  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; //數(shù)據(jù)處理:輸出值=輸入值*5/255  參數(shù)5是基準(zhǔn)電壓5V
  107.         volt_data[10]=num%10+48;                  //取處理后的數(shù)據(jù)個(gè)位,對(duì)應(yīng)顯示溫度值的小數(shù)2位
  108.         volt_data[9]=num/10%10+48;         //取處理后的數(shù)據(jù)十位,對(duì)應(yīng)顯示溫度值的小數(shù)1位
  109.         volt_data[7]=num/100%10+48;        //取處理后的數(shù)據(jù)百位,對(duì)應(yīng)顯示溫度值的個(gè)位
  110.         volt_data[6]=num/1000;          //取處理后的數(shù)據(jù)千位,對(duì)應(yīng)顯示溫度值的十位
  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有很大區(qū)別,除255.0會(huì)自動(dòng)轉(zhuǎn)換為float型,小數(shù)才能保持,而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. //主函數(shù)
  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();                                        //定時(shí)器0、定時(shí)器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                //預(yù)定義
  162. #define uchar unsigned char

  163. sbit rs=P2^5;        //1602/定義數(shù)據(jù)/命令選擇端
  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};                 //要顯示的內(nèi)容放入數(shù)組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)                 //延時(shí)函數(shù)
  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寫命令函數(shù)
  183. {        
  184.         rs=0;             //RS置0
  185.         rw=0;             //RW置0     RS、RW置零,指令寄存器寫入
  186.         en=1;             //使能端置為高電平
  187.         P0=com;          //對(duì)液晶屏位置控制的命令
  188.         en=0;            //使能端置為低電平。使能端從高電平跳變低電平,液晶模塊執(zhí)行寫操作
  189.           delayZ(5);       //延時(shí)一定時(shí)間
  190. }        
  191. void lcd_wdat(uchar dat)        //1602寫數(shù)據(jù)函數(shù)
  192. {        
  193.         rs=1;            //RS置1  
  194.         rw=0;             //RW置0     RS置1,RW置零,數(shù)據(jù)寄存器寫入
  195.         en=1;            //讀取液晶模塊信息
  196.         P0=dat;          //液晶屏顯示的命令
  197.         en=0;             //使能端置為低電平。使能端從高電平跳變低電平,液晶模塊執(zhí)行寫操作
  198.           delayZ(5);       //延時(shí)一定時(shí)間        
  199. }        
  200. void lcd_init()                //1602初始化函數(shù)
  201. {        
  202.         lcd_wcom(0x38);                //8位數(shù)據(jù),雙列,5*7字形
  203.         lcd_wcom(0x0c);         //開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃爍?
  204.         lcd_wcom(0x06);                //顯示地址遞增,即寫一個(gè)數(shù)據(jù)后,顯示位置右移一位
  205.         lcd_wcom(0x01);         //清屏?
  206. }
  207. /************
  208. void tablex(uint tab1)//數(shù)據(jù)分解
  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//寫數(shù)據(jù)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)    //顯示位置及顯示內(nèi)容的函數(shù)
  225. {
  226.         lcd_wcom(adr);     //顯示位置
  227.         while(*p!='\0')      //指針指向?qū)ο笫欠駷樽址Y(jié)束符
  228.   {
  229.         lcd_wdat(*p);      //顯示指針?biāo)赶驅(qū)ο?br />
  230.         p++;       //指針指向數(shù)組的下一個(gè)元素
  231.         }
  232. }

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

  235.         
復(fù)制代碼

顯示正常了,為什么只顯示0-9呢?哪里出錯(cuò)了

lADPDiCpwOp8n8fNA8DNBQA_1280_960.jpg (68.89 KB, 下載次數(shù): 162)

lADPDiCpwOp8n8fNA8DNBQA_1280_960.jpg
回復(fù)

使用道具 舉報(bào)

10#
ID:89072 發(fā)表于 2021-9-15 23:33 來(lái)自觸屏版 | 只看該作者
請(qǐng)路過(guò)的大師幫我看一下
回復(fù)

使用道具 舉報(bào)

11#
ID:161164 發(fā)表于 2021-9-16 00:40 | 只看該作者
定時(shí)器1的中斷是2ms一次吧?
對(duì)LCD1602來(lái)說(shuō)太頻密了
再加上注釋
你好像抄錯(cuò)了數(shù)碼管的動(dòng)態(tài)掃描代碼了吧
回復(fù)

使用道具 舉報(bào)

12#
ID:89072 發(fā)表于 2021-9-16 12:44 | 只看該作者
lkc8210 發(fā)表于 2021-9-16 00:40
定時(shí)器1的中斷是2ms一次吧?
對(duì)LCD1602來(lái)說(shuō)太頻密了
再加上注釋

是使用的1602,原來(lái)的數(shù)碼管顯示沒(méi)問(wèn)題,修改的,定時(shí)器是1ms的啊
回復(fù)

使用道具 舉報(bào)

13#
ID:624769 發(fā)表于 2021-9-16 12:55 | 只看該作者
hslcac 發(fā)表于 2021-9-16 12:44
是使用的1602,原來(lái)的數(shù)碼管顯示沒(méi)問(wèn)題,修改的,定時(shí)器是1ms的啊

液晶屏刷新是電壓翻轉(zhuǎn)一次就定格了,一般,沒(méi)有內(nèi)容變化就不必反復(fù)刷新,和數(shù)碼管需要不斷的供電點(diǎn)亮是不同的,所以,8210才提醒你一下。
回復(fù)

使用道具 舉報(bào)

14#
ID:89072 發(fā)表于 2021-9-16 13:18 | 只看該作者
188610329 發(fā)表于 2021-9-16 12:55
液晶屏刷新是電壓翻轉(zhuǎn)一次就定格了,一般,沒(méi)有內(nèi)容變化就不必反復(fù)刷新,和數(shù)碼管需要不斷的供電點(diǎn)亮是不 ...

嗯嗯明白了,謝謝,
回復(fù)

使用道具 舉報(bào)

15#
ID:161164 發(fā)表于 2021-9-16 15:03 | 只看該作者
hslcac 發(fā)表于 2021-9-16 12:44
是使用的1602,原來(lái)的數(shù)碼管顯示沒(méi)問(wèn)題,修改的,定時(shí)器是1ms的啊

在網(wǎng)頁(yè)看,沒(méi)留意到那一段注釋掉了
正因?yàn)樽⑨尩袅?br /> 又重覆了5樓的問(wèn)題1
沒(méi)有定時(shí)器1的中斷函數(shù),又當(dāng)機(jī)了

第117行
volt_data[6]=num/1000;          //取處理后的數(shù)據(jù)千位,對(duì)應(yīng)顯示溫度值的十位
缺了個(gè)"+48"
又重覆了5樓的問(wèn)題2
回復(fù)

使用道具 舉報(bào)

16#
ID:89072 發(fā)表于 2021-9-16 21:09 | 只看該作者
lkc8210 發(fā)表于 2021-9-16 15:03
在網(wǎng)頁(yè)看,沒(méi)留意到那一段注釋掉了
正因?yàn)樽⑨尩袅?br /> 又重覆了5樓的問(wèn)題1

為什么要加個(gè)‘’+48‘’,非常感謝,已經(jīng)找到問(wèn)題了,第一、沒(méi)有加48,第二,num定義錯(cuò)誤應(yīng)該是uint型。再次非常感謝各位老師指點(diǎn),謝謝,上傳完成程序。
回復(fù)

使用道具 舉報(bào)

17#
ID:89072 發(fā)表于 2021-9-16 21:16 | 只看該作者

問(wèn)題已經(jīng)解決,上傳完成主程序,顯示程序及電路沒(méi)變。

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

28.68 KB, 下載次數(shù): 29

程序

回復(fù)

使用道具 舉報(bào)

18#
ID:89072 發(fā)表于 2021-9-16 21:48 | 只看該作者
溫度和AD0809輸入電壓名稱標(biāo)錯(cuò)位置了,電壓顯示的是LM358輸出至0809IN0的電壓,制作板子的時(shí)候沒(méi)有計(jì)算好,358的最大輸出電壓測(cè)量3.74V,實(shí)際與顯示的電壓準(zhǔn)確(沒(méi)有具體檢測(cè)),有借鑒制作溫度及數(shù)控電源的程序比較接近(針對(duì)新手)。
回復(fù)

使用道具 舉報(bào)

19#
ID:92810 發(fā)表于 2023-1-9 16:32 | 只看該作者
hslcac 發(fā)表于 2021-9-16 21:16
問(wèn)題已經(jīng)解決,上傳完成主程序,顯示程序及電路沒(méi)變。

謝謝樓主分享啦
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久无码av | 狠狠干影院| 国产偷录叫床高潮录音 | 日韩欧美中文在线 | 中文字幕一区二区不卡 | 国产精品一区二区三区免费观看 | 亚洲区一 | 性视频一区 | 特级做a爰片毛片免费看108 | 国产精品美女久久久久久免费 | 91看片| 岛国av一区二区三区 | 激情网五月天 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 视频一二区| 国产精品一区视频 | 综合五月 | 国产精品乱码一区二区三区 | 一区二区在线 | 91精品国产美女在线观看 | 国产精品亚洲精品日韩已方 | 在线观看亚洲专区 | 成人福利视频网站 | 美女福利视频网站 | 91在线视频在线观看 | 国产精品久久久av | 美女在线视频一区二区三区 | 欧美成人精品一区二区男人看 | 男女视频91 | 黄色大片免费网站 | 国产精品精品 | 在线免费黄色小视频 | 欧美综合国产精品久久丁香 | 亚洲欧洲日韩 | 成人午夜激情 | 欧美精品一区在线发布 | 亚洲一区二区精品视频在线观看 | 欧美日韩综合一区 | 91电影在线播放 | 免费久久久 | 天天宗合网 |