这是我毕业设计的题目餐厅语音播放系统的码源,用keil编的,资料包括所使用的元器件和语音模块的说明说和电路图。
单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar yytable[]={0x7e,0x05,0x41,0x00,0x0b,0x4f,0xef, //请
- 0x7e,0x05,0x41,0x00,0x00,0x44,0xef, //0
- 0x7e,0x05,0x41,0x00,0x00,0x44,0xef, //0
- 0x7e,0x05,0x41,0x00,0x00,0x44,0xef, //0
- 0x7e,0x05,0x41,0x00,0x0e,0x4a,0xef, //号顾客
- 0x7e,0x05,0x41,0x00,0x0c,0x48,0xef, //dao
- 0x7e,0x05,0x41,0x00,0x00,0x44,0xef, //0
- 0x7e,0x05,0x41,0x00,0x00,0x44,0xef, //0
- 0x7e,0x05,0x41,0x00,0x0d,0x49,0xef}; //号餐桌就餐
- uchar yinjia[]={0x7e,0x03,0x15,0x16,0xef};
- uchar yinjian[]={0x7e,0x03,0x16,0x15,0xef};
- uchar xstable[]={0xc7,0Xeb,0xa3,0xb0,0xa3,0xb0,0xa3,0xb0,0xba,0xc5,0xb9,0xcb,0xbf,0xcd,0xa2,0xa0,
- 0xb5,0xbd,0xa3,0xb0,0xa3,0xb0,0xba,0xc5,0xb2,0xcd,0xd7,0xc0,0xbe,0xcd,0xb2,0xcd};
- //请00 0号顾客_ 0x80 0x81 0x82 0x83 0x83 0x84 0x85 0x86
- //到00号餐桌就餐
- sbit rs=P1^0;
- sbit rw=P1^1;
- sbit e=P1^2;
- sbit psb=P1^3;
- void write_12864com(uchar com);
- void write_12864dat(uchar dat);
- void initial(void);
- void display(void);
- void send_cmd(uchar dat);
- void send_yytable(void);
- void Serial_init(void);
- //****************************
- //在12MHz的晶振下,延时5us
- //*****************************
- void delay_50us(uint t)
- {
- uchar j;
- for (; t>0;t--);
- for (j=19; j>0;j--);
- }
- //****************************
- //在12MHz的晶振下,延时50ms
- //*****************************
- void delay_50ms(uint t)
- {
- uint j;
- for (; t>0;t--);
- for (j=6245; j>0;j--);
- }
- void Delay_Ms(int z)
- {
- int x=0 , y=0;
- for(x=110 ; x>0 ;x--)
- for(y=z; y>0;y-- );
- }
- void main ()
- { uchar b;
- uint i;
-
-
- uint Key_flag;
- uchar key_l;
- uchar key_h;
- uchar key;
- uchar xs7=0xb0;
- uchar xs5=0xb0;
- uchar xs3=0xb0;
- uchar yy11=0x00;
- uchar yy18=0x00;
- uchar yy25=0x00;
- uchar jy ;
- Key_flag=0;
- Serial_init();//串口初始化
- initial();//液晶初始化
- display();
- while(1)
- { //jianpan
-
-
- P2=0xf0;
- key_l=P2;
- key=0x00;
- key_l=key_l&0xf0; //
- if (key_l!=0xf0)
- {
- delay_50us(100);
- if (key_l!=0xf0)
- {
- key_l=P2&0xf0;
- key_l=key_l|0x0f;
- P2=key_l;
- key_h=P2;
- key_h=key_h&0x0f;
- key_l=key_l&0xf0;
- key=key_l+key_h;
-
- }
-
- }
-
- switch (key)
- {
- case 0xee:
- if (Key_flag%2==0) //Key_flag偶数
- {Key_flag++;
- xstable[19]=0xb1; //显示餐桌号1_
- yytable[46]=0x01; //语音餐桌号1_
- yytable[47]=0x45;
- display();
- delay_50ms(50000) ;
- }
- else //(Key_flag%2==0) Key1_flag奇数
- {
- Key_flag++;
- xstable[21]=0xb1; //显示餐桌号_1
- yytable[53]=0x01; //语音餐桌号_1
- yytable[54]=0x45;
-
- display();
- delay_50ms(50000) ;
- }
- break;
- case 0xde:
-
- if(Key_flag%2==0) //Key_flag偶数
- {Key_flag++;
- xstable[19]=0xb2; //显示餐桌号2_
- yytable[46]=0x02; //语音餐桌号2_
- yytable[47]=0x46;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb2; //显示餐桌号_2
- yytable[53]=0x02; //语音餐桌号_2
- yytable[54]=0x46;
- display();
- delay_50ms(50000) ;
- } break;
- case 0xbe:
-
- if (Key_flag%2==0) //Key_flag偶数
- {Key_flag++;
- xstable[19]=0xb3; //显示餐桌号3_
- yytable[46]=0x03; //语音餐桌号3_
- yytable[47]=0x47;
- display();
- delay_50ms(50000) ;}
-
- else //Key1_flag奇数
- {Key_flag++;
- xstable[21]=0xb3; //显示餐桌号_3
- yytable[53]=0x03; //语音餐桌号_3
- yytable[54]=0x47;
- display();
- delay_50ms(50000) ;
- } break;
- case 0x7e: xs7=0xb0;
- xs5=0xb0;
- xs3=0xb0;
- yy25=0x00;
- yy18=0x00;
- yy11=0x00;
- xstable[7]=0xb0; //顾客号归零
- xstable[5]=0xb0;
- xstable[3]=0xb0;
- yytable[25]=0x00;
- yytable[26]=0x44;
- yytable[18]=0x00;
- yytable[19]=0x44;
- yytable[11]=0x00;
- yytable[12]=0x44;
- Key_flag=0;
- display();
- break;
- case 0xed:;
-
- if (Key_flag%2==0) //Key_flag奇数
- {Key_flag++;
- xstable[19]=0xb4; //显示餐桌号4_
- yytable[46]=0x04; //语音餐桌号4_
- yytable[47]=0x40;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb4; //显示餐桌号_4
- yytable[53]=0x04; //语音餐桌号_4
- yytable[54]=0x40;
- display();
- delay_50ms(50000) ;
- } break;
- case 0xdd:
-
- if (Key_flag%2==0) //Key_flag奇数
- {Key_flag++;
- xstable[19]=0xb5; //显示餐桌号5_
- yytable[46]=0x05; //语音餐桌号5_
- yytable[47]=0x41;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb5; //显示餐桌号_5
- yytable[53]=0x05; //语音餐桌号_5
- yytable[54]=0x41;
- display();
- delay_50ms(50000) ;
- } break;
- case 0xbd:
-
- if (Key_flag%2==0) //Key_flag奇数
- {Key_flag++;
- xstable[19]=0xb6; //显示餐桌号6_
- yytable[46]=0x06; //语音餐桌号6_
- yytable[47]=0x42;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb6; //显示餐桌号_6
- yytable[53]=0x06; //语音餐桌号_6
- yytable[54]=0x42;
- display();
- delay_50ms(50000) ;
- } break;
- case 0x7d:
- if (xs7==0xb9)
- {
-
- if (key_l!=0xf0)
- {
- delay_50us(100);
- if (key_l!=0xf0)
- {
- xs7=0xb0;
- xstable[7]=xs7;
- xs5++;
- xstable[5]=xs5; //? 显示顾客号0X0变为0+0
- yy25=0x00;
- yytable[25]=yy25; // 语音顾客号009变为000
- yytable[26]=0x44;
- yy18++;
- yytable[18]=yy18; //? 语音顾客号0X0变为0+0
- jy=0x05^0x41^yy18;
- yytable[19]=jy;
- display();}
- }}
- else if (xs5==0xb9)
- {
-
- if (key_l!=0xf0)
- {
- delay_50us(100);
- if (key_l!=0xf0)
- {
- xs5=0xb0;
- xstable[5]=xs5;
- xs3++;
- xstable[3]=xs3;
- yy18=0x00;
- yytable[19]=0x44;
- yytable[18]=yy18; //? 语音顾客号X90变为X00
- yy11++;
- yytable[11]=yy11; // 语音顾客号X00变+00
- jy=0x05^0x41^yy11;
- yytable[12]=jy;
- display();}
- }}
- else
- {Key_flag++;
- yy25++;
- yytable[25]=yy25; //? 语音播放顾客号000+1
- jy=0x05^0x41^yy25;
- yytable[26]=jy;
- xs7++;
- xstable[7]=xs7; //显示屏顾客号000+1
- delay_50ms(2000) ;
- display();
- send_yytable();}
- break;
- case 0xeb:
-
- if (Key_flag%2==0) //Key_flag奇数
- { Key_flag++;
- xstable[19]=0xb7; //显示餐桌号7_
- yytable[46]=0x07; //语音餐桌号7_
- yytable[47]=0x43;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- { Key_flag++;
- xstable[21]=0xb7; //显示餐桌号_7
- yytable[53]=0x07; //语音餐桌号_7
- yytable[54]=0x43;
- display();
- delay_50ms(50000) ;
- } break;
- case 0xdb:
-
- if (Key_flag%2==0) //Key_flag奇数
- {Key_flag++;
- xstable[19]=0xb8; //显示餐桌号8_
- yytable[46]=0x08; //语音餐桌号8_
- yytable[47]=0x4c;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb8; //显示餐桌号_8
- yytable[53]=0x08; //语音餐桌号_8
- yytable[54]=0x4c;
- display();
- delay_50ms(50000) ;
- } break;
- case 0xbb:
-
- if (Key_flag%2==0) //Key_flag奇数
- {
-
- Key_flag++;
- xstable[19]=0xb9; //显示餐桌号9_
- yytable[46]=0x09; //语音餐桌号9_
- yytable[47]=0x4d;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0xb9; //显示餐桌号_9
- yytable[53]=0x09; //语音餐桌号_9
- yytable[54]=0x4d;
- display();
- delay_50ms(50000) ;
- }break;
- case 0x7b:
- for (i=0;i<5;i++)
- { b=yinjia[i];
- send_cmd(b);}break;
- case 0xe7:
- for (i=0;i<5;i++)
- { b=yinjian[i];
- send_cmd(b);}break;
- case 0xd7:
-
- if (Key_flag%2==0) //Key_flag奇数
- {Key_flag++;
-
- xstable[19]=0xb0; //显示餐桌号0_
- yytable[46]=0x00; //语音餐桌号0_
- yytable[47]=0x44;
- display();
- delay_50ms(50000) ;}
- else //Key1_flag偶数
- {Key_flag++;
- xstable[21]=0x00; //显示餐桌号_0
- yytable[53]=0x00; //语音餐桌号_0
- yytable[54]=0x44;
- display();
- delay_50ms(50000) ;
- }break;
- case 0xb7: Key_flag++;
- yy25--;
- yytable[25]=yy25; //? 语音播放顾客号000-1
- jy=0x05^0x41^yy25;
- yytable[26]=jy;
- xs7--;
- xstable[7]=xs7; //显示屏顾客号000-1
- display();
- send_yytable();
- delay_50ms(50000) ;
-
- break;
- }
-
-
- }}
- void write_12864com (uchar com)
- {
- rw=0;
- rs=0;
- delay_50us(1);
- P0=com;
- e=1;
- delay_50us(10);
- e=0;
- delay_50us(2);
- }
- void write_12864dat (uchar dat)
- {
- rw=0;
- rs=1;
- delay_50us(1);
- P0=dat;
- e=1;
- delay_50us(10);
- e=0;
- delay_50us(2);
- }
- void initial(void)
- { delay_50ms(2);
- write_12864com(0x30);
- delay_50us(4);
- write_12864com(0x30);
- delay_50us(4);
- write_12864com(0x0c); //显示开关,光标,白底都开,00001111,0c 00001100光标和白底都关了
- delay_50us(4);
- write_12864com(0x01);//清屏
- delay_50us(300);
- write_12864com(0x06);//模式设置
- delay_50us(10);
- }
- void display(void)
- {
- uchar i;
- write_12864com(0x80);
- delay_50us(1);
- for(i=0;i<32;i++)
- {
- write_12864dat(xstable[i]);
- delay_50us(1);
- }}
- /******************************************************************************
- - 功能描述: 串口1初始化
- - 注: 设置为9600波特率
- ******************************************************************************/
- void Serial_init(void)
- {
- TMOD = 0x20; // 设置 T1 为波特率发生器
- SCON = 0x50; // 0101,0000 8位数据位, 无奇偶校验
- PCON = 0x00; //PCON=0;
- TH1=0xfd;//设置为9600波特率
- TL1=0xfd;
- TR1 = 1; //定时器1打开
- REN = 1; //串口1接收使能
- ES = 1; //串口1中断使能
- }
- /*********************************************************************************
- * 【函 数 名】: void send_cmd(uchar dat)
- * 【功 能】: 串口发送数据命令
- **********************************************************************************/
- void send_cmd(uchar dat)
- {
- SBUF=dat; //发送指令到SBUF
- while(!TI); //等待发送结束
- TI=0; //清除结束标志,以便再发送数据
- }
- void send_yytable(void)
- { uchar a;
- Delay_Ms(500);
- a=yytable[0];
- send_cmd(a);
- a=yytable[1];
- send_cmd(a);
- a=yytable[2];
- send_cmd(a);
- a=yytable[3];
- send_cmd(a);
- a=yytable[4];
- send_cmd(a);
- a=yytable[5];
- send_cmd(a);
- a=yytable[6];
- send_cmd(a);
- Delay_Ms(800);
- a=yytable[7];
- send_cmd(a);
- a=yytable[8];
- send_cmd(a);
- a=yytable[9];
- send_cmd(a);
- a=yytable[10];
- send_cmd(a);
- a=yytable[11];
- send_cmd(a);
- a=yytable[12];
- send_cmd(a);
- a=yytable[13];
- send_cmd(a);
- Delay_Ms(800);
- a=yytable[14];
- send_cmd(a);
- a=yytable[15];
- send_cmd(a);
- a=yytable[16];
- send_cmd(a);
- a=yytable[17];
- send_cmd(a);
- a=yytable[18];
- send_cmd(a);
- a=yytable[19];
- send_cmd(a);
- a=yytable[20];
- send_cmd(a);
- Delay_Ms(800);
- a=yytable[21];
- send_cmd(a);
- a=yytable[22];
- send_cmd(a);
- a=yytable[23];
- send_cmd(a);
- a=yytable[24];
- send_cmd(a);
- a=yytable[25];
- send_cmd(a);
- a=yytable[26];
- send_cmd(a);
- a=yytable[27];
- send_cmd(a);
- Delay_Ms(800);
- a=yytable[28];
- send_cmd(a);
- a=yytable[29];
- send_cmd(a);
- a=yytable[30];
- send_cmd(a);
- a=yytable[31];
- send_cmd(a);
- a=yytable[32];
- send_cmd(a);
- a=yytable[33];
- send_cmd(a);
- a=yytable[34];
- send_cmd(a);
- Delay_Ms(1300);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
语音播放系统.rar
(7.31 MB, 下载次数: 89)
|