完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 新时代工程师 于 2014-9-24 21:41 编辑
关于AD转换的数值问题和显示问题,请教一下诸位大神:(1)AD转换后输入到单片机的是二进制数值?它与输入的模拟电压有什么关系,可以仔细说一下吗?给个参考资料也行!(2)对于5V的参考电压,8位的ADC芯片,为什么编程是转换数据是 X(二进制代码)255*500,为什么是乘以500?其他位数如12位的单片机也是这样吗?(3)对于8位的单片机来说,12位的ADC芯片转换后如何处理?(4)如果要显示三位如999~0.001要如何编程?或者说显示小数位要如何编程? 如果能给分资料那就更加好了,谢谢!!! 我写的这个程序是两个按键,对应于两路AD间的切换,运行没有什么太大的问题,就是显示的第二路,数值不正确,望高手解答,谢谢!!! 这是我写的程序 #include #define uchar unsigned char #define uint unsigned int ***it le = P2^0; ***it clk = P2^1; //ADC0809的时钟信号输入端 ***it adda = P3^4; //ADC0809的地址输入端 ***it addb = P3^5; ***it addc = P3^6; ***it start_ad = P2^5; //ADC0809启动信号,高脉冲启动 ***it eoc = P2^6; //ADC0809转换结束信号 ***it oe = P2^7; //ADC0809读数据控制端 ***it key1 = P3^0; ***it key2 = P3^1; ***it NOA = P2^2; ***it NOB = P2^3; ***it NOC = P2^4; uchar bai = 0, shi = 0, ge = 0; //定义显示全局变量 uchar getdata = 0; uchar a = 0, b = 0, c = 0; uchar code seg7[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; //共阴极数码管显示编码 void delay(uint x) //微秒级延时子程序 { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void display(uchar bai,uchar shi,uchar ge) //数码管显示函数 { le = 1; NOA = 0; NOB = 1; NOC = 0; P0=(seg7[bai]|0x80); //段选数据,和0x80相与表示显示小数点 le = 0; delay(12); le = 1; NOA = 1; NOB = 0; NOC = 0; P0=seg7[shi]; le = 0; delay(12); le = 1; NOA = 0; NOB = 0; NOC = 0; P0=seg7[ge]; le = 0; delay(12); } void key_scan() { if(key1 == 0) { delay(5); if(key1 == 0) { while(!key1); a = 0; b = 0; c = 0; } } if(key2 == 0) { delay(5); if(key2 == 0) { while(!key2); a = 0; b = 0; c = 1; } } } int main(void) { uint temp; le = 0; TMOD=0x20; //定时器1工作在方式2 TH1=255-200; TL1=255-200; EA=1; EX0=1; IT0=1; ET1=1; TR1=1; //启动定时器1 while(1) { key_scan(); //adda=0; //输入模拟电压通道地址 adda = a; //addb=0; addb = b; addc = c; //addc=0; oe=0; start_ad=0; //启动AD start_ad=1; start_ad=0; display(bai,shi,ge); //数码管显示程序 temp=getdata*1.0/255*500; //数据转化 ge=temp%10; //提取个位数字 shi=temp%100/10; //提取十位数字 bai=temp/100; //提取百位数字 } return 0; } void t1(void) interrupt 3 { clk=~clk; } void ex0_int() interrupt 0 { oe=1; //读AD转换数据 getdata=P1; oe=0; } |
|
相关推荐
2个回答
|
|
坐等回复!!!
|
|
|
|
请点开图片查看!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11985 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 09:34 , Processed in 0.558178 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号