导航:首页 > 操作系统 > 51单片机让小灯循环点亮

51单片机让小灯循环点亮

发布时间:2023-09-04 15:33:25

① 用51单片机P1口驱动8个LED做循环点亮控制,每个LED占空比50%,周期两秒

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar Counter = 0;
uchar P1LEDBUF = 0x01;//P1口的灯如果亮了7个,就改成0xFE;

main()
{
P1=0x00; //如果灯全亮了,则全部改为0xFF
TMOD = 0x01; //T0工作在定时方式1
TH0 = 0x3C; //T0初值50ms
TL0 = 0xB0;
ET0 = 1; //开启定时器0中断
EA = 1; //开总中断
TR0 = 1; //启动定时器0
while(1);
}

/********************************************/
/* 定时器0中断服务程序 */
/********************************************/
void T0_Serve() interrupt 1
{
TH0 = 0x3c; //每次定时50ms
TL0 = 0xb0;
Counter++;
if(Counter == 20) //中断20次后进入函数,时间刚好1秒(误差可以忽略)
{
Counter = 0; //计数清0
P1 = P1LEDBUF ;
P1LEDBUF =_crol_(P1LEDBUF,1); //位移P1口LED,准备下一轮
//如果灯亮和灭的刚好反了(熄了一个灯,亮了7个)就把初值改了
}
if(Counter == 40)
{
Counter = 0;//计数清0,周期2秒
P1 = 0x00 ;//如果灯全亮了,则改为P1=0xFF;
}
}

② 求!! 如何用C51单片机中断系统实现循环五遍流水灯以后再循环10次闪烁

这个程序很简单的,只要掌握了循环表达方式就可以实现。首先,编写流水灯的循环函数,其次使用for语句进行循环。完成后可以修改画质后同样方法实现闪烁。

③ 51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环

#include<reg51.h>

unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++){P0=ledtab[i];delay(100);}
for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);}
}
}

④ 51单片机C语言如何实现8个流水灯左移三次,后右移三次;如此循环

  1. 51单片机C语言实现循环8个流水灯左移三次,后右移三次。

    例程:

    #include<reg51.h>//51单片机头文件
    #include<intrins.h>//包含有左右循环移位子函数的库
    #defineuintunsignedint//宏定义
    #defineucharunsignedchar//宏定义
    sbitbeep=P2^3;
    voiddelay(uintz)//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
    {//delay(500);大约延时500ms.
    uintx,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    voidmain()//主函数
    {
    uchara,i,j;
    while(1)//大循环
    {
    a=0xfe;//赋初值
    for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
    {
    P1=a;//点亮小灯
    beep=0;//开启蜂鸣器
    delay(50);//延时50毫秒
    beep=1;//关闭蜂鸣器
    delay(50);//再延时50毫秒
    a=_crol_(a,1);//将a变量循环左移一位
    }
    a=0x7f;
    for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
    {
    P1=a;//点亮小灯
    beep=0;//开启蜂鸣器
    delay(50);//延时50毫秒
    beep=1;//关闭蜂鸣器
    delay(50);//再延时50毫秒
    a=_cror_(a,1);//将a变量循环右移一位
    }
    }
    }
  2. 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

⑤ 51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。

#include<reg51.h>

#include<intrins.h>

仿真图效果。

⑥ 51单片机从中间到两边逐个点亮再从两边到中间逐个点亮程序

这个流水灯程序最好用数组定义8个状态的灯,这样用for循环就可以实现了。简洁明了,易读性强,也容易理解。
#include<reg51.h>
#define uchar unsigned char
code uchar ledtab[10]=
{
0xff,0xe7,0xc3,0x81,0x00, //中间开始逐渐点亮
0xff,0x7e,0x3c,0x18,0x00 //两边开始逐渐点亮
}
void delay(int ms)
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar i;
while(1)
{
for(i=0;i<10;i++)P1=ledtab[i];
delay(1000);
}
}

阅读全文

与51单片机让小灯循环点亮相关的资料

热点内容
校验算法的缺点是什么 浏览:717
PHP商品分类功能实现 浏览:328
php取字符串中间 浏览:428
程序员经常用工具 浏览:835
降服主力指标源码主图 浏览:500
python实用库 浏览:692
电脑默认7个文件夹 浏览:11
新唐单片机安装c51后编译错误 浏览:530
红包源码引流神器 浏览:235
学生初中毕业撕书解压 浏览:747
命令方块刷铜点教学 浏览:690
php邮件订阅系统 浏览:997
柱梁底加密箍间距 浏览:30
pythonjavascript对比 浏览:741
什么动漫app是大陆字幕 浏览:286
android查看activity栈 浏览:918
x86固件编译 浏览:166
安卓下什么可以看微博动图 浏览:412
永辉生活app注册有什么优惠吗 浏览:411
行偏移算法 浏览:241