使用PCF8591对C8051F进行AD转换

2020-06-29来源: eefocus关键字:PCF8591  C8051F  AD转换

系统功能

使用PCF8591对C8051F进行AD转换。


硬件设计

使用PCF8591对C8051F进行AD转换电路原理图


软件设计


下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!

I2C(SMBus)详细程序请查看C8051F I2C(SMBus)程序。 


//目标系统: 基于C8051F单片机

//应用软件: Silicon IDE / Keil

/*01010101010101010101010101010101010101010101010101010101010101010101

----------------------------------------------------------------------

实验内容:

利用PCF8591进行AD数据转换,转换的值返回到P2口中,P2口与LED相连,观测LED灯是否正确显示

----------------------------------------------------------------------

硬件连接:

将P2口与8位LED指示灯相连。

在PCF8591的AIN0端口接入一个10K的电位器

DVK501(PCF8591PrlPort)    F320 EX

                           VCC    ---------   VCC

                           GND   ---------   GND

                           SDA    ---------   P1.0  

                           SCL    ---------   P1.1

----------------------------------------------------------------------

注意事项:

(1)若有加载库程序,请将光盘根目录下的“library”下的“C8051F”文件夹拷到D盘

(2)请详细阅读:光盘根目录下的“说明书首页.htm”里的相应产品说明

----------------------------------------------------------------------

10101010101010101010101010101010101010101010101010101010101010101010*/


#define _DVK501_F320_EX_


#include

#include <../../../../library/C8051F/ws_clock.h>

#include <../../../../library/C8051F/ws_delay.h>

#include <../../../../library/C8051F/ws_iic_port.h>

#include <../../../../library/C8051F/ws_pcf8591.h>


void main(void)

{

uchar *pGetDat,tmp = 0;


PCA0MD &= ~0x40; // Clear watchdog timer enable

clock_external(); // Set oscillator in external,the clock is 12M

delay_ms(100);

Check_SDA();

XBR1 = 0x40; // Enable crossbar and weak pull-ups

SMBus_Init();

Enb_Interrupt();


while(1)

{

PCF8591_getAD(MODE0,CHNL0,pGetDat);

if(*pGetDat != tmp)

{

showLine(11,1,lcd_buffer,"0x%x2",*pGetDat);

refreshLCD(lcd_buffer);

tmp = *pGetDat;

P2 = tmp;

}

delay_ms(100);

}

}


#define MODE0 0x00 //Channel0 = AIN0;

//Channel1 = AIN1;

//Channel2 = AIN2;

//Channel3 = AIN3;

#define MODE1 0x10 //Channel0 = AIN3-AIN0;

//Channel1 = AIN3-AIN1

//Channel2 = AIN3-AIN2;

#define MODE2 0x20 //Channel0 = AIN0;

//Channel1 = AIN1;

//Channel2 = AIN3-AIN2;

#define MODE3 0x30 //Channel0 = AIN1-AIN0;

//Channel1 = AIN3-AIN2;

#define CHNL0 0 //Using Channel0

#define CHNL1 1 //Using Channel1

#define CHNL2 2 //Using Channel2

#define CHNL3 3 //Using Channel3


#define DAouputEn 0x40 //0x50 or 0x60 or 0x70 is also ok!


void PCF8591_getAD(uchar mode,uchar chan,uchar *ADC)

{

SMBus_Write(0x90,mode|chan,0,1);

SMBus_Read(0x91,ADC,1);

}


void PCF8591_setDA(uchar val)

{

SMBus_Write(0x90,DAouputEn,val,2);

}


系统调试

调电位器上的旋钮,观察每次调完后LED灯的现象。

关键字:PCF8591  C8051F  AD转换 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501479.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:使用C8051F驱动PCF8563时钟芯片
下一篇:使用AT24Cxx扩展C8051F EEPROM

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8 PCF8591 AD/DA转换子程序
软件设计/*********************************************************************目 的: 建立PCF8591操作库目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/#include <ws_i2c.h>#define MODE0 0x00#define MODE1 0x10#define MODE2 0x20#define MODE3 0x30#define CHNL0
发表于 2020-06-28
AVR PCF8591 程序
/*********************************************************************       目    的:   建立PCF8591操作库目标系统:   基于AVR单片机                                           
发表于 2020-06-28
51单片机PCF8591四路AD数值LCD1602屏显示源码
PCF8591ADDA转换                  显示有4个,注意只有2个可以调节电压的  内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压通过液晶显示,并输出模拟量,用LED亮度渐变指示------------------------------------------------*/#include <reg52.h>    //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include <intrins.h> //包含NOP空指令函数_nop
发表于 2020-01-08
基于89C51+PCF8591 5V简易电压表仿真与源码设计
传感器 MQ -2采集器 PCF8591 处理器 STC89c51显示器 LCD1602按键调整加减报警值 初始值为50%基于89C51+LCD1602+PCF8591 5V简易电压表仿真原理图如下单片机源程序如下:       #include<reg52.h>    #include <intrins.h>#define ulong unsigned long#define uchar unsigned char#define uint unsigned int#define LCD1602_PORT P1 
发表于 2019-12-25
基于89C51+<font color='red'>PCF8591</font> 5V简易电压表仿真与源码设计
AVR单片机PCF8591转换实例源程序操作库
;                                 实验内容:初始化、读取AD、输出DA,使用PA口的LED指示获取的AD数据,使用万用表测量DA的输出电压。----------------------------------------------------------------------硬件连接:将PA口的LED指示灯使用短路帽短接;PCF8591:VCC、GND、SDA、SCL 
发表于 2019-11-23
高速SOC单片机C8051F
的生命力,其运行速度高达每秒25M PS。现已设计并为市场提供了29个品种的08051 F系列的片上系统单片机,预计今年年内还将完成20多个新的片上系统单片机的设计,经过3年的稳步发展已成长为半导体业界一颗耀眼的新星。 Cygnal C8051F系列单片机由沈阳新华龙电子有限公司于2001年引进中国大陆,并于11月“2001嵌入式系统及单片机国际学术交流会暨产品展示会”上首次亮相,受到与会者的极大关注。 Cygnal C8051F系列单片机是集成的混合信号片上系统SOC(System on chip),具有与MCS-51内核及指令集完全兼容的微控制器,除了具有标准8051的数字外设部件之外,片内还集成了数据采集
发表于 2020-07-02
高速SOC单片机<font color='red'>C8051F</font>
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved