使LED灯亮10种模式(简单)
来源:互联网 发布:网络直播推广软文 编辑:程序博客网 时间:2024/06/11 21:55
使用延时函数编写10种led灯亮的模式:
实现按下k18:
1次单灯从左往右亮(循环);
2次单灯从左往右灭(循环);
3次单灯从右往左亮(循环);
4次单灯从右往左灭(循环);
循环往复。
按下k19:
1次两侧各一个灯从外往里亮(循环);
2次两侧各一个灯从外往里灭(循环);
3次从中间两个灯分别往两侧亮(循环);
4次从中间两个灯分别往两侧灭(循环);
循环往复。
按下k20:
一次:两侧各一个灯从外往里亮 , 然后两侧各一个灯从外往里灭,接着中间两个灯分别往两侧亮,最后中间两个灯分别往两侧灭(循环);
再按一次:从中间两个灯分别往两侧灭,然后中间两个灯分别往两侧亮,接着两侧各一个灯从外往里灭,最后两侧各一个灯从外往里亮。
此程序非常简单,只适用于新人练手。
明天这个时候将尝试用中断系统书写实现本功能的程序。
代码如下。
#include <reg51.h>#include <intrins.h>sbit key1st = P1^4; //k18sbit key2nd = P1^5; //k19sbit key3rd = P1^6; //k20void delay(){ unsigned int k; for(k = 0; k < 30000;k++) { if(key1st != 1 ) { break; } else if(key2nd != 1) { break; } else if(key3rd != 1) { break; } }}unsigned char i;void model1st(){ for(i=8;i>0;i--) { P2=_cror_(P2,1); delay(); }}void model2nd(){ for(i=8;i>0;i--) { P2=_cror_(P2,1); delay(); }}void model3rd(){ for(i=8;i>0;i--) { P2=_crol_(P2,1); delay(); }}void model4th(){ for(i=8;i>0;i--) { P2=_crol_(P2,1); delay(); }}void model5th(){ P2=0x81; delay(); P2=0x42; delay(); P2=0x24; delay(); P2=0x18; delay();}void model6th(){ P2=0x7e; delay(); P2=0xbd; delay(); P2=0xdb; delay(); P2=0xe7; delay();}void model7th(){ P2=0x18; delay(); P2=0x24; delay(); P2=0x42; delay(); P2=0x81; delay();}void model8th(){ P2=0xe7; delay(); P2=0xdb; delay(); P2=0xbd; delay(); P2=0x7e; delay();}void model9th(){ model5th(); model6th(); model7th(); model8th();}void model10th(){ model8th(); model7th(); model6th(); model5th();}void delay1st(){ unsigned int i; for(i=0;i<2000;i++);}void main(){ unsigned int a,b,c,mark1st,mark2nd,mark3rd; a = 0; b = 0; c = 0; while(1) { if(key1st!= 1) { delay1st(); if(key1st!=1) { a++; b = 0; c = 0; mark1st = 1; mark2nd = 0; mark3rd = 0; } } if(mark1st == 1) { switch(a%4) { case 1:P2=0x80;model1st();break; case 2:P2=0x7f;model2nd();break; case 3:P2=0x01;model3rd();break; case 0:P2=0xfe;model4th();break; default: ; break; } } if(key2nd!=1) { delay1st(); if(key2nd!=1) { b++; a = 0; c = 0; mark1st = 0; mark2nd = 1; mark3rd = 0; } } if(mark2nd == 1) { switch(b%4) { case 1:model5th();break; case 2:model6th();break; case 3:model7th();break; case 0:model8th();break; default: ; break; } if(i==1) { i=8; } } if(key3rd!=1) { delay1st(); if(key3rd!=1) { c++; b = 0; a = 0; mark1st = 0; mark2nd = 0; mark3rd = 1; } } if(mark3rd == 1) { if(c%2==1) model9th(); else model10th(); } }}
阅读全文
0 0
- 使LED灯亮10种模式(简单)
- Makefile解析(最简单的LED)
- 简单的LED驱动
- LED的山寨模式
- 简单led驱动(未使用led子系统)
- LED显示(2):简单模块的实现与分析
- LINUX下简单的LED驱动模型(转载)
- Beaglebone Black(2)简单LED控制实验
- (五)4 写个简单的LED驱动
- 简单的LED时钟控件
- 一个简单的LED驱动
- s3c2440简单驱动编程-led
- led HAL简单案例分析
- 树莓派简单led灯实验
- 简单的按键控制LED
- 简单话题:LED呼吸灯和串口LED指示灯
- 23种设计模式(2):简单工厂模式
- 关于(在2410+linux平台上,关于led 的一个简单应用程序)的驱动程序
- Flipped 阅读笔记
- 关于PHP连接数据库SQL语句的易犯错误
- Kotlin入门____类和对象(二)
- 关于openlaeyrs获取谷歌卫星地图的无偏瓦片
- 淘淘商城第四天
- 使LED灯亮10种模式(简单)
- ziyong Installing CUDA 8.0 and cuDNN 5.1 on Ubuntu 16.04
- java垃圾回收机制原理
- POJ 3104 Drying ——二分
- C# 弱事件
- JavaScript对象
- 蓝桥杯 国王的烦恼 逆向并查集建树
- sdut—离散题目1
- 搭建Hexo