单片机课程设计之交通灯控制设计:原理、模拟与编程实现

工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。单片机(MCU)又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。信号灯显示模块采用四个集成交通指示灯来模拟红、黄、绿交通指示灯,用单片机的P1口控制发光二极管的亮灭状态。

微控制器课程设计

话题

交通信号灯控制设计

课程设计目标与任务、计划与时间安排:实践教学要求与任务:

1、了解交通信号灯的基本工作原理;

2、利用Proteus仿真实现交通灯控制;

3.使用Keil C51编程实现以上功能;

4.使用Keil与Proteus进行联合调试。

工作计划及时间安排:

17周查找相关资料。

18 周的详细设计。

19 周的程序测试、撰写论文和答辩。

1 简介

交通运输业蓬勃发展,交通量逐年增加,大、中、小城市汽车、摩托车等车辆日益增多,道路交通繁忙,经常出现严重的交通堵塞,尤其是在路口,机动车、非机动车、行人交通十分混乱。为了在岔路口实现主干道的合理、科学分流。基于单片机物美价廉、功能强大、使用方便灵活、可靠性高等特点,提出了一种利用STC89c51单片机实现交通信号灯和时间显示的自动控制方法。同时给出了软件和硬件的实现方法,为交通控制自动化提供了一种新型、廉价的手段,具有一定的推广意义。本文介绍了控制的基本原理、控制的性能,介绍了城市交通信息系统的设计目标、​​开发方法、系统结构与功能、数据地理编码和数据库建设等。 同时探讨了系统中交通状况、交通管理、交通规划及后台信息查询等模块的构建及应用,介绍了一种城市路口三色可编程交通信号时间显示器的开发方案,其电源、发光二极管构成的负载结构、光色时间检测等都给出了巧妙合理的优化结构,大大提高了产品的可靠性,降低了制造成本。

2 应用软件介绍2.1 C语言简介

C语言是1972年贝尔实验室的Dennis Ritchie基于B语言开发出来的。最初的C语言被称为UNIX操作系统的开发语言。之后,贝尔实验室对C语言进行了很多改进并发布了多个版本,C语言的优点引起了人们的广泛关注。随着UNIX操作系统在各种机器上的广泛使用,C语言得到了迅速的推广。1978年,Brian W. Kernighan和Dennis M. Ritchit合著了《C程序设计语言》一书,对C语言进行了详细的描述。这本书对C语言的发展产生了深远的影响,并成为后来C语言版本的基础,被称为标准C。随后,C语言在各种计算机上迅速推广,并出现了许多版本的C语言。

2.2 Keil C51

Keil C51是美国Keil Software公司出品的一套51系列兼容单片机C语言软件开发系统。C语言与汇编语言相比,在功能、结构、可读性和可维护性等方面具有明显的优势,因此易学易用。Keil提供了包括C编译器、宏汇编器、链接器、库管理和功能强大的仿真调试器在内的一套完整的开发解决方案,它们通过集成开发环境(μVision)结合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

2.3 普罗透斯

Proteus软件是英国Lab Center Electronics公司发布的一款EDA工具软件,它不仅具备其他EDA工具软件的仿真功能,还可以对单片机及外围器件进行仿真,是目前比较优秀的单片机及外围器件仿真工具,虽然在国内才刚刚开始推广,但已经受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。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 单片机介绍

单片机(MCU)又称单片微控制器,并不是一块完成某项逻辑功能的芯片,而是集成在一块芯片上的计算机系统。通俗地说,一块芯片就成了一台计算机。它体积小,重量轻,价格便宜,为学习、应用、开发提供了便利的条件。同时,学习使用单片机是了解计算机原理和结构的最佳选择。

目前,单片机已经渗透到我们生活的每个领域,几乎很难找到一个没有单片机的领域。导弹的导航装置、飞机上各种仪器的控制、计算机网络通讯与数据传输、工业自动化过程的实时控制与数据处理、广泛使用的各种智能IC卡、民用豪华轿车的安全系统、录像机、照相机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不要说自动控制领域的机器人、智能仪器、医疗器械了。因此,单片机的研究、开发和应用,将造就一批计算机应用、智能控制方面的科学家和工程师。

3.2 89C51简介

89C51是一种低压、高性能CMOS 8位微处理器,内有4K字节的闪存可编程可擦除只读存储器(FPEROM),俗称单片机。单片机的可擦除只读存储器可反复擦写100次。该器件采用ATMEL公司的高密度非易失性存储器制造技术制造,与工业标准的MCS-51指令集和输出引脚兼容。由于在单个芯片内结合了多功能8位CPU和闪存,ATMEL公司的89C51是一种高效的微控制器,89C2051是它的精简版。

3.3 89C51单片机内部逻辑结构

3.4 89C51硬件资源

(1)微处理器(CPU):8位CPU。

(2)数据存储器(RAM):片上128字节,最多可添加64KB外部存储器。

(3)程序存储器(4KB Flash ROM):片内4KB,最大可以外部扩展程序存储器至64KB。

(4)四个8位可编程并行I/O端口(P0、P1、P2、P3),一个全双工串行口。

(5)定时器/计数器:芯片上有两个16位定时器/计数器,有四种工作模式。

(6)中断系统:具有5个中断源,2级中断优先级。

(7)特殊功能寄存器(SFR):特殊功能寄存器共有21个,由CPU用来管理、控制和监视芯片上的各个功能部件。

(8)1个看门狗定时器(WDT)。

3.5 89C51 引脚图

(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、利用Proteus模拟路口红绿灯控制电路。

4.使用Keil和Proteus进行调试

5. 设计 5.1 交通信号灯的四种交通模式及行车方向指示

根据简单的交通路口规则,有四种模式

南北绿灯亮,东西红灯亮,南北黄灯闪烁,东西红灯亮,南北红灯亮,东西绿灯亮,南北红灯亮,东西黄灯闪烁

5.2 交通信号灯控制系统

实用的交通灯控制系统主要由CPU控制模块、信号灯显示模块、倒计时显示模块等组成,如下图所示:

控制模块是最核心的部分,控制核心采用AT89C51单片机,利用AT89C51单片机内部的定时器实现交通信号灯控制的定时功能,正常情况下产生相应的控制信息,控制倒计时显示电路和信号灯显示电路的正常工作。

信号灯显示模块采用四个集成交通信号灯模拟红、黄、绿交通信号灯,利用单片机的P1口控制发光二极管的亮、灭状态。

倒计时显示模块接口电路有静态显示和动态显示两种显示方式,由于动态显示方式在仿真软件中不方便查看,因此本次采用静态显示方式,该方式的优点是操作方便,缺点是浪费单片机的接口资源。

为了使倒计时更加准确,采用外部晶振电路来实现其功能。

6 硬件系统设计 6.1 交通灯显示模块

由于南北方向的红绿灯始终处于相同状态,因此将南北方向的红绿灯归为一组。只需将相应的红绿灯并联即可。东西方向也是如此。

6.2 倒计时显示模块

选用8个7段数码管,分别模拟四个方向的倒计时显示,数码管采用共阴极接法。

为了提高P0、P2口的电流输出能力,保证数码管的亮度,保护端口引脚,在P0口与数码管之间增加了一个74LS245芯片。

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.单片机课程设计指南,皮大能,北京理工大学出版社

单片机

2022 中国汽车论坛:恩智浦分享实时处理器助力汽车产业高质量发展

2024-6-1 5:03:25

单片机

基于 STC89C51 的数字电压表课程设计报告

2024-6-1 6:03:19

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