标题: 我想问几个单片机方面的初级问题,请黑坛里的大佬回答一下 [打印本页]

作者: 欧巴桑    时间: 2018-6-5 21:30
标题: 我想问几个单片机方面的初级问题,请黑坛里的大佬回答一下
1、如何扫描矩阵键盘确定按键?
2、如何把输入的数字值转化成数值进行运算?
3、如何在液晶屏上一个字符?
就这三个,麻烦你们了


作者: 胡仙森    时间: 2018-6-5 22:59
参考宋雪松老师的教程第8张8.5节简易加法计算器
作者: fzy139    时间: 2018-6-5 23:01
你好
4*4的矩阵键盘至少需要8个IO进行扫描,网上有完整的教程,可以直接参考
如果位数是确定的,可以直接利用按键函数返回值,如果不确定可以用字符串转int
显示字符的话不同液晶屏有不同的字库表,一般买来会有库函数或者字表的
像常用的1602 12864等并口屏以及oled等 都会有自己出厂的设计软件和使用方法

谢谢
作者: kuangfeng223    时间: 2018-6-5 23:09
1.通过行扫描,与列扫描确定那个按键按下;2.将每个按键按下的数值编码成0-9,让后进行运算,3.通过看液晶屏手册,读时序驱动液晶显示字符
作者: devcang    时间: 2018-6-5 23:20
像4*4的键盘,就是4个io接横、4个io接纵,,,,,,然后扫描横和纵的交叉点,看哪个交叉点是低电平,就是有按下键。
作者: pfyy    时间: 2018-6-5 23:53
将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下
作者: pfyy    时间: 2018-6-5 23:58
对于数字值转化为数值,若位数已知 ,则用按键函数返回值。若不确定, 一般用用字符串转int来转化。
作者: 欧巴桑    时间: 2018-6-6 00:24
kuangfeng223 发表于 2018-6-5 23:09
1.通过行扫描,与列扫描确定那个按键按下;2.将每个按键按下的数值编码成0-9,让后进行运算,3.通过看液晶 ...

这样回答老师没问题吗,不需要提出哪段代码给老师看嘛
作者: 风158    时间: 2018-6-6 09:11
可以参考这个程序:矩阵键盘1602显示

LCD1602P1Key.rar

1.87 KB, 下载次数: 2


作者: wenzedong    时间: 2018-6-6 11:20
这三个问题联系起来好像是一个计算器呀,首先回答第一个问题:矩阵键盘与单片机相连分为行线和列线,行线一端接IO口,另一端接VCC,而列线一端接IO口,另一端接按键引脚,按键引脚另一端接行线上(先想象一个按键)先让列线输出低电平,检测行线IO口,如果是高电平(因为连着VCC),说明没有按下,当按下时,按键就将VCC和低电平(列线IO输出)导通了,这时候行线就会读到低电平。  矩阵键盘确定按键:根据坐标哇,比如说第3条列线由低电平变为了高电平,而此时第1条行线变为了低电平,就知道是在矩阵中哪个位置的按键按下了,你对每行每列的按键都有一个标号,那就是键值了
作者: wenzedong    时间: 2018-6-6 11:37
第二个问题:如果你是做的计算器,那某些按键就有0~9 或+ -× /的特殊含义,用某个变量表示键值,然后将两个变量相运算,再将结果再用变量表示就可以了。 第三个问题:显示字符分为 显示什么和在哪儿显示。 显示字符就是显示ASCII码,根据ASCII码值找到对应的字符就可以显示了。而要想调用的话首先要有,LCD1602有字符发生存储器,存放着点阵字符。(显示其实就是显示有规律的点,字符,汉字,图形都是这样)
在什么地方显示:1602的话是每个小方块都有对应的地址,选对了地址就在那儿显示了,手机屏幕那种(无论现在的智能手机,还是以前的诺基亚)都是根据坐标,有个词叫分辨率,比如320*240,就是屏幕上有那么多可以亮的点,选对了坐标,那个点就亮了,那种就没有字符发生存储器了,还是那句话,亮的点有规律了就是字符,汉字或图形了
作者: 程序新手    时间: 2018-6-6 13:03
1.如果进行按键扫描的话 需要8个io口来进行操作 分别为4个横向 4个纵向 通过变换高低电平进行按键扫描 其他的网上有程序改成自己想要的io口就可以用了
2.先把按键用0-9进行定义 每按下一个按键 通过定义的来进行运算
3.这个你要参考显示屏的参考手册了 显示屏分为lcd和led lcd又分为常用的1602和12864 不过我建议用lcd1602比较好
希望对你有帮助
作者: 波妞    时间: 2018-6-6 13:12

将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下.
作者: xxl1997    时间: 2018-6-6 15:01
按键扫描要用到外部中断,第二个用BCD转换就行,液晶屏显示可以到网上百度驱动函数,不同的液晶屏用到的不一样。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1