历史上的今天
返回首页

历史上的今天

今天是:2024年11月04日(星期一)

正在发生

2020年11月04日 | 51单片机控制模拟交通信号灯

2020-11-04 来源:51hei

采用单片机的I/O口PO口通过上拉电阻和交通灯相连接,P3.0、P3.1口接到数码管控制位上,控制数码管的显示,程序放在STC89C52RC单片机的ROM中,在十字路口的四组红、黄、绿交通灯中,由单片机的 P1.0-P1.2 、P1.5-P1.7、P2.0-P2.2、P2.5-P2.7控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极相连,因此I/0口输出低电平时,与之相连的指示灯会亮,并通过数码管显示时间倒计时。I/0口输出高电平时,相应指示灯会灭。当交通出现障碍需要恢复到初始状态时,按下复位键即可,此键由单片机的9脚RST键控制。

制作出来的实物图如下:


Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
 

主函数:
//主程序
void main()
{
        TMOD=0X11;                                           //定时器设置
        TH1=0X3C;               
        TL1=0XB0;
        TH0=0X3C;                                        //定时器0置初值 0.05S
        TL0=0XB0;
        EA=1;                                                //开总中断
        ET0=1;                                                //定时器0中断开启
        ET1=1;                                           //定时器1中断开启
        TR0=1;                                                //启动定时0
        TR1=0;                                                         //关闭定时1
        EX0=1;                                                //开外部中断0
        EX1=1;                                                //开外部中断1

        P1=0X21;                                        // 开始默认状态,东西绿灯,南北黄灯   
    sec_nb=sec_dx+5;                         //默认南北通行时间比东西多5秒
        while(1)                                          //主循环
        {         
                key();                                         //调用按键扫描程序
                display();                                 //调用显示程序
        }        
}
//函数的定义部分
void key(void)        //按键扫描子程序
{         
        
if(k1!=1)                                                        //当K1(禁止)键按下时
        {
                   display();                                       //调用显示,用于延时消抖
                   if(k1!=1)                                                //如果确定按下
                   {         
                    TR0=0;                                                //关定时器
                        P1=0X00;
                        Red_dx=1;
                        Red_nb=1;                                        //全部置红灯
                        TR1=0;
                        sec_dx=00;                                        //四个方向的时间都为00
                        sec_nb=00;
                        do
                        {
                                display();                                 //调用显示,用于延时
                        }        
                        while(k1!=1);                        //等待按键释放        
                   }
        }
        if(k2!=1)                                                        //当K2(确认)键按下时
        {        
                display();                                       //调用显示,用于延时消抖
                if(k2!=1)                                                //如果确定按下
                {
                        TR0=1;                                                  //启动定时器0
                        sec_nb=set_timenb;                                //从中断回复,仍显示设置过的数值
                        sec_dx=set_timedx;                                //显示设置过的时间
                        TR1=0;                                                          //关定时器1        
                        if(set==0)                                                //时间倒时到0时
                        {
                                P2=0X00;                                         //灭显示
                                Green_dx=1;                                                //东西绿灯亮
                                Red_nb=1;                                        //南北红灯亮
                                sec_nb=sec_dx+5;                         //回到初值
                        }
                        else
                        {
                                P2=0x00;                                        //南北绿灯,东西红灯
                                Green_nb=1;
                                Red_dx=1;
                                sec_dx=sec_nb+5;
                        }
                }
        }        
}

推荐阅读

史海拾趣

汇顶科技(GOODiX)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐系统中的重要组成部分。从广义上讲,任何与电视机连接的网络终端设备均可称为机顶盒,它们能够接收并转换来自不同信号源的数字信号,使之成为适合在电视上播放的格式。从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。

数字机顶盒主要负责实现数模转换功能,让传统模拟电视机也能观看数字电视节目,包括有线电视、卫星电视和地面广播电视的数字机顶盒。它们通过内置的调谐器接收信号,经解调器和解码器处理后,将数字信号转化为电视可识别的视频和音频流。

而网络机顶盒则进一步扩展了机顶盒的功能,它不仅能接收电视信号,还能接入互联网,提供诸如在线视频、游戏、应用程序下载等多元化服务。网络机顶盒支持高清、甚至超高清视频播放,结合智能技术,还能实现语音控制、智能推荐等便捷功能。此外,网络机顶盒还具备强大的内容分发和管理能力,通过与各大内容提供商合作,为用户提供丰富多样的节目资源。

随着科技的进步,机顶盒的发展趋势将更加注重技术升级、内容创新和用户体验。未来,机顶盒将在家庭娱乐系统中扮演更加重要的角色,为用户带来更为优质、便捷、智能的观影体验。

G-Mag Usa公司的发展小趣事

进入21世纪后,G-Mag意识到单一产品线难以满足市场多元化需求,于是开始实施并购扩张战略。2005年,G-Mag成功收购了国内一家领先的电子元器件制造商,这次收购不仅增强了G-Mag在供应链上的控制力,还为其带来了丰富的产品线和技术储备。随后几年,G-Mag又陆续完成了对多家在传感器、无线通信等领域具有优势企业的并购,逐步构建起了一个覆盖电子产业链上下游的庞大帝国。通过并购,G-Mag不仅实现了业务的快速增长,还巩固了其在电子行业中的领先地位。

Cogent_Computer_Systems公司的发展小趣事

Cogent_Computer_Systems公司在成立之初,便以其独特的技术创新在电子行业中崭露头角。公司研发团队成功开发出一款高性能的计算机芯片,该芯片在运算速度和能效比方面均达到了行业领先水平。这一技术突破迅速吸引了众多客户的关注,Cogent_Computer_Systems公司也因此获得了大量的订单。随着市场需求的不断增长,公司逐渐扩大生产规模,优化供应链管理,实现了业务的快速扩张。

BESTECH公司的发展小趣事

在电子行业中,技术创新是企业发展的核心驱动力。Cogent_Computer_Systems公司深知这一点,因此始终坚持将大量资金投入研发领域。公司建立了一支高素质的研发团队,并配备了先进的研发设备。通过持续不断的研发投入,公司成功推出了一系列具有创新性的产品,满足了市场不断变化的需求。这种以研发驱动的发展模式使得公司在激烈的市场竞争中始终保持领先地位。

Big-Sun Electronics Co Ltd公司的发展小趣事

品质是Big-Sun Electronics Co Ltd公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。同时,Big-Sun还注重品牌建设,通过广告宣传和客户服务,不断提升品牌知名度和美誉度。

Electrocube Inc公司的发展小趣事

在稳固国内市场的同时,Electrocube Inc公司积极开拓国际市场。公司参加了多个国际电子展会,与全球知名电子企业建立了广泛的合作关系。通过不断的市场拓展,Electrocube Inc公司的产品已经远销欧美、亚洲等多个国家和地区,实现了跨越式的发展。

问答坊 | AI 解惑

数字电视标准之争:市场说了算

 持续了六年的数字电视地面传输标准之争终于尘埃落定。曾经水火不相容的清华、上交大、广科院三个标准方案最终将以集合各自特色技术的“融合标准”方案面世。但是,这并不意味着三方都能成为最终标准的获益者,因为标准必须经历一年试用期,届 ...…

查看全部问答>

Protel DXP2004教程(原理图,PCB)下载

rotel DXP2004教程(原理图,PCB)下载 [ 本帖最后由 shuijian 于 2008-10-21 17:23 编辑 ]…

查看全部问答>

青越锋--PCB设计软件菜单注释

File--> New  (Ctrl+N):新建原理图文件           Open  (Ctrl+O):打开已有一个原理图文件           Close (Ctrl+F4):关闭已打开的某一个原理图   & ...…

查看全部问答>

分享一个毕业设计《可编程霓虹灯图形动态广告控制器的设计》

可编程霓虹灯图形动态广告控制器的设计 摘要 本文结合国内外霓虹灯控制技术的发展状况设计了一种采用美国ATMEL公司生产的AVR系列单片机中的ATmega8作控制芯片的霓虹灯控制器.通过ATmega8芯片控制驱动电路,在由驱动电路驱动继电器,而继电器则作 ...…

查看全部问答>

晶闸管调压不稳的问题

用热电偶测温,经单片机pid调节,触发固态继电器实现线性升温 但当电网电压变化时,升温曲线不稳定,很不线性 原因到底出在哪里呢,高次谐波?继电器?pid参数?还是其它因素,希望大家各抒己见,十分希望能得到各位的帮助,谢谢!…

查看全部问答>

水尺计重软件,无线打印

我想在pda上实现水尺计重软件,也想用无线打印,不知道怎么实现pda的无线打印啊…

查看全部问答>

帮忙给我指点一下啊...急啊

我发过两篇了..但是一直都没人解答 我自己这样写了一段  你们给看看对吗 DSP有4个字节一个一个的往SPI上发送.然后与SPI上已计算出的一个字节进行比较 unsigned Rev_data(unsigned flag_msb)//这是一个接收返回函数,有关硬件的 { } ...…

查看全部问答>

2011电子设计大赛元件清单公布啦~

本帖最后由 paulhyde 于 2014-9-15 09:47 编辑 http://www.nuedc.com.cn/news.asp?bid=5&sid=20&id=631  …

查看全部问答>

STM32F103Z的AD采样寄存器为什么没有符号位!如何测量负电压!

STM32的内部AD,是12位的,板子上是有个电位器,是从0伏到3.28V。   采样的电压值是 0x0000-0x0fff   但是有个问题,怎么内部的AD采样值没有符号位呢,那怎么去测量负电压!…

查看全部问答>

【玩转ADuCM360】带个LCD --- VG-240-R01LCM(VG5188)

这个LCD型号是VG-240-R01LCM(VG5188),驱动芯片是R61503B 网上关于这个芯片的初始代码很少,昨天搞了一下,没有反应。今天继续! …

查看全部问答>