基于pcf8594編寫的一套AD,DA轉換程序,主要是基于i2c總線的操作,
不僅可以學到AD轉換的知識,還能進一步學習到i2c總線的操作過程。
1.png (718.6 KB, 下載次數: 32)
下載附件
硬件連接
2019-2-25 10:02 上傳
2.png (550.55 KB, 下載次數: 31)
下載附件
模塊功能介紹
2019-2-25 10:03 上傳
單片機源程序如下:
- //****************************PCF8591 AD DA轉換實驗************************
- //
- //AD轉換結果由uart0送上位機顯示 115200bps
- //*************************************************************************
- #include "stc89c51rc.h"
- #include "PCF8591_MCS51.H"
- uint ii;
- ulong ad_result=0;
- uchar da_val=0;
- //*************** 函數定義 ******************
- void delay1ms(unsigned int j);
- void senddata_uart0(uchar dc);
- void sendstring_uart0(uchar *dd);
- void senduint_uart0(uint dd,uchar* dec_hex);
- //*************** 主程序 ********************
- void main(void)
- {
- //////////////將這段代碼嵌入到程序中////////////////
- if((PCON&0x10)==0) //如果POF位=0
- {
- PCON=PCON|0x10; //將POF位置1
- ISP_CONTR=0x60; //軟復位,從ISP監控區啟動
- }
- else
- {
- PCON=PCON&0xef; //將POF位清零
- }
- ////////////////////////////////////////////////////
-
- delay1ms(100);
- /* for(ii=0;ii<256;ii++)
- {
- pcf8591_da_write(ii);
- delay1ms(15);
- }
- for(ii=254;ii!=0;ii--)
- {
- pcf8591_da_write(ii);
- delay1ms(15);
- }/*//dac輸出模擬量
- while(1)
- {
- pcf8591_ad_write(0x40);
- ad_result=pcf8591_ad_read();
- ad_result=(ad_result*5)/256;//得到的電壓值
- pcf8591_da_write(da_val);//DA輸出
- delay1ms(500);
- }
- }
- //*************************延時 n*1ms********************
- void delay1ms(unsigned int j)
- {
- unsigned int i;
- for (;j>0;j--)
- {
- for (i=0;i<124;i++)
- {;}
- }
- }
復制代碼
所有資料51hei提供下載:
keil uvison2 (1).rar
(49.49 KB, 下載次數: 15)
2019-2-25 10:00 上傳
點擊文件名下載附件
源文件 下載積分: 黑幣 -5
|