“使用PCF8591对C8051F进行AD转换”的版本间的差异

来自丢石头百科
(系统功能   使用PCF8591对C8051F进行AD转换。硬件设计使用PCF8591对C8051F进行AD转换电路原理图软件设计下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!I2C(SMBus)详细程序请查看C8051F ...)
 
(文本替换 - 替换“www.waveshare.net”为“{{SERVERNAME}}”)
第15行: 第15行:
 
<table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">软件设计</th></tr></tbody></table>
 
<table border="0" cellpadding="0" cellspacing="0" width="120"><tbody><tr><th bgcolor="#698192" class="white_12px_b" height="20" scope="col" style="font-size: 12px; color: rgb(255, 255, 255); line-height: 20px; font-family: Arial, Helvetica, sans-serif;">软件设计</th></tr></tbody></table>
 
下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
 
下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
I2C(SMBus)详细程序请查看<a class="Blue_2_12px_" href="http://www.waveshare.net/article/C8051F-4-3-4.htm" style="color: rgb(7, 66, 184);" target="_blank">C8051F I2C(SMBus)程序
+
I2C(SMBus)详细程序请查看<a class="Blue_2_12px_" href="http://{{SERVERNAME}}/article/C8051F-4-3-4.htm" style="color: rgb(7, 66, 184);" target="_blank">C8051F I2C(SMBus)程序
 
。 
 
。 
  

2019年11月19日 (二) 09:22的版本

<tbody></tbody>
<tbody></tbody>
系统功能

   使用PCF8591对C8051F进行AD转换。


<tbody></tbody>
硬件设计

C8051F 3 6.jpg 使用PCF8591对C8051F进行AD转换电路原理图


<tbody></tbody>
软件设计

下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解! I2C(SMBus)详细程序请查看<a class="Blue_2_12px_" href="http://wiki.diustou.com/article/C8051F-4-3-4.htm" style="color: rgb(7, 66, 184);" target="_blank">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*/

  1. define _DVK501_F320_EX_
  2. include <c8051f320.h>
  3. include <../../../../library/C8051F/ws_clock.h>
  4. include <../../../../library/C8051F/ws_delay.h>
  5. include <../../../../library/C8051F/ws_iic_port.h>
  6. 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); } }

  1. define MODE0 0x00 //Channel0 = AIN0;

//Channel1 = AIN1; //Channel2 = AIN2; //Channel3 = AIN3;

  1. define MODE1 0x10 //Channel0 = AIN3-AIN0;

//Channel1 = AIN3-AIN1 //Channel2 = AIN3-AIN2;

  1. define MODE2 0x20 //Channel0 = AIN0;

//Channel1 = AIN1; //Channel2 = AIN3-AIN2;

  1. define MODE3 0x30 //Channel0 = AIN1-AIN0;

//Channel1 = AIN3-AIN2;

  1. define CHNL0 0 //Using Channel0
  2. define CHNL1 1 //Using Channel1
  3. define CHNL2 2 //Using Channel2
  4. define CHNL3 3 //Using Channel3
  5. 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);

}
<tbody></tbody>
系统调试
调电位器上的旋钮,观察每次调完后LED灯的现象。