当前位置: 代码网 > 科技>人工智能 > 24、基于51单片机公交车语音播报加时间显示系统设计

24、基于51单片机公交车语音播报加时间显示系统设计

2024年07月31日 人工智能 我要评论
本设计介绍了基于单片机的公交车语音报站系统的设计,对系统软件设计和硬件实现进行了详细的描述,主要内容是用51单片机为核心控制元件,WT588D语音芯片为录音模块,以液晶屏为显示模块,以独立按键为输入设备,扬声器为语音输出设备,设计一个带语音报站和液晶显示功能的公交车报站系统。本系统运行稳定,硬件电路简单,软件功能完善,控制系统可靠,具有一定的实用和参考价值。而通过单片机和语音芯片的结合,使得公交车到站信息及提示信息以语音和显示的方式告知乘客,为市民提供更人性化,完善的服务,并且节省了大量的人力资源。

摘 要

 

随着国民经济的快速发展,我国城市人口高度集中并大幅增长, 交通需求不断扩大导致城市道路交通拥挤,乘坐公交车出行是解决我国城市交通发展问题和实践低碳环保绿色出行的有效途径,随着近年来城市公交事业迅速发展,之前靠售票员报站的方式已经不能满足实际需要,在到站后能够及时报站的公交车语音报站系统不但能解决这个实际问题也有助于提高公交服务质量。
本设计介绍了基于单片机的公交车语音报站系统的设计,对系统软件设计和硬件实现进行了详细的描述,主要内容是用51单片机为核心控制元件,wt588d语音芯片为录音模块,以液晶屏为显示模块,以独立按键为输入设备,扬声器为语音输出设备,设计一个带语音报站和液晶显示功能的公交车报站系统。先将语音内容通过录音键录入语音芯片中,当按下放音键时,语音模块进行放音同时通过液晶屏显示对应的文字信息。本系统运行稳定,硬件电路简单,软件功能完善,控制系统可靠,具有一定的实用和参考价值。

关键词: 单片机 语音提示 液晶屏 公交报站

一、硬件方案

硬件组成:单片机+语音模块+lcd12864液晶+按键+喇叭而成。

二、设计功能

1.本设计基于单片机型号:stc89c52/51、at89c52/51、at89s52/51都可通用。
2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。
3.lcd12864液晶显示公交站名,并通过语音模块播放控制喇叭播放出来。
4.按键切换报站,可以实现向上报站、向下报站。
5.采用ds1302时钟芯片设计,可以显示年月日、时分秒星期,可以通过按键设置时间。
6.自带3v纽扣电池,当系统掉电后,纽扣电池供电给时钟芯片继续工作,再次上电无需重新设置时间,使用起来非常方便。

三、成品实物图

 四、原理图 

五、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;

资料包括:

需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com