你好,我用51单片机要实现4个按钮控制8盏流水灯,四个按钮分别是启动停止暂停继续

作者&投稿:邵版 (若有异议请与网页底部的电邮联系)
用51单片机写程序,4个按键控制8个小灯切换四种灯光效果?~

P1口接8个LED灯,P3口接4个按键K1~K4,用于控制流水灯的四种效果,仿真图如下。

其实很简单的,随便使用一个定时/计数 器,使其工作在方式1(方便计算初值),然后写中断服务函数,使用_crol_()函数来反复循环做流水效果,然后在主函数最后写while(1),一直不停扫描键盘函数,然后键盘函数定义4个按键,开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数。
有不懂的地方随时回复我。
希望我的回答能帮助到你。

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchar flag=0;
uchar led=0xff;
while(1)
    {
    if(k1==0)
        {
        delay(10);
        if(k1==0)
            {
            while(k1==0);
            flag=1;
            led=0xfe;
            }
        }
    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;
            }
        }
    if(k1==0)
        {
        delay(10);
        if(k4==0)
            {
            while(k4==0);
            flag=4;
            }
        }
    switch(flag)
        {
        case 1:P0=led;led=_crol_(led,1);delay(100);break;
        case 2:P0=0xff;led=0xff;break;
        case 3:P0=led;break;
        case 4:P0=led;led=_crol_(led,1);delay(100);break;
        default:break;
        }
    }
}


没有问题,按需求编程就行。


你好,我用51单片机要实现4个按钮控制8盏流水灯,四个按钮分别是启动停止...
include<reg51.h>#include<intrins.h>#define uchar unsigned charsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}main(){uchar flag=0;uchar led=0xff;while(1) { if(k1==0) { delay(10...

你好,我用51单片机P1.0端口,怎么加驱动电路才能驱动8550,流过8550的电...
先把8550接在需要控制的回路里,电流方向为“从发射极流向集电极”,然后将单片机P1.0通过一个电阻(别太大,几百欧就可以了)连接到8550基极。P1.0输出低点平就控制回路接通,输出高电平就截止

我使用51单片机的p1口来控制外部电机,但是在之前曾经学过,p1口是用来...
一般不会。不要直接用单片机端口控制点机,因为电机是个比较大的负载,单片机输出负载很小不足以驱动电机,还电机工作时电压波动很大,对单片机有影响。建议用单片机控制继电器,然后用继电器再控制电机,最好单片机与电机不使用相同电源或者电机并联一个电容滤波。

大家好!我想用51单片机控制半导体制冷片!需要一个可靠地驱动电路!急...
这个电路无需太复杂,可靠性也容易得到保证。就是用一个大功率三极管(场效应管)C-E极串接在半导体制冷片中,再串接一个一欧的电阻当取样电阻,当流经该电阻的电流变大时,电阻的两端的压降变大,通过一个比较电路(AT89C2051内就有)给单片机送变流检测信号。完成对半导体制冷片的过流保护。至于温...

前辈你好,我们要用51单片机做一个演讲计时器,时间可设定1—20分钟;数 ...
你选用stc11F03E单片机,选5兆晶振,两个按键,两个数码管,用动态显示。启动一个定时器,就能满足你的要求。

我用51单片机采集了脉冲信号,想通过USB接口传送给电脑。有哪位会的...
买一个usb转串口线,单片机通过串口发送数据,PC机通过虚拟串口接收数据,usb转串口线在硬件上是通过USB传送数据,在逻辑上相当于一条虚拟的串口线。你可以去淘宝网看看,很多的。

我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制...
分主动差速和被动差速。被动差速是控制两个电机严格的按照等转矩或等功率运转,主动差速是根据要求控制两个电机按一定的差速比闭环调速运转。51系列单片机指令周期太长,不适合做电机驱动,无法实现电子差速的要求,建议使用性能更好单片机来完成,比如dsPIC,STM32,AVR系列等。

我想用51单片机单独控制两台步进电机,实现一台电机停,一台电机转和两...
如果有驱动器的话,步进电机的控制一台只需要两个信号即CW(正转)和CCW(反转)信号就OK了,或者PAUSE(脉冲)+DIR(方向),因此控制两台步进电机只需要4路信号即可,所以任意实验板都可以达到,当然买最便宜的了。

我用51单片机(自己焊接的最小系统)控制外接数码管显示很暗是是什么...
STC IO可以配置成强上拉来驱动,电流相对来说比较大。51没有这种模式。不过为了让数码管亮些,你可以用共阳数码管,单片机给0就亮了,因为单片机的灌电流要比拉电流大。记得加限流电阻,一般选1K的。

我用51单片机做一个电子秤!采用什么型号的压力传感器啊!用的AD转化器...
传感器很多 ,型号可以再查一下 一般来说都没多大问题 主要跟你的硬件电路有关 但你采用的ADC0832? 8bit的吧? 它的测量精度就不够 肯定做不到0.01kg的分辨率(更不用说精度)ADC 选用 10位以上的吧 最好是12位以上 硬件电路还有好多设计的方面要注意 ,比如 电源纹波、AD采样参考电压 放大...

久治县17048833997: 用51单片机法设计按键扫描电路程序,要求:有四个按键,外部中断 -
费显谷维: void main(){wela=1;P0=0xfe;wela=0; P3=0xff;while(1){if(key1==0){delay(5);if(key1==0){d1=0;num++;if(num==10)num=0;} while(!key1);delay(5);while(!key1);} elsed1=1;dula=1;P0=table[num];dula=0;}}

久治县17048833997: 51系列单片机 程序设计 用4个开关控制步进电机进行启动停止正转和反转 -
费显谷维: 设计思路: 1、分析功能需求:四个按键控制步进电机的四种状态,那么必须要在程序中有IO口按键扫描程序; 而且步进电机的控制一定要先设置好定时器. 2、功能模块定义:四个按键对应四个函数,每个函数实现不同功能,对于正反转,先...

久治县17048833997: 用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键分别控制暂停、加一秒、减一秒和继续 -
费显谷维: #include<reg51.h>#define uchar unsigned char; uchar LED1,LED2; uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar num=0;sec,key; void delay(unsigned int a) { unsigned int i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } void ...

久治县17048833997: 单片机实现 4个开关的控制 -
费显谷维: /*51单片机12M晶体,指令周期1微秒 开关1~4,分别为P1.0~P1.3,高电平接通,低电平断开*/#include uchar T20mS;void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0B1; TL0 = 0x0E0; EA = 1; ET0 = 1; TR0 = 1; } void Timer0Interrupt(void) interrupt ...

久治县17048833997: 用51单片机4个按键控制小车前进,后退,左右转的简单程序为什么不能这样写?加入左右转弯的就不行了, -
费显谷维: 一、执行完 D0 的条件语句后,执行 D1 的条件语句,由于 D0 用到的是 IN2/IN4,D1 用到的是 IN1/IN3,互相之间没有冲突,所以能正常运行. 二、D2 用到的是 IN4,与 D0 的有冲突,所以前面赋值后,后面又作修改,所以不能正常运行 三、正常应当是 if (D0==1) { }else if (D1==1) { }else if (D2==1) { }else if (D3==1) { }

久治县17048833997: 求解读51单片机用四个按键独立控制四个led的c程序 -
费显谷维: #include<reg51.h> //k2~k4 分别控制le1~le4 void delay(unsigned int x) //延时函数 {while(x--); //延时数减一 }void key_event (unsigned char d) //根据扫描到的键值,亮相应的LED{switch(d){case 14: P1^=(1<<0); break; //k1 键按下了case 13:...

久治县17048833997: 要求:控制芯片只能用51单片机, 需要用4个按键完成不同的流水灯项目 -
费显谷维: 将按键连接在一个I/O口上比如P0上然后读取P0的状态执行相应的程序让灯走起来比如按键1控制P0.0读取的P0值为1在执行1所对应的程序

久治县17048833997: 一块51单片机如何输出4个程序,执行4个不同功能? -
费显谷维: 做成四个片段放一起就行了.不过内存的分配使用要注意:寄存器可以有四个组选,普通内存就要注意分开,别冲突了.切换可以用中断,外中断触发时作一定条件判断,然后...

久治县17048833997: at89s52单片机 如何实现4个按键控制四位数码显示管,按p3.2数码管显示1111,按p3.3显示2222,如此类推、、 -
费显谷维: 你好,我对at89s52单片机不是很熟悉,刚才在百度上查了一下,它的P3口是这样的:P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平.对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可...

久治县17048833997: 求由51单片机控制4x4键盘输入,4个数码管(采用动态扫描)显示 C语言编程思路! -
费显谷维: 可以这样写,先计算按了几下了,按下若小于4次,让四个段选端前几个端导通,按下数超过或等于4次你就可以用扫屏的方式来显示就好了.比如第一下按的是8你就可以设置if和else语句组合啊!先有个数组d[]={0xf7;0xfb;0xfd;0xfe}//段选,按了几下设为变量uint a//无符号字符型,if(a<4){if(a=1)P2=d[a-2];P1=data[8];delay();········if(a-1){··········}if(a-2){··········}};else(············)太多了我就不写了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网