用两组I/O口控制16个流水灯的C51程序
发布网友
发布时间:2023-07-23 14:39
我来回答
共2个回答
热心网友
时间:2024-08-30 19:26
数组可以,直接也可以
数组的话,比如定义个数组,uchar led[]={0xfe,0xfd,0xfb,0x07………………};
for(i=0;i<8;i++)
{
P0=led[i];
delayms(1000)
}
直接的话,同样的道理,只是代码比较多一些,每次重新赋值一次P0都需要延时一下。
更简单的程序如下:
#include<reg51.h> //包含单片机寄存器的头文件
/*****************************
函数功能:延时一段时间
*****************************/
void delay(void)
{
unsigned int n;
for(n=0;n<30000;n++)
;
}
/*****************************
函数功能:主函数
*****************************/
void main(void)
{
unsigned char i;
while(1)
{
P1=0xff;
delay();
for(i=0;i<8;i++)//设置循环次数为8
{
P1=P1>>1; //每次循环P1的各二进位右移1位,高位补0
delay(); //调用延时函数
}
}
}
热心网友
时间:2024-08-30 19:26
假设P0,P2同时控制16个灯,每个IO控制一个灯,每次只有一个灯亮。
void disp(void)
{
int deng;
char i;
deng=1; //只有一个灯亮
for(i=0;i<16;i++)
{
P0=deng&0xff;
P2=*((char *)&deng); //P2=(deng>>8)&0xff;也可以,但时间略长
delay_ms(200); //延时函数你自行定义
deng<<=1;
}
}追问可以解释一下P2=*((char *)&deng); //P2=(deng>>8)&0xff;的意思吗?
。。。初学者很迷茫
用两组I/O口控制16个流水灯的C51程序
数组可以,直接也可以 数组的话,比如定义个数组,uchar led[]={0xfe,0xfd,0xfb,0x07………};for(i=0;i<8;i++){ P0=led[i];delayms(1000)} 直接的话,同样的道理,只是代码比较多一些,每次重新赋值一次P0都需要延时一下。更简单的程序如下:include<reg51.h> //包含单片机寄存器的头...
51单片机16路流水灯怎么用C语言写,并求每个步骤的讲解
程序中的花样数据可以自以去定义,因这里我们的LED 要AT89C51 的P1 引脚为低电平才 会点亮,所以我们要向P1 口的各引脚写数据O 对应连接的LED 才会被点亮,P1 口的八个引 脚刚好对应P1 口特殊寄存器的八个二进位,如向P1 口定数据0xFE,转成二进制就是 11111110,最低位D0 为0 这里P1.0 引脚输出低电平,LED1 ...
怎么制作16个led的流水灯?
可以接的 如果你是在原先的口子上面串上去的话 那就相当与两个LED一起跑的 如果你是要16个LED单独跑的话 可以继续接在其他口子上面 编程的方法和前面的一样 只是把I/O口改一下就好了
51单片机流水灯用C语言编写的设计程序???
include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int void delay(uint z);main(){ uchar aa;while(1){ aa=0xfe;P1=aa;delay(100);while(1){ aa=_crol_(aa,1);P1=aa;delay(100);} } } void delay(uint z){ uint x,y;for(x=z;x>0;x-...
如何用c语言实现流水灯功能?
若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、...
流水灯程序设计
for(i=0;i<7;i++){ P2=P2--;(每次点亮一盏灯)delay(500);} 这样就可以8位的流水灯 另外8个接下来一样的方法点亮,这样就是16灯逐个点亮。=== ③逐渐点亮一个灯 用延时长短来控制 sbit P20=P2^0;int m=500 for(i=0;i<500;i++){ P20=1;delay(m);(灭P2.0口的灯)P20=0;...
单片机原理流水灯实验报告
单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。二、实验原理:MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2...
利用单片机并行I/O口控制流水灯
sbit F2 = P3^1;uint time = 40; //通过改变TIME的参数可以改变流水灯的变换速度 /***一微秒延时子程序***/ void delayus(uint delay){ while(delay--);} /***一毫秒延时子程序***/ void delayms(uint delay){ while(delay--)delayus(149);} /***变换方式一 子函数 ***/...
求个51单片机 汇编语言设计的LED跑马灯的程序
实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。/ /* 程序详细功能介绍:做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复...
单片机AT89C51单片机流水灯修改成先亮一个后亮两个一直循环到亮八个...
根据你的格式那就这样改吧:主函数while(1)里面改成 P2=(P2<<1)|0x01;delay500ms();if(P2==0xFF)P2=0x00;