产品选型

51单片机交通灯程序 给初学单片机朋友的干货,如何用单片机制作模拟交通灯?

小编 2024-11-24 产品选型 23 0

给初学单片机朋友的干货,如何用单片机制作模拟交通灯?

在生活中十字路口经常会见到交通信号灯,很多朋友都习以为常,初学电子或单片机的小伙伴们想知道如何动手实现这样的电路吗?今天我利用单片机基础知识手把手教大家如何实现一个模拟交通灯的电路。而现实中的交通灯都是用大功率器件来驱动的,例如到功率三极管或晶闸管等。那其控制电路也必须要单片机芯片,我们讲的是比较典型的一种国产芯片,STC宏晶公司出产的,其改进信号的运行速度是普通C51的十多倍,如果想学高端的单片机芯片,比如STM32、ARM、甚至DSP等高端单片机芯片,我认为先学好C51在学高端的,这样学习循序渐进,不会打消自己的学习积极性,便于建立自己学好单片机的信心。好了。我们言归正传,下面我们说说设计要求,我们是用万能PCB板由C51单片机焊接组成单片机最小应用系统,控制南北和东西两条干线十字路口的交通信号灯量灭,同时用两位共阳极的数码管进行倒计时。使两条干线交替成为放行线和禁止线。刚上电的时候东西绿色灯亮40 秒,然后红色灯亮30秒,黄灯亮3秒;南北绿色灯亮30 秒,然后红色灯亮40秒,黄灯亮3秒。执行一周期然后如此循环。

设计步骤

制作步骤1:根据控制要求选择电子元器件并绘制电路原理图

用AD10绘制电路原理图

电子元器件明细表

单片机芯片STC89C52RC+ 1片

共阳数码管 2个

发光二极管 12个 (两红、两绿、亮黄)

排阻10K欧 1个

限流电阻220欧姆 12个

三极管PNP型9102 2个

晶振11.0592MHZ 1个

电解电容10uF 1个

瓷片电容30P 2个

电阻10K欧 1个

电阻100欧 1个

微动按键 1个

电阻330欧 2个

PCB万能电路板 1块

步骤2:根据电路原理图编写控制程序

我们写的程序由于是底层驱动程序,需要参考电路原理图,我们参考下面的原理图。因此要根据电路原理图来进行编写,程序不长,程序主要有主程序、亮灯转换程序、数码管扫描程序、定时中断程序四部分组成。如果不清楚的可以在讨论区留言,我们互相讨论。

便于读程序是参考原理图

参考程序如下:

#include<reg51.h>

#define seg_port0 P0//段码口

unsigned char code seg_code[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char timer=0;

bit flag1s=1;

sbit ew_red=P3^0;//东西方向红灯

sbit ew_green=P3^1;//东西方向绿灯

sbit ew_yellow=P3^2;//东西方向黄灯

sbit sn_red=P3^3;//南北方向红灯

sbit sn_green=P3^4;//南北方向绿灯

sbit sn_yellow=P3^5;//南北方向黄灯

sbit wela1=P1^1;//数码管位选信号

sbit wela2=P1^2;

sbit Latch=P1^0;

void traffic_light();//交通灯亮灯转换函数声明

void main(void)//主函数

{

EA=1;//打开总中断

Latch=1;

TH0=(65536-1000)/256;//设置定时初值

TL0=(65536-1000)%256;

ET0=1;//定时使能打开

TR0=1;//打开定时器

TMOD=0x01;//设置定时中断模式

while(1)

{

if(flag1s)//判断是否1秒到,位声明为flag1s

{

flag1s=0;

traffic_light();

}

}

}

void traffic_light( )//交通灯转换子程序

{

static unsigned char color=0;

static unsigned char timer=0;//因为在两个函数中都用到此变量所以要用设置为全局变量

if(timer==0)

{

switch(color)

{

case 0:sn_red=0;sn_green=1;sn_yellow=1;

ew_green=0;ew_red=1;ew_yellow=1;

timer=39;color=1;break;

case 1:sn_red=1;sn_green=0;sn_yellow=1;

ew_green=1;ew_red=0;ew_yellow=1;

timer=29;color=2;break;

case 2:sn_red=1;sn_green=1;sn_yellow=0;

ew_green=1;ew_red=1;ew_yellow=0;

timer=3;color=0;break;

default:break;

}

}

else

{

timer--;

seg_port0=seg_code[timer%10];

seg_port0=seg_code[timer/10%10];

}

}

void led_scan(void)//数码管扫描子程序

{

static unsigned char i=0;

switch(i)

{

case 0: wela1=0;wela2=1;i++;seg_port0=seg_code[timer%10];

break;

case 1:wela1=1;wela2=0;i=0;seg_port0=seg_code[timer/10%10];

break;

default:break;

}

}

void interrupttimer0() interrupt 1//定时中断子程序

{

static unsigned int tmr1s=0;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

led_scan();

tmr1s++;

if(tmr1s>=1000)

{

tmr1s=0;

flag1s=1;

}

}

步骤3:根据电路原理图和编写好的控制程序进行PROTEUS软件仿真

用PROTEUS软件仿真,主要是验证自己所写的程序是否正确,但能通过仿真并不一定能在电路板上把程序跑起来,需要后续的调试。这一环节可以根据自己的具体情况进行删减。由于仿真是在理想状态下进行的,由于运行准确度的考虑,我没加三极管驱动,主要为了验证程序的正确性。

仿真南北绿灯亮东西红灯亮进行中

南北红灯亮东西绿灯亮进行中

南北黄灯亮东西黄灯亮等待下一循环中

步骤4:根据电路原理图用PCB万能板焊接电路

焊接时要注意的有以下几点:

第一点是在焊接单片机芯片时最好先焊接DIP-40插座或者用自紧锁插座,焊接好插座后再把单片机芯片安装上,如果没有这些插座在焊接时一般要断电用电烙铁的余热进行焊接,因为单片机内部用了大量的COM管对静电防范要求很高,这样通过断电用电烙铁的余热焊接40个引脚3次就可以焊接完成,同时能够确保单片机芯片被损坏。

第二点是在焊接单片机时钟晶振时,设计好晶振的位置,要尽可能的把晶振离单片机近些,同时要选好晶振的稳频电容,一般其容量在20P~30P之间就能满足要求。

第三点是要注意发光二极管的极性,一般长引脚是发光二极管的正极,短脚是发光二极管的负极,不要接错。

可用锁紧口插座方面烧写程序

焊接时所用的DIP-40芯片插座

焊接电路板正面

步骤5:焊接好电路板进行调试

51单片机电源要加5v不能太高,否则会烧坏芯片。前两天刚自己做好一个可调稳压电源,调节好电源5V,在没接电源之前一定要先检查一下焊接的电路板,主要看看极性有没有接错,有没有虚焊、漏焊等。检查没有问题可以通电试验。

南北绿灯亮东西红灯亮进行中

南北红灯亮东西绿灯亮进行中

南北黄灯亮东西黄灯亮等待下一循环中

以上是为各位刚学单片机朋友提供了开发的思路和经验,可以让大家从实践过程中提高自己发现问题、分析问题、解决问题的能力。 想学好单片机这门技术,只能是拿起烙铁焊电路,动手写程序,我们在学习技术的时候,一定要多动脑筋,遇到问题后,三思而后问。每天前进一小步,坚持一段时间后回头看看,就会发现你学会了很多。

欢迎刚学习单片机的小伙伴们转载、讨论。感觉喜欢的朋友给个赞哦!!

51系列单片机汇编语言实现简单的交通灯控制

十字路口交通灯控制

四个路口各有红、绿2个LED,模拟交通灯的控制,即东西走向的灯变红,南北走向的灯应该变绿,反之亦然。

电路图和代码如下:

相关问答

交通灯单片机 接法?

1,单片机1只,如果单片机要使用外部振荡器,+1个晶体两个电容;2,红色、绿色、黄色LED灯若干个;3,用于对LED限流的电阻若干个;4,5V直流电源1个或干电池3...1,...

我想要 单片机 控制 交通灯 系统的论文,谁知道请发362242314@qq...

[回答]交通灯资料建议百度搜“梦想科技”论坛资料下载专区,更多完整的方案呢Mcuend工作室成立于09年05月份。Mcuend工作室是一个由南京理工大学在校教师...

什么是 交通灯 ?

交通灯是各个国家管理交通的重要工具,是城市交通最重要的组成部分,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,...

童鞋们,急需帮忙! 交通灯 控制逻辑电路设计?工业控制电路设计...

[回答]1.设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒;2.要求黄灯先亮5秒,才能变换运行车...

为什么自己设计不出来 单片机程序 ?该怎么做?

设计编写单片机程序是一个渐进的过程不可一蹴而就,毕竟单片机程序是与硬件有密切关系的,我们一般称为单片机程序叫底层硬件驱动程序。编写程序不但要对软件要熟...

红绿灯能连蓝牙吗?

哈哈,这个问题真有趣!红绿灯和蓝牙是完全不同的东西,它们的功能和用途也不一样。红绿灯是用来控制交通流量的信号灯,而蓝牙是一种无线通信技术,用于在短距离...

科技小制作红绿灯的制作原理是什么?

主要看你用什么设备。比如用plc还有单片机。用到这些东西你首先需要一定的基础知识,才能制作出红绿灯来。主要看你用什么设备。比如用plc还有单片机。用到这...

交通信号灯的单片系统是什么?

靠的是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机Intel8031和可编程并行I/O接口芯片8255A...就是先设计一个时...

物联网如何打造智慧城市?

什么是智慧城市?借助数字技术和大数据致力于改善人民生活的城市是智慧城市。一个智慧城市是城市地区使用不同类型的电子的传感器来收集数据,然后使用从中获得...

红绿灯讯号机怎么把倒计时显示到LED屏?我测量了下都是220V的...

倒计时里的单片机测的每个灯亮的时间,然后驱动LED显示描述的不是很详细,LED一般是弱电控制工作的,220V是强电了,或许LED灯内部有稳压装置和控制电路。3条回答...

猜你喜欢