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

    实验五-矩阵式键盘按键值的数码管显示.doc

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

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

    实验五-矩阵式键盘按键值的数码管显示.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date实验五-矩阵式键盘按键值的数码管显示实验四 串行口实验实验五 矩阵式键盘按键值的数码管显示一 实验目的 将矩阵键盘的键值采用LED数码管显示出来(分别考虑用动态显示、静态显示)二 实验内容与具体任务描述任务1:行列式键盘接口,扫描实现LED动态显示键盘被按下。任务2:修改代码及图,将图中的动态显示改成静态显示。三 设计的电路图与描述P1口控制键盘,P0口控制LED显示器。四 程序清单任务1:#include<reg51.h> /包含51单片机寄存器定义的头文件sbit P14=P14; /将P14位定义为P1.4引脚sbit P15=P15; /将P15位定义为P1.5引脚sbit P16=P16; /将P16位定义为P1.6引脚sbit P17=P17; /将P17位定义为P1.7引脚unsigned char code Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数字09的段码unsigned char keyval; /定义变量储存按键值/*函数功能:数码管动态扫描延时*/void led_delay(void) unsigned char j;for(j=0;j<200;j+) ; /*函数功能:按键值的数码管显示子程序*/ void display(unsigned char k) P2=0xbf; /点亮数码管DS6 P0=Tabk/10; /显示十位 led_delay(); /动态扫描延时 P2=0x7f; /点亮数码管DS7 P0=Tabk%10; /显示个位 led_delay(); /动态扫描延时 /*函数功能:软件延时子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i<100;i+) for(j=0;j<60;j+) ; /*函数功能:主函数*/ void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1TH0=(65536-500)/256; /定时器T0的高8位赋初值TL0=(65536-500)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0keyval=0x00; /按键值初始化为0 while(1) /无限循环 display(keyval); /调用按键值的数码管显示子程序/*函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位*/ void time0_interserve(void) interrupt 1 using 1 TR0=0; /关闭定时器T0 P1=0xf0; /所有行线置为低电平“0”,所有列线置为高电平“1” if(P1&0xf0)!=0xf0) /列线中有一位为低电平“0”,说明有键按下 delay20ms(); /延时一段时间、软件消抖 if(P1&0xf0)!=0xf0) /确实有键按下 P1=0xfe; /第一行置为低电平“0”(P1.1出低电平“0”) if(P14=0) keyval=1; /可判断是S1键被按下 if(P15=0) keyval=2; /可判断是S2键被按下 if(P16=0) keyval=3; /可判断是S3键被按下 if(P17=0) keyval=4; /可判断是S4键被按下 P1=0xfd; /第二行置为低电平“0”(P1.1出低电平“0”)if(P14=0) keyval=5; /可判断是S5键被按下if(P15=0) keyval=6; /可判断是S6键被按下 if(P16=0) keyval=7; /可判断是S7键被按下 if(P17=0) keyval=8; /可判断是S8键被按下 P1=0xfb; /第三行置为低电平“0”(P1.2输出低电平“0”) if(P14=0) keyval=9; /可判断是S9键被按下 if(P15=0) keyval=10; /可判断是S10键被按下 if(P16=0) keyval=11; /可判断是S11键被按下 if(P17=0) keyval=12; /可判断是S12键被按下 P1=0xf7; if(P14=0) keyval=13; /可判断是S13键被按下 if(P15=0) keyval=14; /可判断是S14键被按下 if(P16=0) keyval=15; /可判断是S15键被按下 if(P17=0) keyval=16; /可判断是S16键被按下 TR0=1; /开启定时器T0 TH0=(65536-500)/256; /定时器T0的高8位赋初值 TL0=(65536-500)%256; /定时器T0的高8位赋初值 任务2:#include<reg51.h> /包含51单片机寄存器定义的头文件sbit P14=P14; /将P14位定义为P1.4引脚sbit P15=P15; /将P15位定义为P1.5引脚sbit P16=P16; /将P16位定义为P1.6引脚sbit P17=P17; /将P17位定义为P1.7引脚unsigned char code Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数字09的段码unsigned char keyval; /定义变量储存按键值/*函数功能:数码管动态扫描延时*/*void led_delay(void) unsigned char j;for(j=0;j<20;j+) ; /*函数功能:按键值的数码管显示子程序*/ void display(unsigned char k) P2=0x3f; /点亮数码管DS6 P0=Tabk/10; /显示十位 /led_delay(); /动态扫描延时 /P2=0x7f; /点亮数码管DS7 P3=Tabk%10; /显示个位 /led_delay(); /动态扫描延时 /*函数功能:软件延时子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i<100;i+) for(j=0;j<60;j+) ; /*函数功能:主函数*/ void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1TH0=(65536-500)/256; /定时器T0的高8位赋初值TL0=(65536-500)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0keyval=0x00; /按键值初始化为0 while(1) /无限循环 display(keyval); /调用按键值的数码管显示子程序/*函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位*/ void time0_interserve(void) interrupt 1 using 1 TR0=0; /关闭定时器T0 P1=0xf0; /所有行线置为低电平"0",所有列线置为高电平"1" if(P1&0xf0)!=0xf0) /列线中有一位为低电平"0",说明有键按下 delay20ms(); /延时一段时间、软件消抖 if(P1&0xf0)!=0xf0) /确实有键按下 P1=0xfe; /第一行置为低电平"0"(P1.1出低电平"0") if(P14=0) keyval=1; /可判断是S1键被按下 if(P15=0) keyval=2; /可判断是S2键被按下 if(P16=0) keyval=3; /可判断是S3键被按下 if(P17=0) keyval=4; /可判断是S4键被按下 P1=0xfd; /第二行置为低电平"0"(P1.1出低电平"0")if(P14=0) keyval=5; /可判断是S5键被按下if(P15=0) keyval=6; /可判断是S6键被按下 if(P16=0) keyval=7; /可判断是S7键被按下 if(P17=0) keyval=8; /可判断是S8键被按下 P1=0xfb; /第三行置为低电平"0"(P1.2输出低电平"0") if(P14=0) keyval=9; /可判断是S9键被按下 if(P15=0) keyval=10; /可判断是S10键被按下 if(P16=0) keyval=11; /可判断是S11键被按下 if(P17=0) keyval=12; /可判断是S12键被按下 P1=0xf7; if(P14=0) keyval=13; /可判断是S13键被按下 if(P15=0) keyval=14; /可判断是S14键被按下 if(P16=0) keyval=15; /可判断是S15键被按下 if(P17=0) keyval=16; /可判断是S16键被按下 TR0=1; /开启定时器T0 TH0=(65536-500)/256; /定时器T0的高8位赋初值 TL0=(65536-500)%256; /定时器T0的高8位赋初值 五 运行结果任务1:两个LED显示器动态显示被按下键盘号。任务2:两个LED显示器静态显示被按下键盘号。六 实验总结1、动态显示与静态显示的概念分的不是太清楚,最后在反复查阅书本之后才得以理解。2、源代码编写错误导致实验失败,在老师的帮助下,找到错误所在,使实验顺利完成。3、对于其开关的控制方面,一定要了解和熟练掌握。4、基本掌握了仿真软件的运行,尤其是其中元部件的查找与组图。5、基本掌握了键盘扫描的简单应用。-

    注意事项

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

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开