找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教:单片机怎样把逐位读取74HC595的数据组合为16进制数

[复制链接]
跳转到指定楼层
楼主
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-3-18 14:43 | 只看该作者
接线图?
什么叫逐位读取74HC595的数据?
回复

使用道具 举报

板凳
ID:796531 发表于 2022-3-18 15:01 | 只看该作者
旧数据左移 与 读到的新数据 或运算 ,循环15次
回复

使用道具 举报

地板
ID:965189 发表于 2022-3-18 15:16 | 只看该作者

回复

使用道具 举报

5#
ID:965189 发表于 2022-3-18 15:19 | 只看该作者
读取有几个按键按下。
回复

使用道具 举报

6#
ID:965189 发表于 2022-3-18 15:24 | 只看该作者
key==1;Q0-Q7分别输出0,key==0对应的Q就是按键按下。
回复

使用道具 举报

7#
ID:161164 发表于 2022-3-18 16:11 | 只看该作者
本帖最后由 lkc8210 于 2022-3-18 17:36 编辑

参考一下
  1. uchar KeyScan(uint Temp)//传参575的原输出
  2. {
  3.         static uint i = 0xFFFE;//B111111111110
  4.         uint KeyVal = 0;
  5.         Output575_16bit(i);//575 16bit输出函数
  6.         _nop_();_nop_();_nop_();//等待输出稳定
  7.         if(key==0)KeyVal = i;//IO脚有被拉低,传回575的输出值
  8.         Output575_16bit(Temp);//还原575输出
  9.         i = i<<1 <font color="#ff0000">|</font> 0x0001;//位移,下一步i=B111111111101
  10.         if(i == 0xFFFF)i = 0xFFFE;//没有零位,初始化i
  11.         return KeyVal;
  12. }
复制代码


回复

使用道具 举报

8#
ID:965189 发表于 2022-3-18 16:22 | 只看该作者

先谢谢你热心指导,谢谢!我试下。
回复

使用道具 举报

9#
ID:965189 发表于 2022-3-18 16:45 | 只看该作者
这个static uint i = 0xFFFE;//B111111111110
8位表示,不是0xfe吗?
回复

使用道具 举报

10#
ID:161164 发表于 2022-3-18 16:53 | 只看该作者
君工创 发表于 2022-3-18 16:45
这个static uint i = 0xFFFE;//B111111111110
8位表示,不是0xfe吗?

你说的对
我看错了
  1. uchar KeyScan(uchar Temp)//传参575的原输出
  2. {
  3.         static uchar i = 0xFE;//B11111110
  4.         uchar KeyVal = 0;
  5.         Output575(i);//575输出函数
  6.         _nop_();_nop_();_nop_();//等待输出稳定
  7.         if(key==0)KeyVal = i;//IO脚有被拉低,传回575的输出值
  8.         Output575(Temp);//还原575输出
  9.         i = i<<1 <font color="#ff0000">|</font> 0x01;//位移,下一步i=B11111101
  10.         if(i == 0xFF)i = 0xFE;//没有零位,初始化i
  11.         return KeyVal;
  12. }
复制代码
回复

使用道具 举报

11#
ID:965189 发表于 2022-3-18 16:58 | 只看该作者
我是学习的,如果有大侠做石皮角刀牛的,可以联系我。可以拿到原来的片子。有酬谢。
回复

使用道具 举报

12#
ID:965189 发表于 2022-3-18 18:02 | 只看该作者
只读取显示1位就实现了。同时有几位按下就未知道怎样组合表示出来。
回复

使用道具 举报

13#
ID:161164 发表于 2022-3-18 19:12 来自触屏版 | 只看该作者
按键是分时的,把每次的传回值,与起来就可以了
回复

使用道具 举报

14#
ID:965189 发表于 2022-3-18 19:41 | 只看该作者
lkc8210 发表于 2022-3-18 19:12
按键是分时的,把每次的传回值,与起来就可以了

我再改变思路试下。
回复

使用道具 举报

15#
ID:1011399 发表于 2022-3-18 19:43 | 只看该作者
把每次的传回值,用&就可以了
回复

使用道具 举报

16#
ID:965189 发表于 2022-3-18 19:45 | 只看该作者
我原来用查表法输入1-8位0,0xfe,到0x7f.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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