久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

具有語(yǔ)音播報(bào)功能的超聲波測(cè)距源程序電路圖

作者:未知   來(lái)源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月31日   【字體:

 

 

    具有語(yǔ)音播功能的超聲波測(cè)距器件清單:?jiǎn)纹瑱C(jī)、瓷片電容0.1uf、電解電容10uf、電解電容220uf、電解電容4.7uf、0.001uf(瓷片電容)22PF(瓷片電容)、LED小燈(5mm)、語(yǔ)音芯片、12864液晶、喇叭、咪頭、(話筒\、六腳插件(插針)、四腳插件(插針)、三腳插件(插針)、電阻1k、電位器1k、獨(dú)立按鍵(兩腳)、晶振。

    代碼如下:代碼還需要調(diào)試

 #include <reg52.h>
 #include<intrins.h>
//超聲波引腳定義
    sbit     RX    P1 ^ 1; //接超聲波模塊的Echo引腳
    sbit     TX    P1 ^ 2; //接超聲波模塊的Trig引腳。
//LCD12864引腳定義
    sbit     CS    P2 ^ 5; //片選 高電平有效 單片LCD使用時(shí)可固定高電平   接RS 引腳
    sbit     SID   P2 ^ 6; //數(shù)據(jù) 接RW引腳
    sbit     SCLK  P2 ^ 7; //時(shí)鐘 接E引腳


//ISD1820引腳定義
    sbit     REC   P2 ^ 4; //
sbit     PLAYE =  P2 ^ 3; //
sbit     PLAYL =  P2 ^ 2;   // 

 


//Function Definition 函數(shù)聲明
void Delay(int num);
void Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char dat);
unsigned int ReadTemperature(void);
void clock_out(unsigned char dd);
unsigned char clock_in(void);
unsigned char read_clock(unsigned char ord);
void write_clock(unsigned char ord, unsigned char dd);
void Disp(void);
void id_case1_key(void);
void id_case2_key(void);
void Set_time(unsigned char sel,bit sel_1);
void Timer0_Init(void);
void Init_1302(void);
void Set_Bell(unsigned char sel, bit sel_1);
void Bell(void);
//12864
void Write_char(bit start, unsigned char ddata);
void Send_byte(unsigned char bbyte);
void Delaynms(unsigned int di);
void Lcd_init(void);
void Disp_img(unsigned char *img);
void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_set_xy( unsigned char x, unsigned char y );
unsigned char code num[]={"0123456789 :.-"};
unsigned char code waves[]={"超聲波測(cè)距系統(tǒng)"};
unsigned char code znwk[] ={"距離:"};
unsigned char code CM[] =  {"M"};
unsigned int  time=0;
         long S=0;
         bit  flag =0;
unsigned char disbuff[4]   ={ 0,0,0,0,};
unsigned char code logo[]={ 
 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xE0,0x00,0x00,0x0C,0x00,0x00,0x40,0x70,0x00,0x00,0x00,0x80,0x00,
0x00,0x00,0x00,0xE0,0x00,0x00,0x1E,0x00,0x00,0x60,0x70,0x00,0x00,0x0F,0xE0,0x00,
0x00,0x00,0x01,0xC0,0x00,0x60,0x3C,0x00,0x00,0xE0,0x60,0x00,0x1F,0xFF,0xE0,0x00,
0x00,0x00,0x03,0x80,0x00,0x70,0x70,0x40,0x00,0xE0,0x7E,0x00,0x1F,0xE0,0xC0,0x00,
0x00,0x00,0x03,0x00,0x00,0x73,0xC3,0xF0,0x01,0xC3,0xFC,0x00,0x38,0xE1,0xC0,0x00,
0x00,0x03,0xC6,0x3C,0x00,0x33,0x9F,0xF0,0x03,0x8F,0xC0,0x00,0x30,0xC1,0xC0,0x00,
0x00,0x3F,0xEF,0xFE,0x00,0x03,0x1C,0xE0,0x07,0x01,0xCC,0x00,0x31,0xF1,0x80,0x00,
0x00,0x79,0xDF,0xBC,0x00,0x06,0x18,0xC0,0x0E,0x01,0xFE,0x00,0x77,0xF9,0x80,0x00,
0x00,0x01,0xB0,0x30,0x01,0xC6,0x19,0xC0,0x1E,0x7F,0xDE,0x00,0x6F,0x83,0x80,0x00,
0x00,0x23,0xAC,0x60,0x0F,0xE6,0xF1,0x80,0x3E,0x7B,0x38,0x00,0x61,0x83,0x00,0x00,
0x00,0x37,0x0E,0x00,0x0F,0xC7,0xB7,0x80,0xEC,0x63,0x30,0x00,0xE3,0x03,0x00,0x00,
0x00,0x3E,0x0E,0x00,0x01,0x8F,0x37,0x01,0xCC,0x6F,0xF0,0x00,0xC7,0xF7,0x00,0x00,
0x00,0x1E,0x0C,0x00,0x03,0x1E,0x66,0x03,0x0C,0x7F,0x00,0x01,0xFF,0xE6,0x00,0x00,
0x00,0x1E,0x1C,0x00,0x03,0x1C,0x60,0x02,0x19,0xAC,0x00,0x01,0x96,0x06,0x00,0x00,
0x00,0x3E,0x3E,0x00,0x03,0x18,0x60,0x00,0x19,0xFC,0x00,0x03,0x86,0x0E,0x00,0x00,
0x00,0x7E,0x36,0x00,0x03,0x00,0xC0,0x00,0x38,0x78,0x00,0x03,0x06,0x0C,0x00,0x00,
0x00,0xE6,0x67,0x00,0x03,0x00,0xC0,0x00,0x30,0x78,0x00,0x06,0x0C,0x0C,0x00,0x00,
0x01,0xC6,0xC3,0x80,0x7F,0xF0,0xC0,0x00,0x30,0xFE,0x00,0x0E,0x0C,0x1C,0x00,0x00,
0x03,0x81,0x83,0xC0,0x78,0xFF,0x80,0x00,0x61,0xCF,0x80,0x1C,0x08,0x18,0x00,0x00,
0x06,0x07,0x03,0xE0,0x00,0x1F,0xFF,0xE0,0x67,0x07,0xE0,0x38,0x18,0xF8,0x00,0x00,
0x08,0x0E,0x01,0xF8,0x00,0x07,0xFF,0x80,0xCE,0x03,0xF8,0x60,0x00,0x70,0x00,0x00,
0x00,0x18,0x01,0xF8,0x00,0x01,0xFC,0x00,0xC0,0x01,0xFC,0xC0,0x00,0x70,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x06,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0xE0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x3F,0xE0,0x00,0xFF,0xF0,0x00,0x38,0x00,0xE0,0x00,
0x00,0x00,0x0C,0x00,0x00,0x0F,0xFF,0x80,0x00,0xF8,0xF0,0x00,0x38,0x00,0xE0,0x00,
0x00,0x00,0x0C,0xF0,0x00,0x0F,0xC7,0x00,0x00,0x60,0xE0,0x00,0x38,0x00,0xE0,0x00,
0x00,0x00,0x1F,0xF0,0x00,0x01,0x8E,0x00,0x00,0x60,0xC0,0x00,0x70,0x01,0xC0,0x00,
0x00,0x07,0xFF,0x80,0x00,0x01,0x8C,0x00,0x00,0xE1,0x80,0x00,0x70,0x01,0xC0,0x00,
0x00,0x07,0xF8,0x00,0x00,0x01,0x98,0x00,0x00,0xDF,0xC0,0x00,0x70,0x01,0xC0,0x00,
0x00,0x00,0x78,0x00,0x00,0x01,0xBF,0xE0,0x00,0xFF,0x00,0x00,0x60,0x01,0x80,0x00,
0x00,0x00,0xFC,0x00,0x00,0x7F,0xFF,0xE0,0x00,0xC0,0x00,0x00,0xE0,0x03,0x80,0x00,
0x00,0x01,0xFE,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,
0x00,0x03,0xB7,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x3C,0x00,0xC0,0x03,0x00,0x00,
0x00,0x07,0x67,0x00,0x00,0x60,0x00,0x00,0x03,0x9F,0xFE,0x00,0x80,0x02,0x00,0x00,
0x00,0x0E,0x63,0x80,0x00,0xE0,0x00,0x01,0xFF,0xCF,0x1E,0x01,0x80,0x06,0x00,0x00,
0x00,0x1C,0xE1,0xE0,0x00,0xC0,0x00,0x00,0xE3,0x9C,0x38,0x01,0x80,0x06,0x00,0x00,
0x00,0x38,0xC1,0xF8,0x01,0xC0,0x00,0x00,0xC3,0x18,0x30,0x00,0x00,0x00,0x00,0x00,
0x00,0xE0,0xFC,0xFE,0x03,0x80,0x00,0x01,0xC7,0x18,0x60,0x00,0x00,0x00,0x00,0x00,
0x01,0xDF,0xF8,0xFE,0x03,0x00,0x00,0x01,0x8E,0x1B,0xE0,0x07,0x00,0x1C,0x00,0x00,
0x07,0x07,0x80,0x00,0x07,0x00,0x00,0x01,0xFF,0x3F,0xE0,0x07,0x00,0x1C,0x00,0x00,
0x0C,0x03,0x80,0x00,0x0E,0x00,0x00,0x01,0xF0,0x38,0x00,0x0F,0x00,0x3C,0x00,0x00,
0x00,0x03,0x00,0x00,0x1C,0x00,0x00,0x01,0x00,0x20,0x00,0x06,0x00,0x18,0x00,0x00,
0x00,0x03,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};


void Lcd_init(void) //初始化LCD
{
Delaynms(10); //啟動(dòng)等待,等LCM講入工作狀態(tài)
  CS=1;
  Write_char(0,0x30);  //8 位介面,基本指令集
  Write_char(0,0x0c);  //顯示打開(kāi),光標(biāo)關(guān),反白關(guān)
  Write_char(0,0x01);  //清屏,將DDRAM的地址計(jì)數(shù)器歸零 
}


void Write_char(bit start, unsigned char ddata) //寫(xiě)指令或數(shù)據(jù)
{
unsigned char start_data,Hdata,Ldata;
  if(start==0)
start_data=0xf8; //寫(xiě)指令
    else   
    start_data=0xfa;  //寫(xiě)數(shù)據(jù)
 
  Hdata=ddata&0xf0;  //取高四位
  Ldata=(ddata<<4)&0xf0;  //取低四位
  Send_byte(start_data);  //發(fā)送起始信號(hào)
  Delaynms(5); //延時(shí)是必須的
  Send_byte(Hdata);      //發(fā)送高四位
  Delaynms(1);  //延時(shí)是必須的
  Send_byte(Ldata);  //發(fā)送低四位
  Delaynms(1);  //延時(shí)是必須的
}


void Send_byte(unsigned char bbyte) //發(fā)送一個(gè)字節(jié)
{
unsigned char i;
  for(i=0;i<8;i++)
    {
    SID=bbyte&0x80; //取出最高位
  SCLK=1;
    SCLK=0;
    bbyte<<=1; //左移
   
}


void Delaynms(unsigned int di) //延時(shí)
{
unsigned int da,db;
  for(da=0;da
    for(db=0;db<10;db++);
}


void Disp_img(unsigned char  *img) //圖形方式12864顯示字模221 橫向取膜
{
unsigned char i,j;
unsigned int k = 0;


Write_char(0,0x36); //圖形方式
for(i=0;i<32;i++)
  {
Write_char(0,0x80+i);
Write_char(0,0x80);
    for(j=0;j<16;j++)
{
Write_char(1,img[k++]);
}
  }


  for(i=0;i<32;i++)
  {
Write_char(0,0x80+i);
Write_char(0,0x88);
    for(j=0;j<16;j++)
{
Write_char(1,img[k++]);
  }
}
}
void Clr_Scr(void)//清屏函數(shù)
{
Write_char(0,0x01);
}


void LCD_set_xy( unsigned char x, unsigned char y )
{ //設(shè)置LCD顯示的起始位置,X為行,Y為列
    unsigned char address;
switch(x)
{
case 0: address = 0x80 + y; break;   
    case 1: address = 0x80 + y; break;
case 2: address = 0x90 + y; break;
    case 3: address = 0x88 + y; break;
case 4: address = 0x98 + y; break;
default:address = 0x80 + y; break;
}
    Write_char(0, address);
}


void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
{ // 中英文字符串顯示函數(shù)
LCD_set_xy( X, Y );
   
    while (*s)
    {
Write_char( 1, *s );
   s ++;
Delaynms(1);
}
}


void LCD_Write_number(unsigned char s)// 數(shù)字顯示函數(shù)
{
Write_char(1,num[s]);
Delaynms(1);
}
void Lcd_Mark2(void)
{
Clr_Scr();//清屏
LCD_Write_string(1,0,znwk);//
LCD_Write_string(2,0,waves);//
LCD_Write_string(3,7,CM);//
}


 void Conut(void) //計(jì)算距離,如果更改精度可在此修改
{
  time=TH0*256+TL0;
  TH0=0;
  TL0=0;
  S=time*1.87/100;       //算出來(lái)是CM  11。0592M晶振   須修改
  if(S>200)          //這里需要調(diào)試
  {
  PLAYE=1;
Delaynms(1);
PLAYE=0;
  }
  if(flag==1)      //超出測(cè)量
 
  flag=0;
  LCD_set_xy( 3, 4 );
  LCD_Write_number(13);
  LCD_Write_number(12);
  LCD_set_xy( 3, 5 );
  LCD_Write_number(13);
  LCD_Write_number(13);
 
  }
else
 {
  disbuff[1]=S00/100;
  disbuff[2]=S000/10;
  disbuff[3]=S00 ;
  LCD_set_xy( 3, 4 );
  LCD_Write_number(disbuff[1]);
  LCD_Write_number(12);
  LCD_set_xy( 3, 5 );
  LCD_Write_number(disbuff[2]);
  LCD_Write_number(disbuff[3]);
 }
}
 
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
     void zd0() interrupt 1 //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍
  {
    flag=1; //中斷溢出標(biāo)志
  }
   void  StartModule()         //T1中斷用來(lái)掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊
  {
 TX=1;                 //800MS  啟動(dòng)一次模塊
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 TX=0;
  }
void main(void)

    TMOD=0x01;   //設(shè)T0為方式1,GATE=1
TH0=0;
TL0=0;
TR0=1;


Lcd_init();       //設(shè)置液晶顯示器
Clr_Scr();        //清屏
Disp_img(logo);  //顯示歡迎使用本產(chǎn)品LOGO
Delaynms(1000);
Lcd_init();       //從圖形顯示狀態(tài)下返回
    Lcd_Mark2();


REC=0;  //錄音先錄好   如果不能先錄好這里就有可能不能用
PLAYE=0;  //上升沿觸發(fā)
PLAYL=0;  //高電平觸發(fā)


while(1)
{
StartModule(); 
        //計(jì)算
while(!RX); //當(dāng)RX為零時(shí)等待
TR0=1;    //開(kāi)啟計(jì)數(shù)
while(RX); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut();
delayms(80); //80MS

}

關(guān)閉窗口
主站蜘蛛池模板: 岛国精品 | 成年免费大片黄在线观看一级 | 成人午夜视频在线观看 | 免费高潮视频95在线观看网站 | 中文字幕日韩欧美一区二区三区 | 欧美一区二区三区精品 | 91激情视频| 欧美日韩中文在线 | 成人在线观 | 精品久久国产 | 欧美日韩高清一区 | 国产成人精品免费视频大全最热 | 日本小电影在线 | 91亚洲国产亚洲国产 | 日本亚洲精品成人欧美一区 | 精品日韩一区二区三区av动图 | 91精品国产乱码久久久久久久 | 亚洲网站在线观看 | 欧美一级二级在线观看 | 亚洲成人一区二区三区 | 国产精品视频专区 | 91天堂| 欧美视频二区 | 国产精品视频一 | 久久久999国产精品 中文字幕在线精品 | 久久国产精品一区二区三区 | 亚洲自拍偷拍欧美 | 久久国产区 | 色就是色欧美 | 中国黄色在线视频 | 国产精品久久久久久久久久久久冷 | 精品视频在线播放 | 99在线精品视频 | 精品国产成人 | 国产999精品久久久久久绿帽 | 国产精品精品久久久 | 精品国产久 | 91欧美精品 | 超碰成人免费观看 | 欧美群妇大交群中文字幕 | 天天射天天干 |