统更完善,更好的为人们服务。
最后还要感谢吴波指导老师在我进行毕业设计过程中对我的悉心指导以及同学们对我的帮助,正是有了大家的帮助,我才能顺利的完成毕业设计。在这里我衷心的对帮助过我的人表示感谢。
[参考文献]
[1]《电子系统设计(第三版)》何小艇.浙江大学出版社.2004 [2]《单片机原理与实践指导》 邓兴成.机械工业出版社.2006 [3]《模拟电子技术基础》 华成英,童诗白.高等教育出版社.2004 [4]网站参考: protues仿真论坛
[5] 李正浩.单片机在 LED 数码管显示中的应用[J].试验科学与技术.2006. 12 [6] 邓兴成.单片机原理与实践指导[M].机械工业出版社.2010.2 [7] 余成波.单片机实用技术与应用[M].清华大学出版社.2010.7
[8] 王平.单片机应用设计与制作:基于Keil和Proteus开发仿真平台 .清华大学出版社.2012.1
The bus stops automatic system dongshuai
Physics and Electronic Engineering School Electronic Engineering Department
[abstract] This design is mainly to solve how convenient and accurate instructions approaching passengers, with automatic detection bus station, simulation and forecast station stops on vocals, the number of stops and the name of the text display function. System including micro controller module, voice recording circuit, liquid crystal display module, the keyboard interface circuit, reset circuit and power supply. Systems use 51 SCM to control speech synthesis chip and LCD module. Platform detection using dry reed pipe detection. Speech synthesis ISD4004 chip, using simulated
data storage directly semiconductor of the storage of patent technology, is about to analog voice data directly to A single storage unit, do not need to pass A/D and D/A conversion, thus better able to truly represent speech natural effect, to avoid the general solid voice circuits for quantification and the quantization noise caused by compression and distortion. Cooperate with lcd1602 LCD screen display, and makes the newspaper stand system more practical.
[Key words] Single-chip microcomputer,Voice prompt,Liquid crystal display,Bus stops
附录:源程序
液晶初始化:
#include\#include\
#define uchar unsigned char #define uint unsigned int
#define delaynop() {_nop_();_nop_();_nop_();_nop_();} sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2;
bit LCD_busy_check(); void LCD_init();
void LCD_set_pos(uchar);
void LCD_Write_Command(uchar); void LCD_write_data(uchar);
void delayms(uint ms) {
uchar t;
while(ms--) for(t=0;t<120;t++); }
bit LCD_busy_check() {
bit result; RS=0; RW=1; EN=1; delaynop();
result=(bit)(P0 & 0x80); EN=0;
return result; }
void LCD_Write_Command(uchar cmd) {
while(LCD_busy_check()); RS=0; RW=0; EN=0; _nop_(); _nop_(); P0=cmd; delaynop(); EN=1; delaynop(); EN=0; }
void LCD_write_data(uchar str) {
while(LCD_busy_check()); RS=1; RW=0; EN=0; P0=str; delaynop(); EN=1; delaynop(); EN=0; }
void LCD_init() {
delayms(5); LCD_Write_Command(0x38); delayms(5); LCD_Write_Command(0x0c); delayms(5); LCD_Write_Command(0x06);
delayms(5); LCD_Write_Command(0x01); delayms(5); }
void LCD_set_pos(uchar position) {
LCD_Write_Command(position | 0x80); }
ISD4004主程序: #include
sbit LED1=P1^6; //指示灯:亮是录音/不亮是放音 sbit PR =P3^3; //录音和放音选择开关 sbit STOP=P3^4; //复位 sbit AN =P3^5; //执行
void delay(unsigned int time) //延迟n微秒 {
while(time!=0) { time--;
} }
void delayms(unsigned int time) //延迟n毫秒
{
TMOD=0x01; for(time;time>0;time--) { TH0=0xfc; TL0=0x18; TR0=1; while(TF0!=1) {;} TF0=0; TR0=0; } }
void isd_send(unsigned char isdx)//spi串行发送子程序,8位数据 {
unsigned char isx_counter; SS=0;//ss=0,打开spi通信端 SCLK=0;
for(isx_counter=0;isx_counter<8;isx_counter++)//先发低位再发高位,依次发送。 {
if((isdx&0x01)==1) MOSI=1; else MOSI=0; isdx=isdx>>1;