单片机学习小组
登录
直播中
刘琴
7年用户
127经验值
私信
关注
AD/DA PCF8591驱动数码管值总是不变该怎么办?
开启该帖子的消息推送
转换
俺的51
开发板
上的AD芯片是PCF8591,IIC总线的,想将AD转换的值实时显示在数码管上,同时还想利用LED灯亮度的变换来反映DA效果。结果数码管值总是不变化,LED灯也不亮,请大家帮忙找找问题,下面上图上代码
[C]
纯文本查看
复制代码
#include
#include
***it SDA=P2^0;***it SCL=P2^1;***it DU=P2^6;***it WE=P2^7;#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delayms(uchar ms){uchar i;while(ms--){for(i=0;i<120;i++);}}void display(uint k){P0=table[k/1000];DU=1;DU=0;P0=0xfb;WE=1;WE=0;delayms(1);P0=table[k%1000/100];DU=1;DU=0;P0=0xf7;WE=1;WE=0;delayms(1);P0=table[k%100/10];DU=1;DU=0;P0=0xef;WE=1;WE=0;delayms(1);P0=table[k%10];DU=1;DU=0;P0=0xdf;WE=1;WE=0;delayms(1);}void delayus(void){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}void IIC_Start(void){SDA=1;delayus();SCL=1;delayus();SDA=0;delayus();}void IIC_Stop(void){SDA=0;delayus();SCL=1;delayus();SDA=1;delayus();}void IIC_Ack(void){uchar i=0;SCL=1;delayus();while((SDA==1)&&(i<250)){i++;}SCL=0;delayus();}void IIC_NoAck(void){SDA=1;delayus();SCL=1;delayus();SCL=0;delayus();}void IIC_WriteOneByte(uchar dat){uchar i;for(i=0;i<8;i++){SCL=0;delayus();if(dat&0x80){SDA=1;}else{SDA=0;}dat=dat<<1;SCL=1;delayus();}SCL=0;delayus();SDA=1;delayus();}uchar IIC_ReadOneByte(void){uchar i,dat;SCL=0;delayus();SDA=1;delayus();for(i=0;i<8;i++){SCL=1;delayus();dat<<=1;dat|=(uchar)SDA;SCL=0;delayus();}return dat;}void DAC(uchar dat){IIC_Start();IIC_WriteOneByte(0x90);IIC_Ack();IIC_WriteOneByte(0x40);IIC_Ack();IIC_WriteOneByte(dat);IIC_Ack();IIC_Stop();}uchar ReadADC(unsigned char Chl) { unsigned char Data; IIC_Start(); //写入芯片地址 //Send(AddWr);IIC_WriteOneByte(0x90); IIC_Ack(); IIC_WriteOneByte(0x40|Chl);//写入选择的通道,本程序只用单端输入,差分部分需要自行添加 IIC_Ack(); IIC_Start(); IIC_WriteOneByte(0X91); //读入地址 IIC_Ack(); Data=IIC_ReadOneByte(); //读数据 SCL=0; IIC_NoAck(); IIC_Stop(); return Data; //返回值 }void main(){uchar temp,ad;DAC(temp);while(1){ad=ReadADC(2);display(ad);}}
回帖
(4)
潘础功
2019-7-22 07:56:46
I2C通信成功么?可以正常读写寄存器么?
I2C通信成功么?可以正常读写寄存器么?
举报
h1654155275.5753
2019-7-22 08:10:18
既然数码管有显示,我觉得IIC通信应该没问题吧
既然数码管有显示,我觉得IIC通信应该没问题吧
举报
杨洁磊
2019-7-22 08:42:49
不能理解楼主的数码管显示函数,p0口既输出段码又输出位码,那你的硬件是怎么连接的呢?
不能理解楼主的数码管显示函数,p0口既输出段码又输出位码,那你的硬件是怎么连接的呢?
举报
阿信509
2019-7-22 10:18:05
你先确定你的数码管显示函数正确吗?比如你手动输入一个数值,他能正常显示吗
你先确定你的数码管显示函数正确吗?比如你手动输入一个数值,他能正常显示吗
举报
更多回帖
rotate(-90deg);
回复
相关问答
转换
AD采集问题(
PCF8591
)
2015-12-01
5734
PCF8591
DA
转换
2017-10-04
3068
PCF8591
是什么?怎样去设计
PCF8591
电路?
2021-07-19
1788
PCF8591
AD转换 模拟输入通道的问题
2016-11-25
4415
怎样将AD转换后的数据写入
PCF8591
中并进行
DA
转换呢
2022-01-25
683
PCF8591
A/D转换 模拟输入通道的问题
2013-04-23
19806
PCF8591
DA
转换的问题
2017-11-10
3229
最近在使用
pcf8591
的时候,我遇到了一点问题,希望各位发烧友可以不吝赐教
2017-05-10
5620
stm32与
pcf8591
的数据采集
2014-05-06
8501
PCF8591
AD/
DA
后输出的信号为乱波为什么,有什么解决办法
2019-04-18
1740
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分