标题: 51单片机基于pcf8594的AD电压采集程序 [打印本页]

作者: dongrun123321    时间: 2019-2-25 10:03
标题: 51单片机基于pcf8594的AD电压采集程序
基于pcf8594编写的一套AD,DA转换程序,主要是基于i2c总线的操作,
不仅可以学到AD转换的知识,还能进一步学习到i2c总线的操作过程。


单片机源程序如下:
  1. //****************************PCF8591 AD DA转换实验************************
  2. //
  3. //AD转换结果由uart0送上位机显示  115200bps
  4. //*************************************************************************
  5. #include "stc89c51rc.h"
  6. #include "PCF8591_MCS51.H"


  7. uint ii;
  8. ulong ad_result=0;
  9. uchar da_val=0;


  10. //*************** 函数定义 ******************
  11. void delay1ms(unsigned int j);

  12. void senddata_uart0(uchar dc);
  13. void sendstring_uart0(uchar *dd);
  14. void senduint_uart0(uint dd,uchar* dec_hex);


  15. //*************** 主程序 ********************
  16. void main(void)
  17. {
  18.   //////////////将这段代码嵌入到程序中////////////////
  19.   if((PCON&0x10)==0)  //如果POF位=0
  20.   {
  21.     PCON=PCON|0x10;   //将POF位置1
  22.     ISP_CONTR=0x60;   //软复位,从ISP监控区启动
  23.   }
  24.   else
  25.   {
  26.     PCON=PCON&0xef;   //将POF位清零
  27.   }
  28.   ////////////////////////////////////////////////////
  29.   

  30.   delay1ms(100);

  31. /*  for(ii=0;ii<256;ii++)
  32.   {
  33.     pcf8591_da_write(ii);
  34.     delay1ms(15);
  35.   }

  36.   for(ii=254;ii!=0;ii--)
  37.   {
  38.     pcf8591_da_write(ii);
  39.     delay1ms(15);
  40.   }/*//dac输出模拟量

  41.   while(1)
  42.   {
  43.     pcf8591_ad_write(0x40);
  44.     ad_result=pcf8591_ad_read();

  45.     ad_result=(ad_result*5)/256;//得到的电压值

  46.     pcf8591_da_write(da_val);//DA输出

  47.     delay1ms(500);
  48.   }
  49. }

  50. //*************************延时 n*1ms********************
  51. void delay1ms(unsigned int j)
  52. {
  53.   unsigned int i;
  54.   for (;j>0;j--)
  55.   {
  56.     for (i=0;i<124;i++)
  57.     {;}
  58.   }
  59. }
复制代码

所有资料51hei提供下载:
keil uvison2 (1).rar (49.49 KB, 下载次数: 15)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1