亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機鍵盤控制PCF8591 DA轉換器來控制流水燈的亮度 帶仿真原理圖 [打印本頁]

作者: xxx鐵xx    時間: 2018-11-10 16:17
標題: 單片機鍵盤控制PCF8591 DA轉換器來控制流水燈的亮度 帶仿真原理圖
新人帖子,利用PCF8591DA轉換功能來控制LED流水燈亮度。壓縮包內有Proteus 仿真和程序

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include"i2c.h"
  4. #include"lcd.h"

  5. #define  WRITEADDR 0x90
  6. #define  READADDR  0x91
  7. unsigned char Time;

  8. #define GPIO_LED P1

  9. sbit K1=P3^2;
  10. sbit K2=P3^3;

  11. long int vol=180;

  12. void Pcf8591DaConversion(unsigned char value);

  13. void Delay10ms(unsigned int c)   //誤差 0us
  14. {
  15.     unsigned char a,b;
  16.     for(;c>0;c--)
  17.         for(b=38;b>0;b--)
  18.             for(a=130;a>0;a--);
  19. }

  20. /*******************************************************************************
  21. * 函數名         : main
  22. * 函數功能                   : 主函數
  23. * 輸入           : 無
  24. * 輸出                  : 無
  25. *******************************************************************************/

  26. void main()
  27. {
  28.         GPIO_LED=0XFE;        
  29.         LcdInit();
  30.     LcdWriteCom(0x80+4);
  31.     LcdWriteData('D');
  32.     LcdWriteData('a');
  33.     LcdWriteData('n');
  34.     LcdWriteData(' ');
  35.     LcdWriteData('Y');
  36.     LcdWriteData('a');
  37.     LcdWriteData(':');
  38.         TMOD = 0x01; //選擇工作方式1
  39.     TH0 = 0x3C;         //設置初始值,定時50MS
  40.     TL0 = 0xB0;
  41.     EA = 1;                         //打開總中斷
  42.     ET0 = 1;TR0 = 1;                 //打開定時器0中斷//啟動定時器0            
  43.         while(1)
  44.         {        
  45.                 LcdWriteCom(0xc0+6);
  46.                 LcdWriteData('0'+vol*5/255%10);
  47.                 LcdWriteData('.');
  48.         LcdWriteData('0'+vol*50/255%10);
  49.         LcdWriteData('0'+vol*500/255%10);
  50.                 LcdWriteData('V');

  51.         Pcf8591DaConversion(vol); //DAC          數模轉換

  52.         if(K1==0)
  53.         {
  54.             Delay10ms(1);
  55.             if(K1==0)
  56.             {
  57.                 vol=vol+10;
  58.                 if(vol>255)
  59.                 vol=255;
  60.                 while(K1==0);
  61.             }
  62.         }
  63.         if(K2==0)
  64.         {
  65.             Delay10ms(1);
  66.             if(K2==0)
  67.             {
  68.                 vol=vol-10;
  69.                 if(vol<0)
  70.                 vol=0;
  71.                 while(K2==0);
  72.             }
  73.         }
  74.                                                                                 
  75.         }
  76.                                  
  77. }

  78. void Pcf8591DaConversion(unsigned char value)
  79. {
  80.         I2cStart();
  81.         I2cSendByte(WRITEADDR);//發送寫器件地址
  82.         I2cSendByte(0x40);//開啟DA寫到控制寄存器
  83.         I2cSendByte(value);//發送轉換數值
  84.         I2cStop();        
  85. }

  86. void Timer0() interrupt 1
  87. {
  88.         TH0 = 0x3C;         //設置初始值
  89.     TL0 = 0xB0;
  90.         Time++;

  91.         if(Time>=10)
  92.         {
  93.                 GPIO_LED=_crol_(GPIO_LED,1);
  94.                 Time=0;
  95.         }
  96. }
復制代碼

所有資料51hei提供下載:
程序仿真.rar (103.09 KB, 下載次數: 60)



作者: MoFanart    時間: 2019-6-11 21:35
i2c.h找不到怎么班
作者: HearingWings    時間: 2019-6-12 14:59
謝謝你的分享




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1