找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1690|回复: 13
打印 上一主题 下一主题
收起左侧

我想问几个单片机方面的初级问题,请黑坛里的大佬回答一下

  [复制链接]
回帖奖励 50 黑币 回复本帖可获得 50 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:345275 发表于 2018-6-5 21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、如何扫描矩阵键盘确定按键?
2、如何把输入的数字值转化成数值进行运算?
3、如何在液晶屏上一个字符?
就这三个,麻烦你们了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:345811 发表于 2018-6-5 23:01 | 只看该作者
你好
4*4的矩阵键盘至少需要8个IO进行扫描,网上有完整的教程,可以直接参考
如果位数是确定的,可以直接利用按键函数返回值,如果不确定可以用字符串转int
显示字符的话不同液晶屏有不同的字库表,一般买来会有库函数或者字表的
像常用的1602 12864等并口屏以及oled等 都会有自己出厂的设计软件和使用方法

谢谢

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

来自 3#
ID:319344 发表于 2018-6-6 11:20 | 只看该作者
这三个问题联系起来好像是一个计算器呀,首先回答第一个问题:矩阵键盘与单片机相连分为行线和列线,行线一端接IO口,另一端接VCC,而列线一端接IO口,另一端接按键引脚,按键引脚另一端接行线上(先想象一个按键)先让列线输出低电平,检测行线IO口,如果是高电平(因为连着VCC),说明没有按下,当按下时,按键就将VCC和低电平(列线IO输出)导通了,这时候行线就会读到低电平。  矩阵键盘确定按键:根据坐标哇,比如说第3条列线由低电平变为了高电平,而此时第1条行线变为了低电平,就知道是在矩阵中哪个位置的按键按下了,你对每行每列的按键都有一个标号,那就是键值了

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

来自 4#
ID:319344 发表于 2018-6-6 11:37 | 只看该作者
第二个问题:如果你是做的计算器,那某些按键就有0~9 或+ -× /的特殊含义,用某个变量表示键值,然后将两个变量相运算,再将结果再用变量表示就可以了。 第三个问题:显示字符分为 显示什么和在哪儿显示。 显示字符就是显示ASCII码,根据ASCII码值找到对应的字符就可以显示了。而要想调用的话首先要有,LCD1602有字符发生存储器,存放着点阵字符。(显示其实就是显示有规律的点,字符,汉字,图形都是这样)
在什么地方显示:1602的话是每个小方块都有对应的地址,选对了地址就在那儿显示了,手机屏幕那种(无论现在的智能手机,还是以前的诺基亚)都是根据坐标,有个词叫分辨率,比如320*240,就是屏幕上有那么多可以亮的点,选对了坐标,那个点就亮了,那种就没有字符发生存储器了,还是那句话,亮的点有规律了就是字符,汉字或图形了

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

来自 5#
ID:295783 发表于 2018-6-6 13:03 | 只看该作者
1.如果进行按键扫描的话 需要8个io口来进行操作 分别为4个横向 4个纵向 通过变换高低电平进行按键扫描 其他的网上有程序改成自己想要的io口就可以用了
2.先把按键用0-9进行定义 每按下一个按键 通过定义的来进行运算
3.这个你要参考显示屏的参考手册了 显示屏分为lcd和led lcd又分为常用的1602和12864 不过我建议用lcd1602比较好
希望对你有帮助

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:127220 发表于 2018-6-5 22:59 | 只看该作者
参考宋雪松老师的教程第8张8.5节简易加法计算器
回复

使用道具 举报

7#
ID:156629 发表于 2018-6-5 23:09 | 只看该作者
1.通过行扫描,与列扫描确定那个按键按下;2.将每个按键按下的数值编码成0-9,让后进行运算,3.通过看液晶屏手册,读时序驱动液晶显示字符

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:277550 发表于 2018-6-5 23:20 | 只看该作者
像4*4的键盘,就是4个io接横、4个io接纵,,,,,,然后扫描横和纵的交叉点,看哪个交叉点是低电平,就是有按下键。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:345158 发表于 2018-6-5 23:53 | 只看该作者
将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:345158 发表于 2018-6-5 23:58 | 只看该作者
对于数字值转化为数值,若位数已知 ,则用按键函数返回值。若不确定, 一般用用字符串转int来转化。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

11#
ID:345275 发表于 2018-6-6 00:24 | 只看该作者
kuangfeng223 发表于 2018-6-5 23:09
1.通过行扫描,与列扫描确定那个按键按下;2.将每个按键按下的数值编码成0-9,让后进行运算,3.通过看液晶 ...

这样回答老师没问题吗,不需要提出哪段代码给老师看嘛
回复

使用道具 举报

12#
ID:343102 发表于 2018-6-6 09:11 | 只看该作者
可以参考这个程序:矩阵键盘1602显示

LCD1602P1Key.rar

1.87 KB, 下载次数: 2

回复

使用道具 举报

13#
ID:346086 发表于 2018-6-6 13:12 | 只看该作者

将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下.

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

14#
ID:331531 发表于 2018-6-6 15:01 | 只看该作者
按键扫描要用到外部中断,第二个用BCD转换就行,液晶屏显示可以到网上百度驱动函数,不同的液晶屏用到的不一样。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表