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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機電壓顯示器制作 學習蘿莉的課程設計作品 用于測試電壓

[復制鏈接]
跳轉到指定樓層
樓主
學習蘿莉的教程制作的電壓顯示器,處于學習階段。用到的材料:STC15W408AS DIP28 單片機   數碼管 四位共陽   可調電阻 10K


效果:


代碼:
  1. //用于測試電壓的     用的單片機是 STC15F408AS
  2. #include <reg51.h>
  3. #include<intrins.h>
  4. void Display(unsigned int num);//用于數碼管顯示具體數字  顯示0到9直接用相應的數字做參數,顯示1到9 加個點 用1到9乘以10做參數 0加一個點用11做參數
  5. void Display_num(unsigned int num,unsigned char weizhi); // 用于確認那個數碼管顯示數字。  第一參數num是要顯示的數字, 第二個參數weizhi是要在哪個數碼管顯示(最左邊為1,最右邊為4)
  6. void Delay1ms();                //@12.000MHz
  7. void delay_n_ms(unsigned int n);//延時n毫秒函數
  8. void Delay1us();                //@12.000MHz
  9. void delay_n_us(unsigned int n);//延時微秒函數
  10. unsigned int a; //保存模數轉換后的數據

  11. sfr P2M0=0x96;     //聲明 P2引腳模式寄存器
  12. sfr P3M0=0xb2;     //聲明 P3引腳模式寄存器
  13. sfr P1ASF=0x9D;    //聲明 P1口模擬功能寄存器  p1.7開啟模擬功能
  14. sfr ADC_RES=0xBD;  //聲明 ADC轉換結果寄存器
  15. sfr ADC_CONTR=0xBC;//聲明 ADC控制寄存器

  16.                                        
  17. sbit DA=P2^4;                        //數碼管每個引腳
  18. sbit DB=P3^2;
  19. sbit DC=P3^6;
  20. sbit DD=P2^0;
  21. sbit DE=P2^1;
  22. sbit DF=P2^3;
  23. sbit DG=P3^5;
  24. sbit DP=P3^7;

  25. sbit B1=P2^5;                        //四個數碼管的引腳定義          用于控制哪個數碼管亮
  26. sbit B2=P2^2;
  27. sbit B3=P3^3;
  28. sbit B4=P3^4;

  29. void main()
  30. {
  31.    unsigned int i;//用于存儲臨時數據
  32.    P2M0=0x1B;                //需要高電平大電流的引腳 2.4、2.3、2.1、2.0,填入數值0001 1011
  33.    P3M0=0xE4;                //需要高電平大電流的引腳 3.7、3.6、3.5、3.2,填入數值1110 0100
  34.    B1=B2=B3=B4=0;

  35.    
  36.         
  37.   while(1)
  38.   {
  39.     delay_n_ms(2);
  40.     P1ASF=0x80;
  41.         ADC_CONTR=0X88+7;
  42.         a=ADC_RES;
  43.         a=a*100;
  44.         i=a/5100;
  45.         //顯示個位
  46.         if (i==0) //如果是零點幾伏就顯示 零點
  47.         {
  48.            Display_num(11,3);
  49.         }
  50.         else
  51.         {
  52.            Display_num(i*10,3);
  53.         }
  54.          delay_n_us(20);
  55.         //顯示十分位
  56.         i=a%5100/510;
  57.         Display_num(i,4);
  58.          delay_n_us(10);
  59.          
  60.   }
  61.   
  62. }
  63. void Display(unsigned int num) //顯示0到9直接用相應的數字做參數,顯示1到9 加個點 用1到9乘以10做參數 0加一個點用11做參數
  64. {
  65.    switch(num)
  66.         {
  67.                  case 0:
  68.                      {
  69.                          DA=0;  DB=0;   DC=0;          DD=0;   DE=0; DF=0; DG=1;      DP=1;         //顯示0        
  70.                          break;         
  71.                          }
  72.              case 1:
  73.                      {
  74.                          DA=1;  DB=0;   DC=0;          DD=1;  DE=1; DF=1;   DG=1;      DP=1;         //顯示1
  75.                          break;                  
  76.                          }
  77.                  case 2:
  78.                      {
  79.                          DA=0;  DB=0;   DC=1;          DD=0;   DE=0;  DF=1;          DG=0;     DP=1;         //顯示2                  
  80.                          break;
  81.                          }
  82.                  case 3:
  83.                      {
  84.                          DA=0;  DB=0;    DC=0;          DD=0;    DE=1; DF=1;         DG=0;     DP=1;         //顯示3                  
  85.                          break;
  86.                          }
  87.                  case 4:
  88.                      {
  89.                          DA=1;  DB=0;  DC=0;          DD=1;    DE=1;  DF=0;           DG=0;     DP=1;         //顯示4                  
  90.                          break;
  91.                          }
  92.                  case 5:
  93.                      {
  94.                          DA=0;  DB=1;     DC=0;          DD=0;   DE=1;   DF=0;           DG=0;   DP=1;         //顯示5                  
  95.                          break;
  96.                          }
  97.                  case 6:
  98.                      {
  99.                          DA=0;  DB=1;     DC=0;          DD=0;  DE=0;  DF=0;          DG=0;    DP=1;         //顯示6                  
  100.                          break;
  101.                          }
  102.                  case 7:
  103.                      {
  104.                          DA=0;  DB=0;   DC=0;          DD=1;   DE=1;  DF=1;          DG=1;     DP=1;         //顯示7                  
  105.                          break;
  106.                          }
  107.                  case 8:
  108.                      {
  109.                          DA=0;  DB=0;    DC=0;          DD=0;  DE=0;  DF=0;          DG=0;     DP=1;         //顯示8                  
  110.                          break;
  111.                          }
  112.                  case 9:
  113.                      {
  114.                          DA=0;  DB=0;  DC=0;          DD=0;   DE=1; DF=0;           DG=0;      DP=1;         //顯示9                  
  115.                          break;
  116.                          }
  117.                  
  118.              case 10:
  119.                      {
  120.                          DA=1;  DB=0;   DC=0;          DD=1;  DE=1; DF=1;   DG=1;      DP=0;         //顯示1加個點
  121.                          break;                  
  122.                          }
  123.                 case 11:
  124.                      {
  125.                          DA=0;  DB=0;   DC=0;          DD=0;   DE=0; DF=0; DG=1;      DP=0;         //顯示0        加個點
  126.                          break;         
  127.                          }
  128.                  case 20:
  129.                      {
  130.                          DA=0;  DB=0;   DC=1;          DD=0;   DE=0;  DF=1;          DG=0;     DP=0;         //顯示2        加個點         
  131.                          break;
  132.                          }
  133.                  case 30:
  134.                      {
  135.                          DA=0;  DB=0;    DC=0;          DD=0;    DE=1; DF=1;         DG=0;     DP=0;         //顯示3        加個點         
  136.                          break;
  137.                          }
  138.                  case 40:
  139.                      {
  140.                          DA=1;  DB=0;  DC=0;          DD=1;    DE=1;  DF=0;           DG=0;     DP=0;         //顯示4        加個點         
  141.                          break;
  142.                          }
  143.                  case 50:
  144.                      {
  145.                          DA=0;  DB=1;     DC=0;          DD=0;   DE=1;   DF=0;           DG=0;   DP=0;         //顯示5        加個點         
  146.                          break;
  147.                          }
  148.                  case 60:
  149.                      {
  150.                          DA=0;  DB=1;     DC=0;          DD=0;  DE=0;  DF=0;          DG=0;    DP=0;         //顯示6        加個點         
  151.                          break;
  152.                          }
  153.                  case 70:
  154.                      {
  155.                          DA=0;  DB=0;   DC=0;          DD=1;   DE=1;  DF=1;          DG=1;     DP=0;         //顯示7        加個點         
  156.                          break;
  157.                          }
  158.                  case 80:
  159.                      {
  160.                          DA=0;  DB=0;    DC=0;          DD=0;  DE=0;  DF=0;          DG=0;     DP=0;         //顯示8        加個點         
  161.                          break;
  162.                          }
  163.                  case 90:
  164.                      {
  165.                          DA=0;  DB=0;  DC=0;          DD=0;   DE=1; DF=0;           DG=0;      DP=1;         //顯示9        加個點         
  166.                          break;
  167.                          }
  168.                  default :
  169.                      {
  170.                           DA=1;  DB=1;   DC=1;          DD=1;   DE=1;  DF=1;          DG=1;     DP=1;         //全滅         
  171.                          break;
  172.                          }
  173.         }
  174. }

  175. void Display_num(unsigned int num,unsigned char weizhi)
  176. {
  177.    switch(weizhi)
  178.    {
  179.       case 1:
  180.                {
  181.                         B1=1; B4=B2=B3=0;
  182.                                   Display(num);
  183.                                 break;
  184.                         }
  185.            case 2:
  186.                {
  187.                         B2=1; B1=B3=B4=0;
  188.                                   Display(num);
  189.                                 break;
  190.                         }
  191.             case 3:
  192.                {
  193.                         B3=1; B1=B2=B4=0;
  194.                                   Display(num);
  195.                                 break;
  196.                         }
  197.                  case 4:
  198.                {
  199.                         B4=1; B1=B2=B3=0;
  200.                                   Display(num);
  201.                                 break;
  202.                         }


  203.     }  
  204. }
  205. void Delay1us()                //@12.000MHz
  206. {
  207.         _nop_();
  208.         _nop_();
  209.         _nop_();
  210.         _nop_();
  211. }
  212. void delay_n_us(unsigned int n) //延時n毫秒函數
  213. {
  214.         while(n)         
  215.         {
  216.                 Delay1ms();
  217.                 n=n-1;//每循環一次n減小1
  218.         }   
  219. }

  220. void Delay1ms()                //@12.000MHz
  221. {
  222.         unsigned char i, j;

  223.         i = 12;
  224.         j = 169;
  225.         do
  226.         {
  227.                 while (--j);
  228.         } while (--i);
  229. }

  230. void delay_n_ms(unsigned int n) //延時n毫秒函數
  231. {
  232.         while(n)         
  233.         {
  234.                 Delay1ms();
  235.                 n=n-1;//每循環一次n減小1
  236.         }   
  237. }
復制代碼

資料.rar (1.61 KB, 下載次數: 36)

評分

參與人數 2黑幣 +105 收起 理由
紫電1 + 5 很給力!蘿麗的教程我也在關注,
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:146949 發表于 2017-2-14 00:11 | 只看該作者
我也研究過STC單片機的ADC,你這個是8位的ADC轉換程序。我給你一個10位ADC轉換程序吧,可以做1024級輸出的,配分壓電阻可做10.24V以內-1%精度。
uint GetADCResult(uchar ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //等待4個NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//等待ADC轉換完成
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC
        return (ADC_RES*4+ADC_LOW2);//1024格換算
}
回復

使用道具 舉報

板凳
ID:163392 發表于 2017-2-14 09:04 | 只看該作者
wosiyabo 發表于 2017-2-14 00:11
我也研究過STC單片機的ADC,你這個是8位的ADC轉換程序。我給你一個10位ADC轉換程序吧,可以做1024級輸出的 ...

謝謝了,正是我需要的。
回復

使用道具 舉報

地板
ID:127462 發表于 2017-8-20 08:15 | 只看該作者
學習一下,學習一下,謝謝
回復

使用道具 舉報

5#
ID:185353 發表于 2017-12-17 13:37 | 只看該作者

學習一下,學習一下,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区在线 | 日一区二区 | 久久久久电影 | 8x国产精品视频一区二区 | 日韩1区| 日日干干 | 欧美男人亚洲天堂 | 久久久.com | 亚洲精品福利视频 | 欧美日韩在线观看一区二区三区 | 国产一区| 国产一区不卡 | 国产日韩欧美在线观看 | 农村妇女毛片精品久久久 | 亚洲激情网站 | 精品日韩电影 | 99久久久无码国产精品 | 日韩一区和二区 | 91成人免费观看 | 波多野结衣一区二区三区 | 亚洲视频 欧美视频 | av黄色在线| 一区二区三区视频 | 久久久久亚洲视频 | 精品欧美一区二区三区久久久 | 91丨国产| aaa天堂| 国产精品一区二区av | japan21xxxxhd美女 日本欧美国产在线 | 国产亚洲成av人在线观看导航 | 爱爱小视频 | 伊人网综合在线观看 | 久久精品久久精品久久精品 | 日韩av免费在线电影 | 久久国产福利 | 黄片毛片免费观看 | 欧美寡妇偷汉性猛交 | 中文字幕乱码一区二区三区 | 午夜视频在线 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 精品一区二区久久久久久久网站 |