1.LCD1602显示十进制数字
在编写LCD1602的代码时,如果要显示一个数字,那么需要依次将数字的每一位显示到液晶屏上。例如:想要显示168,那就需要依次显示1,6,8三个字符。
那么如何把每一位取出来呢?我们可以使用如下的方法取出从右到左的第i位:
x/10^(i-1)%10
我们设Length为想显示的长度,可以用如下代码实现数字的完整显示:
1 | int LCD_Pow(int X,int Y) |
例如:1689从右往左取第3位:
1689/10^2%10=6
例如:1689从右往左取第5位:
1689/10^5%10=0
这样能实现Length过长自动补0和Length过短保留低位的功能。
2.LCD1602显示n进制数字
十进制的取位逻辑为:x/10^(i-1)%10
我们可以推出,n进制的取位逻辑为:x/n^(i-1)%n
例如,显示16进制可以用如下代码实现:
1 | void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length){ |
举例:
67/16^1%16=4
67/16^0%16=3
43H=67,符合要求
显示2进制可以用如下代码实现:
1 | void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length){ |
举例:
67/2^7%2=0
67/2^6%2=1
67/2^5%2=0
67/2^4%2=0
67/2^3%2=0
67/2^2%2=0
67/2^1%2=1
67/2^0%2=1
0b 0100 0011=67,符合要求。