导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[请帮助][求助]用2051做超声波测距的源程序和



No.98252
作者:请帮助
邮件:baiyni888@163.com
ID:44010
登陆:5次
文章数:4篇
最后登陆IP:117.89.11.110
最后登陆:2009/1/6 23:24:00
注册:2005/12/1 11:29:08
财富:126
发帖时间:2006/10/4 14:29:32
发贴者IP:222.49.242.180
标题:请帮助:[求助]用2051做超声波测距的源程序和电路图
摘要:No.98252[求助]用2051做超声波测距的源程序和电路图 是一个从别的网站上下的,用2051做超声波测距的源程序和电路图
当中这一句           P1=~buffer ;        //显示数据送P1口 
改为             P1= buffer ;        //显示数据送P1口
就能在Keil 中编译通过,但是烧进单片机后,三位数码管显示是一样的. 请问是什么原因?
如果不改这一句,在Keil 中编译就不能通过!!
源程序要怎么样改才能正常???
我的邮箱是: baiyni888@163.com     万分感谢!!!!!!
下面是有问题的源程序:
此主题相关图片如下:
按此在新窗口浏览图片

#include   <REG2051.H>  

#define k1 P3_4
#define csbout    P3_5                  //超声波发送
#define csbint    P3_7                  //超声波接收
#define csbc=0.034
#define bg  P3_3 
unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//显示标识
unsigned char convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段码
unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
bit cl;      
                             
void csbcj();
void delay(j);                              //延时函数
void scanLED();                              //显示函数
void timeToBuffer();                  //显示转换函数
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();


void main()                              //主函数
{
     EA=1;                                //开中断
       TMOD=0x11;                        //设定时器0为计数,设定时器1定时
     ET0=1;                              //定时器0中断允许 
     ET1=1;                              //定时器1中断允许 
     TH0=0x00;
     TL0=0x00;
     TH1=0x9E;
     TL1=0x57;
     csbds=0;
     csbint=1;
     csbout=1;
     cl=0;
     opto=0xff;
     jpjs=0;
     sj1=45;
     sj2=200;
     sj3=400;
     k4cl();
     TR1=1;                        
     while(1)
       {
           keyscan();
           if(jpjs  <1)
           {
           csbcj();
           if(s>  sj3)
           {
           buffer[2]=0x76;      
           buffer[1]=0x76;      
           buffer[0]=0x76;      
           }
           else if(s  <sj1)
           {
           buffer[2]=0x40;      
           buffer[1]=0x40;      
           buffer[0]=0x40;
           }
           else timeToBuffer();      
           }
           else timeToBuffer();            //将值转换成LED段码
           offmsd();
             scanLED();                  //显示函数
           if(s  <sj2)
           bg=0;
           bg=1;
     }
}


void scanLED()                       //显示功能模块
{
    digit=0x04;
    for( i=0; i  <3; i++)        //3位数显示
    {
        P3=~digit&opto;        //依次显示各位数
        P1=~buffer;        //显示数据送P1口
        delay(20);              //延时处理
        P1=0xff;             //P1口置高电平 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:11162毫秒 查询6次