OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10568|回复: 7

ADC采样电压值实验,显示在OLED上遇到问题

[复制链接]

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2013-2-21 15:56:56 | 显示全部楼层 |阅读模式
mini板,ADC实验,我仅仅是把显示部分改为了OLED显示

在源代码基础上,仅仅修改了main函数部分,红色字体是自己添加的:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
//#include "lcd.h"   
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
#include "oled.h"
#include "stdio.h"
//Mini STM32开发板范例代码13
//ADC 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
int main(void)
{
u16 adcx;
float temp;
  Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化   
LED_Init();
// LCD_Init();
OLED_Init();  
Adc_Init();

// POINT_COLOR=RED;//设置字体为红色 
// LCD_ShowString(60,50,"Mini STM32");
// LCD_ShowString(60,70,"ADC TEST");
// LCD_ShowString(60,90,"ATOM@ALIENTEK");
// LCD_ShowString(60,110,"2010/12/30");
// //显示提示信息
// POINT_COLOR=BLUE;//设置字体为蓝色
// LCD_ShowString(60,130,"ADC_CH0_VAL:");      
// LCD_ShowString(60,150,"ADC_CH0_VOL:0.000V");
// OLED_ShowString(0,0, "0.96' OLED TEST"); 
OLED_ShowString(0,0,"ADC:");
OLED_ShowString(0,16,"VOL:");
OLED_ShowString(0,32,"temp:");
OLED_Refresh_Gram();      
while(1)
{
adcx=Get_Adc(ADC_CH0);
// LCD_ShowNum(156,130,adcx,4,16);//显示ADC的值
OLED_ShowNum(40,0,adcx,4,16);
OLED_Refresh_Gram();
printf("ADC=%d\n",adcx);
temp=(float)adcx*(3.3/4096);
adcx=temp;
// LCD_ShowNum(156,150,adcx,1,16);//显示电压值
OLED_ShowNum(40,16,adcx,1,16);
OLED_Refresh_Gram();
printf("VOL=%f\n",adcx);
temp-=adcx;
temp*=1000;
// LCD_ShowNum(172,150,temp,3,16);
OLED_ShowNum(40,32,temp,3,16);
OLED_Refresh_Gram();
printf("temp=%f\n",temp);
printf("\r\n");
LED0=!LED0;
delay_ms(250);
}
}


OLED显示:
ADC:  4095    
VOL:  3
temp:299 


串口打印出:
ADC=4095
VOL=3
temp=1081258780

请问:
1,OLED显示里面的电压值为何一直是整数3,而源代码在LCD上显示的是3.299这个小数?
2,串口打印出的temp的值和在OLED中显示的temp的值为何不同?

后来我将temp改为f%格式输出后,就正常了,OLED显示temp的值和串口的temp值同步变化,OLED现实的ADC的值也和串口的ADC值同步变化,但是VOL仍然显示为整数:

OLED显示:
ADC:  4095    
VOL:  3
temp:299 

串口打印出:
ADC=4095
VOL=3.00000
temp=299.194336 

用JTAG跟踪过了,执行到显示电压值这里:
OLED_ShowNum(40,16,adcx,1,16);
OLED_Refresh_Gram();
再往下执行,OLED上就显示VOL的值为3了,不知道是不是我不会用JTAG....还是找不到原因,请教大家。





STM32
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-6-23
在线时间
30 小时
发表于 2018-6-23 11:10:51 | 显示全部楼层
有完整的工程文件吗?
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-21 18:54:58 | 显示全部楼层
是否有jtag?仿真跟踪下.既得答案.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
 楼主| 发表于 2013-2-24 13:06:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
试过了,找不出原因。。。
STM32
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-24 13:45:28 | 显示全部楼层
1,OLED_ShowNum(40,16,adcx,1,16);
2,OLED_Refresh_Gram();
3,printf("VOL=%f\n",adcx); 

仿真跑到1处的时候,adcx的值是多少?有没有看过?
OLED_ShowNum,能显示的数值是什么类型,有没有了解过?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-12-2
在线时间
58 小时
发表于 2016-8-9 13:43:23 | 显示全部楼层
正点原子 发表于 2013-2-24 13:45
1,OLED_ShowNum(40,16,adcx,1,16);
2,OLED_Refresh_Gram();
3,printf("VOL=%f\n",adcx);&nbsp;

仿真跑到1 ...

原子哥怎么用OLED_ShowNum()这个函数显示带小数点的数字
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-11-6
在线时间
5 小时
发表于 2019-11-13 15:30:03 | 显示全部楼层
您这个OLED只显示整数的问题解决了吗
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2020-3-20
在线时间
13 小时
发表于 2020-5-14 18:25:25 | 显示全部楼层
我也想用OLED显示读取到的数值,但是一直都显示不出来正确的数字,楼主能否提供一下OLED显示读取到的数据的工程文件学习一下?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-1 02:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表