急求KEIL C51 红绿灯程序!(用C语言!)

急求KEIL C51 红绿灯程序!(用C语言!),第1张

//12M晶振

//共阴数码管

#include <reg51.h>

sbit red=P1^0

sbit green=P1^1

sbit yellow=P1^2

bit flag=1

unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

unsigned char code wei[ ]={0xfd,0xfe}

unsigned char time=35

void main()

{

  void show_time()

  void show_light()

  EA=1

  ET0=1

  TMOD=0x01

  TH0=(65536-50000)/256

  TL0=(65536-50000)%256

  TR0=1

  red=0

  while(1)

  {

      show_time()

      show_light()

  }

}

void show_time()

{

  void delay()

  unsigned char num=time,i

  for(i=0i<2++i)

  {

      P2=wei[i]

      P0=duan[num%10]

      delay()

      P0=0x00

      num/=10

  }

}

void delay()

{

  int i

  for(i=1000ii--)

}

void show_light()

{

  if(flag)

  {

      if(!time)

      {

          flag=0

          red=1

          green=0

          time=35

      }

  }

  else

  {

      if(time>0&&time<4)

      {

          green=1

          yellow=0

      }       

      if(!time)

      {

          yellow=1

          red=0

          flag=1

          time=35

      }

  }

}

void dec_sec() interrupt 1

{

  static count=0

  TH0=(65536-50000)/256

  TL0=(65536-50000)%256

  if(++count==20)

  {

      count=0

      time--

  }

}

东西和南北的时间不同步,楼主没有说得很清楚

你把时间流程说清楚我可以把代码写出来

//以下代码经过Keil C51软件调试通过

#include "reg51.h" //头文件包含

//宏定义

#define uint unsigned int

#define uchar unsigned char

#define ON 0 //0的时候灯亮

#define OFF 1 //1的时候灯亮

//管脚定义

//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒

//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒

sbit PortDX_Yellow = P1^0//东西方向黄灯

sbit PortDX_Red = P1^1 //东西方向红灯

sbit PortDX_Green = P1^2//东西方向绿灯

sbit PortNB_Yellow = P1^3//南北方向黄灯

sbit PortNB_Red = P1^4 //南北方向红灯

sbit PortNB_Green = P1^5//南北方向绿灯

void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)

{

uint ti

while(ms--)

{

for(ti=0ti<112ti++){}//112

}

}

/*==================== 主函数 ====================*/

void main(void)

{

delay(400)//开机延时400ms

while(1)

{

PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮3秒

PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮3秒

delay(3000)

PortNB_Yellow = OFFPortNB_Red = ON PortNB_Green = OFF//南北红灯亮28秒

PortDX_Yellow = OFFPortDX_Red = OFFPortDX_Green = ON //东西绿灯亮28秒

delay(28000)

PortNB_Yellow = OFFPortNB_Red = ON PortNB_Green = OFF//南北红灯亮2秒

PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮2秒

delay(2000)

PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮1秒

PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮1秒

delay(1000)

PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮2秒

PortDX_Yellow = OFFPortDX_Red = ON PortDX_Green = OFF//东西红灯亮2秒

delay(2000)

PortNB_Yellow = OFFPortNB_Red = OFFPortNB_Green = ON //南北绿灯亮38秒

PortDX_Yellow = OFFPortDX_Red = ON PortDX_Green = OFF//东西红灯亮38秒

delay(3800)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11323032.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存