1、单片机课程设计 1 目录目录 第一节 系统总体方案. 2 1.1 设计要求 . 2 1.2 设计任务 . 2 1.3 总体设计 2 第二节 硬件设计 3 2.1 单片机选型 3 引脚结构图 3 2.2 硬件电路图 . 4 第三节 软件设计 5 3.1 设计流程图 . 5 3.2 紧急中断流程图 6 3.3 设计程序及说明 6 3.4 主要函数说明 . 11 第四节 Proteus 软件仿真 11 4.1 正常运行 11 4.2 黄灯闪烁 12 4.3 通行转换 . 12 4.4 设置信号灯时间 13 绿灯时间 13 黄灯时间 13 4.5 设置后启动运行 14 第五节 课程设计体会. 14 第
2、六节 参考文献 14 附录. 15 1、同组人姓名 15 2、实验分工 . 15 1)程序设计: . 15 2)电路设计: . 15 单片机课程设计 2 第一节第一节 系统总体方案系统总体方案 1.1 设计要求设计要求 1)南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的 车辆交替运行,主干道每次通行时间都设为 80 秒、支干道每次通行间为 60 秒。 2)在绿灯转为红灯时,要求黄灯先亮 3 秒钟,才能变换运行车道; 3)黄灯亮时,要求每秒闪亮一次。 4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时 间都用显示器进行显示(采用计时的方法)。 1.2 设计任务设计
3、任务 1)东西、南北车辆交替运行 2)绿灯转为红灯时,黄灯闪亮(间隔 3 秒)。 3)能显示剩余时间。 4)能对交通运行进行控制。 5)能够对时间进行修改并正常运行。 1.3 总体设计总体设计 单片机单片机 按键电路按键电路 复位电路复位电路 晶振电路晶振电路 数码显示数码显示 LED 显示 单片机课程设计 3 第二节第二节 硬件设计硬件设计 2.1 单片机选型单片机选型 AT89C51 引脚结构图引脚结构图 单片机课程设计 4 2.2 硬件电路图硬件电路图 单片机课程设计 5 第三节第三节 软件设计软件设计 3.1 设计流程图设计流程图 调支路通行子程 开 始 中断初始化 调主干道黄灯闪烁子
4、程 调主干道通行子程序 调支路黄灯闪烁子程 判断是否有开关中 断? 中断处理 中断返回 (到子程序处) NO YES 单片机课程设计 6 3.2 紧急中断流程图紧急中断流程图 3.3 设计程序及说明设计程序及说明 #include #define uchar unsigned char #define uint unsigned int uchar code table= /共阴极数码管码 表 1-F 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0xC9,0xFF,0x4
5、0;/设置码,测试码,不计时码 void delay(uint x);/延时函数 void display(uchar,uchar,uchar,uchar); /数 码管显示函数 void mkeys(); /键盘函数 void traffic(); /交通灯函数 uchar num,num1,num2, /1 南北 2 东 西 shi1,ge1,shi2,ge2, value1,value2,/南北 绿灯时间 黄灯时间 value3,value4,/东西 绿灯时间 黄灯时间 count1,count2,flag1,flag2; /南北标记 东西 标记 void main() TMOD=0x0
6、1; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; /*初状态*/ value1=60; /南北 黄绿灯默认值 value2=3; value3=80; /东西 黄绿灯默认值 value4=3; num1=value1; /南北数码管先绿灯时 间 num2=value2+value1;/东西红灯时间 shi1=num1/10; ge1=num1%10; shi2=num2/10; ge2=num2%10; P1=0x41;/初始状态:东西红灯 南北 绿灯 断点入栈保护 状态参数设置 送状态字至端口 状态响应 断点返回 开 始 开 始 单片机课程设计 7 while(1) if(num=20) /定时器 1s num=0; num1-; num2-; traffic(); shi1=num1/10; ge1=num1%10;