- 1
- 0
- 约1.02万字
- 约 14页
- 2019-10-19 发布于湖北
- 举报
51单片机按键控制花样灯
时间:2012-09-10 13:50:11 来源:51hei 作者:
/***************************************************** 本程序实现用按键控制花样灯。 ** 当K1按下时,灯从0xfe向左跑一遍; ** 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; ** 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 ** 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 ** 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。 *******************************************************/*************************************************连接方法:P0接独立按键JP5;P2接LED灯接口JP1 ************************************************************/#include reg52.h //头文件,函数声明#include intrins.h
//定义按键所在位sbit K1=P0^0;sbit K2=P0^1;sbit K3=P0^2;sbit K4=P0^3;sbit K5=P0^4;unsigned char led;unsigned char j;
void delayms(unsigned char ms) // 1ms标准延时{ while(ms--){for(j=0;j110;j++); //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}
void main(){ //P2=led; unsigned int i;
while(1){ /********************************************** 当K1按下时,灯从0xfe向左跑一遍; * *********************************************/ if(K1==0) delayms(10); //消除键盘抖动 if(K1==0) { led=0xfe; for(i=0;i7;i++) //i可以去8的倍数,表示本电路执行多少次 { //led=0x7f; // P端口的初定义要在循环外面,不然会使效果错乱 P2=led; //由于这里已经初设一个灯,所以for里面要加上这一个 delayms(100); //起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。 led=_crol_(led,1); P2=led; delayms(100); } while(!K1); //这里强调松开就没再次执行程序 P2=led; //说明执行完上面的程序的最后状态 } //P2=led; // 如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示
/************************************************************当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置 * ***********************************************************/ if(K2==0) delayms(10);
您可能关注的文档
最近下载
- SY_T 5333-2023 钻井工程设计规范.pdf VIP
- 深度解析(2026)《SYT 5946-2019钻井液用包被抑制剂 聚丙烯酰胺钾盐》.pptx VIP
- 卧式储罐体积容积计算(带公式).xls VIP
- 深度解析(2026)《SYT 5661-2019钻井液用增粘剂 丙烯酰胺类聚合物》.pptx VIP
- SY_T 5061-2020 钻井液用石灰石粉.docx VIP
- 深度解析(2026)《SYT 5677-2019钻井液用滤纸》.pptx VIP
- ICU常用药物中英文对照一览表.doc VIP
- 心血管常用名词缩写和心血管常用药物英汉对照.pdf VIP
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套).doc VIP
- 深度解析(2026)SYT 5794-2010《钻井液用沥青类评价方法》:从标准解读到未来油田化学智能化应用的战略前瞻.pptx VIP
原创力文档

文档评论(0)