使用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转换 引用地址:使用PCF8591对C8051F进行AD转换

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

推荐阅读最新更新时间:2024-11-10 19:11

C8051F040按键程序
#include C8051F040.h #define uchar unsigned char #define uint unsigned int uchar xdata virt_port; bit SPI_BUSY; unsigned char xdata tab1 ={0x53,0x31,0x53,0x32,0x53,0x33,0x53,0x34}; sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2; sbit key4=P2^3; sbit LCD Cs=P2^5; void os_init(); void port_init(); void spi_init();
[单片机]
单片机C8051f064在电力监控仪中抗干扰设计
单片机c8051f064是cygnal(现为SILIConlab)公司在2000年左右推出的新型单片机,具有运行速度快,与8051指令系统兼容的优点,刚一推出就受到国内广大8031使用者的欢迎,纷纷学习使用,并有一定的商业应用,但在具体的使用中也发现了很多问题,抗干扰能力便是其中之一。下面我将在文章中详细讨论。先说明一下我的系统。 在本设计中系统构成为:1.电力监控仪---负责采集三项交流电的电压、电流,LCD显示,包括键盘操作,数据记录等功能,并根据电压、电流的变化控制执行机构调节电网的电压、电流,从而达到节电的功能,并具有modbus联网远传数据的能力。2.上位机数据库系统----检测并记录个终端的状态和电量数据。
[单片机]
C8051F单片机基本硬件线路设计
其实C8051F可以不需要晶振跟复位电路,但是为了最小系统能够稳定运行,所以最好增加外部电路。 ● C8051F复位电路设计    C8051F单片机内置上电复位,所以,C8051F单片机可以不设外部上电复位电路,依然可以正常复位,稳定工作。 若是系统需要设置按键复位电路,那么注意,C8051F单片机是低电平复位,如下图所示 ● C8051F震荡电路设计 C8051F单片机内置RC振荡电路。在出厂设置中,并未对时钟源进行设置,用户可通过编程的方式设置内部时钟电路或是外部时钟电路,内部时钟源的最高频率为12M高速RC振荡器。 通过程序对寄存器的设置,可以设置MCU的内部RC振荡频率。例如:4M、8M等。不过,内置RC振荡,
[单片机]
<font color='red'>C8051F</font>单片机基本硬件线路设计
STM8S AD转换
//不说那么多了,直接上程序 void ADC1_DeInit(void) { ADC1- CSR = ADC1_CSR_RESET_VALUE; ADC1- CR1 = ADC1_CR1_RESET_VALUE; ADC1- CR2 = ADC1_CR2_RESET_VALUE; ADC1- CR3 = ADC1_CR3_RESET_VALUE; ADC1- TDRH = ADC1_TDRH_RESET_VALUE; ADC1- TDRL = ADC1_TDRL_RESET_VALUE; ADC1- HTRH = ADC1_HTRH_RESET_VALUE; ADC1- HTRL = ADC1_
[单片机]
运用C8051F340的数据采集系统电路设计
  本文以带有片上USB 控制器和D/A 转换器的高度集成处理器C8051F340为核心器件,采用SD 卡存储技术利用USB 总线、虚拟仪器实现软件LabVIEW 设计图形用户界面,设计一款低成本数据采集器。该数据采集器可与PC 机共同实现数据采集与分析,也可长时间独立工作于工业现场,并将采集数据存放于大容量SD 卡,便于数据收集并利用计算机分析。   系统的硬件设计主要是数据采集模块。由于C8051F340内部集成了高精度时钟源、USB 控制器、电压调节器、A/D 转换器以及用于A/D 转换的参考电压源等丰富的片上外设,因此在对数据采集模块硬件设计时,无需扩展上述电路,使得系统硬件结构简单,集成度高,可靠性好。如图所示,通过片
[电源管理]
运用<font color='red'>C8051F</font>340的数据采集系统电路设计
采用C8051F410为微处理器实现光纤通信传输组件的设计
光纤通信在现代通信领域的地位日趋重要,因其具有带宽大、信噪比低、抗干扰的特点在工程建设中应用广泛。某新品研制中需要一款能够同时传输多路模拟电压信号、脉冲控制信号及故障指示信号的传输组件,若采用传统的电缆传输方式将不可避免地存在体积大、重量沉及传输性能受外界电磁辐射干扰大的问题。基于以上情况,文中采用以光纤通信的方式设计了一款实用的传输组件,满足新品设计要求。 1 整体架构 光纤传输组件是指以光纤作为传输信道的功能器件,通常包括发射端、接收端、光纤跳线3部分。主要原理即是在采集端实现电光转换,在接收端实现光电转换,通过光纤实现两端通信的连接。由于其特殊的传输材质和模式,使得光纤传输组件可满足在某些特殊工作环境下的要求。组件主要由
[单片机]
采用<font color='red'>C8051F</font>410为微处理器实现光纤通信传输组件的设计
STM32 八路AD转换用DMA传输调试成功,DMA传输不错位
// // #include stm32f10x_conf.h //把DMA.h和ADC.h 的注释去掉 #include stm32f10x.h #include stm32_eval.h #include #define N 50 //每通道采50次 #define M 8 //为8个通道 #define ADC1_DR_Address ((u32)0x4001244C) vu16 After_filter ; //用来存放求平均值之后的结果 vu16 AD_Value ; //用来存放ADC转换结果,也是DMA的目标地址
[单片机]
基于C8051F550的CAN总线智能结点的设计方案
1 CAN总线通信网络系统 如图1所示,本设计中通过带有终端器(120欧电阻)的通信介质(双绞线)将上位机和底层模块连接起来。实验中,终端电阻和双绞线阻抗的匹配确保了数据信号不会在总线的两端反射。上位机(主节点)采用USB CAN接口适配器(型号GYB507),使PC机直接通过USB接口就可连入CAN总线网络,成为一个标准的CAN节点。配合总线通信测试软件CANtool的使用,可直接配置PC机的发送与接收状态,通信速率和报文滤波功能等。同时,还可实时监测显示网络中各从节点与PC机的数据通信,应用简单、方便。 2 智能节点硬件设计 传统的从节点设计是将CPU与CAN总线 控制器 和总线收发器相连后再连入总线网络,这样使CPU
[单片机]
基于<font color='red'>C8051F</font>550的CAN总线智能结点的设计方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved