北京航空航天大学出版社,2014年单片机C语言应用程序设计

本系统采用单片机89C52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计采用51系列单片机ATMEL89C51为核心控制器件来设计已经简单的交通灯控制器。模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。

21

主要内容:

设计一个可以控制十二个交通灯的仿真系统:利用单片机的定时器使路口的交通灯交替亮起和熄灭,并用LED灯显示倒计时时间。

基本要求:

1.通过单片机课程设计,了解和掌握汇编语言编程方法,理论联系实际,提高大脑和动手能力。

2、通过控制系统的设计,掌握定时计数器和中断的使用,编写简单的程序,提高自己的逻辑抽象能力。

3、完成系统的基本软硬件设计并进行仿真调试。

主要参考资料:

[1] 刘守义等. 单片机技术基础[M]. 西安电子科技大学出版社,2007。

[2] 王东风等. 单片机C语言应用实例100例[M]. 电子工业出版社,2009。

[3] 马中梅等. 单片机C语言应用程序设计。 北京航空航天大学出版社,2003。

[4]王金凯. 健健学通51单片机的开发[M]. 清华大学出版社,2014。

[5]夏继强. 单片机实验[M]. 北京:航空航天大学出版社,2001

完成截止时间:12月11日-12月26日

导师签名:

课程负责人签名:

概括

交通在人们的日常生活中发挥着重要作用。 随着人们的社会活动越来越频繁,这一点体现得更加淋漓尽致。 交通信号灯的出现实现了有效的交通控制,对于缓解交通流量、提高道路通行能力、减少交通事故起到了显着的作用。 本系统采用单片机89C52作为中心器件设计交通灯控制器。 该系统实用性强、操作简单、可扩展性强。 本设计采用单片机模拟十字路口红绿灯的各种状态显示和倒计时时间。

我国汽车保有量不断增加,交通管制在未来交通管理中发挥着越来越重要的作用。 智能交通信号灯的管理具有良好的经济效益和交通速度效益,比修建道路更节省资源。 这使得交管人员能够投入更多的精力来管理整个城市的交通管制,带来更大的经济效益和社会效益,为塑造美丽的城市交通形象发挥更加重要的作用。

本设计采用51系列单片机ATMEL89C51作为核心控制器件,设计出一个本来就简单的交通灯控制器。 该系统由单片机I/0口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。 除了基本的红绿灯功能外,系统还具有倒计时功能,可以更好地模拟路口可能出现的情况。

该软件采用KEILC编程,主要编写主程序、LED数码管显示程序、中断程序延时程序等。经过整个Proteus 8机的调试,实现了路口红绿灯的模拟。

关键词:AT89C51; 引领; 红绿灯

目录

概括

1 概述

1.1 设计背景

1.2 设计目的

2 技术介绍

2.1 基尔

2.2 变形杆菌

3 总体方案及硬件设计

3.1 硬件电路各组成部分介绍

3.1.1 核心芯片AT89C51单片机说明

3.1.2 两位共阴极七段数码管

3.1.3 二极管

3.2 复位电路

3.3 振荡电路

3.2 整体电路工作原理

4 系统编程

4.1 系统电路图

4.2 程序源码

5 模拟测试

5.1 软件调试

5.2 仿真调试

5.2.1 所需软件查询显示

5.2.2 四种状态显示

5.3 结果分析

6 总结

参考

1 概述

1.1 设计背景

如今,红绿灯安装在每个路口,已成为最常见、最有效的交通车辆疏导手段。 但这项技术早在19世纪就已经出现了。

1858年,英国伦敦的主要街道上安装了以气体为光源的红蓝机械手势信号,指挥马车的通行。 这是世界上最早的红绿灯。 1868年,英国机械工程师奈特在伦敦威斯敏斯特会议厅前的广场安装了世界上第一盏燃气交通灯。它由红色和绿色两个旋转玻璃灯笼组成。

变得。 红色表示“停止”,绿色表示“注意”。

电动交通灯出现在美国。 该交通灯由红、黄、绿三色圆形投光器组成。 它于1914年首次安装在纽约市第五街的一座高塔上。红色K灯表示“停止”,绿色灯表示“通过”。

信号灯的出现实现了有效的交通管理,对于分流交通流量、提高道路通行能力、减少交通事故有着显着的作用。 1968年,联合国《道路交通和道路标志信号协定》规定了各种信号灯的含义。 红绿灯亮时,迎着绿灯的车辆可以直行、左转、右转,除非二单向标志禁止某一方向行驶。 左转、右转车辆必须优先让在路口合法行驶的车辆和过人行横道的行人通行。 红灯是禁止通行信号。 遇到红灯的车辆必须停在路口停车线后面。 黄灯是警告信号。 面对黄灯的车辆不能穿越城市和越过停车线。 不过,距离停车线很近、无法安全停车的车辆可以进入路口!

1.2 设计目的

本设计是一款由单片机控制的交通信号灯。 采用89c51单片机控制红绿灯,实现红绿灯自动跳变、倒计时显示、黄灯蜂鸣器警示灯功能。 在这次设计工作中,我们不仅可以增加对整个系统运行的合理安排,为以后的大型项目打下基础,而且可以增加我们对系统中软硬件作用的认识,也培养我们团队的合作。 能力。 1.3 设计思路

模拟交通灯控制器采用单片机控制一些LED灯和数码管来模拟真实交通灯的功能。 南北主干道通车时绿灯亮,东西次主干道红灯亮; 25秒开放时间一到,主干道绿灯熄灭,黄灯亮起。 黄灯亮5秒后,主路切换为次干路并通车。 此时,主干道黄灯熄灭,红灯亮起,次干道红灯熄灭,绿灯亮起,次干道开始通车; 25秒开放时间到后,次干道绿灯灭,黄灯亮。 黄灯亮5秒后,由次干道转入交通。 主干道已通车。 此时二级路黄灯灭,红灯亮; 主干道上的红灯熄灭,绿灯亮起,依此类推。 红、黄、绿交替闪烁,数码管用于倒计时、显示间隔等,用于管理路口车辆、行人通行。 在芯片计算机中,运行系统。 设计完成后,通过proteus软件进行仿真和调试。

2 技术介绍

2.1 基尔

KeilC51是一款与单片机兼容的C语言软件开发系统。 与汇编语言相比,C语言在功能、结构、可读性、可维护性等方面具有明显的优势,[1]易于学习和使用。 Keil提供了完整的开发解决方案,包括C编译器、宏汇编、链接器、库管理和强大的仿真调试器等,并通过集成开发环境(μVision)将这些部分组合起来。 运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。 如果你使用C语言来编程,那么Keil几乎是你的最佳选择。 即使您不使用C语言而仅使用汇编语言进行编程,其方便易用的集成环境和强大的软件模拟调试工具也会让您事半功倍。 Keil C51软件提供丰富的库函数和强大的集成开发调试工具,具有完整的Windows界面。 还有一点很重要,只要看编译后生成的汇编代码就可以体会到Keil的优势。

2.2 变形杆菌

Proteus是世界著名的EDA工具(仿真软件)。 从原理图布局、代码调试,到单片机与外围电路的协同仿真,一键切换到PCB设计,真正实现从概念到产品的完整设计。 迄今为止,它是全球唯一集电路仿真软件、PCB设计软​​件和虚拟模型仿真软件于一体的设计平台。 其处理器型号支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。2010年增加了Cortex和DSP系列处理器,其他系列处理器型号还在继续待补充。 编译方面,还支持IAR、Keil、MATLAB等多种编译。

3 总体方案及硬件设计

3.1 硬件电路各组成部分介绍

3.1.1 核心芯片AT89C51单片机说明

1.AT89C51简介

AT89C51是一款低电压、高性能CMOS 8位微处理器,带有4K字节闪存可编程可擦除只读存储器(FPEROM—FalshProgrammable and Erasable Read Only Memory),俗称单片机。 AT89C2051是一款具有2K字节闪存可编程和可擦除只读存储器的微控制器。 微控制器的可擦除只读存储器可重复擦除100次。 该器件采用ATMEL的高密度非易失性存储器制造技术制造,与行业标准MCS-51指令集和输出引脚兼容。 ATMEL 的 AT89C51 是一款高效的微控制器,它将多功能 8 位 CPU 和闪存组合在一个芯片中,其中 AT89C2051 是一个精简版本。 AT89C微控制器提供了灵活的

一个具有成本效益和成本效益的解决方案。

图 3-1 AT89C51

2.引脚说明

1)电源引脚

VCC(端口40)+5v直流

VSS(端口 20)接地

2)复位引脚

RST(端口9)复位输入信号

3) 时钟引脚

XTAL1(端口19)晶振输入端口

XTAL2(18口)晶振输入口

4)控制引脚

ALE(端口30)地址锁存使能信号

PSEN(端口29)外部存储器选通信号

EA(端口 31) EA 引脚指示对外部程序代码的访问。 它在低水平运行。 当该引脚接低电平时,系统将访问外部程序代码(存储在外部EPROM 中)来执行程序。 。 EA 引脚必须拉低,因为其内部没有程序存储空间。

5)I/O口引脚

P0#:P0.0~P0.7

P1#:P1.0~P1.7

P2#:P2.0~P2.7

P3#:P3.0~P3.7

6)P3口复用引脚

P3.0串口输入;

P3.1串口输出;

P3.2 外部中断0;

P3.3 外部中断1;

P3.4计数器输入0;

P3.5 计数器输入1;

P3.6 外部存储器写信号;

P3.7 外部存储器读信号;

3.1.2 两位共阴极七段数码管

两位共阴极七段数码管实际上是由两个一位八段数码管连接到相应的电路中组合而成。并引出两个控制端1和2,控制其高位和低位。两个数码管通过它们的电平。

工作。

图3-2 共阴极二段七段数码管

3.1.3 二极管

交通信号灯:采用红、黄、绿二极管组成三色交通信号灯。

图 3-3 三色二极管

3.2 复位电路

本设计中的单片机采用外部复位电路,采用上电复位和手动复位相结合的方式。 自动上电复位电路保证AT89C51单片机在上电时正确复位。 手动复位可以在上电复位的基础上外接复位开关,既保证了上电复位,又保证了手动复位。 单片机复位后,内部特殊功能寄存器的复位状态为确定值。

图 3-4 复位电路

3.3 振荡电路

AT89C51的XTAL 1和XTAL 2引脚分别是单极性片内反相放大器的输入/输出端,其频率范围为1.2~1 2 MHz。 XTAL2 是内部时钟发生器的输入。 该内部反相器可以与外部组件组合形成皮尔斯振荡器。

图 3-5 振荡电路

3.2 整体电路工作原理

路口应设有数字显示装置作为时间提醒,以便人们更直观地掌握时间。 具体要求是:当某个方向的绿灯亮时,将定时器设置为一定的值,然后以每秒计数1的方式工作,直到数字减为0。路口的红灯和绿灯分别为:交换了。 一个工作循环结束,进入另一个工作循环。 朝一个方向工作循环。 数码显示管用于显示东西、南北路口红、黄、绿灯倒计时时间。

南北路已封闭,东西路已通车。 当南北路灯为红灯时,东西路灯为绿灯; 当南北路的灯为绿灯时,东西路的灯为红灯。 南北路红灯亮时,东西路绿灯亮; 当绿灯时间减少时,东西路灯变为黄灯,而南北路仍为红灯。 这样,东西路和南北路的时间就会同时减少。 缩减完成后,东西向道路将变为红灯,南北向道路将变为绿灯。 再过一次绿灯时间,南北向的道路将变为黄灯,东西向的道路仍将有红灯。 此时东西路和南北路时间相同,同时竣工。 缩减完成后,南北向道路将亮红灯,东西向道路将亮绿灯。 像这样穿过环。

整个设计满足了任务的要求,即完成了四种状态的转换以及倒计时数码管的显示。 因此,本系统的设计足以控制路口红绿灯的正常变化,保证各车道车辆的顺利运行。

4 系统编程

4.1 系统电路图

图4-1 系统电路图

4.2 程序源码

#包括

sbit led_red = P1 ^ 0;

sbit led_yellow = P1 ^ 1;

sbit led_green = P1 ^ 2;

sbit led_red1 = P1 ^ 3;

sbit led_yellow1 = P1 ^ 4;

sbit led_green1 = P1 ^ 5;

无符号整数 i = 0;

无符号整数 j = 0;

无符号字符代码 LedChar[] ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; //0 1 2 3 4 5 6 7 8 9

静态无符号整数秒= 5;

静态无符号字符togle_flag = 0;

静态无符号字符 rg_flag = 0;

静态无符号字符skip_yellow = 0;

静态无符号字符 fs = 0;

无效定时器0(){

TMOD=0x01;

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

EA = 1;

ET0=1;

TR0=1;

无效 tcount() 中断 1 {

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

我++;

无效显示(){

//P0 = 0x01;

P0 = 0x05;

P2 = LedChar[秒 % 10]; //

P3 = LedChar[(秒 + 5) % 10];

// 提高刷新率

P0 = 0x00;

P2=0xFF;

P3=0xFF;

//P0 = 0x02;

P0 = 0x10;

P2 = LedChar[秒/10]; //

P3 = LedChar[(秒 + 5) / 10];

// 提高刷新率

P0 = 0x00;

P2=0xFF;

P3=0xFF;

首先无效(){

while(!togle_flag){

展示();

if(i == 20) { //

如果(!rg_flag){

led_green = 0;

而(切换标志){

如果(跳过黄色){

切换标志=!切换标志;

秒=5;

} 别的 {

展示();

if(i == 20) { //

led_yellow = 0;

led_yellow1 = 0;

我 = 0;

//

如果(秒 > 0)秒——;

别的 {

秒=5;

切换标志=!切换标志;

led_yellow = 1;

led_yellow1 = 1;

无效主(){

定时器0();

而(1){

第一的();

}}

5 模拟测试

5.1 软件调试

(1) 生成hex文件::

图5-1 生成hex文件

(2) 将hex文件导入AT89C51:

图5-2 导入hex文件

5.2 仿真调试

在keil中调试完成后,生成文件,然后在proteus中进行仿真。

5.2.1 所需软件查询显示

图 5-3 所需组件显示

5.2.2 四种状态显示

1) 点击播放按钮,电路开始仿真。 此时交通灯显示为:南方向绿灯亮,东西方向红灯亮。 南向通行时间为25秒,东西向禁止通行时间为25秒。 红绿灯显示状态如图所示。

图 5-4 状态 1

2)开始模拟25秒后,黄灯开始闪烁,闪烁时间为5秒。 红绿灯的状态会发生变化,南方向的黄灯闪烁。 显示情况如图所示。

图 5-5 状态 2

3)此时红绿灯显示如下:东西方向绿灯亮,南北方向红灯亮。 向南方向封闭交通30秒,向北向南方向封闭25秒。 红绿灯显示状态如图所示。

图5-6 状态三

4)开始模拟25秒后,黄灯开始闪烁5秒。 交通灯的状态会发生变化,黄灯向东西方向闪烁。 显示情况如图所示。

图5-7 状态四

5.3 结果分析

经过测试,这个简单的红绿灯设计基本满足了要求的要求。 它可以显示简单的红绿灯计时,避免拥挤、交通拥堵等。但是,该设计也存在缺点。 由于程序设计比较简单,无法用于特定用途。 无法针对当前路况进行智能调整。 例如,早高峰和晚高峰期间人车较多时,可以适当增加绿灯时间,减少红灯时间,以减少道路拥堵。

6 总结

通过这次课程设计,我运用专业知识和技能分析问题、解决问题的能力得到了全面、系统的锻炼。 使我在单片机的基本原理、单片机应用系统的开发流程、常用编程语言C的掌握等方面都向前迈进了一大步。设计这门课程的过程是艰辛的,但收获是巨大的。 这次课程设计运用了很多单片机上学到的知识,让书本上学到的知识运用到实践中,同时我也发现了很多关于自己的知识。 缺点。 经过多次查阅相关书籍和资料,对一些不太确定的地方进行了补充。 我不仅完成了课程设计的任务,而且还拓展了自己的知识面,填补了很多知识空白,让我的知识更丰富了。 取得了新的进步,学到了新的知识。

通过这次课程设计,我学到了很多新知识,经历了理论转化为实践的过程,学会了如何将学到的理论知识转化为生活中常见的东西。 我学到的知识得到了充分的应用。 大学课程是让我们学习专业知识的,我们应该把学到的书面知识运用到生活中。 课程设计给了我们这样一个将理论转化为实践的机会。 独立完成这样的任务看似困难,但当你深入到这个过程中时,每一点成功都会让你欣喜若狂。 这是一个享受成功的过程,也是一个很好的学习机会。 当然,我也遇到了很多困难,也让我认识到了很多不足。 我将在今后的学习和生活中不断磨练和提高自己,为今后的职业生活储备更多的知识,成为人生的强者。

单片机

树莓阅读免费版本,你想知道的都在这里!

2024-4-8 1:06:24

单片机

STM32指令集不同,51单片机采用Cortex-M内核

2024-4-8 2:02:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索