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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3751|回復: 0
打印 上一主題 下一主題
收起左側(cè)

51單片機ADC0808采集 數(shù)碼管顯示

[復制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:888341 發(fā)表于 2021-3-4 15:06 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式

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

單片機源程序如下:
  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. //定義數(shù)碼管接口
  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獲取函數(shù)
  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. //數(shù)碼管的顯示函數(shù)
  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) //動態(tài)掃描數(shù)碼管
  97.   {
  98.   case 0:
  99.                  SEG_DATA=SEG_Table[*(dis_p+temp_num)]&0x7f;//傳遞數(shù)碼管斷碼到數(shù)據(jù)段
  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)];//傳遞數(shù)碼管斷碼到數(shù)據(jù)段
  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)];//傳遞數(shù)碼管斷碼到數(shù)據(jù)段
  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)];//傳遞數(shù)碼管斷碼到數(shù)據(jù)段
  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. //轉(zhuǎn)換采集的數(shù)據(jù)進行顯示
  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數(shù)值換算成電壓并放大1000倍,避免小數(shù)運算
  141.         //解析數(shù)據(jù)到數(shù)碼管
  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;;         //數(shù)組的最后一個是下劃線編碼
  145.         dis_data_buf[0]=temp_data/1000;
  146. }
  147. /********************************************************************
  148. * 名稱 : Main()                       
  149. * 功能 : 主函數(shù)                       
  150. * 輸入 : 無               
  151. * 輸出 : 無               
  152. ***********************************************************************/
  153. void Main(void)
  154. {

  155.   Time0_init();                                        //初始化定時器
  156.   while(1)
  157.   {                 
  158.         Trans_data(0);                        //采集指定通道的數(shù)據(jù)       
  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, 下載次數(shù): 70)




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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: wwwav在线 | 亚洲福利一区 | 日本www在线观看 | 久久成人精品视频 | 青青国产在线 | 婷婷在线播放 | 永久免费视频 | 操综合| 久热在线视频 | 狼人色| 毛片网站视频 | 日韩精品久久久久 | 嫩草视频在线观看 | 91在线精品李宗瑞 | 国产一区二区免费在线观看 | 欧美成人精品欧美一级乱黄 | 欧美二区视频 | 中文字幕+乱码+中文乱码91 | 综合色在线 | 国产精品激情 | 中文字幕在线网站 | 亚洲欧美日韩国产 | 嫩草国产 | 精品一区三区 | 亚洲天堂第一页 | 成人在线免费视频观看 | 日本乱轮视频 | 性巴克成人免费网站 | 国产亚洲欧美在线 | 日韩成人在线免费观看 | 成人黄色小视频 | 五月婷婷中文字幕 | 97精品视频在线观看 | 男女无遮挡xx00动态图120秒 | 欧美另类小说 | 亚洲欧洲视频 | 免费一级a毛片 | 人人看av | 中文字幕精品在线观看 | 狠狠五月天 | 日韩美女一区 |