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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)ADC0809 A\D轉(zhuǎn)換 數(shù)碼管顯示實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
已知有ADC0809模數(shù)轉(zhuǎn)換器,實(shí)驗(yàn)箱51單片機(jī)工作在總線模式,有一模擬電壓,電壓高低由旋鈕電位器控制
要求:
1、通過接線令A(yù)DC0809的起始地址為0A000H
2、使用0809上的IN0采集模擬電壓值
3、將0809轉(zhuǎn)換的結(jié)果的二進(jìn)制數(shù)值用8位LED顯示
4、將轉(zhuǎn)換結(jié)果的16進(jìn)制數(shù)值用2位數(shù)碼管顯示
5、將采集到的電壓值用3位數(shù)碼管顯示,整數(shù)位占1位,顯示小數(shù)點(diǎn),小數(shù)占2位


單片機(jī)源程序如下:
  1.                                                           /*************************************************************************************

  2. *
  3.                                                                        

  4.                                                                                   
  5. **************************************************************************************

  6. */
  7. #include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
  8. #include"temp.h"

  9. typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
  10. typedef unsigned char u8;

  11. sbit led1=P2^0;
  12. sbit led2=P2^1;
  13. sbit LSA=P2^2;
  14. sbit LSB=P2^3;
  15. sbit LSC=P2^4;



  16. #define GPIO_DIG P0
  17. #define GPIO_KEY P1


  18. char num=0;
  19. u8 DisplayData[8];


  20. u8 KeyValue;        //用來存放讀取到的鍵值


  21. u8 code smgduan[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xc0,0xf9,0xa4};//顯示0~F的值

  22. /*******************************************************************************
  23. * 函 數(shù) 名         : delay
  24. * 函數(shù)功能                   : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
  25. *******************************************************************************/
  26. void delay(u16 i)
  27. {
  28.         while(i--);       
  29. }

  30. /*******************************************************************************
  31. * 函 數(shù) 名         : KeyDown
  32. * 函數(shù)功能                   : 檢測(cè)有按鍵按下并讀取鍵值
  33. * 輸    入         : 無
  34. * 輸    出         : 無
  35. *******************************************************************************/
  36. void KeyDown(void)
  37. {                                                                                                                                                                      
  38.         char a=0;
  39.         GPIO_KEY=0x0f;
  40.         if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
  41.         {
  42.                
  43.                 {       
  44.                         //測(cè)試列
  45.                         GPIO_KEY=0X0F;
  46.                         switch(GPIO_KEY)
  47.                         {
  48.                         case(0X07):        KeyValue=11;break;
  49.                                 case(0X0b):        KeyValue=12;break;
  50.                                 case(0X0d): KeyValue=10;break;
  51.                                 case(0X0e):        KeyValue=3;break;
  52.                         }
  53.                         //測(cè)試行
  54.                         GPIO_KEY=0XF0;
  55.                         switch(GPIO_KEY)
  56.                         {
  57.                                 case(0X70):        KeyValue=KeyValue;break;
  58.                                 case(0Xb0):        KeyValue=10;break;
  59.                                 case(0Xd0): KeyValue=10;break;
  60.                                 case(0Xe0):        KeyValue=10;break;
  61.                         }
  62.                        
  63.                 }
  64.         }
  65.          }


  66.         void LED(void)
  67.         {
  68.         switch(KeyValue)
  69.         {
  70.         case(1):LSA=1;LSB=1;LSC=1;break;
  71.         case(2):LSA=1;LSB=1;LSC=1;break;
  72.         case(0):LSA=1;LSB=1;LSC=1;break;
  73.         }
  74.         }




  75. /*******************************************************************************
  76. * 函 數(shù) 名         : datapros()
  77. * 函數(shù)功能                   : 溫度讀取處理轉(zhuǎn)換函數(shù)
  78. * 輸    入         : temp
  79. * 輸    出         : 無
  80. *******************************************************************************/

  81. void datapros(int temp)          
  82. {
  83.            float tp;  
  84.         if(temp< 0)                                //當(dāng)溫度值為負(fù)數(shù)
  85.           {
  86.                 DisplayData[0] = 0x40;           //   -
  87.                 //因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼
  88.                 temp=temp-1;
  89.                 temp=~temp;
  90.                 tp=temp;
  91.                 temp=tp*0.0625*100+0.5;       
  92.                 //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)
  93.                 //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
  94.                 //算加上0.5,還是在小數(shù)點(diǎn)后面。

  95.           }
  96.         else
  97.           {                       
  98.                 DisplayData[0] = 0x00;
  99.                 tp=temp;//因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量
  100.                 //如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身
  101.                 temp=tp*0.0625*100+0.5;       
  102.                 //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)
  103.                 //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
  104.                 //算加上0.5,還是在小數(shù)點(diǎn)后面。
  105.         }
  106.         DisplayData[1] = smgduan[temp % 10000 / 1000];
  107.         DisplayData[2] = smgduan[temp % 1000 / 100]|0x80;
  108.         DisplayData[3] = smgduan[temp %  100 / 10];
  109.         DisplayData[4] = smgduan[temp %  10 / 1];

  110. }


  111. /*******************************************************************************
  112. * 函數(shù)名         :DigDisplay()
  113. * 函數(shù)功能                 :數(shù)碼管顯示函數(shù)
  114. * 輸入           : 無
  115. * 輸出                  : 無
  116. *******************************************************************************/
  117. void DigDisplay()
  118. {
  119.         u8 i;
  120.         for(i=1;i<6;i++)
  121.         {
  122.                 switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
  123.                 {
  124.                        
  125.                         case(1):
  126.                                 LSA=1;LSB=1;LSC=1; break;//顯示第1位
  127.                         case(2):
  128.                                 LSA=0;LSB=1;LSC=1; break;//顯示第2位
  129.                         case(3):
  130.                                 LSA=1;LSB=0;LSC=1; break;//顯示第3位
  131.                         case(4):
  132.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  133.                         case(5):
  134.                                 LSA=1;LSB=1;LSC=1; break;//顯示第1位
  135.                                
  136.                 }       
  137.                 P0=DisplayData[i];//發(fā)送數(shù)據(jù)
  138.                 delay(100); //間隔一段時(shí)間掃描       
  139.                 P0=0x00;//消隱
  140.         }               
  141. }


  142.                    void        end(){
  143.                                    KeyDown();                   //按鍵判斷函數(shù)
  144.                    if(KeyValue==3){
  145.             datapros(Ds18b20ReadTemp());         //數(shù)據(jù)處理函數(shù)
  146.                 DigDisplay();//數(shù)碼管顯示函數(shù)       
  147.         }
  148.         else{
  149.                 GPIO_DIG=~smgduan[KeyValue];          //
  150.                 LED();}         }


  151. /*******************************************************************************
  152. * 函 數(shù) 名       : main
  153. * 函數(shù)功能                 : 主函數(shù)
  154. * 輸    入       : 無
  155. * 輸    出             : 無
  156. *******************************************************************************/
  157. void main()
  158. {       
  159.         while(1)
  160.         {                       
  161.         end();
  162.         }               
  163. }
  164. void sheding()
  165. {
  166.                 DisplayData[5] = smgduan[3];
  167.         DisplayData[6] = smgduan[0];
  168. }
復(fù)制代碼


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2021-7-1 18:18 | 只看該作者
樓主你好 缺少頭文件 無法編譯啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲视频 | 日日骚网 | 国产高清自拍视频在线观看 | 精品久久久久久红码专区 | 成人看片在线观看 | 国产成人精品午夜视频免费 | 中文字幕久久精品 | 一二三四在线视频观看社区 | 一区二区三区四区电影视频在线观看 | 午夜网址| 一级做a爰片性色毛片视频停止 | 久久男人 | 欧美精品久久久 | 日本五月婷婷 | 性xxxxx | 亚洲精品一二三 | 红色av社区 | 欧美视频在线播放 | 羞羞视频在线观看 | 九九精品影院 | 精品国产乱码久久久久久牛牛 | 精品在线一区 | 日韩欧美一区二区三区 | 狠狠亚洲 | 国产视频第一页 | 91在线观看 | 亚洲视频免费在线播放 | 99久久婷婷国产精品综合 | 欧美日韩综合视频 | 亚洲第一黄色网 | 国产午夜精品福利 | 久久成人综合 | 成人在线观看亚洲 | 亚洲视频一区二区三区 | 久久久蜜臀国产一区二区 | ririsao久久精品一区 | 亚洲高清在线 | 亚洲美女一区二区三区 | 国产视频1区| 成人av一区二区三区 | 91视频精选 |