完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
`求大神解答 /*********************************包含头文件********************************/ #include #include /*********************************端口定义**********************************/ ***it CS = P3^5; ***it Clk = P3^3; ***it DAti = P3^4; ***it DATO = P3^4; ***it P20=P2^0 ; /*******************************定义全局变量********************************/ unsigned char dat = 0x00; //AD值 unsigned char count = 0x00; //定时器计数 unsigned char CH; //通道变量 unsigned char dis[] = {0x00, 0x00, 0x00}; //显示数值 /*******************************共阳LED段码表*******************************/ unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; char code tablewe[]={ 0xfd,0xfb,0xf7,0xef,0xdf,0xfe }; /**************************************************************************** 函数功能:AD转换子程序 入口参数:CH 出口参数:dat ****************************************************************************/ unsigned char adc0832(unsigned char CH) { unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; //初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_(); if ( CH == 0x00 ) //通道选择 { Clk = 0; DATI = 1; //通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; //通道0的第二位 _nop_(); Clk = 1; _nop_(); } else { Clk = 0; DATI = 1; //通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; //通道1的第二位 _nop_(); Clk = 1; _nop_(); } Clk = 0; DATI = 1; for( i = 0;i < 8;i++ ) //读取前8位的值 { _nop_(); adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else adval |= 0x00; } for (i = 0; i < 8; i++) //读取后8位的值 { test >>= 1; if (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; } if (adval == test) //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; _nop_(); CS = 1; //释放ADC0832 DATO = 1; Clk = 1; return dat; } /**************************************************************************** 函数功能:延时子程序 ****************************************************************************/ void delay(void) { int k; for(k=10;k<500;k++); } /**************************************************************************** 函数功能:将0-255级换算成0.00-5.00的电压数值 ****************************************************************************/ void convdata(unsigned char i) { dis[0] = i/51; //个位 dis[1] = (i%51)*10/51*2; //小数点后第一位 dis[2] = ((i%51)*10%51)*10/51*2; //小数点后第二位 } /**************************************************************************** 函数功能:数码管显示子程序 ****************************************************************************/ void display(void) { P2=0xff; P0=tab[dis[0]] & 0x7f; //显示个位和小数点 delay(); P2=0xfd; P2=0xff; P0=tab[dis[1]]; //显示小数点后第一位 delay(); P2=0xfb; P2=0xff; P0=tab[dis[2]]; //显示小数点后第二位 delay(); P2=0xf7; P2=0xff; P0=0xff; //显示小数点后第二位 delay(); P2=0xfe; } /**************************************************************************** 函数功能:主程序 ****************************************************************************/ void main(void) { P2=0xff; //端口初始化 P0=0xff; delay(); CH = 0x00; //在这里选择通道 0x00或0x01 TMOD = 0x01; //设置中断 TH0=(65536-50000)/256;//定时器1初值定时50ms TL0=(65536-50000)%256; IE = 0x82; TR0 = 1; while(1) //主循环 { dat = adc0832(CH); convdata(dat); //数据转换 display(); //显示数值 } } /**************************************************************************** 函数功能:定时器中断延时程序 这一段的作用时隔一段时间抽样一次 否侧显示的最后一位会不稳定 ***************************************************************************/ void timer0(void) interrupt 1 { TMOD = 0x01; TH0=(65536-50000)/256;//定时器1初值定时50ms TL0=(65536-50000)%256; IE = 0x82; TR0 = 1; count++; if (count == 0x01) { count = 0x00; dat = adc0832(CH); } } `
|
|
相关推荐
2个回答
|
|
|
那应该是码表有问题啊
|
|
|
|
|
|
P2=0xff什么意思?消影不是P0=0xff吗?消影放在延时后。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:13 , Processed in 0.771380 second(s), Total 75, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7242