哈尔滨工业大学(威海)课程实验报告课程单片机原理及接口技术B实验题目交通信号灯学号姓名陈鹏指导教师金涛2014年6月30日实验一交通信号灯实验目的熟悉中断初始化编程方法。使用的模块单片机及晶振模块本实验选用的是Atmel公司的AT89C51单片机,由石英晶体振荡器产生单片机工作时所需的时钟信号,振荡器采用的是12M的晶振,使其机器周期为1us,方便程序的计算和编译。LED显示模块该部分由12个LED分成南北,东西两组作为十字路口交通信号灯,每个路口分别有红黄绿三种颜色的LED,同一方向的亮灭状态相同,不同方向的相反。每个LED灯串联一个220Ω的电阻,以限定通过LED的电流。原理图步骤简述连续运行程序,LED显示信号灯状态。程序运行时模拟了十字路口交通信号灯的切换过程与显示效果。源程序中用6行sbit对东西和南北向的红、黄、绿指示灯分别进行定义,这样便于对它们进行单独控制;交通灯的四种状态由switchcase语句进行控制。此外,可将交通指示灯切换时间设置得较短,这样可在调试的时候较快观察到运行效果,可在调试运行本题目后修改代码,使指示灯切换过程更接近于实际的交通指示灯切换过程。结果和分析信号灯状态转换过程:初始状态0为南北红灯,东西绿灯通车;状态1,东西绿灯灭、黄灯闪烁5次,南北红灯不变;状态2东西红灯,南北绿灯通车;状态3南北绿灯灭、黄灯闪烁5次,东西红灯不变。最后循环到状态0。各个状态的持续时间由程序调定。程序流程图开始系统初始化东西绿灯亮南北红灯亮东西黄灯闪烁南北红灯亮东西南北换向 源程序#include<> /*头文件*/#defineucharunsignedchar#defineuintunsignedint/*定义两组红绿黄灯共六个标志位*/sbitRED_A=P0^0;sbitYELLOW_A=P0^1;sbitGREEN_A=P0^2;sbitRED_B=P0^3;sbitYELLOW_B=P0^4;sbitGREEN_B=P0^5;ucharFlash_Count=0,Operation_Type=1;voidDelayMS(uintx) /*500ms延迟函数*/{uchari;while(x--)for(i=0;i<120;i++);}voidTraffic_Light() /*交通灯函数,包含四个状态*/{switch(Operation_Type){case1: /*东西方向绿灯亮,南北方向红灯亮*/RED_A=1;YELLOW_A=1;GREEN_A=0;R
单片机 交通信号灯 来自淘豆网m.daumloan.com转载请标明出处.