欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机键盘输入编程电路设计.doc

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

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

    单片机键盘输入编程电路设计.doc

    1、单片机键盘输入编程电路设计 学习过单片机技术的人都知道,单片机的按键输入一般可分为简单的独立式按键输入及行列式键盘输入两种。图1为简单的独立式键盘输入示意图,独立式键盘输入适合于按键输入不多的情况(=30)n=0;m=0; 8:P3_7=0; 9:P1=0xff; 10:if(P1!=0xff) 11: 12:if(n=0)m=1; 13:if(n=1) 14: 15:if(P1_0=0)set+;left=0; 16:if(set=4)set=0; 17:if(set=1)flag=0x55; 18:if(P1_1=0)left+; 19:if(left=4)left=0; 20:if(P1

    2、_2=0)up+; 21:switch(left) 22: 23:case 0:if(up=10)up=0;break; 24:case 1:if(up=6)up=0;break; 25:case 2:if(up=10)up=0;break; 26:case 3:if(up=3)up=0;break; 27:default:break; 28: 29: 30:if(P1_2=0) 31:switch(set) 32:case 0:break; 33:case 1:xleft=up;break; 34:case 2:yleft=up;if(P1_3=0)o_f1=!o_f1;break; 35:

    3、case 3:zleft=up;if(P1_3=0)o_f2=!o_f2;break; 36:default:break; 37: 38:else 39:switch(set) 40:case 0:break; 41:case 1:up=xleft;break; 42:case 2:up=yleft;if(P1_3=0)o_f1=!o_f1;break; 43:case 3:up=zleft;if(P1_3=0)o_f2=!o_f2;break; 44:default:break;45 : 46: 47:P1=i;P3=j; 48: 序号1(程序解释,以下同):声明定时1中断函数。 序号2:定

    4、时1中断函数开始。 序号3:定义i、j为无符号字符型局部变量。将当时的P1口、P3口状态送i、j暂存。 序号4、5:定时器T1重新载入10mS初值。 序号6:如变量m等于1,则变量n递增。说明:m、n为整个程序开始时定义的无符号字符型全局变量。 序号7:如变量n大于等于30,则m、n清零。 序号8:P3.7置0,准备读取按键输入。 序号9:P1口置全1,准备读取按键输入。 序号10:如果P1口不等于全1,说明4个按键中有键按下。 序号11:进入if(P1!=0xff)语句范围。 序号12:如果n等于0,进入if(n=0)语句,m置1。 序号13:如果n等于1,进入if(n=1)语句,同时进行下

    5、面的具体判断按键语句。作用效果为:开始时m、n均赋0,一旦有键按下,第一次中断产生时m赋1;第二次中断产生时n递增。当n等于1时(第二次中断产生)进入下面的具体判断按键语句。若持续按下键,则第三次中断产生第三十一次中断产生时,程序不进入具体的判断按键语句过程(因这时n不等于1)。由于中断每10mS产生一次,这样可实现每0.31秒(31x10=0.31秒)进行一次加法或移位的操作,与人眼的视觉特性相吻合。 序号14:进入具体判断按键语句范围。 序号15:如果P1.0等于0(即电路中的set键按下),变量set递增,变量left清0。说明:set、left是为了判断模式设定及左移而在整个程序开始时

    6、定义的无符号字符型全局变量。 序号16:如果set大于等于4,则set清0。说明:set值只能在03间变化,只有4种工作模式(走时及输出控制模式、走时调整模式、定时1调整模式、定时2调整模式)。 序号17:在set等于1时,向RAM区标志变量flag写入55H。说明:flag是在整个程序开始时定义的无符号字符型全局变量,用作判断RAM区是否受干扰的依据。 序号18:如果P1.1等于0(即电路中的left键按下),变量left递增。 序号19:如果left大于等于4,则left清0。说明:left值只能在03间变化,LED数码管只有4位显示。 序号20:如果P1.2等于0(即电路中的up键按下)

    7、,进入if(P1_2=0)语句,变量up递增。说明:up是为了判断数值增量而在整个程序开始时定义的无符号字符型全局变量。 序号21:随即进入switch(left)开关语句。 序号22:switch(left)开关语句开始。 序号23:left值为0时,如果up大于等于10,则up清0。随即退出。说明:电子钟的个位可在09之间调整。 序号24:left值为1时,如果up大于等于6,则up清0。随即退出。说明:电子钟的十位可在05之间调整。 序号25:left值为2时,如果up大于等于10,则up清0。随即退出。说明:电子钟的百位可在09之间调整。 序号26:left值为3时,如果up大于等于3

    8、,则up清0。随即退出。说明:电子钟的千位可在02之间调整。 序号27:若left为其它值,也退出。 序号28:switch(left)开关语句结束。 序号29:if(P1_2=0)语句结束。 序号30:如果P1.2等于0(即电路中的up键按下时),进入if(P1_2=0)语句,同时进入switch(set)开关语句。 序号31:switch(set)开关语句开始。 序号32:set值为0时,退出。 序号33:set值为1时,将此时up值送入X数组的第left位。随即退出。说明:X数组是显示走时缓存区。 序号34:set值为2时,将此时up值送入Y数组的第left位。若此时P1.3等于0(即电

    9、路中的on/off键按下),则定时1启停标志位o_f1取反(启动/关闭)。随即退出。说明:Y数组是定时1记忆缓存区。o_f1是为了判断定时1启动/关闭而在整个程序开始时定义的位标志。 序号35:set值为3时,将此时up值送入Z数组的第left位。若此时P1.3等于0(即电路中的on/off键按下),则定时2启停标志位o_f2取反(启动/关闭)。随即退出。说明:Z数组是定时2记忆缓存区。o_f2是为了判断定时2启动/关闭而在整个程序开始时定义的位标志。 序号36:若set为其它值,也退出。 序号37:switch(set)开关语句结束。if(P1_2=0)语句结束。 序号38:else语句开始

    10、。 序号39:又进入switch(set)开关语句。说明:上一个switch(set)开关语句是将按键产生的up值送入X、Y、Z数组存放,现在这个switch(set)开关语句是调出X、Y、Z数组内容至变量up,以便在原来的基础上递增。例如:原来的X0值为5,则在调整时个位LED数码管显示就从5开始往上调,而不会产生从0或其它值开始上调的情况,适合人的一般直觉。 序号40:set值为0时,退出。 序号41:set值为1时,将此时X数组的第left位值送入变量up。随即退出。 序号42:set值为2时,将此时Y数组的第left位值送入变量up。若此时P1.3等于0(即电路中的on/off键按下)

    11、,则定时1启停标志位o_f1取反(启动/关闭)。随即退出。 序号43:set值为3时,将此时Z数组的第left位值送入变量up。若此时P1.3等于0(即电路中的on/off键按下),则定时2启停标志位o_f2取反(启动/关闭)。随即退出。 序号44:若set为其它值,也退出。 序号45:switch(set)开关语句结束。else语句结束。 序号46:if(n=0)语句结束。if(P1!=0xff)语句结束。 序号47:本次定时中断快结束时,将暂存于i,j的当时P1口、P3口状态还原。 序号48:定时1中断函数结束。 上面为按键输入程序设计的详细解释,按键输入时需将当时状态实时显示出来,我们将显示走时、显示调整走时、显示调整定时1、显示调整定时2做成四个子程序,分别由set为0、1、2、3时散转后的“显示走时并判断定时1、2到否程序”、“显示调整走时程序”、“显示调整定时1程序”、“显示调整定时2程序”进行调用。为达到需输入的某位显示最亮(稳定显示),而其它三位显示较暗(有闪烁感)的视觉效显,让三位需显示较暗的数码管每位点亮3mS,而显示最亮的那位数码管点亮36mS即可。限于篇幅,具体程序就不进行详解了,读者朋友可自行编写。


    注意事项

    本文(单片机键盘输入编程电路设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922