P1开关控制低四位流水灯,速度有点快自己调,有备注。
单片机源程序如下:
#include #define led P1 //可以改为其他口 void delay(int x); void left(int x); void right(int x); void flash1(int x); void flash2(int x); void delay(int x) //延迟函数1ms(大概) {int i; while(x) { for(i=0;i<125;i++); x--; } } void left(int x) //从P1^3到P1^0(我叫它左移) {int i,j; while(x) {for(i=0;i<3;i++) // 循环3遍 {led=0xfe; delay(50); //每个灯亮50ms for(j=0;j<3;j++) //一共四位 { led=led<<1|0xf1; delay(50); } } x--; } } void right(int x) //从最低位的最高位(我叫它右移) {int i,j; while(x) //其他同左移 {for(i=0;i<3;i++) { led=0xf7; delay(50); for(j=0;j<3;j++) { led=led>>1|0xf8; delay(50); } } x--; } } void flash1(int x) //四位全闪 (可以改很多种) {int i; while(x) {led=0xf0; delay(100); //一次亮100ms for(i=0;i<1;i++) //可以改循环次数 { led=~led|0xf0; //屏蔽高四位 delay(100); } x--; } } void flash2(int x) //隔一位闪烁(全闪改) {int i; while(x) //基本和全闪一样 {led=0xf5; delay(100); for(i=0;i<1;i++) { led=~led|0xf0; delay(100); } x--; } } main() {while(1) {led=0xff; switch(led) //在灯全灭的情况下,多个按键同时按下时不会动作; {case 0xef :{left(2);}break; //按下P1^4,执行左移,可以修改循环次数 case 0xdf :{right(2);}break; //按下P1^5,执行右移 case 0xbf :{flash1(2);}break;//按下P1^6,执行全闪 case 0x7f :{flash2(2);}break;//按下P1^7,执行全闪改 default:{led=0xff;} } } } 复制代码 #include #define led P1 //可以改为其他口 void delay(int x); void left(int x); void right(int x); void flash1(int x); void flash2(int x); void delay(int x) //延迟函数1ms(大概) {int i; while(x) { for(i=0;i<125;i++); x--; } } void left(int x) //从P1^3到P1^0(我叫它左移) {int i,j; while(x) {for(i=0;i<3;i++) // 循环3遍 {led=0xfe; delay(50); //每个灯亮50ms for(j=0;j<3;j++) //一共四位 { led=led<<1|0xf1; delay(50); } } x--; } } void right(int x) //从最低位的最高位(我叫它右移) {int i,j; while(x) //其他同左移 {for(i=0;i<3;i++) { led=0xf7; delay(50); for(j=0;j<3;j++) { led=led>>1|0xf8; delay(50); } } x--; } } void flash1(int x) //四位全闪 (可以改很多种) {int i; while(x) {led=0xf0; delay(100); //一次亮100ms for(i=0;i<1;i++) //可以改循环次数 { led=~led|0xf0; //屏蔽高四位 delay(100); } x--; } } void flash2(int x) //隔一位闪烁(全闪改) {int i; while(x) //基本和全闪一样 {led=0xf5; delay(100); for(i=0;i<1;i++) { led=~led|0xf0; delay(100); } x--; } } main() {while(1) {led=0xff; //在灯全灭的情况下,多个按键同时按下时不会动作; if(led==0xef) //按下P1^4,执行左移,可以修改循环次数 ; {left(2);} else if(led==0xdf) //按下P1^5,执行右移 {right(2);} else if(led==0xbf) //按下P1^6,执行全闪 {flash1(2);} else if(led==0x7f) //按下P1^7,执行全闪改 {flash2(2);} } }
上一篇:单片机温控红外遥控风扇源程序 舵机对直流电机控制方向
下一篇:stc89c51单片机和lcd12864显示sin函数图像
推荐阅读最新更新时间:2024-11-13 10:36
设计资源 培训 开发板 精华推荐
- MIC5236 的典型应用:低静态电流电容 LDO 稳压器
- PRD1209, -10V, 10V DC to DC 多路输出电源
- TDA7851F 4 x 45 W MOSFET 四桥功率放大器的典型应用
- AT86RF231,天线分集无线电扩展板
- AM1G-1205SZ 5V 1 瓦 DC/DC 转换器的典型应用
- 使用 Analog Devices 的 LT1121CS8 的参考设计
- GS7660 倍压器、开关电容电压转换器的典型应用
- 基于C8051F412 8051 MCU的录音机电路
- 使用 Analog Integrations Corporation 的 AIC1526-0PSTR 的参考设计
- 使用 ON Semiconductor 的 RC4190 的参考设计
- 【下载有礼】利用泰克新MSO6示波器 Spectrum View功能演示多通道信号频谱分析
- 有奖问答|ADI MEMS 推动无处不在的倾角监测发展
- 推陈出“芯“——TI 带你领略智能手机黑科技在线直播 预报名+看直播 好礼让你嗨翻全场!
- TE 物联网专属平台齐上线,您值得拥有的专业全能助手
- 4月25日上午10:00-11:30 ADI与您相约 TOF (Time Of Flight) 技术介绍及产品应用 有奖直播
- 新用户限时福利:e络盟商城迎新季,全场包邮+打折~买一只电阻也包邮!
- 答题赢好礼|e络盟Ready for Tomorrow
- 有奖直播|使用 ModusToolbox® 构建系统,灵活应对物联网设计挑战
- 今天下午1点开播!市场上最广泛的光学传感方案组合—艾迈斯欧司朗光学技术论坛