Keil-51软件进行程序的编写与调试。具体要求:1用程序延时的方法让P1口的1个LED小灯每隔1S交替闪亮。2编写程序使P1口的8个LED小灯从左至右依次闪烁。3利用单片机、按键和LED小灯构成一个LED灯控制电路上电时点亮一位LED按下K1时LED向左移一位按下K2时LED向右移一位。
(1)代码如下:
#include <reg52.h>
void delay(unsigned int t) // 延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void main()
{
while(1)
{
P1 = 0x01; // 点亮第一个LED
delay(1000); // 延时1秒
P1 = 0x00; // 熄灭LED
delay(1000); // 延时1秒
}
}
(2)代码如下:
#include <reg52.h>
void delay(unsigned int t) // 延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++) // 依次点亮8个LED
{
P1 = ~(0x01 << i); // 位运算得到要点亮的LED
delay(1000); // 延时1秒
}
}
}
(3)代码如下:
#include <reg52.h>
void delay(unsigned int t) // 延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char led = 0x01; // 初始点亮第一个LED
while(1)
{
P1 = led; // 显示当前灯的状态
if(P3 == 0x01) // 如果按下K1
{
led <<= 1; // 左移一位
if(led == 0x00) // 如果最左边的LED灭了
led = 0x80; // 点亮最右边的LED
}
else if(P3 == 0x02) // 如果按下K2
{
led >>= 1; // 右移一位
if(led == 0x00) // 如果最右边的LED灭了
led = 0x01; // 点亮最左边的LED
}
}
}
注意:以上代码仅供参考,具体实现方式可能因硬件情况而异
原文地址: https://www.cveoy.top/t/topic/fKNT 著作权归作者所有。请勿转载和采集!