amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 509|回复: 6

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

[复制链接]
发表于 2015-8-4 21:09:38 | 显示全部楼层 |阅读模式
#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*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[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
}
IMG_20150804_210326.jpg
发表于 2015-8-4 22:41:57 | 显示全部楼层
调节一下液晶的对比度
发表于 2015-8-4 23:10:13 | 显示全部楼层
对比度过高
发表于 2015-8-4 23:24:51 | 显示全部楼层
程序没过去,p0口有上拉或者设置为推挽输出吗
发表于 2015-8-5 21:55:54 | 显示全部楼层
速度。。。STC官网有学习板程序可以参考。
发表于 2015-8-7 21:32:38 | 显示全部楼层
我今天刚测试一个以前stc89c51rc能用的,移植到15f里面情况和你照片一样,估计是延时的问题
 楼主| 发表于 2015-8-8 10:33:09 | 显示全部楼层
zxq_9781 发表于 2015-8-7 21:32
我今天刚测试一个以前stc89c51rc能用的,移植到15f里面情况和你照片一样,估计是延时的问题 ...

嗯嗯,我已经解决的。是延时的问题。哈
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-19 09:16

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表