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

標題: 單片機DA轉換 PCF8591鋸齒波代碼Proteus仿真原理圖 [打印本頁]

作者: 小張小張1    時間: 2022-11-16 11:06
標題: 單片機DA轉換 PCF8591鋸齒波代碼Proteus仿真原理圖
鋸齒波生成原理:PCF8591中所存數據不斷增大,直至到達最值(十進制255),隨后令PCF8591中所存數據變為0,從而到達鋸齒波的效果
實現:輸出峰峰值為0-3V的爬升鋸齒波
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>   //包含函數_nop_()定義的頭文件
  3. #define AddWr 0x90   //PCF8591寫地址
  4. #define u8 unsigned char
  5. #define u16 unsigned int

  6. u8 code juchi[64]=
  7. {
  8. 0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
  9. 146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
  10. };                                          //鋸齒波取碼
  11. sbit Sda=P1^2;        //定義IIC總線引腳
  12. sbit Scl=P1^1;
  13. u16 num;


  14.   void Start(void)
  15.   {
  16.    Sda=1;
  17.    _nop_();
  18.    Scl=1;
  19.    _nop_();
  20.    Sda=0;        //sda負跳變
  21.    _nop_();
  22.    Scl=0;
  23.   }

  24.   void Stop(void)
  25.   {
  26.    Sda=0;
  27.    _nop_();
  28.    Scl=1;
  29.    _nop_();
  30.    Sda=1;        //sda正跳變
  31.    _nop_();
  32.    Scl=0;
  33.    }

  34.          
  35.          void Send(u8 Data)
  36.         {
  37.           u8 BitCounter=8;   //定義發送位數為8
  38.           do
  39.           {
  40.                  Scl=0;
  41.                  _nop_();
  42.                  if((Data&0x80)==0x80)        //逐位判別1/0后送至SDA
  43.                     Sda=1;        //scl低電平期間數據送至sda線                        
  44.                  else
  45.                     Sda=0;
  46.                   Scl=1;        //scl變高輸出數據(寫入pcf8591)                        
  47.                   Data=Data<<1;
  48.                   BitCounter--;
  49.           }while(BitCounter);
  50.           Scl=0;
  51.         }
  52.         
  53.         void Ack(void)
  54.    {
  55.     Sda=0;         //scl高電平期間sda輸出低電平
  56.                 _nop_();
  57.                 Scl=1;         
  58.                 _nop_();
  59.                 Scl=0;
  60.                 _nop_();
  61.         }
  62.          
  63.         void DACconversion(u8 sla,u8 c, u8 Val)    //8591輸出一個數據
  64.         {
  65.                 Start();//啟動總線
  66.                 Send(sla);//發送器件地址
  67.                          Ack();        
  68.                 Send(c);//發送控制字節
  69.                          Ack();        
  70.                 Send(Val);//發送DAC的數值
  71.                          Ack();        
  72.                 Stop();//結束總線
  73.         }

  74.          
  75.         void main()
  76.         {
  77.                 while(1)
  78.                 {
  79.                                 for(num=0;num<64;num++)
  80.                          {
  81.                                         DACconversion(AddWr,0x40,juchi[num]);
  82.                          }
  83.                   if(num==64)
  84.                                 {
  85.                                                 num=0;
  86.                                 }

  87.                 }
  88.         }
復制代碼

Keil代碼與Proteus8.13版本的仿真下載(注意不能兼容其他版本 只能用8.13打開):
DA鋸齒波發生器.7z (32.08 KB, 下載次數: 22)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区成人 | 日韩免费在线 | 日韩欧美高清 | 日韩黄色免费 | 精品99在线 | 青草久久免费视频 | 精品日韩在线观看 | a视频在线 | 国产精品久久国产精品99 gif | 午夜久草 | 成人高潮片免费视频欧美 | 欧美电影大全 | 国产 欧美 日韩 一区 | 情侣黄网站免费看 | 国产精品天堂 | 视频1区| 亚洲欧美精品久久 | 国产精品一区免费 | 久久91精品国产一区二区三区 | 国产欧美精品一区 | 中文字幕亚洲一区二区三区 | 国产永久免费 | 国产一区二区三区网站 | 午夜影视在线观看 | 国产日韩免费视频 | 国产精品国产成人国产三级 | 久久看片| 国产福利91精品一区二区三区 | 亚洲午夜一区二区 | 久久久爽爽爽美女图片 | 色必久久 | 国产高清视频 | 久久久久久久久久久高潮一区二区 | 一区二区三区在线免费观看视频 | 中国大陆高清aⅴ毛片 | 毛片在线视频 | 亚洲天堂久久 | 日韩在线观看一区二区三区 | 亚洲精品美女视频 | 日韩久久久久久久久久久 | 久久9视频 |