找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5A60S2單片機系列溫度采集和AD電壓采集程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1064047 發(fā)表于 2023-3-3 15:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC系列的單片機,進行自身AD采集和LCD12864顯示

單片機源程序如下:
  1. #include <STC12C5A.h>
  2. #include <LCD12864.h>
  3. #include <DS18B20.h>
  4. #include <intrins.h>

  5. #define  uchar unsigned char
  6. #define  uint unsigned int

  7. uchar code        dis1[]="Vout:  ";
  8. uchar code        dis2[]="Temp:  ";

  9. /*
  10. sfr ADC_CONTR   =   0xBC;           //ADC control register
  11. sfr ADC_RES     =   0xBD;           //高8位轉(zhuǎn)換結(jié)果
  12. sfr ADC_LOW2    =   0xBE;           //低2位轉(zhuǎn)換結(jié)果
  13. sfr P1ASF       =   0x9D;           //P1 功能控制寄存器 1001 1101*/


  14. uint   AD_data1,AD_data2;
  15. int         Temp,Voltage;

  16. unsigned char Get_ADC1(void)
  17. {
  18.           
  19.   unsigned int ADC_Result;

  20.   ADC_CONTR = ADC_CONTR|0x80; //開啟AD電源        ADC_CONTR=1;         0X80= 1000 0000
  21.   P1ASF = P1ASF | 0x10;       //設(shè)置ADC通道為模擬模式
  22.   ADC_CONTR = 0xe0;           //設(shè)置ADC轉(zhuǎn)換通道         通道CHS2=1          ADC_FLAG=1;

  23.   ADC_RES = 0x00;                               //清零轉(zhuǎn)換結(jié)果寄存器
  24.   ADC_CONTR = ADC_CONTR | 0x08;                                         //ADC_CONTR=0XEC;

  25.   while(!(ADC_CONTR & 0x10));                                    //等待轉(zhuǎn)換完成

  26.   ADC_CONTR = ADC_CONTR & 0xe0;                 //清標(biāo)志
  27.   ADC_Result = ADC_RES;                     //提取采集到的數(shù)據(jù)
  28.   return ADC_Result;
  29. }


  30. void main()
  31.   {         
  32.        uchar i,j;
  33.                
  34.        LCD12864_init();//初始化液晶顯示器
  35.                    Init_DS18B20(); //初始化溫差傳感器
  36.           
  37.                 while(1){  
  38.                          
  39.         AD_data1 = (int)(((float)Get_ADC1())*500/256);
  40.         Voltage=(int)AD_data1;        //讀取電壓值                                       
  41.                 LCD12864_POS(0,0); //第一行顯示電壓值
  42.                 for(i=0;i<5;i++){
  43.                 LCD12864_write_dat(dis1[i]);       
  44.                                 }  //顯示“Vout :”
  45.                 LCD12864_write_dat(0xA0);  //顯示空格
  46.                 LCD12864_write_dat(0xA0);  //顯示空格
  47.                 LCD12864_write_dat(0xA0);  //顯示空格
  48.                 LCD12864_write_dat(Voltage/1000+0x30);
  49.                 LCD12864_write_dat(Voltage/100%10+0x30);
  50.                 LCD12864_write_dat(0x2e);         //顯示小數(shù)點
  51.                 LCD12864_write_dat(Voltage/10%10+0x30);
  52.                 LCD12864_write_dat(Voltage%10+0x30);
  53.                 LCD12864_write_dat(0xA0); //顯示空格
  54.                 LCD12864_write_dat(0x56); //顯示V
  55.                 LCD12864_write_dat(0xA0); //顯示空格
  56.                                                                                
  57.                                                                                 /**************/       

  58. Temp=Read_Tem()*100;   //讀取溫度,并擴大                       
  59. LCD12864_POS(2,0); //第一行顯示電壓值
  60.                 for(j=0;j<5;j++){
  61.                 LCD12864_write_dat(dis2[j]);       
  62.                                 }  //顯示“Temp :”
  63.                 LCD12864_write_dat(0xA0);  //顯示空格
  64.                 LCD12864_write_dat(0xA0);  //顯示空格
  65.                 LCD12864_write_dat(0xA0);  //顯示空格
  66.                 LCD12864_write_dat(Temp/1000+0x30);
  67.                 LCD12864_write_dat(Temp/100%10+0x30);
  68.                 LCD12864_write_dat(0x2e);         //顯示小數(shù)點
  69.                 LCD12864_write_dat(Temp/10%10+0x30);
  70.                 LCD12864_write_dat(Temp%10+0x30);
  71.                 LCD12864_write_dat(0xA0); //顯示空格
  72.                                                                                
  73.         LCD12864_POS(2,7);
  74.           LCD12864_write_dat(0xa1);   //寫溫度符"℃"
  75.       LCD12864_write_dat(0xe6);   //寫溫度符"℃"
  76. }       
  77.    
  78.   }
復(fù)制代碼

Keil代碼下載: DS18B20測溫 LCD12864顯示 自身8位AD采集.zip (51.33 KB, 下載次數(shù): 51)

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1064047 發(fā)表于 2023-3-3 15:19 | 只看該作者
大學(xué)生入門剛需,歡迎復(fù)制粘貼去用
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表