基于pcf8594编写的一套AD,DA转换程序,主要是基于i2c总线的操作,
不仅可以学到AD转换的知识,还能进一步学习到i2c总线的操作过程。
硬件连接
模块功能介绍
单片机源程序如下:
- //****************************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)
|