1、杭州电子科技大学单片机技术与应用实验报告 第 一 页 共 七 页 单片机技术与应用 实验报告 实验名称: 外部中断实验(急救车与交通灯) 班 级: 11062811 学 号: 11061118 姓 名: 吕琳涛 指导老师: 谷雨 2013 年 5 月 20 日 杭州电子科技大学单片机技术与应用实验报告 第 二 页 共 七 页 1. 实验要求 由 以 74LS273 作为输出口,控制 4 个双色 LED 灯(可发红,绿,黄 光),模拟交通灯管理 ,并允许急救车优先通过的要求。有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为 10 秒,急救车通过后,交通灯恢复中断前状
2、态。本实验以按键为中断申请,表示有急救车通过。 2. 实验目的 1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。 3. 程序说明: 在本次实验中,我们可以确定外部中断的作用是用于有救护车行驶过来时对程序的进行的简单的控制。对于正常的红绿灯的亮灭我们可以参考第一个实验中流水灯的设计理念。综上所述我们这一次的实 验就是流水灯与外部中断的结合。 通过对七种情况的罗列 1 0 0 1 0 1 1 0 南北绿,东西红 0 1 1 0 1 0 0 1 南北红,东西绿 1 0 0 1 1 1 1 1 只亮东西红 0 1 1 0 1 1 1 1 只亮南北红 0 0 0 0 0 1 1 0
3、 南北黄,东西红 0 0 0 0 1 0 0 1 南北红,东西黄 0 0 0 0 1 1 1 1 全红 我们可以利用 XBYTE0xf200这个函数对这几种情况进行读取与显示,杭州电子科技大学单片机技术与应用实验报告 第 三 页 共 七 页 在不同情况进行显示的过程中我们用以前的 delay 函数进行时间上的规划从而达到依次显示的效果。 0x0f 全红 XBYTE0xf200=0x0f; 0x96 南北绿,东西红 XBYTE0xf200=0x96; 0x9f 只亮东西红 XBYTE0xf200=0x9f; 0x06 南北黄,东西红 XBYTE0xf200=0x06; 0x69 南北红,东西绿
4、XBYTE0xf200=0x69; 0x6f 只亮南北红 XBYTE0xf200=0x6f; 0x09 南北红,东西黄 XBYTE0xf200=0x09; 在具体的实验代码编写过程中,我们会用到 EA=1;EX0=1;IT0=1;用于 设定外部中断 0 为跳变沿触发方式,默认为电平触发方式 。 interrupt 0 函数是处理有救护车驶过时的情况。 至此,程序编写完成,放入软件中进 行编译和下载。 杭州电子科技大学单片机技术与应用实验报告 第 四 页 共 七 页 2. 上机调试说明 将程序编写成功后,我们就上机进行调试。 下载成功后,拨动 k7这个拨动开关形成外部中断的信号,在单片机的实验板
5、上我们可以清楚地看到随着时间灯南北东西的一对一对的红黄绿的交替闪烁。 然后以按键开光来表示救护车的通过,然后看见所有的灯都变成红色。至此实验仿真过程结束。 3. 写出源程序清单及执行结果。 源程序: 杭州电子科技大学单片机技术与应用实验报告 第 五 页 共 七 页 #include #include /可使用其中定义的宏来 访问绝对地址 #include #define uchar unsigned char #define uint unsigned int void delay(uint xms) unsigned int i,j; for(i=xms;i0;i-) for(j=110;j
6、0;j-); void main() EA=1; EX0=1; IT0=1; /设定外部中断 0 为跳变沿触发方式 ,默认为电平触发方式 IP=0x01; /外部中断 0 设置为高优先级中断 XBYTE0xf200=0x0f; /单片机端口 P1输出 0xf200 绝对物理地址 ,全红 delay(5000); /延时 5s while(1) XBYTE0xf200=0x96; /南北绿,东西红 杭州电子科技大学单片机技术与应用实验报告 第 六 页 共 七 页 delay(5000); /持续 5s,之后为绿灯闪烁(绿转黄) XBYTE0xf200=0x9f; delay(1000); /闪烁
7、频率为 1s XBYTE0xf200=0x96; delay(1000); XBYTE0xf200=0x9f; delay(1000); XBYTE0xf200=0x96; delay(1000); XBYTE0xf200=0x9f; delay(1000); XBYTE0xf200=0x06; /黄灯持续 5s delay(5000); XBYTE0xf200=0x69; /南北红,东西绿,持续 5s delay(5000); XBYTE0xf200=0x6f; delay(1000); /闪烁频率为 1s XBYTE0xf200=0x69; delay(1000); XBYTE0xf200
8、=0x6f; delay(1000); XBYTE0xf200=0x69; delay(1000); 杭州电子科技大学单片机技术与应用实验报告 第 七 页 共 七 页 XBYTE0xf200=0x6f; delay(1000); XBYTE0xf200=0x09; delay(5000); void exter0() interrupt 0 /中断服务程序,中断为外部中断 0 XBYTE0xf200=0x0f; delay(10000); /全红 10s,急救车通过 4. 心得体会 本次实验中我们做的是一个交通灯的控制与救护车通过时的一个中断问题。我想这次实验是上两次实验的结合。然后我想对于一些看似很复杂的问题,如果我们可以将其分解为一些我们学过的会做的问题的话,问题就会迎刃而解。