求一个STC12C5A60S2超声波HC-SR04测距模块的程序!非常感谢,我试过网上下载的一些程序LCD没显示!谢谢了

2019-07-15 16:24发布

求一个STC12C5A60S2超声波HC-SR04测距模块的程序!非常感谢,我试过网上下载的一些程序LCD没显示!谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
wenjie5450
1楼-- · 2019-07-15 16:31
#include <reg52.h>   
#define uchar unsigned char
#define uint  unsigned int
uchar code table1[]="The distance is :";
uchar code table2[]="0123456789  ";
uchar code table3[]=" CM";
double distance;
sbit lcden=P2^6;
sbit lcdrs=P2^4;
sbit rw= P2^5;
sbit Trig=P2^0;
sbit Echo=P3^3;
bit succeed_flag=0;
void delay(uint z)
{
         uint x,y;
         for(x=z;x>0;x--)
                        for(y=110;y>0;y--);
}
void delay_20us()
{
         uchar a ;
         for(a=0;a<20;a++);
}
//***************************************************************
//显示数据转换程序
void write_com(uchar com)
{
                lcdrs=0;
                P0=com;
                delay(5);
                lcden=1;
                delay(5);
                lcden=0;
}
void write_date(uchar date)
{
                lcdrs=1;
                P0=date;
                delay(5);
                lcden=1;
                delay(5);
                lcden=0;
}
void LCD_init()
{   
                uchar num;
                lcden=0;rw=0;
                write_com(0x38);
                write_com(0x0c);
                write_com(0x06);
                write_com(0x01);
                write_com(0x80);
                for(num=0;num<17;num++){
                        write_date(table1[num]);
                        delay(2);                    
                                                         }   
                write_com(0x80+0x43);
                for(num=0;num<3;num++)
                {
                write_date(table3[num]);
                delay(2);
                                                                 }
}         
                  
       
void LCD_show( int m)
{         
                write_com(0x80+0x40);
                {
                        uchar num2;
                        num2=m/100%10;
                        write_date(table2[num2]);
                        delay(2);
                        num2=m/10%10;
                        write_date(table2[num2]);
                        delay(2);
                        num2=m%10;
                        write_date(table2[num2]);
                        delay(2);
                        }
}

//***************************************************************
//主程序
void main()  
{           
                LCD_init();
                Trig=0;     //首先拉低脉冲输入引脚
                TMOD=0x10;  //定时器1,16位工作方式
                while(1)        
                        {       
                                EA=0;  //关总中断
                                IT1=1;           
                                Trig=1;//超声波输入端
                                delay_20us();   //延时20us
                                Trig=0;       //产生一个20us的脉冲
                                while(Echo==0); //等待Echo回波引脚变高电平
                                succeed_flag=0; //清测量成功标志
                                EA=1;
                                EX1=1;
                                TR1=1;          //启动定时器1
                                delay(20);      //等待测量的结果                                             
                                if(succeed_flag==1)
                                LCD_show(distance);               
                                if(succeed_flag==0)
                                        { distance=0;                    //没有回波则清零
                                         LCD_show(distance);
                                        }               
                                }
}
//***************************************************************
                                    //外部中断0,用做判断回波电平
void exter()  interrupt 2  // 外部中断1是2号
{          
                TR1=0;
                EX1=0;
                distance=(TH1*256+TL1+59)*0.0172;  //厘米     
                succeed_flag=1;//至成功测量的标志
                TH1=0;          //定时器1清零
                TL1=0;      //关闭外部中断1
}
原味的优乐美
2楼-- · 2019-07-15 18:10
wenjie5450 发表于 2015-8-4 15:40
#include     
#define uchar unsigned char
#define uint  unsigned int

谢谢。谢谢。谢谢。。。
miao彬
3楼-- · 2019-07-15 20:03
 精彩回答 2  元偷偷看……

一周热门 更多>