社区导航

 

搜索
查看: 908|回复: 0

[资料分享] 案例要求:基于MSP430单片机的交通灯电路设计

[复制链接]

6412

TA的帖子

19

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2018-3-11 17:56 | 显示全部楼层 |阅读模式
功能要求

东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。为20秒,信号灯的状态规则:每一方向亮绿灯,而另一方向亮红灯,红灯时间比绿灯长3秒,当绿灯减到0时,到下一个状态,此时绿灯方向的变为黄色,依次循环。设A道和B道的车流量相同。
360截图20180311175437454.jpg
设计思路

初始状态1为东西绿灯通车,延时17秒,南北红灯禁止,延时20秒。然后转状态2为东西黄灯,延时3秒,南北仍然红灯禁止。过一段时间转状态3,东西红灯禁止,延时30秒,南北绿灯,延时27秒。再转状态4,东西仍然红灯,南北黄灯,延时3秒,最后循环至状态1。

360截图20180311175445048.jpg
部分电路图

显示电路

360截图20180311175449931.jpg

LED


延时程序及解析

void delay(long v)

{

while(v!=0)v--;

}

delay(100)究竟延时多久呢?就是这句话执行需要的时间。

时间等于:机器周期×需要的机器周期数

(在仿真环境中可以测试出来)

主程序

#include

#include

volatile unsigned char hcq[4];

volatile unsigned char wei,duan;

volatile unsigned char i,j=2;

void rid(void);

main(void)

{

WDTCTL = WDTPW | WDTHOLD;// Stop watchdog timer

TA0CCTL0=CCIE;//使能捕获比较中断

TA0CCR0=12000;

TA0CTL=TASSEL_1+TACLR+MC_1;//定时器A时钟源为ACLK,计数器清零,增计数模式

P1DIR=0XFF;

P2DIR=0XFF;

_enable_interrupts();

进入四个状态的循环

while(1)

{

hcq[0]=1;//第一个状态

hcq[1]=7;

hcq[2]=2;

hcq[3]=0;

while(hcq[0]!=0||hcq[1]!=0)

{P2OUT=0xde;

rid();

}

hcq[0]=0;//第二个状态

hcq[1]=3;

while(hcq[0]!=0||hcq[1]!=0)

{P2OUT=0xdd;

rid();

}

hcq[0]=3;//第三个状态

hcq[1]=0;

hcq[2]=2;

hcq[3]=7;

while(hcq[2]!=0||hcq[3]!=0)

{P2OUT=0xf3;

rid();

}

hcq[2]=0;//第四个状态

hcq[3]=3;

while(hcq[2]!=0||hcq[3]!=0)

{ P2OUT=0xeb;

rid();

}

}

}

定时器中断函数

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer_A(void)

{

j--;

while(j==0);

{

j=2;

hcq[1]--;

hcq[3]--;

while(hcq[1]==0xff)

{hcq[0]--;

hcq[1]=9;

}

while(hcq[3]==0xff)

{hcq[2]--;

hcq[3]=9;

}

}

}

调用显示子程序

void rid()

{

wei=0xe0;

duan=hcq[0];

P1OUT=wei+duan;

__delay_cycles(500);

wei=0xd0;

duan=hcq[1];

P1OUT=wei+duan;

__delay_cycles(500);

wei=0xb0;

duan=hcq[2];

P1OUT=wei+duan;

__delay_cycles(500);

wei=0x70;

duan=hcq[3];

P1OUT=wei+duan;

__delay_cycles(500);

}


回复

使用道具 举报

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

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-26 16:45 , Processed in 0.104776 second(s), 25 queries , Gzip On, MemCache On.

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