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

標題: 數碼管顯示和DAC0832轉換實例 [打印本頁]

作者: 12.5    時間: 2018-9-12 09:21
標題: 數碼管顯示和DAC0832轉換實例
我做的一個按鍵增加數字并且DAC0832轉換調整電壓的程序,壓縮包包含proteus文件

電路原理圖如下:

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<absacc.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define DAC0832 XBYTE[0X7FFF]   //DAC0832在系統中的地址為0X7FFF
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9.   sbit dula=P2^6;
  10.   sbit wela=P2^7; //聲明數碼管鎖存器
  11.   sbit key1=P2^0;
  12.   sbit key2=P2^1;
  13.   sbit key3=P2^2;  //聲明3個按鍵
  14.   sbit dacs=P3^2;
  15.   sbit dawr=P3^6;  //聲明da端口
  16.   sbit beep=P2^4;
  17.   uchar t,num,flag;
  18.   uchar code table[]={0x3f,0x06,0x5b,0x4f,
  19.                                                  0x66,0x6d,0x7d,0x07,
  20.                                                 0x7f,0x6f,0x77,        0x7c,
  21.                                                 0x39,0x5e, 0x79,0x71}; //編碼數碼管字符
  22.   void delay(uint y)        //延時ms子函數
  23.   {
  24.           uint i,j;
  25.         for(i=y;i>0;i--)
  26.                 for(j=120;j>0;j--);
  27.   }
  28. void delayus(uint b)    //延時μS子函數
  29. {
  30.         while(b--)
  31.                 _nop_();
  32. }
  33.   void display(uchar numdis)
  34.   {
  35.           uchar shi,ge;
  36.         shi=numdis/10 ;
  37.         ge=numdis%10;            //分離個位 十位


  38.     dula=1;
  39.         P1=table[shi];
  40.         dula=0;        
  41.         wela=1;
  42.         P1=0xfe;
  43.         delay(5);
  44.         wela=0;
  45.          P1=0x00;
  46.         delay(10);        //送十位數據


  47.         dula=1;
  48.         P1=table[ge];
  49.         dula=0;        
  50.         wela=1;
  51.         P1=0xfd;
  52.         delay(5);
  53.         wela=0;   
  54.         P1=0x00;
  55.     delay(10);  //送個位數據
  56.   }        

  57.   void init()                            //初始化函數
  58.   {
  59.           TMOD=0X01;
  60.         TH0=(65336-50000)/256;
  61.         TL0=(65336-50000)%256;          //50ms 中斷一次
  62.         EA=1;
  63.         ET0=1;
  64.   }                                                        

  65.   void keyscan()
  66.   {
  67.           if(key1==0)                             //按下k1,自動加一
  68.         {
  69.                 delay(10);
  70.                 if(key1==0)
  71.                 {
  72.                 while(key1)
  73.                 {beep=1;}                           //當一直按下,蜂鳴器響
  74.                 flag=1;
  75.                 TR0=1;
  76.                 while(!key1);
  77.                 }
  78.         }
  79.         if(key2==0)                           //按下k2,自動減一
  80.         {
  81.                 delay(10);
  82.                 if(key2==0)
  83.                 {
  84.                 while(key2)
  85.                 {beep=1;}                    //當一直按下,蜂鳴器響
  86.                 flag=0;
  87.                 TR0=1;
  88.                 while(!key2);
  89.                 }
  90.         }
  91.          if(key3==0)                  //  按下k3,暫停
  92.         {
  93.                 delay(10);
  94.                 if(key3==0)
  95.                 {
  96.                 while(key3)
  97.                 {beep=1;}            //當一直按下,蜂鳴器響
  98.                 TR0=0;
  99.                 while(!key2);
  100.                 }
  101.         }
  102.   }
  103.    void main()
  104.    {
  105.                    init();                //初始化函數
  106.                 while(1)
  107.                 {
  108.                         dacs=0;
  109.                         dawr=0;
  110.                         P0=0;
  111.                         keyscan();
  112.                         display(num);
  113.                 DAC0832 =num;
  114.                           delayus(10);
  115.                 }
  116.         }
  117. void T0_time()interrupt 1
  118.   {
  119.                 TH0=(65336-500)/256;
  120.                 TL0=(65336-500)%256;   //重裝初值
  121.                 t++;
  122.                 if(t==20)                //20次為1s
  123.                 {
  124.                 if(flag        ==1)
  125.                 {
  126.                         num++;
  127.                         if(num==99)
  128.                         num=0;
  129.                 }
  130.                 if(flag==0)         
  131.                 {
  132.                         num--;
  133.                            if(num==0)
  134.                         num=99;        
  135.                 }
  136.                
  137.                 }
  138.   }
復制代碼

DA轉換實例.zip

29.23 KB, 下載次數: 34, 下載積分: 黑幣 -5


作者: jinlingpop    時間: 2022-3-14 10:11
學習了,剛好想學這兩個的內容




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲视频在线观看 | 国产一区二区三区在线 | 国产永久免费 | 操操操日日日 | 精品福利一区二区三区 | 国产精品一区二区欧美黑人喷潮水 | 亚洲精品第一国产综合野 | 精品久久久久香蕉网 | 在线视频一区二区 | 中文字幕在线看人 | 亚洲精品高清视频 | 亚洲成在线观看 | 亚洲 成人 av| 精精国产xxxx视频在线野外 | 在线观看涩涩视频 | 欧美一级黑人aaaaaaa做受 | 男女羞羞视频在线观看 | 国产成人精品久久二区二区91 | 中文字幕日韩在线 | 成人精品国产免费网站 | 亚洲成人精品久久 | 97精品国产一区二区三区 | 午夜精品一区二区三区在线视频 | 中文字幕日本一区二区 | 精品入口麻豆88视频 | 在线成人精品视频 | 91一区二区三区在线观看 | 国产情侣一区 | 亚洲欧美日韩精品久久亚洲区 | 99伊人| 午夜精品一区二区三区在线视 | 久久精品91 | www.中文字幕 | 久久久免费 | av网站免费观看 | 日韩理论电影在线观看 | 亚洲综合无码一区二区 | 亚洲网站观看 | gav成人免费播放视频 | 9999久久 | 国产精品1 |