求数电交通灯课程设计..MULTISIM.
(1)主、支干道交替通行,主干道每次放行30s,支干道每次放行20s。(2)绿灯亮表示可以通过,红灯亮表示禁止通行。(3)每次绿灯变红灯时,贡灯先亮5s(此时另一道上的红...
(1)主、支干道交替通行,主干道每次放行30s,支干道每次放行20s。
(2)绿灯亮表示可以通过,红灯亮表示禁止通行。
(3)每次绿灯变红灯时,贡灯先亮5s(此时另一道上的红灯不变)。
(4)十字路口要有数字显示作为时间提示,以便人们能更直观地把握时间。
(5)主、支干道通行时间及黄灯亮的时间均以秒为单位作减计数。
(6)在黄灯亮时原红灯按1Hz频率闪烁。
(7)要求主、支干道通告时间及黄灯亮的时间均可在0~99s内任意设定。
邮箱:1642710604@qq.com
谢谢了 展开
(2)绿灯亮表示可以通过,红灯亮表示禁止通行。
(3)每次绿灯变红灯时,贡灯先亮5s(此时另一道上的红灯不变)。
(4)十字路口要有数字显示作为时间提示,以便人们能更直观地把握时间。
(5)主、支干道通行时间及黄灯亮的时间均以秒为单位作减计数。
(6)在黄灯亮时原红灯按1Hz频率闪烁。
(7)要求主、支干道通告时间及黄灯亮的时间均可在0~99s内任意设定。
邮箱:1642710604@qq.com
谢谢了 展开
3个回答
展开全部
#include <msp430x41x.h>
unsigned i;//全局变量,用于传递时间信值
void main (void)
{
unsigned state;
WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗
TACTL = TASSEL0 + TACLR; // 设置定时器A控制寄存器,
CCTL0 = CCIE; //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断
CCR0 =32768; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,相当于1s
TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数
_EINT(); //使能中断,这是一个C编译器支持的内部过程。
P2DIR=0XFF;
P2OUT=0XDE;
state=0;
while(1) //无限次while循环
{
if( state==0 && i==4 )
{
P2OUT=0XDE; //东西红,南北黄
state=1;
}
if(state==1 && i>=7 )
{
P2OUT=0XEE; //东西绿,南北红
state=2;
}
if( state==2 && i==4 )
{
P2OUT=0XF3; //东西黄,南北红
state=3;
}
if(state==3 && i==9 ) //东西红,南北绿
{
P2OUT=0XF5;
state=0;
i=0;
}
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ( void)//定时器A的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
{
i++;
if (i>=20)
i=0;
}
看看你能不能用
unsigned i;//全局变量,用于传递时间信值
void main (void)
{
unsigned state;
WDTCTL= WDTPW + WDTHOLD; //设置看门狗控制寄存器,关看门狗
TACTL = TASSEL0 + TACLR; // 设置定时器A控制寄存器,
CCTL0 = CCIE; //设置捕获/比较控制寄存器,CCIE=0x0010,使能捕获比较中断
CCR0 =32768; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,相当于1s
TACTL |= MC0; //设置定时器A控制寄存器,MC0=0x0010,使计数模式为增计数
_EINT(); //使能中断,这是一个C编译器支持的内部过程。
P2DIR=0XFF;
P2OUT=0XDE;
state=0;
while(1) //无限次while循环
{
if( state==0 && i==4 )
{
P2OUT=0XDE; //东西红,南北黄
state=1;
}
if(state==1 && i>=7 )
{
P2OUT=0XEE; //东西绿,南北红
state=2;
}
if( state==2 && i==4 )
{
P2OUT=0XF3; //东西黄,南北红
state=3;
}
if(state==3 && i==9 ) //东西红,南北绿
{
P2OUT=0XF5;
state=0;
i=0;
}
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ( void)//定时器A的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
{
i++;
if (i>=20)
i=0;
}
看看你能不能用
更多追问追答
追问
呃,很感谢 但是我要仿真,,能麻烦你弄一份给我吗
追答
这个就是仿真程序,你用的什么板?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你发邮箱了,自己查看,多给点分吧~嘿嘿,你要自己在设置一下仿真的速度,,让它走快点。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主资料还在吗 可不可以给我发一份 学习一下 谢谢 615724197@qq.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询