欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    四乘四键盘显示(8页).doc

    • 资源ID:35848651       资源大小:44KB        全文页数:8页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    四乘四键盘显示(8页).doc

    -四乘四键盘显示一、 设计要求4*4矩阵键盘共16个键,每按一次键,数码管就显示一次按键代表的值。二、 元件选取单片机:STC89C52RC;电阻:470;发光二极管;4*4键盘;共阳极七段数码管三、 设计思想本设计硬件上采用STC89C52RC单片机的最小系统,单片机的P1口与键盘相连,P1.0P1.3管脚分别与键盘的四行连接,P1.4P1.7管脚分别与键盘的四列相连;P0口P1.0P1.7管脚与数码管1的adp相连,P2口P2.0P2.7管脚分别与数码管2的adp相连,数码管的公共端接+5V电源,控制数码管的显示;发光二极管的阴极与单片机的P3.0管脚连接,阳极与+5V电源连接,低电平有效,控制二极管发光;程序上采用定时扫描方式,利用定时T0产生50ms定时中断,CPU响应中断后进入Scan_Key()子程序对键盘进行扫描,对P1口初值0xf7扫描第一行,进入延时程序消抖动后,进入switch()语句,屏蔽行的低四位,取列的高四位,检测哪一列有键按下,若有键按下,标志位FLAG0=1,发光二极管的到低电平发光;令P1口的初值右移一位后或0x80进行高位补一,扫描第二行,如此循环右移,四行便全都检测到了。当有键按下时,m!=0xf0,进入while循环不停地执行m&0xf0语句,使m=0xf0;按键松开后,m=0xf0跳出while循环,执行中断程序,显示按键的值。如此软件与硬件结合,能合理的完成设计要求,每按一次键,数码管就显示一次按键代表的值。四、原理图YNY开始开定时器中断,定时器0初始化是否有键按下?键盘扫描发光二极管发光,确定按键值中断程序开始数码管显示按键值定时器0重装初值中断返回数码管显示按键值按键是否放开?N四、程序流程五、 调试过程调试过程中,遇到了以下问题:一是数码管不能正常显示,经检查是数码管公共端未接电源,连接后数码管还是不能正常显示,经检查是单片机接触不良,将单片机拔出,对照底座重新插入,然后在仿真数码管显示正常;二是发光二极管在按键按下后不能正常发光,经检查是软件编程存在缺陷,定时时间短,单片机接收不到二极管的低电平,故不发光。经改进后,将二极管管脚赋低电平的语句嵌入到键盘扫描程序中,二极管工作正常。六、 程序清单#include<reg52.h>#define RELOAD_H ( 65536-50000)/256;/定义定时器0重装值#define RELOAD_L ( 65536-50000)%256;extern void Timer0_Init(void); /定时器初始化子函数extern void Delay(unsigned int n);extern void Scan_Key(void);unsigned char dispcode2;unsigned char dofly16;unsigned char ptr,m;unsigned int t,c;bit FLAG0=0; /定义是否有键按下sbit Beep = P30;/发光二极管管脚void main(void)Timer0_Init(); while(1) Scan_Key();/扫描键盘void Timer0_Init(void) /定时器0初始化TMOD=0x01; /定时器0,方式1 TL0=RELOAD_L; /TL0定时器0低8位计数器 TH0=RELOAD_H; /TH0定时器0高8位计数器 TR0=1; /定时器/计数器0启动位./TR0=1:开始计时或计数ET0=1; /定时器/计数器0中断使能EA=1; /全局中断使能void Timer0_ISR(void) interrupt 1 /定时器0中断服务程序 P0=doflyc; P2=doflyt;TL0=RELOAD_L; /定时器0初值重装 TH0=RELOAD_H;void Delay(unsigned int n) /延时unsigned int i,j; for(i=0;i<n;i+) for(j=0;j<80;j+);unsigned char dofly16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码管显示程序void Scan_Key(void) / 键盘扫描程序char a1,i;bit FLAG0=0;a1=0xf7; /列扫描初值ptr=0;for(i=0;i<4;i+) /键盘4个扫描列 P1=a1; Delay(10); m=P1; switch(m&0xf0) /取行的高4位,侦测哪一行有按键被按下 case 0x70: ptr=i*4;/第一行被按否?如有则是tabi*4键FLAG0=1; Beep=0; /表示有按键break; case 0xb0: ptr=i*4+1; /第二行被按否?如有则是tabi*4+1键FLAG0=1; Beep=0;break; case 0xd0: ptr=i*4+2;/第三行被按否?如有则是tabi*4+2键FLAG0=1; Beep=0; break;case 0xe0: ptr=i*4+3; /第四行被按否?如有则是tabi*4+3键FLAG0=1; Beep=0;break;default:break; a1=(a1>>1)|0x80; while(m!=0xf0)m=P1;m=m&0xf0; Beep=1; if(FLAG0) dispcode0=ptr % 10; /求个位的数值 dispcode1=ptr / 10;/求十位上的数值 c=dispcode0; t=dispcode1;-第 8 页-

    注意事项

    本文(四乘四键盘显示(8页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开