实验三 急救车与交通灯控制综合性实验指导书.docx
《实验三 急救车与交通灯控制综合性实验指导书.docx》由会员分享,可在线阅读,更多相关《实验三 急救车与交通灯控制综合性实验指导书.docx(8页珍藏版)》请在冰豆网上搜索。
实验三急救车与交通灯控制综合性实验指导书
实验三急救车与交通灯控制综合性实验指导书
一、实验内容
P1口进行十字路口交通灯控制,允许急救车优先通过。
有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。
设急救车通过路口时间为10秒,急救车通过后,交通恢复正常。
并实验用单次脉冲申请中断,表示有急救车通过。
二、实验目的及要求
(一)实验目的
1.学习外部中断技术的基本使用方法。
2.学习中断服务程序的编程方法。
(二)实验要求
1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。
2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。
三、实验条件及要求
计算机,C51语言编辑、Keil_uVersion2和Protues仿真软件50台套。
四、实验相关知识点
1.单片机内部结构。
2.C51编程、调试。
3.单片机端口控制。
4.外部中断应用。
五、实验原理图
七、实验参考流程图
八、实验程序
#include<>
#defineucharunsignedchar·
#defineuintunsignedint
unsignedinti;
voiddelay(uintxms)
{
unsignedinta,j;
for(a=xms;a>0;a--)
for(j=114;j>0;j--);
}
voidmain()
{
TMOD=0x01;
TH0=0x3C;
TL0=0x0B0;
EA=1;
ET0=1;
TR0=1;
IP=0x01;
IT0=1;
EX0=1;
P2=0xcf;
while
(1)
{
}
}
voidTimer0Interrupt(void)interrupt1
{
TH0=0x3c;
TL0=0x0b0;
i++;
if(i==100)
{
P2=0xdb;
}
if(i==200)
{
P2=0x9f;
}
if(i==205)
{
P2=0xdf;
}
if(i==210)
{
P2=0x9f;
}
if(i==215)
{
P2=0xdf;
}
if(i==220)
{
P2=0x9f;
}
if(i==225)
{
P2=0xdf;
}
if(i==230)
{
P2=0x9f;
}
if(i==235)
{
P2=0xdf;
}
if(i==240)
{
P2=0x9f;
}
if(i==245)
{
P2=0xdf;}
if(i==250)
{
P2=0x9f;
}
if(i==255)
{
P2=0xdf;
}
if(i==260)
{
P2=0xe7;
}
if(i==360)
{
P2=0x6f;
}
if(i==365)
{
P2=0xef;
}
if(i==370)
{
P2=0x6f;
}
if(i==375)
{
P2=0xef;
}
if(i==380)
{
P2=0x6f;
}
if(i==385)
{
P2=0xef;
}if(i==390)
{
P2=0x6f;
}
if(i==395)
{
P2=0xef;
}
if(i==400)
{
P2=0x6f;
}
if(i==405)
{
P2=0xef;
}
if(i==410)
{
P2=0x6f;
}
if(i==415)
{
P2=0xef;
}
if(i==420)
{
P2=0xdb;
i=0;
}
}
voidexter0()interrupt0//中断服务程序,中断为外部中断0
{
P2=0xcc;
delay(10000);//全红10s,急救车通过
P2=0xcf;
}
九、实验实施步骤
1.仔细阅读实验内容及要求,编写C51源程序。
2.上机编辑、仿真调试源程序。
3.按要求接线。
4.在线调试源程序,观查运行结果。
十、思考问题
如何改变急救车通过路口的时间
改变voidexter0()interrupt0中delay()括号中的值