找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2127|回复: 15
收起左侧

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

[复制链接]
ID:965189 发表于 2022-3-18 12:50 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

ID:161164 发表于 2022-3-18 14:43 | 显示全部楼层
接线图?
什么叫逐位读取74HC595的数据?
回复

使用道具 举报

ID:796531 发表于 2022-3-18 15:01 | 显示全部楼层
旧数据左移 与 读到的新数据 或运算 ,循环15次
回复

使用道具 举报

ID:965189 发表于 2022-3-18 15:16 | 显示全部楼层
595接线图.png
回复

使用道具 举报

ID:965189 发表于 2022-3-18 15:19 | 显示全部楼层
读取有几个按键按下。
回复

使用道具 举报

ID:965189 发表于 2022-3-18 15:24 | 显示全部楼层
key==1;Q0-Q7分别输出0,key==0对应的Q就是按键按下。
回复

使用道具 举报

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. }
复制代码


回复

使用道具 举报

ID:965189 发表于 2022-3-18 16:22 | 显示全部楼层

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

使用道具 举报

ID:965189 发表于 2022-3-18 16:45 | 显示全部楼层
这个static uint i = 0xFFFE;//B111111111110
8位表示,不是0xfe吗?
回复

使用道具 举报

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. }
复制代码
回复

使用道具 举报

ID:965189 发表于 2022-3-18 16:58 | 显示全部楼层
我是学习的,如果有大侠做石皮角刀牛的,可以联系我。可以拿到原来的片子。有酬谢。
回复

使用道具 举报

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

使用道具 举报

ID:161164 发表于 2022-3-18 19:12 来自触屏版 | 显示全部楼层
按键是分时的,把每次的传回值,与起来就可以了
回复

使用道具 举报

ID:965189 发表于 2022-3-18 19:41 | 显示全部楼层
lkc8210 发表于 2022-3-18 19:12
按键是分时的,把每次的传回值,与起来就可以了

我再改变思路试下。
回复

使用道具 举报

ID:1011399 发表于 2022-3-18 19:43 | 显示全部楼层
把每次的传回值,用&就可以了
回复

使用道具 举报

ID:965189 发表于 2022-3-18 19:45 | 显示全部楼层
我原来用查表法输入1-8位0,0xfe,到0x7f.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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