3086 views|2 replies

14

Posts

0

Resources
The OP
 

STC15F2K60S2 series microcontroller [Copy link]

I want to make an ultrasonic distance measurement using the STC15F2K60S2 series microcontroller, but I don't know how to modify the program. Can someone help me? #include
#include "1062.h"
#define VELOCITY_30C        3495      
#define VELOCITY_23C        3453      
sbit INPUT  = P1^6;               
sbit OUTPUT = P1^7;               
sbit Beep   = P5^5 ;                          
long int distance=0;              
uchar table[]="   Welcome to   ";
uchar table0[]="wei bao love you ";
uchar table1[]="There's no echo.";
uchar table2[]="  ren jia you   ";
uchar table3[]="Distance:";
uchar count;
extern void initLCD();
extern void write_date(uchar date);
extern void write_com(uchar com);
extern void delay(uint x);
void Delay_xMs(unsigned int x)
{
    unsigned int i,j;
    for(i = 0;i < x;i++ )
    {
        for(j = 0;j < 3;j++ )
        {
            ;
        }
    }
}
void Alarm(uchar t)
{
        uchar i;
        for(i = 0;i < t;i++)
        {
                Beep = 0;
                Delay_xMs(20000);
                Beep = 1;
                Delay_xMs(20000);
        }
}               
void delayt(uint x)
{
    uchar j;
    while(x-- > 0)
    {
              for(j = 0;j < 125;j++)
        {
            ;
        }
    }
}
void Init_MCU(void)
{
        TMOD = 0x01;          
        TL0 = 0x66;
        TH0 = 0xfc;             
    ET0 = 1;            
        EA = 1;                    
}
void Init_Parameter(void)
{
         OUTPUT =1;
         INPUT = 1;
         count = 0;
         distance = 0;
}
void display_char(uchar *point,uchar address)
{
        uchar i;
        write_com(0x80 + address);
        for(i = 0;i < 16; i++)
        {
                write_date(*point);
                point++;
        }
}       
void display(int number,uchar address)
{
        uchar b,c,d,e;
        b= (number / 1000);
        c= (number / 100) % 10;
        d = (number / 10) % 10;
        e = number % 10;

        write_com(0x80 + address);
    write_date(b + 48);
        write_date(c + 48);
        write_date(d + 48);
        write_date(46);           
        write_date(e + 48);
    write_date(99);      
        write_date(109);         
}
void Trig_SuperSonic(void)
{
         OUTPUT = 1;
         delayt(1);
         OUTPUT = 0;
}
void Measure_Distance(void)
{
        uchar l;
        uint h,y;
        TR0 = 1;
        while(INPUT)
    {
        ;
    }       
        TR0 = 0;
        l = TL0;
        h = TH0;
        y = (h << 8) + l;
        y = y - 0xfc66;//us??
        distance = y + 1000 * count;
        TL0 = 0x66;
        TH0 = 0xfc;
        delayt(30);
        distance = VELOCITY_30C * distance / 20000;
}                               
void main(void)
{
        initLCD();
        Init_MCU();
        Init_Parameter();
        Alarm(2);
        display_char(table,0x00);
        display_char(table0,0x40);
        Delay_xMs(30000);
        display_char(table2,0x00);
        display_char(table1,0x40);

        while(1)
        {
                 Trig_SuperSonic();        
                 while(INPUT == 0)         
         {
             ;
         }
                 Measure_Distance();      
                 display_char(table3,0x40);
                 display(distance,0x49);   
                 Init_Parameter();         
                 delayt(100);               
         }       
}
void timer0 (void) interrupt 1
{
        TF0 = 0;
        TL0 = 0x66;
        TH0 = 0xfc;
        count++;
        if(count == 18)
        {
                TR0 =0;
                TL0 = 0x66;
                TH0 = 0xfc;
                count = 0;
        }
}

This post is from 51mcu

Latest reply

To know what to change, the usage of ultrasonic module and the display part, you should read the specification sheet first.  Details Published on 2017-12-18 16:14
 

3471

Posts

11

Resources
2
 
. First coordinate the communication between the distance measurement modules. Read the module information. Write the protocol. Get the distance data. Adjust 1602. Analyze the overall process. Integrate.
This post is from 51mcu
 
 
 

26

Posts

0

Resources
3
 
To know what to change, the usage of ultrasonic module and the display part, you should read the specification sheet first.
This post is from 51mcu
 
 
 

Guess Your Favourite
Just looking around
Find a datasheet?

EEWorld Datasheet Technical Support

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号
快速回复 返回顶部 Return list