将数组内的数字转化为用字符串显示数字

2019-10-11 14:40发布

先粘贴程序————(改自战舰实验13)
int main(void)
 {  
  u8 x=150;
  u8 View_Data[3]; //存放数字
  delay_init();     //延时函数初始化  
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
  LED_Init();     //LED端口初始化
LCD_Init();
POINT_COLOR=RED;
//sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。
  while(1) 
{  


POINT_COLOR=RED;
   View_Data[0]=(6000/x)/100+0x30;
View_Data[1]=(6000/x)%100/10+0x30;
View_Data[2]=(6000/x)%10+0x30;

  LCD_ShowString(30,100,200,16,16,View_Data);
LCD_ShowString(30,130,200,12,12,"2014/5/4");          
delay_ms(1000);
x++;

}
首先你要明白什么事字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符

在用51和无字库的1602字符串显示数字时一般都会+0x30

ASCII产生————(百度知道)
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

个人理解:
你要是想通过屏幕显示数字,可以直接调用显示数字的函数与显示字符串的函数。
有人会问了,直接调用显示数字的函数不就行吗?为啥还要调用显示字符串的函数,还得修改,为什么请个人说下。。
这里我也不清楚,反正我是移植51
程序,开始时候是想直接调用显示数字函数,可是不好使,不得不调用显示字符串的函数

只有将数字转化为ASCII才算做字符串,
来开始查表————(百度一下ASCII,会出现一个表格)
在表格里,0对应的是0x30,那么十以内的数字加0(0x30)不就是ASCII吗。

以上是个人理解,恳请个人前辈批评指导。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
逍遥居士_888
1楼-- · 2019-10-11 16:10
u8 View_Data[3]={0x30,0x31,0x32}; 
while(1) 

  LCD_ShowString(30,110,200,16,16,View_Data); 
  LCD_ShowString(30,130,200,12,12,"2014/5/4"); 

这个是 论坛里的亲分享的
正点原子
2楼-- · 2019-10-11 22:07
不错,谢谢分享。
arao和xiaomi
3楼-- · 2019-10-12 01:41
 精彩回答 2  元偷偷看……
arao和xiaomi
4楼-- · 2019-10-12 03:43
逍遥居士_888 发表于 2015-9-4 10:30
u8 View_Data[3]={0x30,0x31,0x32}; 
while(1) 
{ 
  LCD_ShowString(30, ...

为什么要把数字转换成字符型来显示呢
arao和xiaomi
5楼-- · 2019-10-12 06:54
正点原子 发表于 2015-9-4 22:29
不错,谢谢分享。

我也有这疑问,直接调用显示数字的函数不就行吗?为啥还要调用显示字符串的函数,还得修改

一周热门 更多>