- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;
您可能关注的文档
- web程序设计-课程简介.ppt
- web应用程序设计.doc
- win7安装程序提示0xc8000222错误怎么办.docx
- win7程序如何默认以管理员身份打开.doc
- Win7系统下程序无法运行的解决方法.doc
- WIN7应用程序无法正常启动0xc0000135.doc
- Win8程序无响应怎么办 2.doc
- window81 METRO 应用程序闪退问题.doc
- Windows 8 下如何彻底删除Metro界面下应用程序.docx
- windows下用go语言写程序.pdf
- 安徽省无为县2024届中考数学全真模拟试卷含解析.doc
- 2024届淮安市重点中学中考猜题数学试卷含解析.doc
- 荆州市重点中学2023-2024学年中考数学最后冲刺模拟试卷含解析.doc
- 2023-2024学年四川省巴中学市恩阳区第二中学中考冲刺卷数学试题含解析.doc
- 福建省惠安县2023-2024学年中考数学模试卷含解析.doc
- 湖北省襄阳市枣阳市蔡阳中学2023-2024学年中考数学最后冲刺浓缩精华卷含解析.doc
- 湖北省孝感市孝南区重点达标名校2023-2024学年中考考前最后一卷数学试卷含解析.doc
- 江西省吉安市泰和县2023-2024学年中考试题猜想数学试卷含解析.doc
- 甘肃省张掖四中学2024年中考数学模拟试题含解析.doc
- 重庆市巴南区七校共同体2024年中考数学模拟预测题含解析.doc
文档评论(0)