ZKX's LAB

pcf8591 控制字 单片机问题PCF8591这种转换器怎么用?编程时0x90 0x91 0x40这些地址都怎么用,又是什么?还有时序图怎么看

2020-07-22知识12

51单片机 ,电位器通过PCF8591转换,来控制pwm输出来控制灯亮度。求keil代码? 1? 提供一个思路,8591转换得到一个数据,这个数据是0~255之间,可以将该数据换算成0~100之间的PWM值,再用定时器产生一个相应的脉冲序列就可以控制LED亮度了,定时时间可以定在50~100us这样PWM周期就在5~10毫秒。pcf8591的程序如何写,用51单片机 #includedefine uchar unsigned chardefine uint unsigned intdefine PCF8591 0x90/PCF8591 地址sbit SCL=P2^0;串行时钟输入端sbit SDA=P2^1;串行数据输入端void delay()/延时4-5个微秒{;}void delay_1ms(uint z){uint x,y;for(x=z;x>;0;x-)for(y=110;y>;0;y-);}void start()/开始信号{SDA=1;delay();SCL=1;delay();SDA=0;delay();}void stop()/停止信号{SDA=0;delay();SCL=1;delay();SDA=1;delay();}void respons()/应答 相当于一个智能的延时函数{uchar i;SCL=1;delay();while((SDA=1)&(i))i+;SCL=0;delay();}void init()/初始化{SDA=1;delay();SCL=1;delay();}void write_byte(uchar date)/写一字节数据{uchar i,temp;temp=date;for(i=0;i;i+){temp=temp;左移一位 移出的一位在CY中SCL=0;只有在scl=0时sda能变化值delay();SDA=CY;delay();SCL=1;delay();}SCL=0;delay();SDA=1;delay();}void write_add(uchar control,uchar date){start();write_byte(PCF8591);10010000 前四位固定 接下来三位全部被接地了 所以都是0 最后一位是写 所以为低电平respons();write_byte(control);respons();write_byte(date);respons();stop();}。是这样的,现在做单片机的无线语音传输,要用一片单片机控制NRF24L01和PCF8591数模转换模块, NRF24L01是SPI接口,PCF8591是I2C接口。最好选择这两种硬件接口都有的单片机来配套,这样程序做起来会比较轻松一些。单片机同时控制两个芯片是不可能也不必要的,正常的顺序,是先通过RF24L01读取语音数据,再通过PCF8591转换成语音信号。如果不是很熟悉RF24L01的秉性的,估计要驾驭它可能还要费一番周折。100金求个AVR ATMEG16控制PCF8591的程序。DA转换控制灯泡由暗变亮。 看51源码改成AVR的啊。我是用AVR,但找不到PCF8591的资料,有的话很好编单片机如何处理模数转换,将微型计算机的基础组成部分CPU、存储器、I/O接口以及连接它们的总线(其内部可能还包括脉宽调制电路、A/D转换器等电路)集成在一块芯片中,简称。

#单片机#keil#pcf8591#电位器

随机阅读

qrcode
访问手机版