历史上的今天
今天是:2024年11月27日(星期三)
2020年11月27日 | 单片机P1开关控制低四位流水灯
2020-11-27 来源:51hei
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);} } }
史海拾趣
|
开始使用in the hand的类库开发,在山寨机上可用,但是到华硕 mypal 632n上就不能用了。不能发现蓝牙设备,后来用mobile 6.0sdk里的两个蓝牙例子(一个spacewar 一个btchat)试了试,也都是不能发现蓝牙设备,把搜索蓝牙设备的代码try catch起来 ,也 ...… 查看全部问答> |
|
代码如下:BYTE *buf=NULL; int bufLen = m_strSend.GetLength(); CString str; str.Format(L\"%ld\",bufLen);   ...… 查看全部问答> |
|
我使用2440+wince 5.0+3G模块实现上网功能,现在浏览网页时总是会出现突然不能浏览的现象,不能浏览网页时系统也不会提示网络连接断开;3g模块usb驱动程序由代理商提供,总说我们的app有问题,我想把app层与3g模块驱动程序的收发数据 ...… 查看全部问答> |
|
这种继电器的资料很不好找到,多数销售厂家只介绍了元件外观上的参数(负载),datasheet根本找不到。请熟悉这种继电器的人帮忙,最好能有元件资料。另外想请教,继电器负载 5A 250VAC/30VDC指的是什么,是可以提供给所带负载电路的最大电压?对于 ...… 查看全部问答> |
|
仿真环境下,程序调试正确,经过以下步骤烧写flash后,程序不运行,请教是什么原因.谢谢!谢谢! 1.MC/MP=0 2.bootload方式选择为1***,选flash方式 3.cmd文件使用的是2812.cmd,定位flash地址, .reset 0x3f7ff6 &nbs ...… 查看全部问答> |
|
请熟悉6000系列的朋友近来点评一下这张6713的图(完整原理图PDF格式) 基本情况是:用6713做一个浮点计算器,对外的通信只有McBSP和EMIF外扩了一片FLASH用来放程序,运行时BOOT到内部RAM中,为了防止外部高速总线带来的干扰问题,没有外扩RAM和其它任何存储器,没有使用音频接口。 芯片:TMS320C6713BPYP 1、仅使用6 ...… 查看全部问答> |
|
OLED_12896_GR_Lib函数(二)——_PSET及PSET函数的实现 前面已经定好函数构架了,下面就从最基本的函数开始实现,首先是画点函数。即_PSET函数和PSET函数。不过在绘制图像前还有一个十分重要的问题需要解决,那就是我们的显示缓冲区该定义为多大呢?这当然要根据显示的模式来确定,函数中用一个宏定义Col ...… 查看全部问答> |




