电子报告文档模板完整版.docx
《电子报告文档模板完整版.docx》由会员分享,可在线阅读,更多相关《电子报告文档模板完整版.docx(16页珍藏版)》请在冰豆网上搜索。
电子报告文档模板完整版
电子报告文档模板(完整版)
自动化专业电子课程设计报告
题目:
十字路口交通正常时序控制加急车强通控制
姓名
学号
指导教师:
评阅成绩等次:
电气信息工程系
2010-2011第二学期
2)比较:
如上所述,采用传统的数字电路设计并制作方案。
电路复杂,设计复杂,设计思维能力要求较高,调试起来也有一定的难度。
加上电路需要的硬件多,成本高。
所以不采用这种方案。
利用AT89c52单片机电路设计并制作。
这种方案硬件少,基本上硬件是设计没有什么难度,都是常用的接法。
软件实现难度不高。
并且单片机电路也是常用的电路,芯片容易买到,价格又相对便宜。
所以我们决定采用这种方案。
3、设计方案
系统框图
按下key1键(p2..0=1)程序可正常执行,南北、东西绿灯依次亮起,循环往复,再次按下key1键(p2.=0)程序终止。
在p2.0=1时,按下key2键(int0=0)南北强通,即只有南北绿灯亮;按下key3(int1=0)东西强通,即只有东西绿灯亮,强通结束,返回中断处。
利用AT89c52单片机电路设计并制作的电路
东西方向对应的红绿灯显示一样,南北方向的红绿灯显示一样,共阳极二极管电路图如下所示:
4、系统仿真和调试
1)流程图:
主控制流程图:
急车强通------key2控制南北强通;key3控制东西强通
(1)南北中断int0,key2=p3^2
(2.)东西中断int1,key3=p3^3
2)延时程序段代码:
用于控制低电平有效的发光二极管所给予的低电平的时间。
voiddelay(uintz)//z=1时延时1ms
{
uintx,y;
for(x=z;x>0;x--)
{
for(y=114;y>0;y--);
}
}
调用此函数时给变量z赋予不同的值,低电平保持时间不同。
利用两个for循环设定执行的空指令条数(114*z)延时,一条指令执行时间是12个机器周期,本实验中AT89c52设定的晶振频率为11.0592MHz,则z=1时,延迟的时间t=(114*12)/(11.0592*100000)=1ms。
这样设定的值便于函数调用。
3)南北强行通行的中断控制程序段代码:
以外部中断EX0为例说明,下降沿触发的外部中断由key2控制,key2按下则一直保持低电平,再次按下则保持高电平
voidexter0()interrupt0
{EX1=0;//开外部中断源0关外部中断源1
EX0=1;
PX0=1;//设外部中断源0的优先级最高
PX1=0;
P1=0xfe;
if(key2==0)
P0=0Xfd;//南北绿灯亮
else
{
for(i=3;i>0;i--)//南北绿灯闪三次
{
P0=0xfd;
delay(500);
P0=0xff;
delay(500);
}
EX1=1;
PX0=0;
}
}
}
主程序中开总中断(EA=1),选择下降沿触发方式(T0=1),并开外部中断EX0(EX0=1),按键按下瞬间,下降沿触发中断,东西方向红灯亮,南北方向绿灯通行,此处的if语句用于判断绿灯亮的状态,按键2接入的是低电平时,绿灯持续亮,再次按下按键接入的是高电平,绿灯闪亮3秒,中断执行完后退出中断程序,返回到中断前的状态。
程序代码:
#include
#defineuintunsignedint
uinti;
sbitkey1=P2^0;
sbitkey2=P3^2;
sbitkey3=P3^3;
voiddelay(uintz);
voidmain()
{
EA=1;//开总中断
IT0=1;//下降沿触发方式有效
IT1=1;
EX1=1;//开外部中断源0和1
EX0=1;
while(key1==1)
{
P0=0xfe;//南北红灯亮
P1=0xfd;//东西绿灯亮并延时20s
delay(20000);
for(i=3;i>0;i--)//东西绿灯闪亮3s
{
P1=0xfd;
delay(500);
P1=0xff;
delay(500);
}
P1=0Xfb;//东西黄灯亮并维持2s
delay(2000);
P1=0xfe;//东西红灯亮
P0=0xfd;//南北绿灯亮并维持25S
delay(25000);
for(i=3;i>0;i--)//南北绿灯闪亮3S
{
P0=0xfd;
delay(500);
P0=0xff;
delay(500);
}
P0=0Xfb;//南北黄灯亮2S
delay(2000);
}
}
voidexter0()interrupt0
{EX1=0;//开外部中断源0关外部中断源1
EX0=1;
PX0=1;//设外部中断源0的优先级最高
PX1=0;
P1=0xfe;
if(key2==0)
P0=0Xfd;//南北绿灯亮
else
{
for(i=3;i>0;i--)//南北绿灯闪三次
{
P0=0xfd;
delay(500);
P0=0xff;
delay(500);
}
EX1=1;
PX0=0;
}
}
voidexter1()interrupt2
{
EX0=0;//开外部中断源1关外部中断源0
EX1=1;
PX0=0;//设外部中断源1的优先级最高
PX1=1;
P0=0xfe;
if(key3==0)
P1=0Xfd;//东西绿灯亮
else
{for(i=3;i>0;i--)//东西绿灯闪三次
{P1=0xfd;
delay(500);
P1=0xff;
delay(500);}
EX0=1;
PX1=0;
}
}
voiddelay(uintz)//z=1时延时1ms
{
uintx,y;
for(x=z;x>0;x--)
{for(y=114;y>0;y--);
}
}
Proteus仿真截图:
图1:
按下key1,南北红灯亮,东西绿灯亮。
图2:
23s后,东西黄灯亮。
图3:
25s后,南北绿灯亮,东西红灯亮.图4:
53s后,南北黄灯亮。
。
图5:
按下key2键,南北绿灯亮,东西红灯亮图6:
按下key3键,东西绿灯亮,南北红灯亮
5、设计总结和体会
1.)设计小结:
交通灯的设计方法有许多,利用微控制器的方法使设计简单且易于调试仿真,可用多种语言编写程序,相对来说C语言较简单。
2.)设计的收获与体会
作品的选题和设计过程中,我们选取了一道我们有把握,知识点我们觉得可以掌握的题,这样做起来才能够实现理论和实践的接合,从中学到更多的知识。
在设计过种中我们分难点分步进行设计,首先在心中要有一个模块,然后在把想法拿到仿真软件里去一一验证。
这一步是很重要的,也是实实在在学习的关健所在。
这其中我们碰到的难题就是,实验参数的设计。
要达到课程的数据要求,必需进行了大量的仿真调试和大量查阅相关的芯片参数。
这其中要求你要有一定的数电模电的基础知识。
这其中另一个关键之处就是组员的合作,要把问题摆出来充分讨论共同去查阅解决。
做到这点,才能事半功倍。
我们这组一个人理论知识很好,一个人动手能力很好的人,这样设计起来才能很好的把理论和实践之间的不同点接合起来,少走了不少的弯路。
3.)设计的进一步完善意见
此室内实验设计同样可以应用于实践,只是要对一些器件做调整。
发光二极管改做室外可见的交通灯,还需要用到继电器和整流电路。
6、参考文献
1叶钢、李三波、张莉《单片机原理与仿真设计》北京航空航天大学出版社
2胡烨、姚鹏翼、江思敏《Protell99SE电路仿真与设计》机械工业出版社第1版
3邱关源、罗先觉《电路》高等教育出版社第五版
4谭浩强、张基温《C语言程序设计教程》高等教育出版社第三版
5张培仁、张志坚、高修峰《十六位单片机微处理器原理及应用》清华大学出版社
6周润景、袁伟亭、景晓松《Proteus在MCS-51和ARM7A系统中的应用百例》电子工业出版社
7康华光、陈大钦、张林《电子技术基础》模拟部分(第五版)高等教育出版社