1、 课课 程程 设设 计计 课程名称 题目名称十字交通路口交通灯控制器 1 学生学院 材料与能源学院 专业班级 学 号 学生姓名 指导教师 2013 年 6 月 13 日 目录目录 1 任务说明1 2 绘制原理图.2 3 程序编译说明及程序图.4 3.1 main程序说明.4 3.2tl_inint 程序说明.5 3.3init_max7219()程序说明6 3.4tl_func()程序说明.7 4仿真说明14 5 心得体会16 6 参考文献17 1 一、任务说明一、任务说明 本次课程设计任务为:题目 23 十字路口交通灯控制器 1 利用单片机设计一个十字路口交通灯控制器。 用单片机控制 LED
2、 灯模拟指 示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为 80s,南 北通行方向为 60s,缓冲时间为 3s。 二、绘制原理图二、绘制原理图 原理图绘制步骤原理图绘制步骤 1.建立文件。进入 ISIS 系统,选择菜单栏中的“文件” “新建设计”新建一 个文件,然后选择菜单栏中的“系统” “设置图纸大小”来设置电路图纸的尺寸 为 A4,如图 1 所示。然后将文件保存到预先建立的文件夹中。设计窗口便新建 完毕,如图 2 所示。 图 1 图纸尺寸设定 2 图 2 新建的设计窗口 2. 元件的查找及放置。首先点击工具箱左上角的“P”按钮,如图 3。弹出 “Pick Devices”操作
3、界面,如图 4。在关键字窗口输入所需器件名称,如 AT89C51,系统会自动搜索到此元件,如图 5 所示。将所有元件搜索到以后按相 应位置在图纸上放置好。 图 3 按钮“P”所在位置 3 图 4 “Pick Devices”操作界面 图 A T89C51 元件搜索窗口 3.布线及调整。将鼠标移至所要连接器件的管脚处,鼠标箭头会变成图 6 的样式,此时按住鼠标左键拖至对应器件管脚处,松开左键即把两器件连接。 如果在连接器件时出现交叉或重叠,可以对连线或元件位置进行适当的调整。 布线后电路图如图 7 所示。 4 图 6 可连线标示 图 7 电路原理图 三三、程序编译说明及程序流程图、程序编译说明及
4、程序流程图 3.1 Main 程序说明程序说明 主程序先执行 tl_init()子程序,初始化定时器 T1,然后设置时间为 83 秒, 中断次数计数单元 timer 初始值为 0,while(1)实现死循环。以此来实现程序设 计的要求。主程序流程图如图 8 所示。 5 图 8 主程序流程图 3.2 初始化初始化 tl_init()子程序说明子程序说明 初始化 System_Init(void)子程序是主程序调用的子程序, 初始化 tl_Init(void) 子程序将 TMOD、IE、TH1、TL1、TR1 分别进行赋值操作。本程序中采用定 时器/计数器 T1 的方式 1 定时,定时时间为 50
5、ms,对应的时间常数为 0x3cb0, 对应的十进制初始值为 15536,计数满 5000 后,即 1s(65536-15536) =1s5000=50ms,要想定时 1s,需要 20 次中断,因此程序中定义了中断次数 timer,来对中断次数进行计数。 tl_init()子程序流程图如图 9 所示。 开始 tl_init() second=83 timer=20 While(1) 结束 6 图 9 tl_init() 子程序流程图 3.3 Init_max7219(void)子程序说明子程序说明 display(uchar tmp)子程序由中断函数 tl_func()进行调用。程序由 P3 输出数 据,故设置DIN=P30, LOAD=P31, CLK=P32。 然后对译码模式、亮度、扫描范 围、电源工作模式进行设置。其中,Write_data()函数调用了 Write_ Write_data ()函数,其 作用是向 MAX7219 写入字(16 位), 而 Write_data()函数调用了 Write_byte()函数, 其作用是 向 MAX7219 写入字(8 位)。Init_max7219(void)子程序流程图如图 10 所示