找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5731|回复: 1
收起左侧

单片机交通灯。1红灯亮15秒。2绿灯亮15秒。3黄灯亮并闪烁

[复制链接]
ID:45212 发表于 2012-10-11 23:24 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7 ;
sbit key=P3^2 ;
sbit led1= P1^0;
sbit led2= P1^1;
sbit led3= P1^2;
uchar num,num1,pp,num2 ,shi,ge;
uint i,j,k;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
                    0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
         0x39,0x5e,0x79,0x71};
void delay(uint );
void display(uchar);
void keyscan();
void init();
void main()
{
 init(); 
 led1=0;
 delay(15000);
 led1=1;
 led2=0;
 delay(15000);
 led2=1;
 for(k=0;k<=10;k++)
   {
     led3=0;
   delay(500);
   led3=1;
   delay(500);  
   }
 
 
  display(num)  ;

}
void delay(uint ms)   //延时函数
{
 for(i=ms;i>0;i--)
    for(j=110;j>0;j--);
}
void display(uchar num)   //动态显示函数
{ 
 shi=num/10;
 ge=num%10;
 dula=1 ;
 P0=table[shi];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(5);

 dula=1 ;
 P0=table[ge];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfd;
 wela=0;
 delay(5);
  
}
void keyscan()     //键盘检测函数
{
 if (key==0)
 {
  delay(10);
  if(key==0)
   pp=1;   //判断按键的开关,若为1则表明开始亮灯。
 }
}
void init()      //初始化函数
{
 TMOD=0x01;
 TH0=(65536-45872)/256;
 TL0=(65536-45872)%256;
 EA=1;
 ET0=1;
}
void timer0()interrupt 1  //定时器0中断
{
 TH0=(65536-45872)/256;
 TL0=(65536-45872)%256;
 num2++;
 if(num2==20)
 {
  num2=0;
  num++;
  if(num==15)
     num=0;
 }
}

回复

使用道具 举报

ID:51711 发表于 2013-7-11 08:12 | 显示全部楼层
太好了。。正找这个。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表