找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5960|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

hc-sr04超聲波模塊程序+11.0592mhz晶振+stc89c52rc單片機(jī)+四位數(shù)碼管

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-31 00:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
                                                                                                 /*hc-sr04超聲波模塊+11.0592mhz晶振+stc89c52rc單片機(jī)+四位數(shù)碼管*/
#include <reg51.h>
#include<intrins.h>
unsigned char a,b,c,d;
float num=0.0;
sbit du=P2^6;
sbit we= P2^7;
sbit send=P2^1;
sbit receive=P2^2;
unsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char wei []={0xfe,0xfd,0xfb,0xf7,0x2f,0x1f};
void delay_10us()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void delay_200ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=132;j>0;j--)
for(k=150;k>0;k--);
}
void main ()
{
unsigned int timeh,timel;
send=0;//先置零
while(1)
{
   receive=0;//置零
   EA=0;
   send=1;
   delay_10us();
   delay_10us();//延時(shí)20us
   send=0;
   while(receive==0)//等待高電平
   {};
   
   TMOD=0X01;//設(shè)置定時(shí)器0的工作方式
   TH0=0;//賦初值
   TL0=0;
   EA=1;///打開總中斷開關(guān)
   ET0=1;//打開定時(shí)器開關(guān)
   TR0=1;
   while(receive)//等待低電平
   {
         
   }
    timeh=TH1;//取出定時(shí)器的值
    timel=TL1;
    TR0=0;
  
    num=(TH0*255+TL0)/100.0*340/2;
    a=(unsigned int )num%10;//算清各位十位百位
    b=(unsigned int)num%100/10;
    c=(unsigned int )num/100%10;
    d=(unsigned int)num/10;
   
    P0=0xff;//數(shù)碼管顯示輸出
    we=1;
    P0=0xfe;
    we=0;
    P0=0x00;
    du=1;
    P0=duan[a];
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    P0=0x00;  
    du=0;
   
   
    P0=0xff;
    we=1;
    P0=0xfd;
    we=0;
    P0=0x00;
    du=1;
    P0=duan;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    P0=0x00;
    du=0;
    P0=0xff;
    we=1;
    P0=0xfb;
    we=0;
    P0=0x00;
    du=1;
    P0=duan[c];
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    P0=0x00;
    du=0;
    P0=0xff;
    we=1;
    P0=0xf7;
    we=0;
    P0=0x00;
    du=1;
    P0=duan[d];
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    delay_200ms;
    P0=0x00;
    du=0;
   
     


}
   

}
void timer0 ()interrupt 1
{
TH0=0;
TL0=0;
}
/*四位數(shù)碼管要消影+注意定時(shí)器和外部中斷的使用*/



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表