基于51单片机按键长按短按效果源程序.docx

基于51单片机按键长按短按效果源程序.docx

ID:50906646

大小:36.05 KB

页数:5页

时间:2020-03-15

基于51单片机按键长按短按效果源程序.docx_第1页
基于51单片机按键长按短按效果源程序.docx_第2页
基于51单片机按键长按短按效果源程序.docx_第3页
基于51单片机按键长按短按效果源程序.docx_第4页
基于51单片机按键长按短按效果源程序.docx_第5页
资源描述:

《基于51单片机按键长按短按效果源程序.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于51单片机按键长按短按效果源程序[复制链接] *实验名称:多位数按键加减**晶振:12MHZ*内容:按键加减数字,多个数码管显示,使用定时器做数码管动态扫描**并区别长按短按效果,完全可以应用的实际生产中**---------------------------------------------------------------*/#include//包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbitKEY_ADD=P3^3;//定义按键输入端口S17sbitKEY_DEC=P3^2;//S18#defineDataPortP1//定义

2、数据端口程序中遇到DataPort则用P1替换sbitLATCH1=P2^0;//定义锁存使能端口段锁存sbitLATCH2=P2^1;//位锁存sbitP35=P3^5;//这是为了关闭开发板上的点阵实际应用去掉unsignedcharcodeHEYAO_DuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码值0123456789unsignedcharcodeHEYAO_WeiMa[]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码u

3、nsignedcharTempData[8]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};//存储显示值的全局变量voidDelayUs2x(unsignedchart);//函数声明voidDelayMs(unsignedchart);voidInit_Timer0(void);voidDisplay(unsignedcharFirstBit,unsignedcharNum);/*------------------------------------------------主函数--------------------------------

4、----------------*/voidmain(void){unsignedcharnum=0,key_press_num;P35=0;//这是为了关闭开发板上的点阵实际应用去掉KEY_ADD=1;//按键输入端口电平置高KEY_DEC=1;Init_Timer0();while(1)//主循环{if(!KEY_ADD)//如果检测到低电平,说明按键按下{DelayMs(10);//延时去抖,一般10-20msif(!KEY_ADD)//再次确认按键是否按下,没有按下则退出{while(!KEY_ADD){key_press_num++;DelayMs(10);//10x200=

5、2000ms=2sif(key_press_num==200)//大约2s{key_press_num=0;//如果达到长按键标准//则进入长按键动作while(!KEY_ADD)//这里用于识别是否按//键还在按下,如果按//下执行相关动作,否则退出{if(num<99)//加操作num++;//即时把显示数据处理,如果去掉下面2//句处理信息,实际上看不到渐变效果,//而是看到跳变效果//用户可以自行屏蔽测试//分解显示信息,如要显示68,则68/10=668%10=8TempData[0]=HEYAO_DuanMa[num/10];TempData[1]=HEYAO_DuanMa

6、[num%10];DelayMs(50);//用于调节长按循环操作//的速度,可以自行调整此值以便达到最佳效果}}}key_press_num=0;//防止累加造成错误识别if(num<99)//加操作num++;}}if(!KEY_DEC)//如果检测到低电平,说明按键按下{DelayMs(10);//延时去抖,一般10-20msif(!KEY_DEC)//再次确认按键是否按下,没有//按下则退出{while(!KEY_DEC){key_press_num++;DelayMs(10);if(key_press_num==200)//大约2s{key_press_num=0;while

7、(!KEY_DEC){if(num>0)//减操作num--;//分解显示信息,如要显示68,则68/10=668%10=8TempData[0]=HEYAO_DuanMa[num/10];TempData[1]=HEYAO_DuanMa[num%10];DelayMs(50);//用于调节长按循环操作的速度}}}key_press_num=0;//防止累加造成错误识别if(num>0)//减操作num--;}}//分解显示信息,如要显示68,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。