向1602电子钟写数据时(+0x30)是什么意思?如 :01秒+0x30不是变成:0a了吗?

2020-01-25 15:19发布

正常时向1602写入数据时只要这样: 写数据函数(要显示的数)
可在不少高人写的时钟程序中为何要+0x30呢,我试过不加0x30还不好用???
如:
Lcd_WriteData(0x30+ge);
可是01秒+0x30不是变成0a了吗?
请高人指点下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
aozima
1楼-- · 2020-01-25 17:47
查下ASCII码表先...
同时看下汇编列表里面
Lcd_WriteData('8');
到底是发送的多少...
xjhhjx
2楼-- · 2020-01-25 18:32
 精彩回答 2  元偷偷看……
nukes
3楼-- · 2020-01-25 20:55
看过你的博,aozima 残剑饮血兄真高人。

你的意思是说向1602写入字符时编译器会自动转成ASCII码,但是写入数字时编译器是不会自动转成ASCII码的,所以要加48也就是0x30对吧??
rainyss
4楼-- · 2020-01-26 02:01
1是数字,'1'是字符,数字当然不能自动变成字符,+0x30就是个最简单的itoa"涵数"咯.不然的话你只好用库函数了,比如说sprintf(),嘿嘿.
aozima
5楼-- · 2020-01-26 07:45
引用:向1602写入字符时编译器会自动转成ASCII码

非也! 并不是转成了ASCII 而是本来就是ASCII码....
a  = '8';   // a = 0x38 字符 按字符的ASCII码的值进行操作 8的ASCII码是0x38
aa =  8 ;   // a = 0x08 数字 直接赋值
aa[] = "2A";// aa = {'2','A',0x0}

这里讲得不错:http://myweb.yzu.edu.cn/toby88/c/cstudy/rumen/shuzu/Rshz_zifu.htm
nukes
6楼-- · 2020-01-26 12:14
终于有些懂了,多谢以上几位兄弟们的讲解!

一周热门 更多>