打印
[PIC®/AVR®/dsPIC®产品]

PIC交通灯项目求助

[复制链接]
1264|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KevinHong|  楼主 | 2014-10-17 20:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
刚学PIC不久,很多东西不多。学校要求做一交通灯项目。现在请大家帮忙看看我做的程序和仿真图问题出哪了。谢谢
#include <pic.h>
unsigned char LED1=0;
unsigned char LED2=0;
unsigned char LED3=0;
unsigned char LED4=0;
unsigned char LED_L=0;
const unsigned char table[18]=

{0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X60,0X25,0X3c,0X23,0X34,0X74,0XF7,0XFF};

void timer1init(void) //初始化
{
  T1CON=0X01;       //打开定时器 1
  TMR1IF=0;        //清除 TMR1 中断标志
  TMR1IE=1;       //TMR1中断允许      
  TMR1H=0xF6;    //赋初值,以便 TMR1每2MS左右中断一次  
  TMR1L=0x3D;
  PIR1=0;      //清除所有中断标志
  PEIE=1;     //允许外围总中断
  GIE=1;     //总中断开关打开
}
void interrupt  T1(void)//中断处理  
{
  if(TMR1IF==1)        //如果是定时器1 中断
   {
     TMR1IF=0;       //清除定时器1中断标志
     TMR1H=0XF6;    //重新复初值
     TMR1L=0x3D;
  switch(LED_L)
  {  
  case 0://点亮第一个数码管
  RE2=1;
  RE1=0;
  RE0=0;
  PORTB = table[LED1];
  LED_L = 1;
  break;
case 1://点亮第二个数码管
  RE2=0;
  RE1=1;
  RE0=0;
  PORTB = table[LED2];
  LED_L = 2;
  break;
case 2: //点亮第三个数码管
  RE2=1;
  RE1=1;
  RE0=0;
  PORTB = table[LED3];
  LED_L = 3;
  break;
case 3://点亮第四个数码管
  RE2=0;
  RE1=0;
  RE0=1;
  PORTB = table[LED4];
  LED_L = 0;
  break;
  default://语句 d
  LED_L = 0;
  break;
     
     }
   
  }
}
delay()//延时 500ms
{
int j,k;
for(j=0;j<500;j++)
  for(k=0;k<49;k++)
  {}
}
delay_s(int n)//延时 n秒
{
int i;
  for(i=0;i<n;i++)
  {
    delay();
    delay();
  }
}
main()//主函数  
{  int i;
  ADCON1=0X06;  //初始化
  TRISA=0X00;   //南北方向交通灯控制信号输出端
  TRISB=0X00;   //数码管段选信号输出端
  TRISC=0X00;   //东西南北方向交通灯控制信号输出端
  TRISE=0X00;   //数码管位选信号输出端
  PORTA=0X00;  //RA端口清零
  PORTB=0X00;  //RB端口清零
  PORTC=0X00;  //RC端口清零
  PORTE=0X00;  //RE端口清零
  timer1init();//定时器1 初始化
  LED1=3;LED2=0;LED3=3;LED4=5;//数码管赋初值
  while(1)
  {
     PORTA=0X01;PORTC=0X40; //东西红灯亮,南北绿灯亮
      LED1=3; LED2=0;LED3=4;LED4=0;//东西倒数40S,南北倒数30S
        for(i=0;i<40;i++)
              {
                      delay_s(1);
                   LED2=LED2-1;
           LED4--;
                    if(LED2==0XFF)
                         {LED2=9;LED1--;}
              if(LED4==0XFF)
              {LED4=9;LED3--;}   
                if(i==29)
                {
                 PORTA=0X02; // 南北黄灯亮10S
                  {LED1=1;LED2=0;LED3=1;LED4=0;}
                    if(LED2==0XFF)
                                 {LED2=9;LED1--;}
                       if(LED4==0XFF)
                        {LED4=9;LED3--;}  
                                     if(LED2==0XFF&LED4==0XFF)
                         {}
                }
         }  
     PORTA=0X04;PORTC=0X10; //东西绿灯亮,南北红灯亮
     LED1=4;LED2=0; LED3=3; LED4=0;//东西倒数40S,南北倒数30S
     for(i=0;i<40;i++)
             {
                     delay_s(1);
                  LED4=LED4-1;
          LED2--;
                  if(LED4==0XFF)
                   {LED4=9;LED3--;}
            if(LED2==0XFF)
              {LED2=9;LED1--;}   
              if(i==29)     
              {
                PORTC=0X20; //东西黄灯亮10S
                {LED1=1;LED2=0;LED3=1;LED4=0;}
                 if(LED4==0XFF)
                          { LED4=9;LED3--;}
                   if(LED2==0XFF)
                    {LED2=9;LED1--;}
                                if(LED2==0XFF&LED4==0XFF)
                    {}
               }

        }

    }
}
怎么上图
沙发
KevinHong|  楼主 | 2014-10-17 20:26 | 只看该作者
能上图

无标题.png (126.91 KB )

无标题.png

使用特权

评论回复
板凳
yklstudent| | 2014-10-17 21:11 | 只看该作者
你自己都不知道问题再哪里,怎么指望别人帮你
发一堆乱码,谁会看

使用特权

评论回复
地板
dogglove| | 2014-10-19 22:18 | 只看该作者
先说说什么问题,可以用ucos 系统

使用特权

评论回复
5
liu0000feng| | 2015-4-23 17:23 | 只看该作者
错误问题是什么!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝