在keil中利用串行口设计4位静态LED显示,编写程序要求 4位LED每隔5s交替显示“2202”和“1274
#include <reg52.h>
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
void delay(unsigned int i)
{
unsigned int j;
while(i--)
for(j=0; j<1275; j++);
}
void LED_Display()
{
LED1 = 0; LED2 = 0; LED3 = 1; LED4 = 1; //显示1274
delay(5); //延时5s
LED1 = 0; LED2 = 1; LED3 = 0; LED4 = 1; //显示2202
delay(5);
}
void main()
{
while(1)
{
LED_Display();
}
}
这个程序完成了:
#include <reg51.h>
sbit LED_0 = P3^0; // 定义4位LED信号引脚
sbit LED_1 = P3^1;
sbit LED_2 = P3^2;
sbit LED_3 = P3^3;
void send_char(char c) // 串口发送函数
{
SBUF = c;
while(TI == 0);
TI = 0;
}
void send_string(char* str) // 串口发送字符串函数
{
while(*str != '\0')
{
send_char(*str);
str++;
}
}
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 112; j > 0; j--);
}
void main()
{
TMOD |= 0x20; // 设置计时器1为模式2
TH1 = 0xFD; // 设置波特率为9600
TL1 = 0xFD;
TR1 = 1; // 启动计时器1
while(1)
{
LED_0 = 1; // 显示数字“2”
LED_1 = 1;
LED_2 = 0;
LED_3 = 0;
delay(1000);
LED_0 = 0; // 显示数字“2”
LED_1 = 0;
LED_2 = 1;
LED_3 = 0;
delay(1000);
LED_0 = 0; // 显示数字“0”
LED_1 = 0;
LED_2 = 0;
LED_3 = 1;
delay(1000);
LED_0 = 0; // 显示数字“2”
LED_1 = 1;
LED_2 = 1;
LED_3 = 0;
delay(1000);
send_string("2202\n"); // 通过串口发送“2202”
delay(5000); // 等待5秒
LED_0 = 1; // 显示数字“1”
LED_1 = 1;
LED_2 = 1;
LED_3 = 0;
delay(1000);
LED_0 = 0; // 显示数字“2”
LED_1 = 1;
LED_2 = 1;
LED_3 = 0;
delay(1000);
LED_0 = 1; // 显示数字“7”
LED_1 = 1;
LED_2 = 1;
LED_3 = 1;
delay(1000);
LED_0 = 0; // 显示数字“4”
LED_1 = 1;
LED_2 = 0;
LED_3 = 0;
delay(1000);
send_string("1274\n"); // 通过串口发送“1274”
delay(5000); // 等待5秒
}
}
具体的硬件说明都没有怎么写