我最近在做液晶的实验,已经做出了万年历,但是在做计算器的时候遇到了一点问题:我通过4X4矩阵键盘输入数字,输入单个的数字可以显示,但是输入多个数字,比如输入“325.4”时,不知道程序该怎么写了,尝试了多种办法都不行,以下是我用的显示函数:
void Lcd_PrintChar(unsigned char x, unsigned char y, unsigned char date) (x,y)
{
write_PlaceXY(x,y);
write_data(date);
}
void Lcd_PrintString(unsigned char x,unsigned char y,unsigned char *date)
{
write_PlaceXY(x,y); //写地址
while(*date)
{
write_data(*date);//写字符串
date++; //指针地址加1
}
}
void write_PlaceXY(unsigned char x, unsigned char y)//指定当前写字符的位置
{
unsigned char address;
if(y==0) //行位置
{
address=0x80 + x;//列位置
}
if(y==1)
{
address=0x80+0x40 + x;
}
write_com(address);//写地址
}
void main()
{
init();
Lcd_PrintString(5,0,"lcd text");
Lcd_PrintString(0,1,"num:");
while(1)
{
bb=keyscan();
if(bb!=0)
{
Lcd_PrintChar(4,1,bb);
}
}
}
这个主函数里可以显示单个的数字,但是怎么才能连续输入数字呢?请高手帮忙解决一下,感激不尽啊!!!!
好像还不行啊,那个Lcd_PrintString()函数,就这句: Lcd_PrintString(4,1,digit);
已经把它固定在了(4,1)那个位置,所以输入数字时,位置还是不变,我把程序写进去显示不正常了,还有更好的办法吗???
4,1是起始位置嘛,输入第一个数1 显示1
输入第二个数2 显示12
输入第三个数3 显示123
显示不正常怎么个不正常法
大哥,能给我留个邮箱吗?要不我把程序发过去,你帮我看一下吧,谢谢了!
追答dgtg3d@163.com
关于C51矩阵键盘按键显示到1602LCD的问题!求高手!
键盤跟LCD控制脚共用的结果
51单片机,1602液晶和矩阵键盘的P口冲突
应该不会冲突吧,我记得我作过这样的实验没出现问题 1602是静态显示器件,不需要反复刷新,.所以大部分时间其接口是不被占用的,并且lcden WR RD和rs对LCD来说都是输入的,说明LCD不会主动乾扰你的其它工作 按键扫描倒是有可能乾扰LCD工作,但按键扫描也是在你控制下进行的,有时虽会改变LCD这几种...
51单片机矩阵键盘检测方面的问题
第一个问题,应该是考虑如果先开锁存器,在那一时刻,P0的值还是上一次给P0赋的值,下在一条语句才将这次的值给P0,这样会造成数码管的余辉,静态显示的时候,因为太快看不到,动态显示时,就会比较明显了。第二个问题他的程序应该检测的是高四位,是否被拉低,因为temp和0xf0与,低四位不管是什...
老师你好,我是学电子的,遇到一个用51单片机完成的LCD显示问题。希望能得...
其实,很简单,在给LCD1602送字符时,在带上显示的位置坐标参数吧,这个参数,你用一个变量,每送一个字符变量加1,下次,再显示就在下一个位置了,依次显示就行了。注意每一行只能显示16个字符啊,一行显示满了,要么换下一行,要么像字幕一样向左滚动显示。你这程序发图片,谁能看清楚啊,太累了...
关于51单片机矩阵键盘的问题。
(1)P3口是准双向IO口(注意与双向IO口的区别),它 的硬件结构决定着,读取之前先写1,再读取,读取的结果才可能是正确的,你可以区域查查书。(2)4X4 矩阵键盘的8根线直接连在IO上,而独立按键有一根线固定是接地的,这就意味着必须采取扫面或者线反转的方法。比如其中一根行线赋0,相当于...
请教51单片机矩阵键盘扫描数码管显示的问题
51单片机矩阵键盘扫描与数码管显示是最典型的电路,画仿真图更简单,用四位一体的数码管显示按键,可模拟计算器输入数字,按键后,每个按键的数依此向左移位显示。如下图所示的仿真图。
求 关于 用单片机和4*4矩阵键盘输入数字并在LCD1602上显示出来的C语言...
sbit RW=P2^6;\/\/1602读写引脚 sbit RS=P2^5;\/\/1602数据\/命令选择引脚 \/ 名称 : Delay_1ms()功能 : 延时子程序,延时时间为 1ms * x 输入 : x (延时一毫秒的个数)输出 : 无 \/ void Delay_1ms(uint i)\/\/1ms延时 { uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);} ...
帮忙看看这个51单片机的计数器程序哪里出问题了吧,用矩阵键盘控制的
如果你不想让显示 0 ,那就要写消 0 的程序,就加两句话,很简单的 2、键盘处理部分的问题,如果确认你的键盘检测是对的,那么就是键值处理部分的问题了 3、51都是加法计数器,如果你要想进行减法计数的话,只需要稍作一点运算,把加变成减就行了 如果不介意的话,可以把程序发过来745268387,在...
请高手指教1602 4X4 键盘的问题
你要明白矩阵键盘的原理:分四个输出和四个输入,比如把行当作输出,列当作输入,然后输出的先给其中的一行低电平,再判断对应行是否有按键,是哪一个按键,然后换另外一行。。。然后根据你的“输出状态”和的“输入状态”就就可以找出对应是哪个按键了!
关于51单片机的问题,独立键盘和矩阵键盘怎么同时使用?懂的来帮帮忙啊...
你是不是按下下方的四个按键也会让1,2,3,4灯亮起来?你可以不要定义在同一个引脚上连起来一个引脚的四个按键,你试试控制8个单片机不同引脚上的按键编程一下试一试。程序上,你的独立按键程序和矩阵键盘程序要分开,独立键盘的程序高低四位判断是相反的,这个一定要注意。你可以让独立按键在那里...