原味的优乐美 发表于 2015-8-4 21:09:38

谁能帮我看下程序为什么在LCD上显示不了吗?我用的是STC12...

#include <reg52.h>   
#define uchar unsigned char
#define uintunsigned 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*10;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);
                        delay(2);                  
                                                         }   
                write_com(0x80+0x43);
                for(num=0;num<3;num++)
                {
                write_date(table3);
                delay(2);
                                                               }
}         
                  
      
void LCD_show( int m)
{         
                write_com(0x80+0x40);
                {
                        uchar num2;
                        num2=m/100%10;
                        write_date(table2);
                        delay(2);
                        num2=m/10%10;
                        write_date(table2);
                        delay(2);
                        num2=m%10;
                        write_date(table2);
                        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
}

miaoguoqiang 发表于 2015-8-4 22:41:57

调节一下液晶的对比度

ackk 发表于 2015-8-4 23:10:13

对比度过高{:lol:}

bias 发表于 2015-8-4 23:24:51

程序没过去,p0口有上拉或者设置为推挽输出吗

小李非刀 发表于 2015-8-5 21:55:54

速度。。。STC官网有学习板程序可以参考。

zxq_9781 发表于 2015-8-7 21:32:38

我今天刚测试一个以前stc89c51rc能用的,移植到15f里面情况和你照片一样,估计是延时的问题

原味的优乐美 发表于 2015-8-8 10:33:09

zxq_9781 发表于 2015-8-7 21:32
我今天刚测试一个以前stc89c51rc能用的,移植到15f里面情况和你照片一样,估计是延时的问题 ...

嗯嗯,我已经解决的。是延时的问题。哈
页: [1]
查看完整版本: 谁能帮我看下程序为什么在LCD上显示不了吗?我用的是STC12...