新手入门
- 积分
- 19
- 金钱
- 19
- 注册时间
- 2017-7-29
- 在线时间
- 4 小时
|
楼主 |
发表于 2017-7-29 23:20:13
|
显示全部楼层
原来两个分开的程序分别是蜂鸣器报警和测距串口显示都没问题
蜂鸣器:
#include <reg51.h>
sbit Beep = P1^5 ;
void delay(unsigned int i) ;
void main()
{
Beep= 1;
delay(5);
Beep= 0;
delay(5);
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
串口超声波测距:
/***********************************************************************************************************/
//HC-SR04 ³¬Éù²¨²â¾àÄ£¿é DEMO ³ÌÐò
//¾§Õñ£º11¡£0592
//³ÌÐò QQ£º 517535000
//taobaoµêÆÌ£ºhttp://shop58246706.taobao.com
//½ÓÏߣºÄ£¿éTRIG½Ó P1.2 ECH0 ½Ó1.1
//´®¿Ú²¨ÌØÂÊ9600
/***********************************************************************************************************/
#include <AT89X51.H>
#include <intrins.h>
#include <STDIO.H>
#define uchar unsigned char
#define uint unsigned int
#define RX P1_1
#define TX P1_2
unsigned int time=0;
unsigned int timer=0;
float S=0;
bit flag =0;
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100; //Ëã³öÀ´ÊÇCM
if(flag==1) //³¬³ö²âÁ¿
{
flag=0;
printf("-----\n");
}
printf("S=%f\n",S);
}
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************/
void zd0() interrupt 1 //T0ÖжÏÓÃÀ´¼ÆÊýÆ÷Òç³ö,³¬¹ý²â¾à·¶Î§
{
flag=1; //ÖжÏÒç³ö±êÖ¾
}
/********************************************************/
void StartModule() //T1ÖжÏÓÃÀ´É¨ÃèÊýÂë¹ÜºÍ¼Æ800MSÆô¶¯Ä£¿é
{
TX=1; //800MS Æô¶¯Ò»´ÎÄ£¿é
_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=0x21; //ÉèT0Ϊ·½Ê½1£¬GATE=1£»
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TH0=0;
TL0=0;
TR0=1;
ET0=1; //ÔÊÐíT0ÖжÏ
TR1=1; //¿ªÆô¶¨Ê±Æ÷
TI=1;
EA=1; //¿ªÆô×ÜÖжÏ
while(1)
{
StartModule();
while(!RX); //µ±RXΪÁãʱµÈ´ý
TR0=1; //¿ªÆô¼ÆÊý
while(RX); //µ±RXΪ1¼ÆÊý²¢µÈ´ý
TR0=0; //¹Ø±Õ¼ÆÊý
Conut(); //¼ÆËã
delayms(100); //100MS
}
} |
|