|
大佬,怎么删除字符,比如说按键按错了,想要删除数码管显示的错误数,怎么办啊? |
wulin 发表于 2021-5-26 06:06 找到问题了,我换台电脑就可以了。 |
乌拉拉呜 发表于 2021-5-25 23:57 消隐问题是显示函数没有处理好,不在按键扫描函数。 |
wulin 发表于 2021-5-25 06:02 非常感谢前辈!终于弄好了,不过又出现了消影小问题,应该是我的键盘扫描函数的原因,我再想办法改改,单片机真的好磨人呀! |
乌拉拉呜 发表于 2021-5-24 21:20 uchar data key_buf[9]={0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xff};//显示缓冲数组长度9,初值任意填写。 key_buf[8]=table[KeyValue];//将当前键值保存在缓冲数组的最后并覆盖上次保存的键值 for(i=0;i<8;i++) key_buf=key_buf[i+1];//循环8次由后向前逐一覆盖替换保存的键值 数码管只显示key_buf[0]~key_buf[7]就达到随按键左移显示键值的目的 |
wulin 发表于 2021-5-16 07:31 前辈,我发现我之前的问题了,就是我定义的缓冲数组只有8个储存空间,所以按键超过储存空间时(按键次数超过8时),单片机就会死机,而且用我的代码,缓冲数组最多只能定义2的6次方的储存空间。 但是前辈的代码可以实现无限左移动,并且没有缓冲数组的限制,小弟不才,没有看懂前辈的代码,不是很清楚前辈的代码是如何达到目的的,肯请前辈指教。 |
wulin 发表于 2021-5-16 07:31 非常感谢~ |
乌拉拉呜 发表于 2021-5-14 21:50 改好了
简易电子琴.zip
(117.76 KB, 下载次数: 16)
|
wulin 发表于 2021-5-13 21:25 请前辈帮我看看代码,虽然知道功能但是不太会用代码表达呀。
|
乌拉拉呜 发表于 2021-5-13 20:22 开两个定时器,一个随键值控制喇叭发声频率,一个控制持续时间。不过要想声音好听就得添加DA转换和按键力度检测。 |
wulin 发表于 2021-5-13 08:05 谢谢大佬,不过我放控制中断的语句进去,扬声器就会一直响 |
乌拉拉呜 发表于 2021-5-12 09:51 不会死机,不受中断干扰,逐键左移显示键值。
|
乌拉拉呜 发表于 2021-5-12 09:51 数码管显示那里不要管逻辑处理,只需要做到接到什么数据显示什么数据就行。 键盘读到的数据出来起来就更简单了,比如一开始是12345678,又读到一个9,就这样处理, BUF = 12345678; BUF = ((BUF << 1) | 9) & 0XFF; 这样就保证了数据只有8位,然后送入显示的函数进行显示 |
天ノ忆 发表于 2021-5-12 09:21 那怎么用程序表达显示最近输入的8位呐? 我现在的程序可以显示最近八位,但是我想不通为什么会死机呀 |
| 你要知道,你无论移动多少数据,到最后显示的只有8位,所以只要考虑8位显示就行了,左移之后显示低8位,就能达到你要的效果 |