历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2020年01月20日 | 51单片机交通灯系统设计(流程框图+硬件+源码)

2020-01-20 来源:51hei

这是老师要求做的项目,现在已经做好了,没有什么大问题。

一, 设计要求与方案论证

1.1设计要求:

1.1.1基本要求:

1、东西方向、南北方向均有红、黄、绿三种信号灯,初始红灯30秒,黄灯闪烁3秒,绿灯30秒,东西方向红灯时刻,南北方向绿灯,南北方向绿灯,东西方向红灯;

2、按键调节与控制功能,通过按键,可以控制某一个方向长时间绿灯,另一个方向长时间红灯;通过按键可以控制某一个方向的红灯时长,比如调整东西方向红灯40秒,绿灯20秒,于此同时,南北方向红灯20秒,绿灯40秒。

3、夜间模式按钮按下,所有方向显示黄灯闪烁

4、实时提醒灯亮的剩余时间


1.1.2拓展部分:

目前还没拓展

1.2系统基本方案选择和论证:

1.2.1单片机芯片的选择方案和论证:

STC公司生产的8051内核,CMOS工艺;


1.2.2数码管显示模块的选择方案和论证:

选择的是共阳的数码管,单片机的驱动能力不是很强,故此选择共阳数码管;。



1.2.3Led灯的选择方案与论证:

通过一个Led灯的电流大约是10ms。








1.3 电路设计最终方案

2.1  表数的产生由定时器T0产生

TH0=0xFC;TL0=0x67; 每1ms中断一下,对整个项目的标志量改变一下它的值。


2.2  略;







3.1 电路设计框图

3.2系统硬件描述

主要的硬件是89C51这个芯片进行输入输出控制。


3.3主要单元电路的设计

3.3.1单片机主控模块的设计


3.3.2数码管模块的设计


3.3.3Led灯模块的设计

3.3.4电源稳压模块


4.1程序流程框图

4.2 数码管模块流程图

4.3 按键调整模块设计框图


5.1 测试仪器

万能表对是否导通,是否短路进行检测。


5.2软件测试平台 Keil C51


5.3 硬件测试

5.3.1 显示模块测试

  

5.4 测试结果分析与结论

5.4.1测试结果分析

已经可以实现上述功能。

5.4.2测试结论

测试已经完成,已经可以实现了要求的功能。


作品总结

在这一次的作品制作过程中对万用表,c语言,Proteus的使用更加的得心应手,更加的熟练。


附录一:系统电路图



附录二:系统C程序

#include

#define              uint unsigned int;

#define  uchar unsigned char;


void  DigitalTube();   //数码管显示函数

void  InterruptT0();              //内部中断0


sbit  P10 = P1^0;                            //红绿灯引脚的初始化

sbit  P11 = P1^1;

sbit  P12 = P1^2;

sbit  P13 = P1^3;

sbit  P14 = P1^4;

sbit  P15 = P1^5;


sbit  P16 = P1^6;                            //数码管使能控制

sbit  P17 = P1^7;

sbit  P20 = P2^0;

sbit  P21 = P2^1;


sbit  K22 = P2^2;                 //按键22

sbit  K23 = P2^3;

sbit  K24 = P2^4;

sbit dula = P2^5;


uint LedBuf[10] = {

                              0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

                            0x80,0x90

};                            //0~9的数字显示共阳


uint Kflag = 1;                              //按键24的标志

uint LedNumNS = 27;                 //南北的数字显示

uint LedNumEW = 30;                 //东西的数字显示

uint i = 0;

uint j = 0;

uint j1 = 0;

uint k = 0;

uint g = 0;

uint z = 0;                                          //计数及状态的变量


uint LedTime1 = 30;

uint LedTime2 = 27;

uint LedTime3 = 30;

uint LedTime4 = 27;


uint Kf22 = 1;              //按键前一个状态的值

uint Kf23 = 1;

uint Kf24 = 1;

uint KSta24 = 1;              //按键的当前值

uint KSta23 = 1;

uint KSta22 = 1;  

uchar Kflag22 = 0;              //按键22的switch函数参数


void main()

{

              EA = 1;                                          //开总中断

              ET0 = 1;                            //开内部中断0

              TR0 = 1;

              TMOD = 0x01;                 //方式1

              TH0 = 0xFC;

              TL0= 0x67; //1ms中断

              P1 = 0xEE;                            //


              while(1)

              {

                            DigitalTube();              //数码管显示

              }


}



void InterruptT0() interrupt 1

{

                                                        TH0 = 0xFC;

                                                        TL0 = 0x67; //1ms中断             

                                                        i++;             

                                                        k++;

                                         

                                                        KSta24 = K24;                                //按键K24  夜间模式

                                                        if(Kf24 != KSta24)                            //按键有动作

                                                        {

                                                                      if(Kf24 == 1)                            //按键按下

                                                                      {

                                                                                    Kflag = !Kflag;                           

                                                                      }

                                                                      Kf24 = KSta24;

                                                        }

                                         



                                          KSta23 = K23;                                //按键K23  增减时长

                                          if(Kf23 != KSta23)                            //按键有动作

                                          {

                                                        if(Kf23 == 1)                            //按键按下

                                                        {

                                                        //              LedTime = LedTime +2;

                                                                      LedTime1 = LedTime1 +5;              //32  34 36 38 30

                                                                      LedTime2 = LedTime2 +5;              //25  23 21  19 17

推荐阅读

史海拾趣

Bay Linear Inc公司的发展小趣事

作为一家有社会责任感的企业,Bay Linear Inc公司始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与公益事业和社会活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上五个故事是基于电子行业的一般发展情况和商业常识创作的,旨在展示一个电子企业可能的发展路径和关键节点。请注意,这些故事并非基于Bay Linear Inc公司的真实历史,读者在了解该公司时,应参考其官方资料和相关报道。

岑科(CENKER)公司的发展小趣事

岑科公司成立于2001年,初期主要从事电子元器件的贸易业务。在创始人蔡旌章的带领下,岑科以优质的服务和灵活的运营策略,在国内外市场上赢得了良好的口碑。这一时期,岑科的服务对象主要是海内外的电子元器件需求商,通过精准把握市场需求和优质的产品供应,逐渐在电子元器件贸易领域站稳了脚跟。随着业务的不断拓展,岑科开始思考如何进一步提升自身的竞争力,以实现更长远的发展。

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc的崛起始于一次技术突破。公司研发团队成功开发出一种新型半导体材料,显著提高了电子设备的性能和能效。这一创新成果迅速在行业内引起关注,Capax Technologies Inc因此获得了大量订单和投资。随着技术的不断迭代和优化,Capax Technologies Inc逐渐在电子行业中崭露头角,成为一家备受瞩目的创新型企业。

Excelight Communications Inc公司的发展小趣事

随着5G技术的兴起,光通信行业迎来了新的发展机遇。Excelight紧跟时代步伐,投入大量资源进行技术研发。在李明和团队的共同努力下,公司成功研发出了一款具有自主知识产权的高速光通信芯片,这一成果不仅填补了国内空白,还使Excelight在国际市场上占据了有利地位。

技术突破后,Excelight的产品性能得到了显著提升,同时也带动了整个产业链的升级。公司开始与更多的国内外企业建立合作关系,共同推动光通信行业的发展。

GS Technology公司的发展小趣事
首先,需要通过传感器或测量设备采集到需要显示的峰值信号。
CWIND公司的发展小趣事

在电子行业的早期阶段,CWIND公司以其卓越的技术研发能力脱颖而出。公司创始人张先生带领一支由资深工程师组成的团队,针对当时市场上电子产品普遍存在的功耗高、性能不稳定等问题,进行了深入研究。经过数月的努力,他们成功研发出了一款低功耗、高性能的芯片,这款芯片在市场上迅速获得了认可,为CWIND公司打开了市场的大门。随着技术的不断迭代和更新,CWIND逐渐在电子行业中建立了自己的技术壁垒。

问答坊 | AI 解惑

怎样选择台式示波器

几年前模拟示波器是台式示波器唯一的候选产品。现今,便宜的数字存储示波器(DSO)的推出,已经为工程师们提供了几十种可供选择的型号。----DSO是很有吸引力的,因为它可以存储波形、求信号平均,并支持各种触发和分析选件。但DSO并非都是一样的。 ...…

查看全部问答>

TOTA EMS(设备管理系统)简介

TOTA EMS(设备管理系统)简介生产设备,对一个制造型企业来说越来越重要,它是代表制造业先进生产力不可或缺的元素。目前,制造型企业所采用的生产设备是否更智能化,数量是否更多等,这些指标在一定程度上也标识了一个制造型企业的竞争力。然而如 ...…

查看全部问答>

DXP不能生成PCB,真心求救,挺着急的

大家好,我在做一个毕设,按照nRF2402的数据手册建好了原理图,protel dxp没有2402的封装,我就自己建了个库,可是怎么也编译不过去,真是挺着急的,我把我做的东西都传上来,麻烦大家帮忙看看,学生不尽感激..... 这是几张截图,大家能发现问题的 ...…

查看全部问答>

S3C6410 CAMERA 如何接收灰度图像

我有一个灰度显示的摄像头,也就是只有流明度信息 Y,一个BYTE表示一个像素点,看了S3C6410的手册,发现要么数据时YUV,要么是RGB, DMA后的内存组织方式是YUV三通道分量存储,或者是插入式存储,能够比较高效的直接将Y通道数据一一对应像素点的顺 ...…

查看全部问答>

关于NdisSend发送数据包的流量统计

        MPSendPackets(){ ....                        pAdapt->nTotalPacketsSeen[pVElan->NetworkConnection]++;       ...…

查看全部问答>

调试RDA出错

我调试下的RDA实例程序,提示LINK : fatal error LNK1104: cannot open file \'ca_mergex20.lib\' 我按照书中的提示已经在Tool|Options中将ca_mergex20.lib所在的路径添加了,可是还是提示找不到ca_mergex20.lib,请问各位是什么原因? 在线等待中... ...…

查看全部问答>

linux内核级定时中断执行用户级回调函数

各位大虾:      最近有个问题困扰小弟很长时间了,请帮帮忙给点启示,在此多谢了!      我在linux内核里实现了一个1ms的定时器驱动,每当定时器到期时会发生定时中断,我想在我的定时中断处理函数(驱 ...…

查看全部问答>

51单片机地址清零操作是?

51单片机地址清零操作是?…

查看全部问答>

三大浏览器GPU加速测试,有谁欢喜有谁愁?

  我们浏览网页必然需要浏览器,所以一个好的浏览器是至关重要的,可以保证我们浏览器网页、看视频、玩游戏的流畅和清晰。之前看到说Firefox和chrome都支持GPU硬件加速,前段时间发布的IE9Beta版据说也对GPU加速和Html5有着很好的支持,不知道效 ...…

查看全部问答>

有没有人在搞C8051F350啊??今天刚开始弄这个单片机

项目要求: 两线制电源供电,输出4~20mA电流信号(用XTR115处理电流及电源) 传感器模拟信号直接进入单片机的24位AD进行处理 RS232芯片可以与电脑进行通信(如果功耗允许的话会选择485通信) 4位数码管屏幕显示,3个按键操作 利用单片机的PWM输出电压 ...…

查看全部问答>