這是我畢業設計的題目餐廳語音播放系統的碼源,用keil編的,資料包括所使用的元器件和語音模塊的說明說和電路圖。
0.png (69.42 KB, 下載次數: 147)
下載附件
2017-5-14 18:50 上傳
單片機源程序如下:
- #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)
2017-5-14 18:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|