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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機鍵盤控制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)


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

使用道具 舉報

沙發
ID:559866 發表于 2019-6-11 21:35 | 只看該作者
i2c.h找不到怎么班
回復

使用道具 舉報

板凳
ID:560917 發表于 2019-6-12 14:59 | 只看該作者
謝謝你的分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表