{ P0=~led; delay(200); } led=0x00; for(i=0;i<8;i++) //闪烁 { P0=~led; delay(200); } }}
while(key4==0);keyval=4;} switch(keyval){ case 1:P0=led1;led1=~led1;delay(100);break;case 2:P0=0xff;break;case 3:P0=led;led=_crol_(led,1);delay(100);break;case 4:P0=led;led=_cror_(led,
sbit S14 = P3^6;sbit S13 = P3^7;//有按键控制时要加防抖动处理 void main (void){ unsigned int a = 0; //定义变量 while(1) { //主程序循环 if(!S16) { //发现P30按下低电平时进入处理
delay();LED_IO8= 0;delay();} //开始灯全灭 void LED_dengmie(void){ LED_IO1 = 1;LED_IO2 = 1;LED_IO3 = 1;LED_IO4 = 1;LED_IO5 = 1;LED_IO6= 1;LED_IO7= 1;LED_IO8= 1;} main(){
} } if(k2==0) { delay(10); if(k2==0) { while(k2==0); flag=2; } } if(k3==0) { delay(10); if(k3==0) { while(k3==0); flag=3;
P1口接8个LED灯,P3口接4个按键K1~K4,用于控制流水灯的四种效果,仿真图如下。
P1口接8个LED灯,P3口接4个按键K1~K4 ,用于控制流水灯的四种效果,仿真图如下。
用51单片机写程序,4个按键控制8个小灯切换四种灯光效果?
wela=0;dula=1;P0=0x77;//这中间如果没延时,则后面的状态会没等你看清楚就被后面的状态覆盖了 dula=0;} smg2也是相同的道理;void key(){ if(s2==0)delay(10);if(s2==0){ a=~a; //如果a定义为int型
再定义个数组里面的元素是xu这个数组的元素的逆顺序,调用这个数组就能右移了。按键加流水灯程序,D口接的流水灯。include
我说一个可行的吧,但是不一定是最好的。定义一个位变量 bit fangxiang=1 ; //1表示一个方向,0表示另一个方向。用定时器自动控制灯移动。主循环里面这样写 while(1){ 检测P10按键;如果有按键;fangxiang=!方向;
简单点的,用表格,事先计算好,放到ROM中,用的时候逐行编译输出就可以。 复杂点的,开一个缓冲区,用循环程序,根据花样的不同,每次填充一行,并输出,然后再计算一下行。除非表格太大,不建议这样用。当单片机接收到按
51单片机实现方法:按键控制标志位flag取反。然后把下面的代码放到循环里:U8 temp0 = 1。U8 temp1 = 0x80。U8 i = 0。if(flag == 1)。{。for(i=0;i<8;i++)。{。P1=temp0<
K1、K3、K4。K1是总开关,当K1首次按下时,流水灯由下往上流动、当K2按下时停止流动、当K3按下时,使灯由上往下流动、K4则是由下往上流动。
有没有用一个按键进行流水灯的转换方向
那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 , 那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。
typedef unsigned int uint16;sbit anjian = P1^0; //按键位 void delay(uint16 h) //延时程序 { while(h--);} main(){uint8 k = 0 , i = 0;P0 = 0xff;anjian = 1;while(1){ P0 = ~(1<
delay(5000);如果所带参数是一个常数,那流水灯的速度就是固定不变的。如果改成一个变量,如:delay(speed); 这速度就可以变化可调了。这样,通过按键改变变量speed的值,就调速度了。
这是8个LED灯的流水灯,接在P1,P3.2脚接一个按键,用定时器定时控制流水灯的速度。仿真图如下图所示。
用c51做 逐渐变慢的流水灯 用一个按键来控制 每按一下,变慢一级?
初始化单片机(设置定时器的定时时间为0.1s,控制灯,数码管的IO口设置为输出模式,检测按键的IO口设置为输入模式)---> 写三个函数模块(按键检测函数模块keyscan(char times);,流水灯控制模块LED_Ctrl(char times,char
1.端口配置 2.一个延时功能函数(500ms)3.P1口分别赋值0x01,0x02,。。。0xff等 4.读P2口按键值,适当去抖
while(1)//把while放到你的主函数里 { if(key==0) //定义到自己的按键 { run++; //全局变量 if(run==4){ run=1;} } P0=0xff; //这个程序控制的是P0口 switch(run){ case 1:P0=0xfe;P0=0x
3个按键控制8个流水灯,P1口接8个LED灯,P3口接3个按键,仿真图如下。
怎么用c程序实现3个独立按键控制流水灯(按键1实现速度加快,按键2实现减慢,按键3实现停止)?
void main() { int i=0; //设置参考变量 //初始化 p1.0=1; p1.1=0; p1.2=0; //进入按键操作 while(1) { if(p2.2==0) { i++; if(i==1) { p1.0=0; p1.1=1; p1.2=0; delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。 } if(i==2) { p1.2=1; p1.0=0; p1.1=0; delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。 } if(i==3) { p1.0=1; p1.1=0; p1.2=0; delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。 i=0;//参考变量归0 } } } }要实物 还说仿真呢 硬件做好了吗 我做单片机的
你可以简单地认为单片机只能输出5V或者0V的电压 分别对应1和0,那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 , 那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。时间方面可以写大致的延时,或者用定时器,这样就比较精确了,你学会了这个就可以说入门了。
流水灯哪三种模式?
单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
有这么好的动手机会,就自己做吧。对以后非常有用(过来人的建议。)。 分享下我思路: 1、将你控制用的单片机datasheet下载下来,不用全看,挑需要的看,其他的以后研究。 2、这个项目只是控制单片机的流水灯而已,由于你未提供原理图,我就假设一个IO口控制一盏灯,程序设计流程如下: 初始化单片机(设置定时器的定时时间为0.1s,控制灯,数码管的IO口设置为输出模式,检测按键的IO口设置为输入模式) -----> 写三个函数模块(按键检测函数模块keyscan(char times);,流水灯控制模块LED_Ctrl(char times,char direction)(times为间隔时间,dir为流水灯方向);间隔时间显示函数Display();); -----> 在定时中断函数里分别设置0.1s,0.5s,1s,1.5s,2s的中断标志(即在里面计数,进中断1次,5次,10次,15次,20次。); -----> 主循环重复跑这几个函数模块 以下为伪代码: int main(void) { Initialize(); while(1) { keyscan(); Display(times); LED_Ctrl(times, dir);//times在keyscan()函数里更改. } }