历史上的今天
今天是:2025年06月29日(星期日)
2020年06月29日 | 使用PCF8591对C8051F进行AD转换
2020-06-29 来源:eefocus
系统功能
使用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灯的现象。
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 题目要求:货物存放在一个仓库里,由于货物产品规格不容易分辨,所以查找不方便,现在需设计一个电子自动应答器,当在仓库门口发射某个规格的产品需求信号以后,仓库里边相关的货物上携带的应 ...… 查看全部问答> |
|
几种常用流量计的基础知识和比较;差压流量计(DP)是最普通的流量技术,包括孔板、文丘里管和音速喷嘴。DP流量计可用于测量大多数液体、气体和蒸汽的流速。DP流量计没有移动部分,应用广泛,易于使用。但堵塞后,它会产生压力损失,影响精确度。流量 ...… 查看全部问答> |
|
Marvell-PXA168开发平台简介: 一:系统主要特性: ------------------------------------------- 1:内核总线频率1.2G,L1/L2 64K两级高速缓存 2:支持DDR2(1066M)最大DDR2访问速度 3:Mini PCI-E2接口 4:GPS 内置加速器 5:高速DMA通道 6:2D硬件 ...… 查看全部问答> |
|
请问如果想把NK.NB0调到36.3M左右,需要修改哪些位置???? 现在我在config.bib中将NKSIZE设置成2450000,在platform->setting中设置可以大于32M限制 但是在下载的过程中发现 在flashwrite中 &nbs ...… 查看全部问答> |
|
最近一直业务繁忙啊,所以这次拿到开发板真是有点难过,基本上没时间用用。:L 趁着休息做个试验报告吧。 SDK是ISE嵌入式套装里面的一个工具软件,早期版本基本忽略其存在,但是ISE11之后加上开发 ...… 查看全部问答> |




