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

標(biāo)題: 單片機(jī)Proteus仿真ADC0809數(shù)字電壓表程序設(shè)計(jì) [打印本頁(yè)]

作者: zyc0211    時(shí)間: 2020-12-22 08:17
標(biāo)題: 單片機(jī)Proteus仿真ADC0809數(shù)字電壓表程序設(shè)計(jì)
源碼加電路圖


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管顯示0-9的電平碼
  5. uint volt,vtime; //電壓值測(cè)定值
  6. uchar addr;//測(cè)量地址位
  7. sbit LW1=P2^3; //對(duì)應(yīng)第4個(gè)數(shù)碼管
  8. sbit LW2=P2^2; //對(duì)應(yīng)第3個(gè)數(shù)碼管
  9. sbit LW3=P2^1; //對(duì)應(yīng)第2個(gè)數(shù)碼管
  10. sbit LW4=P2^0; //對(duì)應(yīng)第1個(gè)數(shù)碼管
  11. sbit LW5=P1^4;//指示當(dāng)前顯示的是第幾個(gè)轉(zhuǎn)換值
  12. sbit CLK=P2^4; //時(shí)鐘信號(hào)
  13. sbit START=P2^5; //轉(zhuǎn)換啟動(dòng)開關(guān)
  14. sbit EOC=P2^6;        //轉(zhuǎn)換結(jié)束標(biāo)志
  15. sbit OE=P2^7;//定義ADC0809各腳
  16. /**********************************************************/
  17. //函數(shù)名:delay(uint x)
  18. //功能:延時(shí)程序 改變測(cè)量地址         
  19. //調(diào)用函數(shù):
  20. //輸入?yún)?shù):x
  21. //輸出參數(shù):
  22. //說明:程序的延時(shí)時(shí)間為x乘以0.5ms 每5s改變測(cè)量地址位
  23. /**********************************************************/
  24. void delay(uint x)
  25. {
  26.         uchar y,z;
  27.         for(y=x;y>0;y--)
  28.                 for(z=250;z>0;z--);//該步運(yùn)行時(shí)間約為0.5ms
  29.                 vtime++;
  30.                 if(vtime==1000)
  31.                 {
  32.                         vtime=0;
  33.                         addr++;
  34.                         if(addr==3)         //本例子一共有3個(gè)測(cè)量輸入值,輪流讀取這3個(gè)值并轉(zhuǎn)換顯示
  35.                                 addr=0;//以上語(yǔ)句實(shí)現(xiàn)測(cè)量地址位的改變               
  36.                 }        
  37. }
  38. /**********************************************************/
  39. //函數(shù)名:ADC()
  40. //功能:數(shù)模轉(zhuǎn)換程序
  41. //調(diào)用函數(shù):
  42. //輸入?yún)?shù):
  43. //輸出參數(shù):
  44. //說明:將轉(zhuǎn)換好的測(cè)定值保存在變量volt中
  45. /**********************************************************/
  46. void ADC()
  47. {
  48.         EA=1;//開中斷

  49.         //確保進(jìn)入正常AD轉(zhuǎn)換狀態(tài)?
  50.         START=0;
  51.         START=1;

  52.         START=0;//ad開始轉(zhuǎn)換               
  53.         while(EOC==0); //等待轉(zhuǎn)換結(jié)束
  54.         OE=1; //輸出數(shù)據(jù)標(biāo)志為真
  55.         
  56.         EA=0;//關(guān)中斷
  57.         volt=P3;//獲取轉(zhuǎn)換值保存到volt中,(P3為轉(zhuǎn)換后數(shù)據(jù))
  58.         volt=volt*196;//轉(zhuǎn)換值處理 (例子的滿量程為5V,轉(zhuǎn)換分辯率為8位即最大值是255,5/255=196mV,即1代表196mV)
  59.         
  60.         OE=0;//輸出轉(zhuǎn)換結(jié)束 (要在獲取轉(zhuǎn)換值之后)
  61. }
  62. /**********************************************************/
  63. //函數(shù)名:display()
  64. //功能:4位數(shù)碼管顯示
  65. //調(diào)用函數(shù):delay(uint x)
  66. //輸入?yún)?shù):
  67. //輸出參數(shù):
  68. //說明:將處理后的電壓值顯示在4位數(shù)碼管上
  69. /**********************************************************/
  70. void display()
  71. {
  72.         P0=0xff;//消隱 (相當(dāng)于全部滅燈,清除上次顯示效果)
  73.         LW1=0;
  74.         P0=~led[volt/10000]&0x7f;//帶小數(shù)點(diǎn)1伏顯示位
  75.         delay(2);
  76.         P0=0xff;
  77.         LW1=1;
  78.         LW2=0;
  79.         P0=~led[(volt/1000)%10];//100毫伏顯示位
  80.         delay(2);
  81.         P0=0xff;
  82.         LW2=1;
  83.         LW3=0;
  84.         P0=~led[(volt/100)%10];//10毫伏顯示位
  85.         delay(2);
  86.         P0=0xff;
  87.         LW3=1;
  88.         LW4=0;
  89.         P0=~led[(volt/10)%10];//1毫伏顯示位
  90.         delay(2);
  91.         P0=0xff;
  92.         LW4=1;
  93.         LW5=0;
  94.         P0=~led[addr+1];//顯示電壓測(cè)量位
  95.         delay(2);
  96.         LW5=1;//指示當(dāng)前顯示的是第幾個(gè)轉(zhuǎn)換值                                                               
  97. }
  98. /**********************************************************/
  99. //主程序
  100. /**********************************************************/
  101. void main()
  102. {
  103.         EA=1;//開總中斷                  
  104.     TMOD=0x01;//設(shè)定定時(shí)計(jì)數(shù)工作方式
  105.         //為定時(shí)器初賦值
  106.         TH0=0XFF;
  107.     TL0=0XB4;

  108.         ET0=1;//開定時(shí)器0中斷
  109.         TR0=1;//開啟定時(shí)器0
  110.         while(1)
  111.         {
  112.                 P1=addr;//裝入測(cè)量地址
  113.                 LW5=1;
  114.                 ADC();//調(diào)用模數(shù)轉(zhuǎn)換程序
  115.                 display();//調(diào)用顯示程序
  116.         }
  117. }
  118. /**********************************************************/
  119. //函數(shù)名:timer() interrupt 1
  120. //功能:定時(shí)中斷0響應(yīng)程序
  121. //調(diào)用函數(shù):
  122. //輸入?yún)?shù):
  123. //輸出參數(shù):
  124. //說明:為ADC提供時(shí)鐘信號(hào)
  125. /**********************************************************/
  126. void timer() interrupt 1
  127. {
  128.         //初值重置
  129.         TH0=0XFF;
  130.     TL0=0XF0;
  131.         CLK=~CLK;//取反 產(chǎn)生時(shí)鐘信號(hào)
  132. }
復(fù)制代碼

仿真代碼51hei提供下載:
數(shù)字電壓表(ADC0809)-2.rar (47.83 KB, 下載次數(shù): 70)






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 2021狠狠干| 综合久久久 | 天天综合亚洲 | 日韩视频一区二区三区 | 亚洲精品二区 | 精品一区二区三区在线观看 | 色婷婷综合久久久中字幕精品久久 | 国产91色在线 | 亚洲 | 免费av手机在线观看 | 密室大逃脱第六季大神版在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 超碰在线播 | 高清黄色网址 | 国产色 | 欧美精品久久久久 | 午夜一区二区三区在线观看 | 亚洲国产精品久久久久久 | 中国xxxx性xxxx产国 | 精品国产乱码久久久久久88av | 色婷婷综合网站 | 午夜精品三区 | 美女视频黄色的 | 国产91亚洲精品一区二区三区 | 中文在线一区二区 | 亚洲精品99久久久久久 | 色婷婷久久久久swag精品 | 一区二区三区欧美在线 | 国产成人aⅴ | 亚洲狠狠爱 | 亚洲一区电影 | 国产色爽 | caoporn国产精品免费公开 | 国产在线观看一区二区 | 久久亚洲欧美日韩精品专区 | 天天拍天天色 | 九九在线视频 | 天堂网中文 | 亚洲精品成人在线 | 妞干网av | 精品啪啪 | 欧美在线一区二区三区 |