求教:怎样将AD转换的二进制数据转换成十进制,用LCD1602显示?单片机C语言程序不知道怎么写...谢谢~
2个回答
展开全部
8位AD,最大255;
uchar num;
num=AD_receive();//把AD采集回来的数据保存
write_com(0x80);//1602从0x80开始显示数据
write_data(num/100+0x30); //显示字符百位,后面以此类推
write_data(num%100/10+0x30);//十位数
write_data(num%10+0x30);//个位数
至于1602的驱动程序,网上多得是,找找就有了
uchar num;
num=AD_receive();//把AD采集回来的数据保存
write_com(0x80);//1602从0x80开始显示数据
write_data(num/100+0x30); //显示字符百位,后面以此类推
write_data(num%100/10+0x30);//十位数
write_data(num%10+0x30);//个位数
至于1602的驱动程序,网上多得是,找找就有了
追问
我就是这么写的,可能是我表达的不好吧,因为我做的是烟雾报警器,所以我想把具体的浓度(0~10000ppm)显示在1602上,可是1602上显示的范围就是0~255,我试过写 num=num*10000/256;再逐位显示,可是不成...就是不懂怎么写...
追答
1602怎么可能显示那么少,是你变量数据类型设置有问题吧,要是显示10000,num数据类型设置为 unsigned int 型,0-65536,uchar 最大只到255,数据会溢出的,显示方式一样,取余和取整,每一位显示。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询