单片机矩阵按键操作不懂,在看程序时,这个按键扫描函数没看懂,注释后面的数值P3是我假设的,假设按键S5
假设LZ 说的0xbe 就是S5 的键值,那么该程序有一处LZ没理解的地方,和一处错误地方,还有一处本人不赞同的地方。
先说LZ没理解的地方,那就是
P3=cord_h|0xf0; //输出当前列线值P3=0xfe
cord_l=P30xf0; //读入行线值cord_l=0xf0
最后的 cord_l=0xf0 理解错误,此时 P3=1111 1110b,按下 S5(0xbe) 的时候,高4位有一个位(P36)被拉低,结果P3应该=0xbe,与上0xf0后,cord_l=0xb0,而不是 0xf0;
然后是程序错误的地方:
当有按键按下时,cord_h不等于0x0f,if 条件成立,然后进行了 消抖,之后 又进行 了if 判断,此时cord_h已经不等于0x0f了,就算 判断 十万次 也还是 成立,失去了 消抖的意义。
正确做法应该是:
消抖后,重新 读入列线值,再进行if 判断,也即是 把第二个if 里面的 第一句(cord_h=P30x0f;)放到消抖之后,if 前面。
再是本人不赞同的地方,延时函数是对 单片机资源的 巨大浪费。
你可以想象一下,以12M晶振为例,单片机的一个机械周期为1us,执行一个语句也就2-4us,而一个延时函数却是 ms级别,延的还是 100ms-300ms。
那是多少条语句的浪费啊?整整50000倍啊。
你再想象下,你花了一个小时做完一个活,然后花了5.7年(50000小时)坐着啥都不干,那是多大的浪费啊?
消抖不一定要延时,好的程序员,可以采用时间记录(定时器)进行判定。初学者使用延时函数无可厚非,做产品系统了,就少用为妙。
这个矩阵的计算,没看懂
一般是指把矩阵A与单位阵I拼起来的一个大矩阵,可以用它通过行初等变换求出A的逆矩阵
大型的硬盘录像机矩阵有时候闭路监控器没有图像 需要重启电源 重启后能用 一会儿又不行了。设备三年了。
监控设备属于 高耗电子设备 一般先把矩阵打开 清理一下灰尘 有技术基础的补下焊
如果还这样就只能换设备了
这个矩阵的运算没看懂0.0波浪线这个怎么来的?
你这个题目的意思应该是A相似于那个对角阵,后面三个是对应的特征向量,所以就有(举其中一个例子)Aα(2)=1α(2),于是就有了后面n次方那个换算了
监控矩阵问题
球机一直向一个方向转,证明一直接收重复指令,先用键盘直连球机试一下,排除法,没问题的话,只有看矩阵什么问题了,找厂家维修。