欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3870|回復(fù): 2
收起左側(cè)

單片機(jī)鍵盤控制PCF8591 DA轉(zhuǎn)換器來控制流水燈的亮度 帶仿真原理圖

[復(fù)制鏈接]
ID:424132 發(fā)表于 2018-11-10 16:17 | 顯示全部樓層 |閱讀模式
新人帖子,利用PCF8591DA轉(zhuǎn)換功能來控制LED流水燈亮度。壓縮包內(nèi)有Proteus 仿真和程序

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

單片機(jī)源程序如下:
  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. * 函數(shù)名         : main
  22. * 函數(shù)功能                   : 主函數(shù)
  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;         //設(shè)置初始值,定時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          數(shù)模轉(zhuǎn)換

  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);//發(fā)送寫器件地址
  82.         I2cSendByte(0x40);//開啟DA寫到控制寄存器
  83.         I2cSendByte(value);//發(fā)送轉(zhuǎn)換數(shù)值
  84.         I2cStop();        
  85. }

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

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

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


回復(fù)

使用道具 舉報(bào)

ID:559866 發(fā)表于 2019-6-11 21:35 | 顯示全部樓層
i2c.h找不到怎么班
回復(fù)

使用道具 舉報(bào)

ID:560917 發(fā)表于 2019-6-12 14:59 | 顯示全部樓層
謝謝你的分享
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表