WilliamCheney
发表于 2025-4-28 14:54:09
《8051U 深度入门》第十一集学习心得
在学习第 11 集关于矩阵按键的内容后,我收获颇丰,对矩阵按键在电子电路设计中的应用有了更深入的理解。
矩阵按键通过将多个按键排列成矩阵形式,显著减少了 I/O 口的占用,这一设计理念在实际电路设计中意义重大。以复杂电子设备为例,若采用独立按键,大量的按键会迅速耗尽微控制器有限的 I/O 资源,导致电路布线复杂且成本增加。而矩阵按键仅需较少的 I/O 口线,就能实现众多按键的连接,极大地优化了电路结构,提升了系统的可靠性与可维护性。
在程序实现方面,扫描法识别按键的原理清晰且巧妙。通过依次对行线和列线输出特定电平并读取对应引脚状态,就能精准判断出按下的按键。这一过程涉及到对微控制器端口的灵活配置与编程逻辑的严谨设计。在实际编写代码时,需考虑按键消抖问题,因为机械按键在按下和松开瞬间会产生电平抖动,若不处理,可能导致误判。可采用软件延时消抖或硬件消抖电路来解决,这让我认识到在实际项目中,细节处理对系统稳定性的重要性。
从实际应用角度来看,课程中列举的密码锁和简易洗衣机面板案例极具启发性。密码锁功能的实现不仅涉及按键识别,还需要设计合理的密码存储与比对机制,以及数码管显示逻辑。这使我思考如何提升密码锁的安全性,如增加密码错误次数限制、加密存储密码等。简易洗衣机面板案例则让我将矩阵按键应用与实际生活场景相结合,体会到如何根据不同功能需求设计按键布局和程序逻辑,以实现用户友好的交互体验。
学习本集内容后,我认识到电子工程师在设计中不仅要掌握硬件电路的搭建,更要精通软件编程实现功能控制。在今后的学习和实践中,我会深入研究矩阵按键在不同场景下的优化应用,提升自己解决实际问题的能力,为设计出更高效、稳定的电子系统奠定坚实基础。
lijvywkp
发表于 2025-4-29 02:21:19
第九课数码管 交作业,
P33检测按键 并控制状态,1:开始计数 0:停止
void KEY_Task(void)
{
if(P33 == 0)
{
KeyNum++;
if(KeyNum == 11)
{
State = !State;
printf("P33按键状态为:%d\r\n", (int)State);
}
}
else
{
KeyNum = 0;
}
}
2:毫秒 累加,25ms 累加一次,12s自动清零,重新开始
void Time_Count(void)
{
if(State)
{
if(++ms1 >= 40)
{
ms1 = 0;
if(++miao1 > 12)miao1 = 0;
}
}
}
3:数码管动态显示 前四位显示 目标时间,后四位显示 按键控制计数时间
uchar miao = 10,ms = 0,miao1 = 0,ms1 = 0,wei = 0;
void Seg_Task(void) //八位数码管显示
{
uchar temp = 0;
if(wei == 0)
{
temp = miao/10;
Display_595(DuanMa,~WeiMa);
}
else if(wei == 1)
{
temp = miao%10;
Display_595((DuanMa | 0x80),~WeiMa);
}
else if(wei == 2)
{
temp = ms/10;
Display_595(DuanMa,~WeiMa);
}
if(wei == 3)
{
temp = ms%10;
Display_595(DuanMa,~WeiMa);
}
else if(wei == 4)
{
temp = miao1/10;
Display_595(DuanMa,~WeiMa);
}
else if(wei == 5)
{
temp = miao1%10;
Display_595((DuanMa | 0x80),~WeiMa);
}
if(wei == 6)
{
temp = ms1/10;
Display_595(DuanMa,~WeiMa);
}
else if(wei == 7)
{
temp = ms1%10;
Display_595(DuanMa,~WeiMa);
}
if(++wei > 7)
{
wei = 0;
}
}
4:任务调度 感觉这个结构体数组 太好用了
static TASK_COMPONENTS Task_Comps[]=
{
{0, 500, 500, LED0_Blink}, //任务1 500ms
{0, 1000, 1000, LED1_Blink}, //任务21000ms
{0, 2000, 2000, LED2_Blink}, //任务3 2000ms
{0, 10, 10, KEY_Task},
{0, 1, 1, Seg_Task},
{0, 25, 25, Time_Count},
/* Add new task here */
};
各位高手 多多指教。
我心飞扬
发表于 2025-4-29 04:50:14
快速看了几集。
白水大虾2016
发表于 2025-4-29 08:26:08
今天继续第九集 数码管
wyfwkyug
发表于 2025-4-29 08:45:03
继续学习,求更新
nzh
发表于 2025-4-29 10:24:11
木木01 发表于 2025-3-10 09:58
说干就干
{:OK:}
dyx811
发表于 2025-4-29 10:33:00
第二十二集!好久变动一下
原点AC
发表于 2025-4-29 11:43:06
学习了
香河英茂工作室
发表于 2025-4-29 14:40:30
好久没有更新了
mechray
发表于 2025-4-29 16:10:33
视频很精彩,催更