《基于lcd1286 4的交通信号灯本科单片机课程设计报告 湖南大学电气与信息工程学院》由会员分享,可在线阅读,更多相关《基于lcd1286 4的交通信号灯本科单片机课程设计报告 湖南大学电气与信息工程学院(51页珍藏版)》请在金锄头文库上搜索。
1、湖南大学电气与信息工程学院湖南大学电气与信息工程学院本科生单片机课程设计本科生单片机课程设计题题 目:基于目:基于 LCD12864 的交通信号灯的交通信号灯 学学 院:电气与信息工程学院院:电气与信息工程学院专专 业:业:电气工程及其自动化电气工程及其自动化实事求是,敢为人先实事求是,敢为人先2交通灯的历史交通灯的历史18681868 年年 1212 月月 1010 日,信号灯家族的第一个成员就在伦敦议会大日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德厦的广场上诞生了,由当时英国机械师德哈特设计、制造的灯柱哈特设计、制造的灯柱高高 7 7 米,身上挂着一盏红、绿
2、两色的提灯米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是煤气交通信号灯,这是城市街道的第一盏信号灯。城市街道的第一盏信号灯。19141914 年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是时已是“电气信号灯电气信号灯” 。稍后又在纽约和芝加哥等城市,相继重新出。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。现了交通信号灯。随着各种交通工具的发展和交通指挥的需要,第一盏名副其实随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯的三色灯( (红、黄、绿三种标志红、黄、绿三种标志) )于于 19181918 年诞
3、生。它是三色圆形四面年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。城市交通大为改善。中国最早的马路红绿灯,则是于中国最早的马路红绿灯,则是于 19281928 年出现在上海的英租界。年出现在上海的英租界。实事求是,敢为人先实事求是,敢为人先3目目 录录第一部分第一部分 开发板部分硬件介绍开发板部分硬件介绍.3一、板上资源分布.3 二、ADuC848 简要介绍.5 三、LCD 显示模块.6 第二部分第二部分 交通信号灯的设计交通信号灯的设计.8一、题目任务设计要求.8 二、系统原理分析
4、及流程框图.8 三、具体程序实现.10 四、具体操作步骤.18 五、设计心得体会.19 六、参考文献.21 附录一附录一:开发板硬件图开发板硬件图.22附录二附录二:单片机历史单片机历史.23实事求是,敢为人先实事求是,敢为人先4第一部分第一部分 开发板硬件部分介绍开发板硬件部分介绍一、板上资源分布一、板上资源分布图1.1 板上资源分布1、2、3:单片机P0、P2、P3口引出接口(有限流保护电阻); 4:上排图形点阵LCD12864的接口、下排LCD1602的接口; 5、6:两路16位ADC输入、可作差分输入; 7、8:12位DAC输出、对DAC输出进行比例放大或者跟随的运放; 9:单片机Ad
5、uC848; 10:无源蜂鸣器、由单片机PWM模块输出信号控制; 11:8位数码管; 12:SPI接口; 13:RS232串口(通过串口在线下载、单步、断点、运行到某一行等方式调试程序); 14:步进电机(5V、70欧姆、6线4相)接口; 实事求是,敢为人先实事求是,敢为人先515:8路LED,从左至右为LED70,分别被P0.7P0.0控制; 16:复位按键和下载按键; 17、18:IIC总线上的EEPROM AT24C08和RTC DS1307; 19:IIC接口; 20:PS/2接口; 21:红外接收头; 22:功能选择和配置插针; 23:4X4矩阵式键盘或4个独立按键; 24:直流电源
6、输入; 此外还有红外二极管(由单片机 PWM 模块输出信号控制)、USB 电源输入接口。二、二、ADuC848ADuC848 的简要介绍的简要介绍1、8051-based core、5V供电电压; 2、可以通过串口在线下载程序和单步、断点、运行到某一行等方式调试程序; 3、16位8通道-ADC,片内有1.25V参考电压、buffer和PGA; 4、12位电压输出DAC、Dual 16-BIT - DAC; 5、32kbyte程序存储器、4kbyte用户信息Flash存储器、256RAM+2048XRAM(byte); 6、PLL(12.58 MHz max)(片外只需接32.768kHz晶振)
7、; 7、316位定时/计数器、看门狗定时器; 8、11中断源(2优先级)、11位堆栈指针; 9、24I/O+8模拟或数字输入; 10、UART、 SPI和I2C、高速115200波特率发生; 11、Power supply monitor、上电复位、Dual 200A激励电流源。实事求是,敢为人先实事求是,敢为人先612、单片机引脚分布 三、三、 LCD 显示显示模块模块 LCD 显示信号连接图如下图所示。实事求是,敢为人先实事求是,敢为人先7图1.7 LCD信号连接关键网络名和引脚名解释: (1)DISCTRL04:显示控制信号。(2)D0D7、DB0DB7:数据总线。(3)E:LCD使能信
8、号。(4)RS:数据、指令选择信号。(5)RW:读、写选择信号。(6)CS1、CS2:LCD12864由两部分组成,CS1和CS2为选择信号。板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排针和排母左对齐插入。实事求是,敢为人先实事求是,敢为人先8第二部分第二部分 交通信号灯的设计交通信号灯的设计1、题目任务设计要求题目任务设计要求1 1、题目设计及目的题目设计及目的(1)设计一智能交通信号灯。(1)了解交通灯管理的基本工作原理(2)熟悉 ADuC848 的工作原理和应用编程(3)熟悉 ADuC848 并行接口的各种工作方式和应用(4)熟悉 AT89C51 计数器/定时
9、器的工作方式和应用编程外部中断的方法(5)掌握 LCD 显示问题的解决 2、题目设计要求题目设计要求(1)了解实际交通灯的变化规律(以十字路口为例)(2)要求用LCD显示字符“红、黄、绿”(或字母r、y、g)代替相应的信号灯(3)要求有东西、南北四组信号灯显示,并显示对应的时间(4)时间要求倒计时显示,计时时间到,对应的信号准确切换(5)信号灯按一定的规律闪烁,实现简单的交通管理(6)能实现紧急事件处理(例如救护车的通行等),可用蜂鸣器报警和特殊数字显示(7)可根据交通流量智能调整各路段的通行时间(8)显示北京时间,可调整 二、系统原理分析及程序流程框图二、系统原理分析及程序流程框图1、交通灯
10、通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。下图为一种红绿灯的显示状态图状态一:状态一:设东西向为主干道,东西向绿灯定为红红红红绿绿绿绿实事求是,敢为人先实事求是,敢为人先920s. 状态二状态二 设定黄灯时间为 5s。红红红红黄黄黄黄状态三状态三 南北向为副干道,南北向绿灯设为 10s 绿绿绿绿红红红红状态四状态四 南北向黄灯也设为 5s.黄黄黄黄红红红红紧急状态紧急状态:此时为紧急状态,所有灯为红灯,红红红红红红红红所有车辆禁止通行,触发紧急状态由紧急按钮触发,再次触发,则解除紧急状态,回到
11、原 来状态。2、车流量处理。首先根据两条道路的车流量划分为主干道和副干道,主干实事求是,敢为人先实事求是,敢为人先10道和副干道的绿灯时间设置不一样,主干道的绿灯时间设置的较长,红灯时间等于另一条道路的绿灯时间与黄灯时间之和。其次,考虑有车流高峰时期,在本次设计中,设置北京时间 18:00:0020:00:00 为车流量高峰时期,在此时期,亮灯时间会变成另一个设定值,具体设置可依据实践情况设置,本次设计中将主干道,副干道绿灯实践均延长 10s.当在此时期之外时,亮灯时间为正常设定时间。3、倒计时显示。东西南北四个方向各有一个倒计时显示,倒计时数字表示当前亮灯的剩余时间。因为相对的方向显示相同,
12、因而本次设计中只两个倒计时显示,一个表示南北方向,一个表示东西方向。计时的快慢通过改变对频率的计数实现。4、北京时间显示。本次设计中,12864LCD 显示屏第一行显示北京时间的时、分、秒,时间可调。北京时间功能采用 T0 计时器中断来实现。ADuC848 的 core clock 频率默认为 1.572864MHz,定时器 0 的时钟为 core clock,1572864=65536*24。故将定时器 0 设置为 16 位计数模式,且初值为 0,无需在定时器溢出中断中给定时器赋初值(中断溢出就开始执行中断程序,计数器为加法计数器,从 0 加到65536)。每 65536 个 core cl
13、ock 周期将产生一次中断,在中断处实事求是,敢为人先实事求是,敢为人先11理程序中累计中断次数,当有 24 次中断产生时即为 1 秒,进行计时。5、主程序流程图开始开始设置定时方式,初始化设置定时方式,初始化运行过程运行过程Key 是否有输出是否有输出YN是否是否 Key=16是否是否 Key=13紧急状态紧急状态北京时间调节北京时间调节YNYN实事求是,敢为人先实事求是,敢为人先125、交通灯显示流程图状态一状态一开始开始是否是否 green0=0状态二状态二是否是否 red1=0状态三状态三是否是否 green1=0状态四状态四是否是否 red0=0NYYNNNYY实事求是,敢为人先实事求是,敢为人先13三、具体程序实现三、具体程序实现#include #include“ds1307.h“ #include“juzhenkeyboard.h“ #include“smg12864.h“ #define unchar un