┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
1 引言 |
3 电路分析
AT89C2051的P1口组成4×4矩阵键盘(S0-S15),其中P1.0-P1.3作为行线,P1.4-P1.7作为列线,设计键盘扫描程序可以达到预先设想的功能(见软件设计部分)。按下S0-S9可以产生0-9十进制数对应的BCD码,S10-S13用作4位BCD码的切换按键,S14、S15暂未使用,可以不安装,P3.3-P3.0是BCD码的数据输出线,从电路中可以看出,因为功用键盘而实现4位BCD编码输出,显然P3.3-P3.0作为数据总线而同时并接在4个D锁存器(4042),通过S10-S13来切换,对于4个D锁存器(U3-U6)每次只有一个有效而把P3.3-P3.0的数据“读入”然后锁存。实际上S10-S13控制P3.4和P3.5的状态(P3.4和P3.5共有4种组合)并通过2-4线译码器(U2;74LS139)得到对应的U3-U6的有效信号,表1是S10-S13控制所对应的各芯片状态,可见,U3-U6中任意一个(例如U3)处于有效状态而“读入”P3.3-P3.0数据时,其余的(U4/U5/U6)处于锁存状态,保留原来数据,因此使用者可以在任意一位中改变所希望的BCD码输出。
U2(74LS139)是2-4线译码器,功能见表1,他的输入端B,A分别接至P3.4,P3.5,输出端Y0-Y3取决于输入端的组合,每种组合下只有一个输出端(Y0-Y3)以低电平有效输出。U3-U6是D锁存器,主要是其中的5脚和6脚关系决定他们的工作状态,查阅资料得知,当5脚和6脚逻辑电位相同时,该芯片可以把D3-D0数据输出到Q3-Q0;当5脚和6脚逻辑电位不同时,该芯片处于锁存原来数据的状态,而不会“读入”当前的D3-D0数据,电路中把U3-U6的6脚固定接低电位,而5脚分别用U2(74LS139)的输出信号来控制,不难实现“可以单独实现对各位BCD码的设置”。4511是译码驱动,接共阴数码管显示当前每位的BCD码所对应的十进制数,方便观察,显示部分很简单,此处不在赘述,同时,显示部分在电路上不是必须的,可省略,BCD码通过J3和J2引出,之所以用两个链接器是为了更灵活、方便使用。
4 软件设计
主要是实现键盘处理,程序中必须确认是哪一个按键被按下,然后转到相应的处理程序中执行,实际上该程序是一个完整的键盘扫描程序,如果改动其中的处理子程序完全可以应用到其他的控制电路中,下文附有详细的程序和说明供参考,图2是流程图。
键盘扫描程序的任务简单讲就是:首先确认是否有按键按下,然后通过扫描判断来得到是在哪一行的按键,最后通过比较预先设定的4行表格查找并计算得到具体的按键,从而转到相应的功能程序。
(4)KEYCALCU子程序中通过乘3运算用于散转指令JMP,注意LJMP是3字节指令,各按键对应的功能程序安排在一起串LJMP,所以通过乘3运算才能正确对应到各按键的执行目标功能程序。
|
---|
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |