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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3577|回復: 0
打印 上一主題 下一主題
收起左側

51單片機ADC0808采集 數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主

程序和仿真工程請在附件中下載

單片機源程序如下:
  1. #include<reg52.h>         
  2. #include<intrins.h>
  3. #define ulong unsigned long
  4. #define uint unsigned int
  5. #define uchar unsigned char

  6. //定義ADC的控制接口
  7. #define                ADC_DATA                P1               
  8. sbit                  ADC_EOC                 = P3^2;              
  9. sbit                  ADC_CLK                 = P3^1;               
  10. sbit                  ADC_START                 = P3^0;            
  11. sbit                  ADC_OE                         = P3^3;  
  12. sbit                  ADC_A                         = P3^4;  
  13. sbit                  ADC_B                         = P3^5;   
  14. sbit                  ADC_C                         = P3^6;

  15. //定義數碼管接口
  16. #define                SEG_DATA                P0
  17. sbit seg_1=P2^0;
  18. sbit seg_2=P2^1;
  19. sbit seg_3=P2^2;
  20. sbit seg_4=P2^3;


  21. uchar code SEG_Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xf7};//CA共陽
  22. uchar dis_data_buf[4]={0,0,0,0};

  23. //============================
  24. //ADC獲取函數
  25. //============================
  26. uchar ADC_GET(uchar temp_channel)
  27. {
  28.         if(temp_channel==0)
  29.         {
  30.            ADC_A=0;
  31.            ADC_B=0;
  32.            ADC_C=0;
  33.         }
  34.         else if(temp_channel==1)
  35.         {
  36.            ADC_A=1;
  37.            ADC_B=0;
  38.            ADC_C=0;
  39.         }
  40.         else if(temp_channel==2)
  41.         {
  42.            ADC_A=0;
  43.            ADC_B=1;
  44.            ADC_C=0;
  45.         }
  46.         else if(temp_channel==3)
  47.         {
  48.            ADC_A=1;
  49.            ADC_B=1;
  50.            ADC_C=0;
  51.         }
  52.         else if(temp_channel==4)
  53.         {
  54.            ADC_A=0;
  55.            ADC_B=0;
  56.            ADC_C=1;
  57.         }
  58.         else if(temp_channel==5)
  59.         {
  60.            ADC_A=1;
  61.            ADC_B=0;
  62.            ADC_C=1;
  63.         }
  64.         else if(temp_channel==6)
  65.         {
  66.            ADC_A=0;
  67.            ADC_B=1;
  68.            ADC_C=1;
  69.         }
  70.         else if(temp_channel==7)
  71.         {
  72.            ADC_A=1;
  73.            ADC_B=1;
  74.            ADC_C=1;
  75.         }

  76.         ADC_START = 0;
  77.         ADC_OE = 0;
  78.         ADC_START = 1;
  79.         ADC_START = 0;
  80.         while(ADC_EOC == 0);
  81.         ADC_OE = 1;
  82.         return ADC_DATA;
  83. }

  84. void Delay_1ms(uint i)//1ms延時
  85. {
  86.   uchar x,j;
  87.   for(j=0;j<i;j++)
  88.     for(x=0;x<=148;x++);       
  89. }


  90. //數碼管的顯示函數
  91. void diplay(uchar *dis_p)
  92. {
  93.   static uchar temp_num=0;
  94.   //消隱       
  95.   seg_1=0;seg_2=0;seg_3=0;seg_4=0;
  96.   switch(temp_num) //動態掃描數碼管
  97.   {
  98.   case 0:
  99.                  SEG_DATA=SEG_Table[*(dis_p+temp_num)]&0x7f;//傳遞數碼管斷碼到數據段
  100.                 seg_1=1;seg_2=0;seg_3=0;seg_4=0;
  101.                
  102.   break;
  103.   case 1:
  104.            SEG_DATA=SEG_Table[*(dis_p+temp_num)];//傳遞數碼管斷碼到數據段
  105.            seg_1=0;seg_2=1;seg_3=0;seg_4=0;
  106.                
  107.   break;
  108.   case 2:
  109.                 SEG_DATA=SEG_Table[*(dis_p+temp_num)];//傳遞數碼管斷碼到數據段
  110.                 seg_1=0;seg_2=0;seg_3=1;seg_4=0;
  111.                
  112.   break;
  113.   case 3:
  114.                 SEG_DATA=SEG_Table[*(dis_p+temp_num)];//傳遞數碼管斷碼到數據段
  115.                 seg_1=0;seg_2=0;seg_3=0;seg_4=1;
  116.                
  117.   break;
  118.   }
  119.   Delay_1ms(2);

  120.   temp_num++;
  121.   if(temp_num>3) temp_num=0;

  122. }
  123. //************************************
  124. //定時器初始化
  125. //************************************
  126. void Time0_init()
  127. {
  128.         TMOD |= 0x02;                         //使用模式2,8位定時器
  129.         TH0=256-50;//  50US
  130.           TL0=256-50;//
  131.         EA    = 1;  //總中斷
  132.         ET0   = 1;//定時器0初始化
  133.         TR0   = 1;

  134. }

  135. //轉換采集的數據進行顯示
  136. void Trans_data(uchar temp_channel)
  137. {
  138.         ulong temp_data=0;
  139.         temp_data=ADC_GET(temp_channel);
  140.         temp_data=temp_data*5000/255;        //把AD數值換算成電壓并放大1000倍,避免小數運算
  141.         //解析數據到數碼管
  142.         dis_data_buf[3]=temp_data%10;
  143.         dis_data_buf[2]=temp_data%100/10;
  144.         dis_data_buf[1]=temp_data%1000/100;;         //數組的最后一個是下劃線編碼
  145.         dis_data_buf[0]=temp_data/1000;
  146. }
  147. /********************************************************************
  148. * 名稱 : Main()                       
  149. * 功能 : 主函數                       
  150. * 輸入 : 無               
  151. * 輸出 : 無               
  152. ***********************************************************************/
  153. void Main(void)
  154. {

  155.   Time0_init();                                        //初始化定時器
  156.   while(1)
  157.   {                 
  158.         Trans_data(0);                        //采集指定通道的數據       
  159.     diplay(dis_data_buf);        //刷新顯示       
  160.   }
  161. }

  162. //===========================
  163. //定時器0中斷,為ADC提供時鐘信號
  164. //===========================
  165. void timer0() interrupt 1
  166. {
  167.         ADC_CLK = ~ADC_CLK;
  168. }
復制代碼

所有資料51hei提供下載:
ADC809.zip (236.54 KB, 下載次數: 70)




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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区视频播放 | 久久久涩| 九九久久国产 | 日韩三级在线 | 一区二区三区视频在线观看 | 国产精品久久国产精品99 gif | 国产亚洲一区二区三区 | 亚州精品天堂中文字幕 | 国产成人小视频 | 免费视频一区二区 | 91夜色在线观看 | 国产一区二区成人 | 国产麻豆一区二区三区 | 狠狠爱免费视频 | 日本高清视频在线播放 | 国产精品国产a级 | 成人av免费看 | 欧美区日韩区 | 91大神xh98xh系列全部 | 中日韩毛片 | 亚洲国产精品成人无久久精品 | 久久久久国产一级毛片 | 久久精品青青大伊人av | 久久精品国产精品青草 | 精品国产欧美一区二区三区不卡 | 亚洲国产精品久久久久久 | 91精品国产乱码麻豆白嫩 | 日韩一区精品 | 日本天天操 | 天堂一区二区三区四区 | 欧美一区二区三区的 | 激情黄色在线观看 | 成人午夜电影网 | 日韩三级一区 | 日韩欧美一级 | 美女视频黄色的 | 亚洲一区视频在线播放 | 亚洲精品在线免费看 | 日本网站免费在线观看 | 日日爱夜夜操 | 国产一区2区|