if(state==3) // { led_g=1; led_r=0;
INT_MS=300; delay_led(); led_r=1;
led_g=0;
else if(state==2) {
if(MS<=200)
led_r=0;
INT_MS=300;
delay_led(); led_r=0;
flag=0;
return ; //强制返回 else if(MS>200);//>3s }
flag=0; //出中后标志位flag为0
}
void init() {
EX0=1; //外部中断打开 EA=1;
//总中断打开
IT0=0; //低电平有效
}
}
{
led_r=1;
}
16
4 交通灯的设计结论
4.1 使用说明
上电后,数码管显示初始状态即数码管显示00,交通等开始进入运行状态。 运行过程中,若按下KEY键则进入中断程序,如果行人按钮时为绿灯状态,则行人通过后继续未显示完的绿灯,若为红灯状态,则亮至行人时间与剩余时间的最大值后转换为红灯。
4.2 交通灯运行图
交通灯运行仿真图
4.3 设计体会
这次课程设计持续了两周时间,在第一周的时候,由于管理体系认证课设的未完成,以及管理体系认证和六级的考试在周五和周六,故而把大部分时间花在了这些事情上,在星期天才算是正式开始。
一开始,我们四个人进行了分工,我和xx画电路图,他俩男生写程序,由
17
于我们要实现的程序没有涉及到太多的东西,故而电路图的绘制十分简单,我俩只用了半个小时就在PROTEUS上画出了仿真图。然后我们在老师辅导的时间共同探讨了我们程序思路,在王老师给我们详细的解释了我们做的题目后,我们几个都觉得貌似实现起来挺简单的,就十分高兴。
我觉得虽然我们进行了分工,每个人都有负责的板块,但我不能完全来依靠别人来完成这个课设,而且就算课设可以蒙混过关,接下来的考试也是有难度的,就想着自己也应该动手写一下程序,而且在写的过程也是对这门课的复习过程和加深理解的过程。有了这些想法之后,我就先进行了目标计划,把这个课题分成几个模块,各个攻破。首先,我先把主程序编了出来,让它能简单的执行黄红绿的循环,紧接着把延时子程序也写了出来,由于中断程序里面有个判断时间的问题,这个我们一直没想明白要怎么解决这个问题,就被这个点给迷茫了好久,因为我们想利用监测按键是哪个点的时间,利用这个点来比较,当时就是想我们不仅要监测R5的时间点,还要监测R6R7的时间点,就算能实现监测他们三个的时间,还得考虑是否会超出字节范围,单是这个计算和判断就是一个很浩大的工程,我们又想着能不能去找别的方法来解决这个问题,老师提的建议是让我们把延时程序改成定时器的,这样就可以简单些。晚上回来后,我又把延时程序拿了出来看,突然想到老师曾经说过延时程序不精确,我突然想到我们的时间也仅仅是精确到0.1秒,加上本来延时程序又不精确,R5才是大循环,控制的时间才比较准确,R6R7的时间点可以被我们忽略掉,这样一下子就把中断程序的问题解决了,第二天,我把写好的程序给他们看,他们也觉得这样行得通,那下一个问题就是解决怎么在数码管上面显示时间的问题了。在教室里老听他们讨论数码管显示的问题,感觉他们讲的挺高深的样子,一下子把我给吓到了,我就对数码管的问题产生了畏惧感,于是想把这一块交给他们解决,我到时间借鉴下就好了,后来,我在网上百度了别人显示数码管的程序,看了几个之后,觉得也没他们说的那么高深,特别是一个直接调用表格的程序,思路特别简单,就想着简单就简单吧,只要能实现程序就好,没必要非得用那么复杂的来写程序,就按着自己的想法去写了。
虽然程序大体上是完成了,但是还没在开发板上运行,有些问题是不能被发现的,由于我没有开发板,就让他们帮我运行程序,运行的时候发现这个程序还是有很多出现小错误的地方,改了之后还是发现中断程序不怎么灵敏,有时中断程序进不去,在仿真上面仿得中断程序就没进去过,王老师给我们建议说,让我们改变下触发方式,有可能因为我们选的是下降沿触发,它只能监测到下降延时才进入到中断程序,其他时候就算按键了也进不去,让我们改成低电平触发方式。
最后,我们几个的程序,只有xx用C编写的能很好的把题目的每一个步骤
18
实现,我们几个的总是存在这样那样的问题,虽然这次课程设计我没能很好地去把题目里面要求的每一个步骤都很好的实现出来,王老师说,我的程序思路很清晰,实现的方法也很简单,程序本身没什么大问题,能自己独立的把程序编出来,也就意味着对着门课有了很好的理解和认识,也就基本实现了我们这个课程设计的初衷和目的。我自己也觉得从这次课程设计里,获益匪浅,当时上课时没弄明白的问题,我现在都理解了,而且觉得对这门课有了新的认识,觉得他并不是向我们当时想的那么难,只是我们没能够自己多动手多动脑去更深的理解这些东西,现在通过让自己动手操作,自己才会想尽办法的去寻找解决每一个问题的方法,去学习相关模块的知识!
结束语
将设计的程序下载到单片机中,通过测试,基本上完成了任务书的要求,并相应的完成了交通灯的控制。通过本次课程设计,让我明白除了要求我们做课程设计,而最主要的是让我们能把学习中的更加广泛地运用到实际生活中来。交通灯的设计就是一个很明显的例子,以前的我们并不知道交通灯是什么原理而来,可是现在我们知道了。所以,在以后的学习中,我们要以把学习运用到生活中为目标。以更好的学习来回报自己的努力!
19
致谢
单片机的课程设计,在不断的努力,不断的询问,不断的修改之下总算是圆满完成,在这里要感谢的人太多太多!
首先,感谢我们尊敬的王老师,有了他的谆谆教诲,处处提点,我才得以成功在预定时间内的完成。感谢王老师对我们悉心的辅导,每次都是很有耐心的帮助我们解决我们在课设过程中遇到的每一个问题,给与了我们很大的帮助,没有王老师悉心的辅导,我们是不可能很好的完成这次课程设计的!老师对我们要求严格,这是对我们的负责,所谓严师出高徒。而我自由散漫的性格弱点也说明了我需要这样的老师来对我进行督促和鞭策,我学到的不仅仅只有书本上的知识,还有做人的道理。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向王老师致以诚挚的谢意和崇高的敬意。
其次,我要感谢的是我亲爱的小伙伴们,如果没有他们的帮助,学习单片机也是一门很吃力的科目,正所谓星星之火可以燎原,在他们的帮助下,所有的坎坷都会成功的迈过,所以我要感谢他们的帮助。
谢谢!
20
21