完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
# include
# include unsigned int temperture[]={49,46,48,48,45,0}; unsigned int smg_8_show[]={0x81,0xb7,0xc2,0x92,0xb4,0x98,0x88,0xb3,0x80,0x90}; void delay(unsigned int x) { unsigned int i,j; for(i=x;i>0;i--) { for(j=0;j<1141;j++) { ;; } } } void Port_init()//端口初始化 { DDRA&=~BIT(0); PORTA&=~BIT(0); } void USART_Init( unsigned int baud )//串口初始化 { UBRRH = (unsigned char )(baud>>8);/*设置波特率,baud的值查数据手册*/ UBRRL = (unsigned char ) baud;/* 接收器与发送器使能*/ UCSRB = (1< void USART_Receive(unsigned int r) { while ( !(UCSRA & (1< } //AD转换初始化函数 void ADC_Init() { ADMUX |= (1< //AD转换函数 unsigned int ADC_GetData() { ADCSRA |= (1 < } void put_s_1(unsigned int *s) { while(*s) { USART_Receive(*s); s++; } } void main() { unsigned int res,cr; //unsigned int re_0,re_1,re_2,re_3; DDRD =0Xff; Port_init();//初始化PA通道 USART_Init(51);//串口初始化 ADC_Init();//ADC初始化 while(1) { res = ADC_GetData(); //变换得到电压整数位 cr = ((int)((long)res*5000/1024)); temperture[0]=cr/1000+48; temperture[1]=(cr%1000)/100+48; temperture[2]=(cr%100)/10+48; temperture[3]=(cr%10)+48; put_s_1(temperture); delay(1000); } } |
|
相关推荐
4个回答
|
|
|
|
|
|
|
|
|
楼上说了,将整型改为字符型。如果还不行就用串口发送一个简单字符。看看串口能不能接收正常。如果不正常就是串口的问题。如果正常那就是AD转换出错了。
|
|
|
|
|
|
首先用外用表或者示波器测量ad的值,然后计算出ad采样值,看看是转换计算的错误还是串口发送的错误。
|
|
|
|
|
|
两本AVR单片机黄金教程,我都要学啦
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
528 浏览 0 评论
654 浏览 0 评论
858 浏览 0 评论
837 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
770 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17060 浏览 31 评论
浏览过的版块 |
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 13:16 , Processed in 0.641353 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2937