42、基于51单片机公交车语音播报加时间显示系统设计(原理图+PCB图+程序+开题报告+参考论文)

一、设计简介:

本设计是基于51单片机公交车语音播报加时间显示系统设计,主要实现以下功能:

1.本设计基于单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。


2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。


3.LCD12864液晶显示公交站名,并通过语音模块播放控制喇叭播放出来。


4.按键切换报站,可以实现向上报站、向下报站。


5.采用DS1302时钟芯片设计,可以显示年月日、时分秒星期,可以通过按键设置时间。


6.自带3V纽扣电池,当系统掉电后,纽扣电池供电给时钟芯片继续工作,再次上电无需重新设置时间,使用起来非常方便。

主要硬件组成:

51单片机+语音模块+LCD12864液晶+按键+喇叭

二、原理图 

三、PCB图 

四、 程序源码 

部分代码: 

        if(num == 6)       //报第6个站
            {
                write_string(1,0,gj_ming);
                write_string(2,0,table6);
            }
            if(num == 7)       //报第7个站
            {
                write_string(1,0,gj_ming);
                write_string(2,0,table7);
            }
            if(num == 8)       //报第8个站
            {
                write_string(1,0,gj_ming);
                write_string(2,0,table8);
            }
            if(num == 9)       //报第9个站
            {
                write_string(1,0,gj_ming);
                write_string(2,0,table9);
            }
         }
    }
    if(menu_1 != 0)
    {
        if(menu_1 == 1)          //设置年
        {
            if(key_can == 2)    //加键 
            {
                nian+=0x01;        //设置年加1 
                if((nian & 0x0f) >= 0x0a)
                    nian = (nian & 0xf0) + 0x10;
                if(nian >= 0x9a)
                    nian = 1;
            }        
            if(key_can == 1)    //减键       
            {
                if(nian == 0x01)
                    nian = 0x9a;
                if((nian & 0x0f) == 0x00)
                    nian = (nian | 0x0a) - 0x10;
                nian -- ;        //设置年减1
            }        
        }
        if(menu_1 == 2)          //设置月
        {
            if(key_can == 2)    //加键 
            {
                yue+=0x01;        //设置月加1
                if((yue & 0x0f) >= 0x0a)
                    yue = (yue & 0xf0) + 0x10;
                if(yue >= 0x13)
                    yue = 1;
            }        
            if(key_can == 1)    //减键       
            {
                if(yue == 0x01)
                    yue = 0x13;
                if((yue & 0x0f) == 0x00)
                    yue = (yue | 0x0a) - 0x10;
                yue -- ;        //设置月减1            
            }    
        }
        if(menu_1 == 3)          //设置日
        {
            if(key_can == 2)    //加键 
            {
                ri+=0x01;        //设置日加1
                if((ri & 0x0f) >= 0x0a)
                    ri = (ri & 0xf0) + 0x10;
                if(ri >= 0x32)
                    ri = 0;            
            }        
            if(key_can == 1)    //减键       
            {
                if(ri == 0x01)
                    ri = 0x32;
                if((ri & 0x0f) == 0x00)
                    ri = (ri | 0x0a) - 0x10;
                ri -- ;            //设置日减1
            }
        }
        if(menu_1 == 4)          //设置时
        {
            if(key_can == 2)    //加键 
            {
                shi+=0x01;        //设置时钟加1 
                if((shi & 0x0f) >= 0x0a)
                    shi = (shi & 0xf0) + 0x10;
                if(shi >= 0x24)
                    shi = 0;
            }        
            if(key_can == 1)    //减键 
            {
                if(shi == 0x00)
                    shi = 0x24;
                if((shi & 0x0f) == 0x00)
                    shi = (shi | 0x0a) - 0x10;
                shi -- ;        //设置时钟减1 
            }    
        }
        if(menu_1 == 5)          //设置分
        {
            if(key_can == 2)    //加键 
            {
                fen+=0x01;        //设置分钟加1 
                if((fen & 0x0f) >= 0x0a)
                    fen = (fen & 0xf0) + 0x10;
                if(fen >= 0x60)
                    fen = 0;
            }        
            if(key_can == 1)    //减键       
            {
                if(fen == 0x00)
                    fen = 0x5a;
                if((fen & 0x0f) == 0x00)
                    fen = (fen | 0x0a) - 0x10;
                fen -- ;       //设置分钟减1 
            }        
        }
        if(menu_1 == 6)          //设置秒
        {
            if(key_can == 2)    //加键 
            {
                miao+=0x01;        //设置秒钟加1 
                if((miao & 0x0f) >= 0x0a)
                    miao = (miao & 0xf0) + 0x10;
                if(miao >= 0x60)
                    miao = 0;
            }    
            if(key_can == 1)    //减键       
            {
                if(miao == 0x00)
                    miao = 0x5a;
                if((miao & 0x0f) == 0x00)
                    miao = (miao | 0x0a) - 0x10;
                miao -- ;        //设置秒减1        
            }
        }
        if(menu_1 == 7)          //设置星期
        {
            if(key_can == 2)    //加键 
            {
                week+=0x01;        //设置星期加1 
                if((week & 0x0f) >= 0x0a)
                    week = (week & 0xf0) + 0x10;
                if(week >= 0x08)
                    week = 1;
            }        
            if(key_can == 1)    //减键       
            {
                if(week == 0x01)
                    week = 0x08;
                if((week & 0x0f) == 0x00)
                    week = (week | 0x0a) - 0x10;
                week -- ;        //设置星期减1
            }    
        }
        write_shu16(1,1,nian);       //显示年
        write_shu16(1,3,yue);       //显示月
        write_shu16(1,5,ri);       //显示日
        write_shu16(2,1,shi);       //显示时
        write_shu16(2,3,fen);       //显示分
        write_shu16(2,5,miao);       //显示秒
        write_shu16(3,5,week);       //显示星期                    
        switch(menu_1)       // 光标显示
        {
            case 1:  write_guanbiao(1,1,1);  break;
            case 2:  write_guanbiao(1,3,1);  break;
            case 3:  write_guanbiao(1,5,1);  break;
            case 4:  write_guanbiao(2,1,1);  break;
            case 5:  write_guanbiao(2,3,1);  break;

五、资源获取

本项目包含的所有文件都可以点击下面的名片,发送 “ 42、基于51单片机公交车语音播报加时间显示系统设计 ” 获取!
项目纯手打,不是免费的哦~
希望可以帮到你哈! 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值