2549|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

案例要求:基于MSP430单片机的交通灯电路设计 [复制链接]

功能要求

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

设计思路

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


部分电路图

显示电路



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);

}

 
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表