找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機超聲波燈程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1117272 發(fā)表于 2024-4-19 00:09 來自手機 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
#include "reg51.h"
#include <intrins.h>
#define uchar unsigned char//無符號字符(8位)
#define uint unsigned int //無符號整數(shù)(16位)
uint time=0;
uint timer=0;
uint stoptime=0;
uint ringtimes=0;
unsigned long S=0;
bit flag =0;
sbit LED=P3^7;
unsigned char l_disbuff[4]={ 0xff,0,0,0,};//顯示緩沖
unsigned char l_posit=1; //位選擇

sbit RX = P1^1; //模塊引腳
sbit TX = P1^0;
/********************************************************/
/**************1ms延時程序******************/
delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
/********************************************************/
void Conut(void)
{ time=TH0*256+TL0;
TH0=0;
TL0=0;

S=(time*1.7)/100; //算出來是CM
if((S>=40)||flag==1) //超出測量范圍顯示“-”
{flag=0;
LED=1;
}
else
{

LED=0;
}
}

/********************************************************/
void zd0() interrupt 1 //T0中斷用來計數(shù)器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
/********************************************************/
void zd3() interrupt 3 //T1中斷用來掃描數(shù)碼管和計1S啟動模塊
{
TH1=0xf8;
TL1=0x30;
timer++;
if(timer>=500)
{
timer=0;
TX=1; //1S 啟動一次模塊
_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=0x11; //設T0,T1為方式1
TH0=0;
TL0=0;
TH1=0xf8; //2MS定時
TL1=0x30;
ET0=1; //允許T0中斷
ET1=1; //允許T1中斷
TR1=1; //開啟定時器
EA=1; //開啟總中斷

while(1)
{
while(!RX); //當RX為零時等待
TR0=1; //開啟計數(shù)
while(RX); //當RX為1計數(shù)并等待
TR0=0; //關閉計數(shù)
Conut(); //計算
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表