大家好,我们又见面了,我是你们的朋友全战军。
课程设计任务说明和年级课程名称
单片机课程设计
话题
交通灯控制设计
课程设计目标和任务、计划和日程安排: 实践教学要求和任务:
1、了解交通信号灯的基本工作原理; 2、利用仿真实现交通灯控制; 3、使用Keil C51编程实现以上功能; 4.使用Keil并联合调试。
工作计划及时间安排:
17周内查找相关信息。 18周的详细设计。 19 周的程序测试、论文写作和答辩。
1 简介
交通运输业蓬勃发展,车流量逐年增加。大、中、小城市的汽车、摩托车等车辆保有量日益增加。道路交通繁忙,经常出现严重的交通拥堵,特别是在路口,机动车、非机动车、行人交通十分混乱,为了实现路口各主干道合理、科学的分流。根据单片机廉价、优质、功能强大、使用灵活、可靠性高等特点,提出了一种利用单片机自动控制交通信号灯和时间显示的方法。同时我还提供了提供交通指挥自动化的软硬件实现方法。提供了一种新的廉价手段,具有一定的推广意义。本文介绍了控制的基本原理及其性能。介绍了城市交通信息系统的设计目标、开发方法、系统结构和功能、数据地理编码和数据库建设。同时对系统中的流量状态和流量管理进行了讨论。 、交通规划及后台信息查询模块的构建与应用。介绍了一种城市路口三色程控交通信号报时显示屏的研制方案,并对其电源、发光二极管组成的负载结构、光色报时检测等提供了精巧合理的优化结构,从而大大提高了效率。产品可靠性并降低制造成本。
2 应用软件简介 2.1 C语言简介
C语言是贝尔实验室于1972年在B语言的基础上开发出来的。最初的C语言被公认为UNIX操作系统的开发语言。此后,贝尔实验室对C语言进行了多次改进和版本,C语言的优点引起了广泛的关注。随着UNIX操作系统在各种机器上的广泛使用,C语言得到了迅速的推广。 1978年,W.和M.合着了《The C》一书,对C语言进行了详细的描述。这本书对C语言的发展产生了深远的影响,成为后来C语言版本的基础,被称为It's C。随后,C语言在各种计算机上迅速推广,导致出现了很多C语言版本。
2.2 凯尔C51
Keil C51是美国Keil公司生产的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能、结构、可读性、可维护性等方面具有明显的优势,易学易用。 Keil提供了完整的开发解决方案,包括C编译器、宏汇编、链接器、库管理和强大的仿真调试器等,并通过集成开发环境(μ)将这些部分组合起来。运行Keil软件需要 、NT、 、 等操作系统。
2.3
该软件是 Lab公司发布的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还可以仿真微控制器和外围器件。它是目前比较好的模拟微控制器和外围设备的工具。虽然国内推广刚刚起步,但受到了单片机爱好者、从事单片机教学的教师以及致力于单片机开发应用的科技工作者的青睐。它是英国著名的EDA工具(仿真软件)。从原理图布局、代码调试,到单片机与外围电路的协同仿真,一键切换到PCB设计,真正实现从概念到产品的完整设计。是目前全球唯一集电路仿真软件、PCB设计软件和虚拟模型仿真软件于一体的设计平台。其处理器型号支持8051、HC11、/12/16/18/24/30/,2010年新增AVR、ARM、8086、DSP系列处理器,其他系列处理器型号持续增加。编译方面,还支持IAR、Keil等编译器。
3 硬件资源介绍 3.1 单片机介绍
微控制器(MCU)又称单片机,不是完成某种逻辑功能的芯片,而是将计算机系统集成到一块芯片上。简而言之:芯片变成了计算机。其体积小、重量轻、价格便宜,为学习、应用和开发提供了便利的条件。同时,学习使用单片机是了解计算机原理和结构的最佳选择。目前,单片机已经渗透到我们生活的各个领域,几乎很难找到没有单片机踪迹的区域。导弹的导航装置、飞机上各种仪表的控制、计算机网络通信和数据传输、工业自动化过程的实时控制和数据处理、广泛使用的智能IC卡、民用豪华汽车的安全系统、录像机、相机、全自动洗衣机、程控玩具、电子宠物等都离不开单片机。更不用说自动控制领域的机器人、智能仪器、医疗设备了。因此,单片机的学习、开发和应用将造就一批计算机应用和智能控制方面的科学家和工程师。
3.2 简介
它是一种低电压、高性能微处理器,带有4K字节闪存可编程和可擦除只读存储器(-和Read Only),俗称单片机。微控制器的可擦除只读存储器可重复擦除100次。该器件采用高密度非易失性存储器制造技术制造,与行业标准 MCS-51 指令集和输出引脚兼容。通过将多功能 8 位 CPU 和闪存组合在单个芯片中,它是高效微控制器的简化版本。
3.3 单片机片内逻辑结构
3.4 硬件资源
(1)微处理器(CPU):8位CPU。 (2)数据存储器(RAM):片内128B,片外可扩展至64KB。 (3)程序存储器(4KB ROM):片内为4KB,片外程序存储器可扩展至最大64KB。 (4) 4个8位可编程并行I/O端口(P0、P1、P2、P3)和1个全双工串行端口。 (5)定时器/计数器:芯片上有2个16位定时器/计数器,有4种工作模式。 (6) 中断系统:有5个中断源,2级中断优先级。 (7)特殊功能寄存器(SFR):共有21个特殊功能寄存器,CPU用来管理、控制和监视芯片上的各种功能部件。 (8) 1个看门狗定时器(WDT)。
3.5引脚图
(1) 端口 P0:8 位、开漏双向 I/O 端口。 (2) P1 口:8 位、准双向I/O 口,带内部上拉电阻。 (3)P2口:专门为用户设计的8位、准双向I/O口,内部有上拉电阻。 (4) P3口:8位、准双向I/O口,带内部上拉电阻。也可作为普通I/O口使用。另外,P3口还有第二个功能定义。
4个设计主题
红绿灯控制设计: 1、了解路口红绿灯的基本工作原理,需要将其分为主干道和次干道,并增加倒计时功能。 2、使用Keil C51编程实现上述功能。 3、利用仿真实现路口交通灯控制电路。 4.使用Keil并联合调试
5、方案设计 5.1 四种交通方式及交通信号灯行驶方向指示
根据简单的交通路口规则,有四种模式
南北绿灯亮起。东、西红灯亮。南北黄灯亮。东、西红灯亮。南北红灯亮。东、西绿灯亮。南北红灯亮。东、西黄灯闪烁。
5.2 交通灯控制系统
实用的交通灯控制系统主要由CPU控制模块、信号灯显示模块、倒计时显示模块等组成,如下图所示:
其中,控制模块是核心部分。控制核心采用单片机。利用单片机内部定时器来实现交通灯控制的定时功能。正常情况下,产生相应的控制信息来控制倒计时显示电路和信号灯显示电路的正常工作。信号灯显示模块采用四个集成交通信号灯模拟红、黄、绿交通信号灯,利用单片机的P1口控制发光二极管的亮灭状态。倒计时显示模块的接口电路有静态显示和动态显示两种模式。由于动态显示方式在仿真软件中不易查看,因此本次采用静态显示方式。这种方法的优点是操作方便,缺点是浪费单片机的接口资源。 。为了使倒计时更加准确,采用外部晶振电路来实现其功能。
6 硬件系统设计 6.1 信号灯显示模块
由于南北方向的信号灯始终处于相同的状态,因此南北信号灯是一组。只需要并联相应的信号灯即可。东西方向也是如此。
6.2 倒计时显示模块
选取八个七段数码管,分别模拟四个方向的倒计时。数码管采用共阴极连接方式。为了提高P0、P2口的电流输出能力,保证数码管的亮度,保护端口引脚,在P0口与数码管之间加了一颗芯片。
6.3 复位模块
按复位按钮该系统即可再次工作。电路图如图所示:
7软件系统设计 7.1 中断服务程序框图
7.2 主程序框图
7.3 程序代码
代码语言:
复制
#include sbit g1=P1^0; //位定义 sbit r1=P1^1; sbit y1=P1^2; sbit g2=P1^3; sbit r2=P1^4; sbit y2=P1^5; unsigned char f=0; unsigned char nanbei_time=15; //定义南北的时间长度 unsigned char dongxi_time=11; //定义东西的时间长度 unsigned char m; unsigned char code t[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F}; void init_timer0(void) //中断初始化函数 { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; } void display(unsigned char x) { unsigned char m,n; m=x/10; n=x; P0=t[m]; P2=t[n]; } void timer(void) interrupt 1 using 1 //中断服务函数 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; f++; if(f==20) { f=0; m--; } } void main() { m=nanbei_time; P1=0x00; init_timer0(); while(1) { do { display(m); g1=1; r1=0; g2=0; r2=1; } while(m!=3); do { if(m<=3) { y1=~y1; r1=0; g1=0; r2=1; g2=0; } display(m); r1=0; g2=0; r2=1; } while(m!=3); do { if(m<=3) { y1=~y1;r1=0;g1=0; r2=1;g2=0; } display(m); } while(m!=0); if(m==0) { m = dongxi_time; y1 = 0; y2 = 0; } do{ display(m); g1 = 0; r1 = 1; g2 = 1; r2 = 0; } while(m!=3); do{ if(m<=3) { r1=1,g1=0; y2=~y2,r2=0,g2=0; } display(m); }while(m!=0); if(m==0) { m=nanbei_time; y1=0; y2=0; } } }
8 电路仿真
开始模拟:
9 设计总结 通过这次单片机课程设计,我不仅学到了很多新知识,而且加深了对之前所学理论知识的掌握。过去我们所学的知识仅限于课本,实际应用比较模糊。这次的课程设计有利于学生学习目的的明确性和主动性。通过这个课程设计,我们知道什么是我们真正应该掌握的东西。在实践中我们可以弥补理论知识的不足,很好地将理论运用到实践中。 10 参考文献 1.《单片机原理与接口技术》张一刚人民邮电出版社 2.《单片机课程设计指南》皮大能北京理工大学出版社