完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
AD电路图 和数据手册 均已上传 还是搞不懂四个模拟输入通道到底是怎么回事,从电路图上看不是只用到了AIN0和AIN1吗?AIN2和AIN3 就是没有输入了?? 还有就是 AD转换时的ADC发送字节[命令]数据函数在数据手册上AD转换就直接读就可以啦,为什么还要写这个函数,不懂??求大神指点,灰常感谢。。。
#include #include #include //else IO //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char AD_CHANNEL; unsigned long xdata LedOut[8]; unsigned int D[32]; /******************************************************************* DAC 变换, 转化函数 *******************************************************************/ bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val) { Start_I2c(); //启动总线 SendByte(sla); if(ack==0)return(0); SendByte(c); //发送控制字节 if(ack==0)return(0); SendByte(Val); //发送DAC的数值 if(ack==0)return(0); Stop_I2c(); //结束总线 return(1); } /******************************************************************* *******************************************************************/ bit ISendByte(unsigned char sla,unsigned char c) { Start_I2c(); //启动总线 SendByte(sla); //发送器件地址 谁是发送器??单片机还是8951???? if(ack==0)return(0); SendByte(c); //发送数据 if(ack==0)return(0); Stop_I2c(); //结束总线 return(1); } /******************************************************************* ADC读字节数据函数 读取AD转换的数据 *******************************************************************/ unsigned char IRcvByte(unsigned char sla) { unsigned char c; Start_I2c(); //启动总线 SendByte(sla+1); //发送器件地址 +1为了是读模式 if(ack==0)return(0); c=RcvByte(); //读取数据0 Ack_I2c(1); //发送非就答位 Stop_I2c(); //结束总线 return(c); } //******************************************************************/ main() { char i,j; while(1) {/********以下AD-DA处理*************/ switch(AD_CHANNEL) { // 四个通道又是起什么作用呢??? case 0: ISendByte(PCF8591,0x41); D[0]=IRcvByte(PCF8591)*2; //ADC0 模数转换1 放大2倍显示 case0是用来读取8591第一通道所采集到模拟量的值 break; //0x41是控制字节 D[0]=IRcvByte(PCF8591)*用来读取AD转换的数据 case 1: ISendByte(PCF8591,0x42); D[1]=IRcvByte(PCF8591)*2; //ADC1 模数转换2 4个模拟输入在该单片机中只用到两个 break; case 2: ISendByte(PCF8591,0x43); D[2]=IRcvByte(PCF8591)*2; //ADC2 模数转换3 break; case 3: ISendByte(PCF8591,0x40); D[3]=IRcvByte(PCF8591)*2; //ADC3 模数转换4 break; case 4: DACconversion(PCF8591,0x40, D[4]/4); //DAC 数模转换 break; } D[4]=400; //数字--->>模拟输出 D[4]=D[0]; // 把模拟输入 采样的信号 通过数模转换输出 即把D0 转化成模拟量输出 if(++AD_CHANNEL>4) AD_CHANNEL=0; /********以下将AD的值送到LED数码管显示*************/ LedOut[0]=Disp_Tab[D[1]%10000/1000]; LedOut[1]=Disp_Tab[D[1]%1000/100]; LedOut[2]=Disp_Tab[D[1]%100/10]|0x80; LedOut[3]=Disp_Tab[D[1]%10]; LedOut[4]=Disp_Tab[D[0]%10000/1000]; LedOut[5]=Disp_Tab[D[0]%1000/100]; LedOut[6]=Disp_Tab[D[0]%100/10]|0x80; LedOut[7]=Disp_Tab[D[0]%10]; for( i=0; i<8; i++) { P0 = LedOut; switch(i) //使用switch 语句控制138译码器 也可以是用查表的方式 学员可以试着自己修改 { case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; case 5:LS138A=1; LS138B=0; LS138C=1; break; case 6:LS138A=0; LS138B=1; LS138C=1; break; case 7:LS138A=1; LS138B=1; LS138C=1; break; } for (j = 0 ; j<90 ;j++) { ;} //扫描间隔时间 } P0 = 0; } }
|
|
相关推荐
12个回答
|
|
第一个红色部分当然要加,就算你直接读8591也要先发送读寄存器的地址呀(就是上面也的控制字),不然单片机都不知道去读哪个数据。
第二个红色部分的程序只用到了CASE0、1、4。用来存取和处理都出的数据 |
|
|
|
请问模拟输入4 都没有接输入,怎么用啊? |
|
|
|
本帖最后由 最近我很跳 于 2013-4-27 22:18 编辑
D[4]并不是模拟输入的第4通道,D[4]是数字信号转模拟信号,你看程序。把数字信号转成模拟信号后AOUT输出给LED。 |
|
|
|
这个就是普中科技那个啊,我有啊
|
|
|
|
#include
|
|
|
|
请指点.。。。。。。。。。。。楼主
|
|
|
|
都只是在学习怎么用
|
|
|
|
电路图是这个样子么?看着有点别扭啊
|
|
|
|
我遇到的问题和你一样,放在数码管上根本就没有什么转换的数值变化
|
|
|
|
最近我很跳 发表于 2013-4-27 11:57 感觉有点明白了 |
|
|
|
图中那个LED灯也就是DA是不是接错了
|
|
|
|
学习中。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:24 , Processed in 0.798277 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号