标题: 单片机简易交通灯设计 [打印本页]

作者: 大咖喝咖    时间: 2019-8-14 18:35
标题: 单片机简易交通灯设计
功能介绍:十字路口的交通灯,对向方向两两轮流放行,并通过数码管显示倒计时


特点:不使用锁存器控制数码管,通过对P3口发送16进制数值对其整体控制,但是共阴数码管用单片机直驱时亮度并不高


主要硬件介绍:STC89C52RC单片机,晶振11.0592MHz


/* 函数定义 */
void delay(uint z);                //毫秒级延时函数
void EW_Straight(void);            //东西直行函数
void EW_LeftTurn(void);            //东西左转函数
void SN_Straight(void);            //南北直行函数
void SN_LeftTurn(void);            //南北左转函数
void EW_YellowBling(void);        //东西黄灯函数
void SN_YellowBling(void);        //南北黄灯函数
void EWSN_YellowBling(void);    //东西南北黄灯函数

/* 数码管段选表 */
uchar code Digitron_Data[] = {

                0x6F,            //"0"
                0x0A,            //"1"
                0xF6,            //"2"
                0xCE,            //"3"
                0x9B,            //"4"
                0xCD,            //"5"
                0xED,            //"6"
                0x0E,            //"7"
                0xEF,            //"8"
                0xCF,            //"9"
};

部分代码预览2:
        for(t=31;t>0;t--)        //东西直行 31s
        {
            EW_Straight();        //东西直行函数
            de= t / 10;            //求模
            un = t % 10;        //求余
            for (i = 100; i > 0; i--)
            {                    //数码管动态循环显示 每次10ms共100次
                P1 = Digitron_Data[de];
                P3 = 0x04;            
                delay(5);        //数码管十位显示
                P1 = Digitron_Data[un];
                P3 = 0x08;            
                delay(5);        //数码管十位显示
            }
        }

部分代码预览3:
        for(t=3;t>0;t--)        //东西黄灯 3s
        {
            P1 = Digitron_Data[t];
            P3 = 0x08;            //数码管倒计时显示
            EW_YellowBling();    //东西黄灯函数   
            delay(1000);        //每次循环延时一秒钟
        }


Keil工程及代码:
Traffic Light原理图及PCB图.7z (782.8 KB, 下载次数: 14)

AD14工程(原理图及PCB):
Traffic Light程序.7z (18.96 KB, 下载次数: 10)

0.jpg (83.88 KB, 下载次数: 101)

0.jpg

0.jpg (86.07 KB, 下载次数: 106)

0.jpg





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1