单片微型计算机与接口技术
专周报告
题班学姓
目 级
号 名
指导老师 倪继烈、姜文国 完成时间 2010-12-31
成都电子机械高等专科学校计算机工程系
单片微型计算机与接口技术专周 08512 张勇 10号
`
目 录
一、项目名称 .............................................................................................................1 二、选题背景 .............................................................................................................1
2.1 课题背景 ................................................................................................................. 1 2.2 交通灯的历史 ......................................................................................................... 1 三、单片机简介 .........................................................................................................2
3.1 单片机的发展历程 ................................................................................................. 2 3.2 单片机的特点: ..................................................................................................... 3 3.3 AT89C51单片机简介 ............................................................................................ 4 四、设计基本要求和步骤 ...........................................................................................5
4.1 基本要求 ................................................................................................................. 5 4.2 设计步骤 ................................................................................................................. 6 五、硬件和软件设计 ..................................................................................................6
5.1 硬件电路图 ............................................................................................................. 6 5.2 程序流程图 ............................................................................................................. 8
主程序 ...................................................................................................................... 8 运行过程 .................................................................................................................. 9 LED显示程序 ....................................................................................................... 10 T0中断 .................................................................................................................. 11 INT0中断 .............................................................................................................. 11 5.3 P0、P1口显示状态编码表 ................................................................................. 12 5.4 程序源代码 ........................................................................................................... 12 5.5 程序运行效果图 ................................................................................................... 17 六、心得体会 ........................................................................................................... 19 七、参考文献 ........................................................................................................... 20
第1页
单片微型计算机与接口技术专周 08512 张勇 10号
微机原理与接口技术专周报告
一、项目名称
十字路口交通信号灯控制系统
二、选题背景
2.1 课题背景
由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。
2.2 交通灯的历史
1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7
第1页
单片微型计算机与接口技术专周 08512 张勇 10号
米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。
1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。
随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。
中国最早的马路红绿灯,是于1928年出现在上海的英租界。
三、单片机简介
3.1 单片机的发展历程
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。每个子系列有诺干中型号。51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。改进
第2页
单片微型计算机与接口技术专周 08512 张勇 10号
后的型号更加省电。52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。我们现在使用比较的多的是AT89C51/AT89s51等。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗
3.2 单片机的特点:
(1)性价比高,开发周期短,易于产品化, (2)集成度高,可靠性好,抗干扰性强, (3)功能完善,接口多样, (4)低功耗、低电压
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。 (5)总线多样,易于扩展
第3页
单片微型计算机与接口技术专周 08512 张勇 10号
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。
3.3 AT89C51单片机简介
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz
第4页
单片微型计算机与接口技术专周 08512 张勇 10号
·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路
四、设计基本要求和步骤
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。
4.1 基本要求
本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:
1. 初始东西绿灯亮,南北红灯亮,东西方向通车。 2. 延时27s,东西路口绿灯熄灭,黄灯闪烁3次。
3. 黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
第5页
单片微型计算机与接口技术专周 08512 张勇 10号
4. 延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。
5. 当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键),重新按上述方式工作。 6. 当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。
4.2 设计步骤
1.利用Proteus 7.5 SP3仿真软件按下列要求绘制仿真实例 用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯
用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码
P3^1、P3^2、P3^4~~~P3^7控制数码管的位选
P2^0~~~P2^4接收中断信号并反馈给INT0接口进行中断处理 2.按照基本要求编制程序实现相应功能。
五、硬件和软件设计
5.1 硬件电路图
硬件电路图通过Proteus 7.5 SP3仿真之后如图1所示,其中:
第6页
单片微型计算机与接口技术专周 08512 张勇 10号
按钮K0连接P2^0端口实现红灯全亮,处理交通意外 按钮K1连接P2^1端口实现南北方向亮灯时间+1s 按钮K2连接P2^2端口实现南北方向亮灯时间-1s 按钮K3连接P2^3端口实现东西方向亮灯时间+1s 按钮K4连接P2^4端口实现东西方向亮灯时间-1s 整体实验连接电路如下图所示:
图1 整体连接电路图
第7页
单片微型计算机与接口技术专周 08512 张勇 10号
5.2 程序流程图
主程序 开始 设置中断工作方式、触发方式、初始化 运行过程 N 是否有中断 Y 执行中断 中断结束,退出中断,返回
第8页
单片微型计算机与接口技术专周 08512 张勇 10号
运行过程 EW:绿灯(27),SN:红灯 是否到3秒 Y EW:黄灯亮,SN:红灯 N Count<10? Y N EW:黄灯灭,EW:红灯 LED显 示 缓 冲 区 DISP 是否到0秒 N Y SN:绿灯(27),EW:红灯 是否到3秒 Y SN:黄灯亮,EW:红灯 N Y Count<10? N SN:黄灯灭,EW:红灯 是否到0秒 N Y 第9页
单片微型计算机与接口技术专周 08512 张勇 10号
LED显示程序 Display 获取当前通行剩余时间送h、l E/S/W/N状态送P0口 位选码送P3口 倒计时个/十位送P1口 调用Delay延时 i++;j++ N 四位显示完? Y 返回主程序
第10页
单片微型计算机与接口技术专周 08512 张勇 10号
T0中断 定时计数初值 50ms计数(count)加1 判断1S(count=20?)到否 Y count清0 Time_SN--;Time_EW-- 恢复现场 中断返回 N
INT0中断 Busy_Button==0 SN_Add==0 获取中断信息 SN_Red==0 EW_Add==0 EW_Red==0 EW1-=1 所有路口全红灯 SN1+=1 SN1-=1 EW1+=1 Busy_Button==1 SN1>99 Y SN1=99 SN1<20 Y SN1=20 EW1>99 Y EW1=99 EW1<20 Y EW1=20 N N N N 恢复现场 中断返回
第11页
单片微型计算机与接口技术专周 08512 张勇 10号
5.3 P0、P1口显示状态编码表
P0 P0^7 P0^6 P0^5 P0^4 P0^3 P0^2 P0^1 P0^0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 编码 备注 0FEH 红灯 0BFH 黄灯 0F7H 绿灯 P1 P1^7 P1^6 P1^5 P1^4 P1^3 P1^2 P1^1 P1^0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 编码 备注 0C0H 0F9H 0A4H 0B0H 99H 92H 82H F8H 80H 90H 0 1 2 3 4 5 6 7 8 9 5.4 程序源代码
#define uchar unsigned char #include /**************************变量、控制位定义**************************/ uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~~9段选码 uchar code table1[28]={0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE, 0xFE,0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF, 0xFE,0xFE,0xFE,0xFE}; /*各种状态下红绿灯段选码, 状态(0-3):EW绿灯,SN红灯; 第12页 单片微型计算机与接口技术专周 08512 张勇 10号 状态(4-7):EW黄灯亮,SN红灯; 状态(8-11):EW黄灯灭,SN红灯; 状态(12-15):EW红灯,SN绿灯; 状态(16-19):EW红灯,SN黄灯亮; 状态(20-23):EW红灯,SN黄灯灭; 状态(24-27):EWSN全红灯*/ uchar code tab[4]={0x1E,0x2D,0x4E,0x8D};//数码管显示位选码 uchar EW=30,SN=30,EW1=30,SN1=30;//初始化交通灯时间 uchar count;//计时中断次数 uchar i,j;//循环控制变量 sbit Busy_Button=P2^0;//交通意外控制位 sbit SN_Add=P2^1;//SN通行时间加按钮 sbit SN_Red=P2^2;//SN通行时间减按钮 sbit EW_Add=P2^3;//EW通行时间加按钮 sbit EW_Red=P2^4;//EW通行时间减按钮 char Time_EW;//EW方向计时 char Time_SN;//SN方向计时 /**************************延时子程序**************************/ void Delay(uchar a)//循环a次 { uchar x; x=a; while(x--){;} } /*************************数码管显示子程序*************************/ void Display(uchar j)//j控制显示table中连续位的起始点 { char h,l; if(j<11)//根据状态判定时间 { h=Time_EW/10;//EW通行时间十位 l=Time_EW%10;//EW通行时间个位 } else if(j<23) { h=Time_SN/10;//SN通行时间十位 l=Time_SN%10;//SN通行时间个位 } for(i=0;i<4;)//按位显示通行状况及时间 { P0=table1[j];//通行状况显示 P3=tab[i];//位选显示 第13页 单片微型计算机与接口技术专周 08512 张勇 10号 i++; j++; if(i%2)//两位计时显示 { P1=table[l]; Delay(400); } else { P1=table[h]; Delay(400); } } Delay(5); } /***********************INT0外部中断服务程序***********************/ void EXINT0(void) interrupt 0//INT0外部中断 { EX0=0;//关中断 if(Busy_Button==0) { P0=0xFE;//意外按钮按下全显示红灯 for(;Busy_Button!=1;)//意外按钮弹起时恢复之前状态 Display(24); } /*四个时间控制按钮分别控制SN、EW方向初始通行时间加减, 最长不超过s,最少不低于s*/ if(SN_Add==0)//SN+1 { SN1+=1; if(SN1>99) SN1=99; } if(SN_Red==0)//SN-1 { SN1-=1; if(SN1<20) SN1=20; } if(EW_Add==0)//EW+1 { EW1+=1; 第14页 单片微型计算机与接口技术专周 08512 张勇 10号 if(EW1>99) EW1=99; } if(EW_Red==0)//EW-1 { EW1-=1; if(EW1<20) EW1=20; } EX0=1;//开中断 } /************************TO计时中断服务程序************************/ void timer0(void) interrupt 1 using 1//T0中断 { TH0=0x3C; TL0=0xB0;//定时计数初值 count++;//中断溢出一次count+1 if(count==20) { Time_EW--; Time_SN--; count=0; //中断次计数s,count回,倒计时时间-1 } } /**************************亮灯控制**************************/ void Process() { Time_EW=EW;//初始化东西方向通行时间 while(Time_EW>3)//状态:EW绿灯,SN红灯 { j=0; Display(j);//调用显示函数 } while(Time_EW>0)//状态-3:EW黄灯闪烁 { if(count<10)//状态:EW黄灯亮 { j=4; Display(j); } else//状态:EW黄灯灭 { 第15页 单片微型计算机与接口技术专周 08512 张勇 10号 j=8; Display(j); } } SN=SN1;//重置SN方向时间 Time_SN=SN;//初始化南北方向通行时间 while(Time_SN>3)//状态:EW红灯,SN绿灯 { j=12; Display(j); } while(Time_SN>0)//状态-6:SN黄灯闪烁 { j=16; if(count<10)//状态:SN黄灯亮 { Display(j); } else//状态:SN黄灯灭 { j=20; Display(j); } } EW=EW1;//重置EW初始时间 } /**************************主程序**************************/ main() { TMOD=0x01;//定时器工作方式 TH0=0x3C;//定时器初始化 TL0=0xB0; IT0=1;//中断触发方式为下降沿触发 EA=1;//CPU开中断 ET0=1;//开定时中断 TR0=1;//启动定时 EX0=1;//开外部INT0中断 while(1) { Process(); } } 第16页 单片微型计算机与接口技术专周 08512 张勇 10号 5.5 程序运行效果图 图2 正常状态 图3 黄灯状态 第17页 单片微型计算机与接口技术专周 08512 张勇 10号 图4 紧急状态 图5 延长通行时间 第18页 单片微型计算机与接口技术专周 08512 张勇 10号 六、心得体会 通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。 还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。 由于本人的水平有限,设计中难免会有一些不合理的部分,系统的稳定性还有待提高。 最后,对在这个专周帮助我的所有同学和各位指导老师再次表示衷心的感谢! 第19页 单片微型计算机与接口技术专周 08512 张勇 10号 七、参考文献 【1】李伯成:《单片机及嵌入式系统》,清华大学出版社,2005 【2】胡汉才:《单片机原理及接口技术》,清华大学出版社,2000 【3】王田苗:《嵌入式系统设计与实例开发》,清华大学出版社,2002 【4】蔡伟智:《LED道路交通灯的研制》,液晶与显示,第20卷第五期 【5】张友德:《单片机原理与应用》,复旦大学出版社,2002 【6】倪继烈:《微型计算机原理与接口技术》,清华大学出版社,2005 【7】李群芳:《单片微型计算机与接口技术(第三版)》,电子工业出版社,2008 【8】张大明:《单片机控制实训》,机械工业出版社,2007 第20页 因篇幅问题不能全部显示,请点此查看更多更全内容