按键处理程序分析与设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
按键处理程序分析与设计 参考程序: /************************************************ 时钟显示程序 设计:黄有全 2011年10月26日 关键词:动态显示程序设计 显示连接:P3→J_WM,接数码管的位控制,P1→J_DM,接共阳极数码管段码,动态显示。 按键连接:按键KEY→P2。k1→P2.0,k2→P2.1,k3→P2.2,k4→P2.3。 按键作用说明:k1、k2小时加减,k3、k4分钟加减 ************************************************/ #include<reg51.h> unsigned char duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff}; //数组,定义共阳极数码管显示段码:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。 #define uchar unsigned char uchar ms=0,sec=0,min=30,hour=10; uchar keyv; /**************延时2.5ms函数***************/ void delay() //延时函数,带参数i。 { //在调用函数时通过设置参数,改变延时时间。 int j=0,k=0; // for(j=0;j<i;j++) for(k=0;k<350;k++); } /**************延时250ms函数***************/ void delay_250() //延时函数,带参数i。 { //在调用函数时通过设置参数,改变延时时间。 int j=0,k=0; for(j=0;j<100;j++) for(k=0;k<350;k++); } /**************时间显示函数***************/ void display() { P1=duanma[sec%10]; //送秒的个位的段码,显示; P3=0xfe; //送第一位的位码,点亮第1位数码管。 delay(); //延时2.5ms P1=duanma[sec/10]; //送秒的十位的段码,显示; P3=0xfd; //送第二位的位码,点亮第2位数码管。 delay(); //延时2.5ms P1=duanma[19]; //送-的段码,显示-; P3=0xfb; //送第三位的位码,点亮第3位数码管。 delay(); //延时2.5ms P1=duanma[min%10]; //送分的个位的段码,显示; P3=0xf7; //送第4位的位码,点亮第4位数码管。 delay(); //延时2.5ms P1=duanma[min/10]; //送秒的十位的段码,显示; P3=0xef; //送第5位的位码,点亮第5位数码管。 delay(); //延时2.5ms P1=duanma[19]; //送-的段码,显示-; P3=0xdf; //送第6位的位码,点亮第7位数码管。 delay(); //延时2.5ms P1=duanma[hour%10]; //送小时的个位的段码,显示; P3=0xbf; //送第7位的位码,点亮第7位数码管。 delay(); //延时2.5ms P1=duanma[hour/10]; //送秒的十位的段码,显示; P3=0x7f; //送第8位的位码,点亮第8位数码管。 delay(); //延时2.5ms } /**************按键处理函数**************/ void key() { uchar i; keyv=P2; keyv=~keyv&0x1f; //取反,去掉高三位(只要5个按键) if(keyv==1) //K1按键按下,小时单元在0-23之间循环加1 {if(hour<23)hour++;else hour=0; } if(keyv==2) //K2按键按下,小时单元在0-23之间循环减1 {if(hour>0)hour--;else hour=23; } if(keyv==4) //K3按键按下,分钟单元在0-59之间循环加1 {if(min<59)min++;else min=0; } if(keyv==8) //K4按键按下,分钟单元在0-59之间循环减1 {if(min>0)min--;else min=59;

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档