




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
梧 州 学 院毕 业 论 文 论文题目 基于STM32的智能交通灯的设计 学 院 信息与电子工程学院 专 业 电子信息工程 班 级 12电本2班 学 号 学生姓名 指导教师(签名) 完成时间 2016 年 1 月梧州学院学士学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容之外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究所作出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本声明的后果由本人承担。论文作者签名:日期:摘要交通,社会发展和人民生活水平提高的基本条件,经济的发展肯定会带来人类外出数量的增加,在我们中国,交通拥堵已经成为一个很严重的问题。我通过对交通控制系统的仔细研究,设计出了一个十字路口交通灯控制系统,本系统主要采用STM32单片机设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,两个方向能根据车流量大小自动调节通行时间,车流量大,通行时间长,车流量小,通行时间短。每个方向用一个8*16点阵显示屏显示通行方向,每个方向用红黄绿三种灯分别表示允许通行、警告、禁止通行。人行道上有红绿灯表示禁止、允许通行,除此之外,用一个4*4的矩阵键盘输入东西、南北方向的通行时间,并且需要通过按下按键1确认,才可以更改通行时间。车流量计数的最大值也是通过4*4矩阵键盘来输入,然后再按下按键2确认,才可以更改车流量计数最大值。当检测到的车流量大于最大值时,该方向的通行时间增加10秒,车流量的计数值置0。本文设计的系统具有一定的实用价值,可以很好的改善当前的交通灯控制系统,可以很好的达到优化路口交通流的目的。关键词:交通; 拥堵; 车流量IDesign of intelligent traffic light based on STM32AbstractTraffic traffic, the basic condition of social development and the improvement of peoples living standards, economic development will certainly bring human out number increase, in our China, traffic congestion has become a very serious problem. I through the careful study of the urban traffic control system, design a crossroads of traffic lights control system, this system mainly uses STM32 microcontroller design a crossroads of traffic lights control circuit, require two crossings of the north-south and east-west directions turn of vehicle running, the two directions can according to the size of the vehicle flow automatic regulating travel time. And traffic for a long time, traffic is small, the passage of time short.In each direction with a dot matrix display screen display traffic direction, in each direction with red, yellow, green, three lamp respectively allow access, warning, closed to traffic. Sidewalk with red light, said Ban and allowed to pass, in addition, with a 4 * 4 matrix keyboard input things, north-south direction of the passage of time and by pressing the button to confirm, before you can make changes to the passage of time. Traffic counts the maximum value is the 4 * 4 matrix keyboard input.Key words: Ttaffic;Traffic jam;vehicle flowrate II目录 第一章 绪论11.1 项目背景11.2 国内现行交通灯的弊端21.3 研究的目的和意义2第二章 系统总体方案设计42.1 系统总体设计42.2 系统各模块设计方案4第三章 单片机概述及各种芯片简介73.1 单片机概述73.2 主要芯片简介9第四章 系统硬件设计134.1 74HC138译码器模块134.2 74HC573驱动模块134.3 74HC595驱动模块144.4 数码管显示模块154.5 4*4矩阵键盘模块174.6 点阵模块18第五章 系统软件设计205.1 数码管显示程序设计205.2 点阵显示程序设计215.3 手动输入通行时间程序设计215.4 检测车流量动态改变通行时间程序设计23第六章 总结24参考文献29附录30一、main.c文件30二、stm32f10x_it.c文件48三、bsp_led.c文件51四、bsp_led.h文件52五、bsp_TiMbase.c文件58六、bsp_TiMbase.h文件59七、bsp_key.c文件 60八、bsp_key.h 文件61九、74HC595驱动模块PCD图62十、74HC138译码和74HC573驱动模块PCD图62致谢63IIIV第一章 绪论 1.1 项目背景 随着社会发展、经济增长,人口数量逐步攀升,据网站、世界人口时钟、中国国家统计局估测,世界人口达1亿的国家将上升至12个国家,我国人口居于榜首,面对越来越多的人口快速增长现状,人们的出行将会越来越拥挤。尤其在上海、北京等一线大城市,人口密度达到2135,在三四线小城市,人口密度也有1000左右,如此多的人口数量给人们出行带来极大困扰。试想如果没有交通灯的出现,这样庞大的群体势必造成道路拥堵,更有甚者还会带来交通问题。在我国,道路拥堵问主要种表现在两大高峰:一是:春运期间,二是:十一黄金周期间。近二十年来,我国春运人数每年都在增加,从几亿到二十、三十亿,可想而知人们回家高峰上交通承载了多大的问题,然而即便承载的压力一直有增无减,车辆通行还是秩序井然,没有出现杂乱无章的现象,多半原因是交通灯起着道路规范作用,如果没有交通灯做道路行走方向指示,那很多人为了赶时间只顾自己,必然导致更多的人拥堵在一个路口,大家谁也不让,导致交通瘫痪,甚至还会出现生命危险。十一黄金周多数是出行高峰,由于黄金周的假期较长,更多消费者选择购物旅游,在出行的路上交通灯让然给我们带来方便、有秩序的出行,虽然遇见红灯就要禁止通行,很人也有所苦恼,但它的存在更多的带来快捷。并非效率不高。交通灯就是一种道路规范,是约束人们在公共道路上行走时应该遵循的规则,需要全社会人都应遵守。如今,交通灯随处可见,它一般设在交叉路口,指导人们什么方向的车辆或是行人可以通行亦或禁止,“红灯停,绿灯行”,而黄灯则是一种过渡,不至于又红灯突然变绿灯,或由绿灯突然变黄灯,根据2015新出交通法规,看见黄灯也是必须要停下,否则违法,这种道理已经深入人心,如果有人不遵守这样的规则,必会受到相应惩罚,如,当行人看见红灯亮时,他还继续过马路,其一,违反交通规则将会受到惩罚,其二,如果被正常行驶车辆撞到,绝大部分责任都归他个人。所以,当道路道路规范变成全民共识,每个人都应当遵守,更何况交通灯规则早已成为法律上的要求。在国内,红灯、黄灯、绿灯,三种依次亮,司机或行人在过绿灯的半途中变黄灯时,仍可以继续走过去,但准备过马路时就是黄灯亮时,是禁止闯黄灯的。而在国外,黄灯代表指示作用,可以和红灯、绿灯一起亮;比如司机或行人在过马路时刚好看见红灯亮,他必须停下,在红灯亮的过程中黄灯亮了,旨在告诉司机或行人准备可以过马路了,这时司机可以发动引擎,准备开车。绿灯和黄灯亮的原因也是一样。不同国家设计交通灯的样式不一样,但代表的意思都差不多,像很多城市具有人性化的交通灯,会有标志箭头显示哪个可以过去,哪个方向还需等候。1.2 国内现行交通灯的弊端虽然交通灯能够让人们出行变得更有秩序,能够提高车辆通行速度,能够减少十字路口交通拥堵的问题,但现有的传统的交通灯在当今智能化的社会仍然显得有些不太美,比如:在城市中心,东方要是一栋栋小区大楼,里面住着许多上班族,而城市西方则更多的是商场、写字楼、律师事务所等公司、企业,这样一来,早上上班的人偏多,则由东向西方向的交通压力非常大,而由西向东方向的交通压力就很小,如果两边的绿灯时长一样,就显得由西向东方向上的绿灯时间过长,并且通行的车辆、行人也不多,而由东向西方向上的车辆、行人特别多,等对边为数不多的车辆行人走完后,对方的绿灯仍然一直亮着,就显得浪费时间,而这边的上班族们等的也很苦恼,甚至出现违反交通的现象,因此,这段早高峰时间,就应该让由东向西方向上的绿灯时间亮的就写,红灯亮的时间短一些。这样一来既提高了交通通行效率,减少一边交通压力大的问题,又让人们觉得交通灯设计的非常人性化,减少违反交通的现象发生。此外,很多城市学校门口也设置了交通灯,旨在保护学生生命安全,但由于交通灯红绿灯设置的时间一样长,东西南北方向上的红绿灯亮的时间也一样长,导致时间上的浪费,在学生上课时间,大家都不需要出去,学校方向的绿灯可能不需要设置很长时间,而在学校放学期间,由于很多学生需要过马路,在这是可以适当调整学校方向的绿灯时间要长些,这样既可以方便其他车辆通行,也可以让学生安全过马路。现有的交通灯通常是南北,东西方向上的红绿灯时间一样长,即便某方交通压力很大,可能通行时间也是非常短,造成那方的车辆排起很长的队等候。这样的交通灯显得有些“死板”,有些等的不耐烦的司机、行人可能不顾交通灯规则,直接闯过去,而遵守交通规则的司机、行人过马路时就显得小心翼翼,如果不遵守交通规则的人变多,整个道路就会处于瘫痪状态。所以,目前,传统交通灯的局限性正被人们逐渐重视,大家都在试图寻找改变现有交通灯的局限,更突出其“智能”的一面。1.3 研究的目的和意义本篇论文研究的目的是想通过对现有传统交通灯进行理论和实践上的理解,能完全独立的利用STM32单片机制作一个交通灯模型,并且能够根据现有传统交通灯的弊端做出理论以及实践上的创新,让自己能够对弊端做出一些改进,使得新型交通灯在实验模型上取得成功。此外,通过对交通灯的研究,能够使自己全方位了解交通灯的内在原理,理解交通灯内部程序如何编写,并且怎样使程序达到比较稳定状态,不至于无端出现故障,造成路面混乱。本篇论文研究的意义主要有以下几点:一是通过本次理论上的研究,能够对现有交通灯做出“人性化”的改进,使交通灯能通过测试各个方向的车流量自动延长交通压力大的某个方向的绿灯时间,使道路的利用效率更高,给人们带来的便捷越多。同时,在人们出行的高峰期,能根据具体交通拥挤情况自动进行调整,把车辆少的方向上的绿灯时间减少,车辆多的方向上的绿灯时间加长,这样,既可以减少人为干预,节省人力成本,又使交通灯变得“聪明”起来,不至于现在的死板。二是利用本篇论文研究的机会,使自己对专业知识掌握更深,通过全面对交通灯的理解,把各门学科知识融会贯通,让自身的专业能力更强。第二章 系统总体方案设计2.1 系统总体设计本设计以STM32103VET6单片机为核心芯片,主要模块如下图2-1所示。分别是数码管显示模块,4*4矩阵键盘模块,红黄绿显示灯显示模块,点阵显示屏模块,车流量检测模块。 红黄绿显示灯 STM32单片机 点阵显示屏 4*4矩阵键盘 车流量监测 数码管显示倒计时图2-1 系统总体设计图2.2 系统各模块设计方案数码管时间倒计时显示电路,由四个两位数码管组成,东西南北四个方向各有一个。在本设计中用到的是共阴极数码管,段选端接高电平,位选端接低电平时,数码管被点亮。STM32单片机的I/O口发出电平信号,经过74HC573芯片后输出到数码管的段选端3。在74HC573芯片的每个输出口需要接一个100欧的电阻,然后再接到数码管的段选端,通过这一电阻可以降低电流。如果不接这个电阻,数码管会特别亮,严重的会烧坏数码管。数码管的段选部分已经设计完成,接下来需要设计数码管的位选端。起初,我准备用STM32单片机的I/O口直接接到数码管的位选端,但是后来发现这个方案不好,虽然可以实现数码管正确显示时间倒计时功能,但是这种方案特别浪费单片机珍贵的I/O口资源,需要用8个单片机I/O口。后来选择了一种比较节省单片机I/O口资源的方案,用74HC138芯片的输出端接数码管的位选端,这种方案只需要使用3个I/O口,将单片机的三个I/O口接到74HC138芯片的三个输入引脚。74HC138芯片有八个输出端,接到数码管的位选端,在同一时刻,74HC138芯片的输出端只有一位是低电平,通过让八个输出端依次输出低电平,从而可以实现驱动四个两位数码管。4*4矩阵键盘模块比较简单,将每一行的按键的一号引脚接到一起,连接到单片机I/O口上。再将每一列的三号引脚接到一起,也连接到单片机的I/O口上。连接矩阵键盘行的四个I/O口依次发出低电平,没发送一个低电平后就监测连接矩阵键盘列的四个I/O口,若检测到低电平,说明有按键按下,然后可以进一步确定是哪一个按键被按下。在实际的交通灯控制系统中,使用LED显示屏显示通行方向,并且显示屏显示的方向既可以是红色,也可以变成绿色。在本设计中使用点阵显示屏来显示通行方向。驱动点阵有以下几种方案:1.直接用单片机的I/O口驱动点阵屏,这个方案的优点是思维上简单,可以很方便的控制,但这样会极大地浪费单片机I/O口资源,驱动一个16*16点阵的显示屏就需要使用32个单片机I/O口,这是最不可取的方案。2:使用4个74HC595芯片级联,这个方案的优点是特别节省单片机的I/O口资源,驱动一个16*16点阵显示屏只需要使用3个单片机I/O口,缺点是难度较大,使用者需要非常了解74HC595芯片的工作原理。3.使用2个74HC595芯片级联,再使用两个74HC138译码芯片。第三种方案驱动一个16*16点阵需要使用9个单片机I/O口,第三种方案较第一种方案比较节省单片机I/O口资源,但过于复杂,既要懂得74HC595芯片级联,又要了解74HC138译码芯片工作原理。 开始是否检测到 车辆 NO YES 计数加1 计数值是否大于500 NO通行时间增加10秒 计数值置为0 YES 结束图2-2 车流量检测流程图如上图2-2为车流量检测流程图,首先检验是否检测有车辆经过,若有车辆经过则计数加1,若没有再继续检测。接着检验计数值是否大于500,当大于500时,通行时间增加十秒,计数值置为0,程序结束。第三章 单片机概述及各种芯片简介3.1 单片机概述STM32单片机是第一个微控制器系列,它克服了广泛应用32位系统的所有障碍,同时,它也是第一个由领先的半导体厂商提供的基于ARM-Cortex-M33的微控制器系列。 由于STM32系列单片机的出现,让微控制器的用户获得了前所未有的自由度,它具有很高的性能,特别优秀的功耗效率,顶级的外设,非常大的集成度以及极佳的工具与软件平台,STM32单片机作为一个微控制器,是没有局限性的,它的高性能Cortex-M3内核,是由ARM公司生产的,STM32单片机的功耗很低,在72MHZ时钟工作环境下,所有外设均处于工作状态时,仅消耗36mA,在待机时下降到2uA。STM32单片机具有最大的集成度,它具有复位电路、低电压检测、调压器、精确的RC振荡器等。STM32单片机所采用的Cortex-M3内核,是ARM公司发布的最新的标准内核,它的功耗低,具有调试成本低、门数目少、中断延迟短的特点,CM3处理器系列集低功耗、低成本和易于使用的优点于一身,它采用的处理器核是基于ARMv7-M架构,使用三级流水线和哈弗存储结构实现,支持Thumb-2指令集的子集,具有硬件除法指令。与处理器核集成在一起的是总线矩阵和中断控制器(NVIC),总线矩阵提供了3条AHB-Lite总线,分别用于连接指令存储器,数据存储器和作为系统总线。嵌套向量中断控制器(NVIC)最多能提供240个物理中断,一个不可屏蔽中断(NMI)和各种系统异常,每一个中断都分配一个中断优先级(共256个优先级),优先级可以动态的调整,中断控制器嵌套在内核里面,中断之间的间隔最少可达只有6个CPU周期,嵌套向量中断控制器可以支持嵌套中断,处理器中断时,、链接寄存器、程序计数器、程序状态寄存器和通用寄存器自动压入堆栈。中断服务结束后,再通过硬件自动恢复这些寄存器的内容,不需要任何软件的干预,Cortex-M3内核具有非常先进的调试功能,包括串行单线调试和JTAG。STM32系列芯片有一个突出特点,就是内部高度集成,而且还提供了高质量的固件库,让开发人员的开发与调试非常方便:1. STM32系列微控制器自带内嵌电源监视器,可以尽可能减小对外部期间的需求,而且提供了低电压检测、掉电检以及上电复位;2. STM32系列微控制器内嵌出厂前校验好的8MHZ的RC振荡器,可以非常方便的用来作为较低成本的主要时钟源5。3. STM32系列微控制器有一个主晶振可以驱动整个系统:其中的416MHZ晶振可以用来驱动USART、CPU以及其它所有外设。它不需要内嵌PLL(锁相环)来产生多种时钟频率提供给外设。基于STM32的最小系统元件数目,最少可简化到只有7个,这样可以极大地简化设计与减少生产嵌入式系统的成本,除此之外,STM32里面还有极具特色的其它外设模块:1. I2C(集成电路互连总线),主要用于将嵌入式处理器和外围器件连接在一起6,它采用串行半双工传输的总线标准,它可以非常方便的将外围器件和微控制器连接起来组成一个系统,很多处理器芯片以及很多外围器件都支持I2C总线7。每个器件都有一个地址,这个器件既可以是单独发送的,也可以是单独接收的,甚至既可以接收也可以发送8。主动发起数据传输的I2C器件是主控器件,不然他就是从器件。I2C只使用两条总线线路:一条是串行时钟线,另一条是双向串行数据线,每一个连接到总线的设备都拥有一个独立的地址9,主机就是通过这个地址,来对各个设备进行访问,多个主机同时使用总线时,为了防止数据冲突,系统会利用仲裁方式来决定由哪个设备来使用总线10。I2C具有三种传输方式,有标准传输方式,快速传输模式和高速传输模式,他们的传输速率分别为100Kbit/s,400Kbit/s,3.4Mbit/s。2. SPI(串行外设接口)是一种高速全双工的同步串行外设接口,它支持嵌入式处理器与外设通过串行方式实现数据交换11,支持SPI接口的外围设备有很多,包括RAM、ROM、MCU等12。SPI 采用主从式连接架构,通信双方分为主控端(Master)和从动端(Slave),通常MCU的SPI工作在Master模式,其它设备的SPI接口则是工作在Slave模式。通信过程由主机设备发起控制,从机被动的响应来自主机的请求并给出回复,数据流在时钟信号的作用下进行同步传输13。 SPI包含有四条总线,分别是主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI、串行时钟线SCK和低电平有效的从机选择线SSEL,数据被写到SPI发送缓冲区后,数据被一位一位的传输出去,在主机中数据从移位寄存器自左向右发送出去送到从机,与此同时,从机中的数据会从右向左发到主机,这一过程经过8个时钟周期完成1个字节的发送14。输入字节保留在移位寄存器中,然后从接收缓冲区读出一字节的数据。3. UART(串行异步通信接口)经常用于全双工串行异步通信,是微控制器中最常见同时也是使用最频繁的通信接口,所有的嵌入式处理器芯片内部都集成了兼容标准UART功能的组件,有的结成了多个UART。UART由发送器、接收器、控制单元以及波特率发生器等组成。发送器用来发送字符,可以采用普通模式发送,也可以采用先进先出(FIFO)模式发送,待发送的字符先发送到缓冲寄存器,然后通过移位寄存器,通过TXDn引脚按照按顺序依次发送出去。在中断发送方式下,只有当发送缓冲器处于空的状态时,才会引发发送中断,当工作在查询发送方式时需要等待发送缓冲器为空时才可以发送下一个数据,当工作在FIFO模式下时,需要N个字节全部到位后,才可以发送,不同的嵌入式处理器芯片内部设置的N值不同。4. GPIO(通用输入输出接口)提供的输入具有缓存功能,而输出具有锁存功能,GPIO一般具有三态,即高阻态、0态和1态,本设计使用的芯片信号是STM32F103VET6,它具有100个引脚,除去电源输入、Boot引脚、晶振输入,剩下的80个引脚均为GPIO。每一个GPIO端口有两个32位数据寄存器,两个32位配置寄存器,32位锁定寄存器,一个16位复位寄存器和一个32位置位/复位寄存器。他们共分为GPIOAGPIOE 五组,每组总共有16个I/O口,每个引脚可配置成8种模式,分别为模拟输入,浮空输入,上拉输入,下拉输入,开漏输出,复用功能推挽式输出,推挽式输出,复用功能开漏输出15。 该芯片的GPIO模块除了具有低功耗、小封装、低成本的优点外,还支持通过软件编程实现I/O端口的重新映射,通过这样来达到I/O端口功能复用。5. USB(通用串行总线)是一种外部总线的接口标准,USB总线接口支持热插拔和即插即用功能16。USB采用主从方式进行通信,它拥有一个主机,掌管所有USB外部设备的连接和删除17。它是嵌入式应用领域最常用的总线接口之一。当前很多的嵌入式处理器芯片内部都有USB控制器。USB具有很多优点:1.它使用很方便,它一个端口可以连接多个不同的设备,支持热插拔。2.独立供电,USB接口提供了内置电源,USB电源可以向低压设备提供5V的电源,提供0.5A0.9A的电流。3.速度快,当前USB2.0的速度为480Mb/s,USB3.0则已经达到了5Gb/s。3.2 主要芯片简介 3.2.1 74HC573锁存器图3-1为74HC573的引脚图,一号引脚OE为输出使能端,D0到D7为数据输入端,Q0到Q7为数据输出端。LE是锁存允许端,GND接地,VCC接电源。表3-1为74HC573的真值表,其中H代表高电平,L代表低电平,X代表任意电平,Z表示高阻态,Q0为上一次的电平状态1。从真值表中我们可以看出,当输出使能端OE为高电平时,不管LE和D是什么电平,输出端Q都为高阻态。此时,该芯片不可控制。因此在将74HC573接入电路中时,通常直接将OE端接低电平。在我们已经将OE端接低电平的条件下,当LE接低电平时,输出端Q为Q0,即上一次的电平,此时,不管输入端D是什么电平,Q端电平均不变,因此我们可以将锁存器的LE端与单片机的一个I/O口相连,再将锁存器的数据输入端与单片机的I/O口相连,这样就可以通过控制锁存器的锁存端和数据输入端的变化来控制数据输出端的变化。当OE端接低电平LE端接高电平的条件下,此时,D端输入高电平,Q端就输出高电平,D端输入低电平,Q端就输出低电平,也就是说,D端输入什么电平,Q端就输出什么电平。+图3-1 74HC573 引脚图 表3-1 74HC573 真值表输入输出OELEDQLHHHLHLLLLXQ0HXXZ 3.2.2 74HC138译码器图3-2 74HC138 引脚图图3-2为74HC138的引脚图,8号引脚GND接地,16号引脚VDD接电源正极,为芯片供电。A0、A1、A2引脚为二进制输入引脚,4、5、6号引脚为片选信号控制端,只有在4、5脚接低电平,6脚接高电平时,该芯片才会被选通2,此时输出端将受A0、A1、A2信号控制,除此之外的任何组合方式都将不被选通,并且Y0Y7全部输出“1”。表3-2 74HC138 真值表输入输出+A2A1A0 0XXXX11111111X1XXX111111111000001111111100011011111100101101111110011111011111010011110111101011111101110110111111011011111111110表3-2为74HC138译码器的真值表,上表中X表示为任意输入状态,“1”代表高电平,“0”代表低电平,在片选使用状态下,输出的八个引脚始终只有一个引脚输出低电平,其他引脚全部输出高电平。此74HC138芯片在单片机系统中可以极大限度的起到扩展I/O口的作用,只需要使用三个I/O口引脚就可以控制8个输出,并且程序的编程也很容易实现。 3.2.3 74HC595移位寄存器74HC595由一个八位串行移位寄存器和一个带3态并行输出的八位D型锁存器构成,该移位寄存器接收串行数据以及提供串行输出。 图3-3 74HC595 引脚图图3-3为74HC595 的引脚图,QAQH为并行数据输出端,第八脚GND接地,第16脚VCC接电源正极,第九脚SQH为串行数据输出端。第十脚SCLR为移位寄存器清零端,当其为低时,移位寄存器的输出端全部为0。第11脚SCK为数据输入时钟线,在其上升沿将SI的数据打入,移位后的信号输出到移位寄存器的输出端。第十二脚RCK为输出存储器锁存时钟线,它的上升沿将移位寄存器的输出打入到输出锁存器,因为SCK和RCK两个时钟信号是互不干扰的,因此可以做到输出锁存和输入串行移位互不干扰。第十三脚OE为输出使能端,只有当其接低电平时,移位寄存器的输出才得以开放,不然就变成了高阻态。第十四脚SI为串行数据输入端。 第四章 系统硬件设计 4.1 74HC138译码器模块如下图4-1为74HC138译码器模块的原理图,图中,将16号引脚接VCC高电平,8号引脚GND接地,从而为芯片供电。6号引脚接高电平,4号5号引脚接低电平,只有这样该芯片才会被选通。1号、2号、3号引脚作为138译码器的输入端,连接到P4排针上,STM32单片机的I/O口通过杜邦线连接到P4。为138译码器的输出端,作为数码管的位选信号。图4-1 74HC138模块原理图 4.2 74HC573驱动模块如下图4-2为74HC573驱动模块的原理图,图中,1号引脚为输出使能端,接高电平,11号引脚LE为锁存允许端接高电平,20号引脚VCC接电源,10号引脚GND接地。D0D7,是芯片的输入端,用于连接到单片机的I/O口,为了确保单片机I/O口既可以输出低电平又可以输出高电平,在74HC573芯片的每个输入端接上10K的上拉电阻,Q0Q7为芯片的输出端,在芯片的每个输出端接上一个1K的限流电阻。 图4-2 74HC573模块原理图 4.3 74HC595驱动模块图4-3 74HC595模块原理图74HC595驱动模块的原理图如上图4-3所示。QAQH为并行数据输出端,8号引脚GND接地,16号引脚VCC接高电平。第九脚QH为串行数据输出端,用于级联,连接到下一个74HC595芯片的14号引脚。10号引脚接高电平,13号引脚为输出使能端接地。11号、12号、14号引脚连接到单片机的I/O口。在本设计中通过级联4片74HC595芯片,用单片机的三个I/O口驱动四个8*16的点阵。 4.4 数码管显示模块图4-4 数码管连接原理图数码管显示电路的连接图如图4-4所示,图中,四个两位数码管的AG以及DP引脚分别连在一起,然后连到P15排针上,通过杜邦线连接到74HC573芯片的输出端。四个两位数码管的位选端DIG.1、DIG.2连接到P17排针上,通过杜邦线连接到74HC138芯片的输出端。 4.5 4*4矩阵键盘模块矩阵键盘的原理图如下图4-5所示,此矩阵键盘在本设计的功能是手动输入东西方向以及南北方向的绿灯通行时间,P1的8个引脚通过杜邦线连接到单片机的I/O口,通过逐行扫描来确定是哪个按键被按下。图4-5 矩阵键盘原理图 4.6 点阵模块图4-6 矩阵键盘原理图在本设计中用4个8*16的点阵来显示各个方向的通行方向,点阵模块的原理图如上图4-6所示,在图中,将G1和G2的R1R8引脚对应连在一起,然后接到P3上面,通过杜邦线将P3与74HC595芯片的输出端相连,从而实现74HC595芯片对点阵的行控制。将G1的C1C8引脚按顺序连接到P4的八个引脚,将G2的C1C8引脚按顺序连接到P5的八个引脚,通过杜邦线将P4和P5与对应的74HC595芯片的输出端相连。从而实现74HC595对点阵列的控制。第五章 系统软件设计 5.1 数码管显示程序设计#define LEDA0(a)if ( a ) GPIO_SetBits ( GPIOA , GPIO_Pin_0 ) ;else GPIO_ResetBits ( GPIOA , GPIO_Pin_0 );该函数中,当a为非0时,PA0 I/口输出高电平,当a为0时,PA0 I/口输出低电平,void xx(uint8_t a , uint8_t b , uint8_t c , uint8_t d , uint8_t e , uint8_t f , uint8_t g , uint8_t h ) LEDA0 ( a ) ; LEDA1 ( b ) ; LEDA2 ( c ) ; LEDA3 ( d ) ;LEDA4 ( e ) ; LEDA5 ( f ) ; LEDA6 ( g ) ; LEDA7 ( h ) ; 该函数有8个参数,通过传入的参数,该函数实现PA0PA7引脚输出与传入参数相对应的高低电平。在本设计中PA0PA7 8个I/O口为数码管段选端。void shuma( uint8_t j) switch( j ) case( 0 ) : xx ( 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 ) ; break ;case( 1 ) : xx ( 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 ) ; break ;case( 2 ) : xx ( 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 ) ; break ;case ( 3 ) : xx( 1 , 1 , 1 , 1 , 0 , 0 , 1 , 0 ) ; break ;case( 4 ) : xx ( 0 , 1 , 1 , 0 , 0 , 1 , 1 , 0 ) ; break ;case( 5 ) : xx( 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 ) ; break ;case( 6 ) : xx( 1 , 0 , 1 , 1 , 1 , 1 , 1 , 0 ) ;break ;case( 7 ) : xx( 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 ) ; break ;case ( 8 ) : xx( 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ) ; break ;case( 9 ) : xx( 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 ) ; break ; default :break ;该函数只有一个参数j,此参数控制数码管显示09这十个数字。在该函数中,当j为6时,此时进入case ( 6 ) ,调用函数xx ( ) ,传递的参数为(1 , 0 , 1 , 1 , 1 , 1 , 1 , 0),此时数码管显示的是数字“6”,同样的道理,通过参数j ,可以使数码管显示09其中的任何一个数字。 void xiaoyin(void) xx ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ; 在该函数中调用了函数xx( uint8_t a , uint8_t b , uint8_t c , uint8_t d , uint8_t e , uint8_t f , uint8_t g , uint8_t h ),传递的参数为 ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ,将数码管的段选端全部输入低电平,本设计中使用的是共阴极的两位数码管,段选端一旦全部被拉低,数码管就熄灭,从而达到消除重影的目的。 5.2 点阵显示程序设计void HC595SendData ( uint8_t BT3 , uint8_t BT2 , uint8_t BT1 , uint8_t BT0 ) uint8_t i ; for ( i = 0 ; i 7 ) ; BT3 = 1 ; LEDA12 ( 0 ) ; LEDA12 ( 1 ) ;for ( i = 0 ; i 7 ) ; BT2 = 1 ; LEDA12 ( 0 ) ; LEDA12 ( 1 ) ;for ( i = 0 ; i 7 ) ; BT1 = 1 ; LEDA12 ( 0 ) ; LEDA12 ( 1 ) ;for ( i = 0 ; i 7 ) ; BT0 0 ) num + + ; if( jianzhi1 0 ) & ( flag2 = = 1 ) ) DS1 = jianzhi1 - 1 ; flag1 = 1 ; flag2 = 0 ; flag3 = 1 ;jianzhi1 = 0 ; if ( (jianzhi10)&(flag3=1) DG1 = jianzhi1 - 1 ; flag1 = 1 ; flag3 = 0 ; flag4 = 1 ; jianzhi1 = 0 ; if(jianzhi10)&(flag4=1) BS1 = jianzhi1 - 1 ; flag1 = 1 ; flag4 = 0 ; flag5=1 ; jianzhi1 = 0 ;if(jianzhi10)&(flag5=1) BG1 = jianzhi1 - 1 ; flag1 = 1 ; flag5 = 0 ; flag2 = 1 ; jianzhi1 = 0 ; if(num=4) if( Key_Scan(GPIOE,GPIO_Pin_6) = KEY_ON ) DS = DS1 ; DG = DG1;BS=BS1;BG=BG1; num=0;num2=0;flg1=1;flg2=0;flg3=0 ; flag2=1;flag3=0; flag4=0;flag5=0; Second=1;Second1=1; 在本函数中共用到了5个标志位,分别为flag1,flag2, flag3,,flag4,flag5。flag1为1是,表示允许读取键值,为0时表示不允许读取键值,初始值为1。flag2为1时表示允许将读取到的键值赋给变量DS1(东西方向绿灯通行时间的十位数),flag2为0时表示不允许,初始值为1。flag3为1时表示允许将读取到的键值赋给变量DG1(东西方向绿灯通行时间的个位数),flag3为0时表示不允许,初始值为0。flag4为1时表示允许将读取到的键值赋给变量BS1(东西方向绿灯通行时间的十位数),flag2为0时表示不允许,初始值为0。flag5为1时表示允许将读取到的键值赋给变量BG1(东西方向绿灯通行时间的十位数),flag2为0时表示不允许,初始值为0。在本函数中,首先调用函数juzhen( ),将返回值赋值给jianzhii1, 当有按键按下时,jianzhi1大于0,进入第一个if函数。DS1 = jianzhi1 - 1,例如,第一个按键按下时,函数juzhen( )返回值为1,此时DS为0,表示第一个按键表示的是0。flag1=1 ,表示允许再读取键值。flag2=0 ,表示不允许将读取到的键值再赋给变量DS1 。flag3=1 ,表示允许下一个读取到的键值赋给变量DG1。 jianzhi1=0 ,防止读取一个键值却为DS1,DG1,BS1,BG1四个变量同时赋值。Second=1,Second1=1 ,表示将时间计数从1开始。接一来的几个if函数,跟第一个if函数同理。最后一个if函数表示DS1,DG1,BS1,BG1四个变量都获得键值后,在PE6所连的按键按下后,把DS1,DG1,BS1,BG1这四个值分别赋值给DS,DG,BS,BG。5.4 检测车流量动态改变通行时间程序设计void EXTI2_IRQHandler (void) if(EXTI_GetITStatus(EXTI_Line2) != RESET) if(Second10*DS+DG) if( Key_Scan(GPIOE,GPIO_Pin_2) = KEY_ON )&(Second che) Second - = 10 ; jishu = 0; EXTI_ClearITPendingBit(EXTI_Line2) ; 上面的函数为EXTI2中断服务函数,当发生中断时,进入中断服务函数,Second10*DS+DG,表示在东西方向绿灯通行期间,打开东西
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国广电保定市2025秋招笔试行测题库及答案市场与服务类
- 中国广电张家界市2025秋招行业常识50题速记
- 厦门市中石化2025秋招笔试综合知识专练题库及答案
- 中国移动渭南市2025秋招计算机类专业追问清单及参考回答
- 国家能源海口市2025秋招法学类面试追问及参考回答
- 中国移动茂名市2025秋招面试无领导高频议题20例
- 驻马店市中石油2025秋招面试半结构化模拟题及答案炼油工艺技术岗
- 中国移动红河自治州2025秋招笔试行测经典题及答案
- 中国广电承德市2025秋招笔试行测题库及答案通信技术类
- 景德镇市中石油2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 《AI创意壁纸设计之山水》课件
- TSG Z7004-2011 特种设备型式试验机构核准规则
- 回收垃圾培训课件
- 2025-2030中国钩针系列行业市场发展趋势与前景展望战略研究报告
- 司法确认调解协议(2025年版)
- 医疗器械直调管理制度
- (高清版)DBJ33∕T 1294-2023 建设工程造价指标采集分析标准
- 八年级英语上学期 选词填空解题方法及专项训练(解析版)
- 《永遇乐-京口北固亭怀古》课件
- 《幼儿舞蹈基础》 课件 项目八 蒙古族舞蹈
- 穴位按摩法操作评分标准
评论
0/150
提交评论