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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于C8051單片機超聲波測距電平觸發編寫(留底)

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年12月20日   【字體:
#include <c8051f020.h>  
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void SYSCLK_Init (void);
void PORT_Init (void); 
void  StartModule() ;
void display(unsigned char bai,unsigned char shi,unsigned char ge);
void delay(unsigned int z);
void timerinit();
void delay(unsigned int z);
void Timer_Count(void);
unsigned int  time=0;
uchar i;
 uchar j;
unsigned long S=0;
unsigned char qian,bai,shi,ge;
bit flag =0;
sbit lcdrs=P2^5;
sbit lcden=P2^7;
sbit lcdwr=P2^6;
sbit  RX = P0^1;
sbit  TX = P0^0;
uchar abc[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};   //1234567;
uchar result[3];
void delay(void)
{
 int a=10000;
 while(a!=0)
 {
  a--;
 }
}
void write_com(uchar com)
{
 lcdrs=0;
 P3=com;
 delay();
 lcden=1;
 delay();
 lcden=0;
}
void write_date(uchar dat)
{
 lcdrs=1;
 P3=dat;
 delay();
 lcden=1;
 delay();
 lcden=0;
}
void init()
{
 lcdwr=0;
 lcden=0;
 write_com(0x38);
 write_com(0x0c);
 write_com(0x06);
 write_com(0x01);
}
void main()
{
 unsigned int valA;
  WDTCN = 0xde;
  WDTCN = 0xad; 
  timerinit();                      
  SYSCLK_Init ();                                                                 
  PORT_Init ();                        
 init();
 lcdrs=0;
 lcdwr=0;
 write_com(0x40);
while(1)
{    
RX=1;
StartModule();
 
for(valA=100;valA>0;valA--)
{
   if(RX==1)
   {
       Timer_Count();
   }
}
}
}
 void SYSCLK_Init (void)
{
   OSCICN = 0x05;                                                                                  
}
 void PORT_Init (void)
{
   XBR0    = 0x04;                     // Enable UART0
   XBR1    = 0x00;
   XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
  P0MDOUT |= 0xff;                    // enable TX0 as a push-pull output
   P2MDOUT  = 0xe0;                    // P2口設為推挽方式
   P3MDOUT  = 0xff;                    // P2口設為推挽方式      
}
void Conut(void)
 {
  time=TH0*256+TL0;
  TH0=0;
  TL0=0;
  S=(uint)(time*1.7*1.6*1.5)/10;     //算出來是MM
  if((S>=7000)||flag==1) //超出測量范圍顯示“-”
  { 
   flag=0;
   display(0x80,0x80,0x80);
  }
  else
  {
   bai=S/100;
   shi=S%100/10;
   ge=S%10;
   display(bai,shi,ge);
  }
 }
void zd0() interrupt 1    //T0中斷用來計數器溢出,超過測距范圍
  {
    flag=1;        //中斷溢出標志
 RX=0;
  }
void  StartModule()            //啟動模塊
  {
   TX=1;                        //啟動一次模塊
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
/*   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();*/
   TX=0;
  }
void Timer_Count(void)
{
   TR0=1;       //開啟計數
      while(RX);   //當RX為1計數并等待
      TR0=0;    //關閉計數
 
         Conut();   //計算
}
void timerinit()
{
 TMOD=0x01;     //設T0為方式1,GATE=1;
 TH0=0;
 TL0=0;         
 ET0=1;             //允許T0中斷
 EA=1;      //開啟總中斷   
}
/*********************************************************/
void display(unsigned char bai,unsigned char shi,unsigned char ge)
{ 
  
     uchar i;
  result[0]=abc[bai];
  result[1]=abc[shi];
  result[2]=abc[ge];
   write_com(0x40);
     for(i=0;i<3;i++)
  {
  write_com(0x80+i+1);
  write_date(result[i])  ;
  }
}
關閉窗口

相關文章

主站蜘蛛池模板: 91麻豆精品国产91久久久久久久久 | 日韩喷潮| 日韩中文字幕免费在线观看 | 精品一级 | 国产电影一区二区在线观看 | 国产一区欧美一区 | 91视频大全 | 国产午夜精品视频 | 成人在线一区二区 | 精品国产91 | 国产一区二区三区免费观看在线 | 亚洲一区二区三区在线播放 | 国产精品美女久久久久久免费 | 成人影视网 | 色又黄又爽网站www久久 | 自拍偷拍亚洲欧美 | av电影一区二区 | 中文字幕人成乱码在线观看 | www国产成人免费观看视频,深夜成人网 | 在线视频亚洲 | 日韩中文字幕在线不卡 | av永久| 国产在线观看 | 国产精品91网站 | 国产一区二 | 国产色爽 | 91国自视频| 97精品一区二区 | 亚洲欧美一区二区三区在线 | 免费在线观看一区二区 | 91免费看片 | 99成人| 红桃视频一区二区三区免费 | 中文字幕在线观看一区二区 | 在线成人www免费观看视频 | 国产成人福利在线观看 | 成人在线看片 | 91精品国产乱码久久久久久久久 | 亚洲国产高清免费 | 仙人掌旅馆在线观看 | 91国内精品久久 |