天天看点

51单片机入门项目设计(流水灯闪烁)程序设计proteus仿真图b站效果视频

问题

设计一个51单片机流水灯项目 实现

①红灯亮三秒熄灭;

②绿灯亮30s;

④绿灯亮的同时,黄灯开始点亮,5s后熄灭。5s后再点亮……交替闪烁,间隔5s,一共闪烁6次,与绿灯同时熄灭;

⑤蓝灯点亮2s熄灭;

⑥紫灯点亮5s后熄灭。

程序设计

本题可分为三个步骤对此项目进行设计,分别为①;②④;⑤⑥;且程序设计时可以尽量以调用子函数的形式进行设计,方便以后修改,具体步骤如下:

#include<reg51.h>//头文件
#define uint unsigned int 
typedef unsigned char u8;//对数据类型进行声明定义
//led灯定义
sbit LED_red = P1^0;
sbit LED_yellow = P1^1;
sbit LED_green = P1^2;
sbit LED_blue = P1^3;
sbit LED_purple = P1^4;
void delay_ms(uint ms);
void first_phase();
void second_phase();
void third_phase();
void delay_ms(uint ms)// 延时子程序 1000ms = 1s
{   
  uint a,b;
  for(a = ms;a > 0;a--)
  for(b = 123;b > 0;b--);
}
void first_phase()//第一阶段
{
	LED_red = 0;//红灯点亮
	delay_ms(3000);//延时3s
	LED_red = 1;//红灯熄灭
}
void second_phase()//第二阶段
{
	u8 i;
	LED_green = 0;//绿灯点亮
	for(i=0;i<6;i++)
		{
			LED_yellow = 0;//黄灯循环交替闪烁,间隔5s
			delay_ms(5000); 
			LED_yellow = 1;
			delay_ms(5000);
		}
	LED_green = 1;//绿灯50s后熄灭
}
void third_phase()//第三阶段
{
	LED_blue = 0;//蓝灯点亮
	delay_ms(2000);//延时2s
	LED_blue = 1;//蓝灯熄灭
	LED_purple = 0;//紫灯点亮,protues仿真图为红色
	delay_ms(5000);//延时5s
	LED_purple = 1;//紫灯熄灭
}
void unity_led()//整合三个阶段
{
	first_phase();//第一
	second_phase();//第二
	third_phase();//第三
}
int main()//主函数
{
	unity_led();
	return 0;
}

           

proteus仿真图

51单片机入门项目设计(流水灯闪烁)程序设计proteus仿真图b站效果视频

b站效果视频

链接: link.

继续阅读