- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1.1 硬件电路设计 下图7-1是简单计算器设计的硬件电路。由AT89C51、单片机、时钟电路、复位电路构成一个基本的单片机系统,然后接上显示电路和键盘接口电路,就构成了简单计算器的硬件电路。设计电路由以下部分组成: 1. 复位电路采用“上电复位”方式; 2. 时钟电路采用12MHz的振荡脉冲,以保证单片 机能按一定的频率运行; 3. 显示电路:在P0口和P3口分别接上限流电阻和 LED七段数码管; 4. 键盘接口电路:在P1口连接上4x4按键电路。 7.1.2 基本功能 简单计算器的基本功能如下: 1、通过小键盘,可以实现数据的输入,并立即在 LED数码管上显示; 2、可以实现数据的输出,显示及程序退出; 3、可以进行简单的“+”,“-”,“*”, “/”运算,并将计算所得结果(不超过两位) 在显示器上输出显示。 4、可以进行“清零”。 7.2 程序设计 7.2.1 程序代码设计 简单计算器的主程序如下: int main(void) { unsigned char Key; type = 0; dataend = 0; while(1) { Key = Keycan(); KeyReadData1(Key); display(0,data1); } return 0; } void Calculator(void) // 计算部分 { switch(type) { case 0x2b: { result = data1 + data2; // 相加 } break; case 0x2d: { result = data1 - data2; // 相减 } break; case 0x2a: { result = data1 * data2; // 相乘 } case 0x2f: { result = data1 / data2; // 相除 } } } 7.2.2 仿真结果 下图7-2是截至简单计算器运算时的某一个时刻运行情况: 7.3 相关知识:单片机系统中的键盘接口技术 7.3.1 键盘工作原理及消抖 键盘的处理主要涉及3个方面的内容: 1.按键的识别 由于键位未按下,输出为高电平;键位按下,输出为低电平。因此,可以通过检测输出线上电平的高/低来判断键位有无按下。如果检测到为高电平,说明没有按下;如果检测到为低电平,则说明该线路上对应的键位已按下。 2. 抖动的消除 消除按键抖动通常有两种方法:硬件抖动和软件抖动。 硬件抖动是通过在按键输出电路上加上一定的硬件线 路来消除抖动,一般采用R-S触发器或单稳态电路。 软件消抖是利用延时来跳过抖动过程,当判断有键按 下时,先执行一段大于10ms的延时程序后再去判断按 下的键位是哪一个,从而消除前沿抖动的影响。对于 后沿抖动,只需要在接收一个键位后,经过一定时间 再去检测有无按键,这样就自然跳过后沿抖动时间而 消除后沿抖动了,键盘处理过程往往就是采用这样的 方式。 3. 键位的编码 通常有两种编码方法: (1) 用键盘连接的I/O线的二进制组合进行编码。 (2) 顺序排列编码。如下图所示,这种编码,获得编码值时根据行线和列线进行了相应的处理。处理方法如下:编码值 = 行首编码值X + 列号Y。如果一行有K个键,则行首编码值为nxK,n为行号,从0开始取。列号Y也从0开始取。 7.3.2 独立式键盘 计算机常用的键盘有全编码键盘和非编码键盘两种 全编码键盘能够由硬件逻辑自动提供与被按键对应的编码。 非编码键盘,此类键盘只提供通、断两种状态,其它工作都要靠软件来完成。 非编码键盘从结构形式上划分,一般有两种:独立式键盘与矩阵式键盘。 独立式键盘就是各个按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不会影响其它的I/O接口线。因此,通过检测I/O接口线的电平状态就可以很容易地判断出哪个按键被按下了。 图7-7为查询方式工作的独立式键盘的结构形式,查询方式在工作时,通过执行相应的查询程序来判断有无键按下,是哪一个键按下。 图7-8为中断方式工作的独立式键盘的结构形式 中断方式处理时,则是请求中断,在中断服务程序中通过执行判键程序,判断是哪一个键按下。 例7-1:如图7-8所示,使用外中断,编写独立式按键程序。源代码如下清单所示: #include reg51.h #define KEY_PORT P1 // 按
原创力文档


文档评论(0)