51单片机红绿灯程序_AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计 Allegro,pads,PCB电路板设计,硬件及芯片资料分享—小北设计

51单片机红绿灯程序

51单片机 by AD,Allegro,pads,PCB设计,电源模块,硬件,stm32,嵌入式,单片机,小北设计
程序及protrus下载通过网盘分享的文件:交通红绿灯

链接: https://pan.baidu.com/s/1CP8Ml9NcX6GDWWc2M1_Jhg 提取码: uvkd

#include<reg51.h>
#include<intrins.h>//_crol_(P1,1) 左移函数,_croc_(P1,1) 右移函数 在这库中。
#define uchar unsigned char //定义uchar 为无符号字符,对应的十位数为最大值为255
#define uint unsigned int //定义uint 为无符号整型,16位系统中十位数最大为65535
sbit dong_yellow = P1^0; //定义东方黄LED开亮
sbit dong_green  = P1^1; //定义东方绿LED开亮
sbit dong_red    = P1^2; //定义东方红LED开亮
sbit nai_yellow  = P1^3; //定义南方黄LED开亮
sbit nai_green   = P1^4; //定义南方绿LED开亮
sbit nai_red     = P1^5; //定义南方红LED开亮
sbit xi_yellow   = P2^0; //定义西方黄LED开亮
sbit xi_green    = P2^1; //定义西方绿LED开亮
sbit xi_red      = P2^2; //定义西方红LED开亮
sbit bei_yellow  = P2^3;//定义北方黄LED开亮
sbit bei_green   = P2^4;//定义北方绿LED开亮
sbit bei_red     = P2^5;//定义北方红LED开亮
uchar xuan_ze = 1;
  uchar ci_shu =0;
void delay(uint ms)// 延时函数 
{  
   uint i, j; //定义变量i ,j .
   for(i=0; i<ms;i++)
for(j=0; j<110; j++);//j每次加1,等j>110时,跳出此for 

}
void loudeng()//东南西北交替函数
{
switch(xuan_ze)
{
case 1://东西向绿灯,南北向红灯
dong_green=0;//东方绿灯亮,P1.1口为低电平
  xi_green=0;//西方绿灯亮,P2.1口为低电平
  nai_red=0;//南方红灯亮,P1.5口为低电平
  bei_red=0;//北方红灯亮,P2.5口为低电平
  delay(2000);
  xuan_ze=2;//选择第二项
  break;
case 2://东西向黄灯闪烁,绿灯关闭
delay(500); //延时500MS
dong_green=1; //息灭东边绿灯P1.1为高电平
  xi_green=1; //息灭西边绿灯P2.1为高电平
dong_yellow=!dong_yellow;//东边黄灯P1.0电平取反,如是高电平,就变成低电平。
  xi_yellow=!xi_yellow;//西边黄灯P2.0电平取反
    if(++ci_shu!=10)//息灭与点亮各5次。
return;
    xuan_ze=3;//选择第3项
P1=0XFF;//P1所有LED灯息灭
P2=0XFF;//P2所有LED灯息灭
  ci_shu=0;//一定要把次数归零。
  break;
case 3://南北向绿灯,东西向红灯
nai_green=0;//南方绿灯亮,P1.4口为低电平
  bei_green=0;//北方绿灯亮,P2.4口为低电平
  dong_red=0;//东方红灯亮,P1.2口为低电平
  xi_red=0;//西方红灯亮,P2.2口为低电平
  delay(2000);
  xuan_ze=4;
  break;
case 4://南北向黄灯闪烁,绿灯关闭
delay(500); //延时500MS
nai_green=1; //息灭南边绿灯P1.1为高电平
  bei_green=1; //息灭北边绿灯P2.1为高电平
nai_yellow=!nai_yellow;//南边黄灯P1.0电平取反,如是高电平,就变成低电平。
  bei_yellow=!bei_yellow;//北边黄灯P2.0电平取反
    if(++ci_shu!=10)//息灭与点亮各5次。
return;
    xuan_ze=1;//选择第1项
P1=0XFF;//P1所有LED灯息灭
P2=0XFF;//P2所有LED灯息灭
  ci_shu=0;//一定要把次数归零。
  break;
}

}
void main() 
{
P1=0xFF;    // 高电平灭灯,0XFF十六进制,对应的二进制为1111 1111  
P2=0xFF; // 高电平灭灯,0XFF十六进制,对应的二进制为1111 1111
  while(1)
 {
loudeng();
 }
}

    Message:

    Name:
    Email:
    Content:
PgUP ...
Allegro,pads,PCB电路板设计,电源模块件及stm32,嵌入式,单片机资料分享—小北设计