欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
CC2530超聲波串口打印 源程序
[打印本頁]
作者:
IOT_SZH
時間:
2020-7-26 19:55
標題:
CC2530超聲波串口打印 源程序
通過CC2530驅動超聲波模塊,測量距離,并在串口中打印出來。
單片機源程序如下:
#include <ioCC2530.h>
#include "Ultrasound.h"
#include <stdio.h>
#include <string.h>
uchar RG;
uchar H1;
uchar L1;
uchar H2;
uchar L2;
uchar H3;
uchar L3;
uint data;
uchar TXData;
float distance;
uchar LoadRegBuf[4];//全局數據,用以存儲定時計數器的值。
void Delay_1us(uint microSecs)
{ while(microSecs--)
{ /* 32 NOPs == 1 usecs 因為延時還有計算的緣故,用了31個nop*/
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop");
}
}
void Delay_10us(uint n)
{ /* 320NOPs == 10usecs 因為延時還有計算的緣故,用了310個nop*/
uint tt,yy;
for(tt = 0;tt<n;tt++);
for(yy = 310;yy>0;yy--);
{asm("NOP");}
}
void Delay_1s(uint n)
{ uint ulloop=1000;
uint tt;
for(tt =n ;tt>0;tt--);
for( ulloop=1000;ulloop>0;ulloop--)
{
Delay_10us(100);
}
}
void SysClkSet32M()
{
CLKCONCMD &= ~0x40; //設置系統時鐘源為32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振穩定
CLKCONCMD &= ~0x47; //設置系統主時鐘頻率為32MHZ
//此時的CLKCONSTA為0x88。即普通時鐘和定時器時鐘都是32M。
}
void Init_UltrasoundRanging()
{
P1DIR = 0x08; //0為輸入1為輸出 00001000 設置TRIG P1_3為輸出模式
TRIG=0; //將TRIG 設置為低電平
P0INP &= ~0x80; //有上拉、下拉 有初始化的左右
P0IEN |= 0x80; //P0_7 中斷使能
PICTL |= 0x01; //設置P0_7引腳,下降沿觸發中斷
IEN1 |= 0x20; // P0IE = 1;
P0IFG = 0;
}
void UltrasoundRanging(uchar *ulLoadBufPtr)
{
SysClkSet32M();
Init_UltrasoundRanging();
// T1CC0H = 0x00;
//T1CC0L = 0xfa;
EA = 0;
TRIG =1;
Delay_1us(10); //需要延時10us以上的高電平
TRIG =0;
T1CNTL=0;
T1CNTH=0;
while(!ECHO);
T1CTL = 0x09; //0000 1010
//0000 1001
//通道0,中斷有效,32分頻;自動重裝模式(0x0000->0xffff);
L1=T1CNTL;
H1=T1CNTH;
*ulLoadBufPtr++=T1CNTL;
*ulLoadBufPtr++=T1CNTH;
EA = 1;
//Delay_10us(60000);
//Delay_10us(60000);
}
/**********串口初始化函數****************************/
void InitUart(void){
PERCFG = 0x00;
P0SEL = 0x0c;
P2DIR &= ~0xc0;
U0CSR |= 0x80;
U0GCR |= 11;
U0BAUD |= 216;
UTX0IF = 0;
}
/**********串口發送函數****************************/
void UartSendString(char *Data, int len){
uint i;
for(i=0;i<len;i++){
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
EA=0;
T1CTL = 0x00;
LoadRegBuf[2]=T1CNTL;
LoadRegBuf[3]=T1CNTH;
L2=T1CNTL;
H2=T1CNTH;
if(P0IFG&0x080) //外部ECHO反饋信號
{
P0IFG = 0;
}
T1CTL = 0x09;
T1CNTL=0;
T1CNTH=0;
P0IF = 0; //清中斷標志
EA=1;
}
void InitLed(void){
P1DIR |= 0x01;
LED1 = 0;
}
void main(void)
{
InitUart();
InitLed();
char strTemp[6];
while(1)
{
UltrasoundRanging(LoadRegBuf);
Delay_1s(1);
data=256*H2+L2-L1-256*H1;
distance=(float)data*340/10000;
memset(strTemp, 0, 6);
sprintf(strTemp,"%.02f", distance);//將浮點數轉成字符串
UartSendString(strTemp, 5);
UartSendString("CM",2);
UartSendString("\r\n",2);
if((int)distance<=20){
LED1 = 1;
}else{
LED1 = 0;
}
distance=0;
Delay_1s(2);
};
}
復制代碼
所有資料51hei提供下載:
超聲波+串口.zip
(48.48 KB, 下載次數: 14)
2020-7-26 19:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1