nukes 发表于 2009-2-22 14:02:40

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

正常时向1602写入数据时只要这样: 写数据函数(要显示的数)
可在不少高人写的时钟程序中为何要+0x30呢,我试过不加0x30还不好用???
如:
Lcd_WriteData(0x30+ge);
可是01秒+0x30不是变成0a了吗?
请高人指点下

aozima 发表于 2009-2-22 14:07:29

查下ASCII码表先...
同时看下汇编列表里面
Lcd_WriteData('8');
到底是发送的多少...

xjhhjx 发表于 2009-2-22 14:19:32

查下ASCII码0x30就是十进制的48,就是在ACSII是0,01秒+0x30就是在1602显示1;
LCD1602的液晶资料你还是重新看看,它说明在1602显示使用ACSII来显示的

你看看C语言的书有写这个

nukes 发表于 2009-2-22 14:30:09

看过你的博,aozima 残剑饮血兄真高人。

你的意思是说向1602写入字符时编译器会自动转成ASCII码,但是写入数字时编译器是不会自动转成ASCII码的,所以要加48也就是0x30对吧??

rainyss 发表于 2009-2-24 01:38:41

1是数字,'1'是字符,数字当然不能自动变成字符,+0x30就是个最简单的itoa"涵数"咯.不然的话你只好用库函数了,比如说sprintf(),嘿嘿.

aozima 发表于 2009-2-24 08:29:35

引用:向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 发表于 2009-2-24 09:41:39

终于有些懂了,多谢以上几位兄弟们的讲解!

r051463438 发表于 2009-3-12 18:25:27

想让液晶显示得给它送ASCII码,你得到的数据加上0X30就会转成ASCII码了
液晶很多都是显示要给ASCII码的,多看点资料也可以知道的。

andyluo324 发表于 2009-3-12 20:43:37

这个主要是 把16进制转ASCII吗?

gmy296778322 发表于 2009-3-17 13:24:50

0的ASCII码为0x30
x的ASCII码为 x+0x30
1602值认识ASCII码

kobe1217241530 发表于 2014-1-8 11:41:38

查表可知。

smallconch 发表于 2014-1-11 17:57:47

数字直接转ASCII码,可以 数字+0x30 或 数字+‘0’,1602液晶只认ASCII码
页: [1]
查看完整版本: 向1602电子钟写数据时(+0x30)是什么意思?如 :01秒+0x30不是变成:0a了吗?