<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的電子測速里程防盜報(bào)警器設(shè)計(jì)

          基于51單片機(jī)的電子測速里程防盜報(bào)警器設(shè)計(jì)

          作者: 時(shí)間:2012-09-10 來源:網(wǎng)絡(luò) 收藏

          //************************************************************

          本文引用地址:http://www.ex-cimer.com/article/170899.htm

          //標(biāo)題:4乘4鍵盤的輸入函數(shù)
          // 函數(shù)描述: char gotkey(void)
          // 從4*4小鍵盤輸入數(shù)據(jù),返回0~9,及其它數(shù)據(jù).
          //***********************************************************
          //時(shí)間遲延函數(shù)
          //*********************************************************
          void delay (void)
          {
          unsigned char i,j;
          for(i=0;i5;i++)
          for(j=0;j255;j++);
          }
          //*************************************************
          //檢查是否有按鍵按下
          //*************************************************
          char keypad_scan()
          {
          char key,i;
          p2=0xF0;
          while(p2!=0XF0);
          do{
          for(i=0;i=3;i++)
          { p2=ksp;
          if(p2!=ksp)
          {
          delay();
          key=p2;
          if(key!=ksp)
          {
          return(key);
          }
          }
          }
          }while(1);
          }
          //***************************************
          //取得鍵值
          //***************************************
          char gotkey()
          {
          char temp,i;
          temp=keypad_scan();
          for(i=0;i=15;i++)
          {
          if(temp==key_code)
          return(i);
          }
          }


          //**************************************
          //93c66驅(qū)動(dòng)程序
          //**************************************
          //********************************************

          unsigned char read_byte(int address)
          {int i, command;
          unsigned char temp;
          CS=1;
          command=(READ|address);
          write_command(command);
          for(i=0;i8;i++)
          {SK=1;
          SK=0;
          temp=(temp1);
          if(DO==1)
          temp=(temp|0X01);
          }
          CS=0;
          return(temp);
          }

          //**********************************************

          void write_enable()
          {int command;
          CS=1;
          command=EWEN;
          write_command(command);
          CS=0;
          }

          //***********************************************

          void write_disable()
          {int command;
          CS=1;
          command=EWDS
          write_command(command);
          CS=0;
          }

          //************************************************

          void write_byte(int address,unsigned char write_date)
          {int i,command;
          write_enable();
          CS=1;
          command=(WRITE|address);
          write_command(command);
          for(i=0;i8;i++)
          {if(write_date0X80)}
          DI=1;
          elae
          DI=0;
          SK=1;
          SK=0;
          write_date=(write_data1);
          }
          check_busy();
          write_disable();
          }

          //*************************************************

          void write_command(int command)
          {int i;
          command=(commandshiftbit);
          for(i=0;i12;i++)
          {if(command0X8000)
          DI=1;
          else
          DI=0;
          SK=1;
          SK=0;
          command=(command1);
          }
          }

          //***********************************************

          void check_busy(void)
          {CS=0;
          CS=1;
          while(DO==0);
          }

          //******************************************
          //標(biāo)題:ISD4004驅(qū)動(dòng)法程序
          //功能:語音選段播放
          //******************************************
          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;
          }

          }

          //************************************
          //ISD4004 spi串行發(fā)送子程序,16位數(shù)據(jù)
          //************************************
          void spi_send(unsigned char isdx)
          { unsigned char isx_counter;
          SS=0; //ss=0,打開spi通信端
          SCLK=0;
          for(isx_counter=0;isx_counter8;isx_counter++)
          //先發(fā)低位再發(fā)高位,依次發(fā)送。
          { if ((isdx0x01)==1)
          MOSI=1;
          else
          MOSI=0;
          isdx=isdx>>1;
          SCLK=1;
          delay(2);

          SCLK=0;
          delay(2);
          }
          }

          //*******************************
          //發(fā)送stop指令
          //*******************************
          void isd_stop(void)
          { delay(10);
          spi_send(0x30);
          SS=1;
          delayms(50);
          }
          //*******************************
          //發(fā)送上電指令,并延遲50ms
          //*******************************
          void isd_pu(void)
          { delay(10);
          SS=0;
          spi_send(0x20);
          SS=1;
          delayms(50);
          }
          //*******************************
          //發(fā)送掉電指令,并延遲50ms
          //*******************************

          void isd_pd(void)
          { delay(10);

          spi_send(0x10);
          SS=1;
          delayms(50);
          }


          //*******************************
          //發(fā)送分段語音setplay指令
          //*******************************
          void isd_setplay(unsigned char adl,unsigned char adh)
          {
          isd_pd();
          delayms(1);
          spi_send(adl);
          delay(2);
          spi_send(adh);
          delay(2);
          spi_send(0xe0);
          SS=1;
          spi_send(0xf0);
          SS=1;
          if(ISD_INT==0)
          isd_stop();
          isd_pd();
          }



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();