[求助] 新人小白求助。。lcd_wdat如何声明,大神帮帮忙

落魄IV   2019-2-28 22:29 楼主
本人是新人小白,单片机C语言基础很差,在书上看到案例程序编译出错了,如果没判断错的话是声明的问题。。。吗?所以请问lcd_wdat应该如何声明,格式是怎样的,在这段程序里应该怎么更改呢?
大神求助


void pass_in(void)
{
        uchar m,n,sec10,key,pass_ok,T0_count,RELAY,cdis5,cdis6;
        uchar TR0 = 1;
        uchar PASS_NEW[6]={0,1,2,3,4,5};
        void lcd_pos(unsigned char i,unsigned char j);
        for(m = 0;m<3;m++)//允许最多3次密码输入
        {
                lcd_pos(9,2);//第二行9列
                n=0;
                while((n<6)&(!sec10))//10s时间限制
                {
                        keyscan();
                        if(key <=9)//数字键0~9为有效键                               
                        {       
                                PASS_NEW[n] = key;
                                lcd_wdat(PASS_NEW[n]+0x30);
                                n++;
                                beep();
                        }
                }
                pass_comp();//密码比较
                if(pass_ok)//如果比较正确
                {
                        T0_count = 0;//清计数单元
                        sec10 = 0;//清10s标志位
                        RELAY = 0;//继电器吸合
                        lcd_pos(0,2);//设置显示位置为第二行
                        wr_string(cdis5,0);//显示字符串5               
                        return;
                }
                else//如果比较错误
                {
                        T0_count = 0;//清计数单元
                        sec10 = 0;//清10s标志位
                        lcd_pos(0,2);//设置显示位置为第二行
                        wr_string(cdis6,0);//显示字符串6                                       
                        delayms(1000);//延时1s
                        lcd_pos(0,2);//设置显示位置为第二行                               
                        wr_string(cdis2,0);//显示字符串2
                }
        }
        TR0 = 0;
        lcd_pos(0,2);//设置显示位置为第二行
        wr_string(cdis6,0);//显示字符串6
        delayms(2000);//延时2s
        menu1();//显示菜单1
}

编译出错是红色部分
另外顺带问一下,有时候keil编译不会一下指出所有问题,因为我解决一个问题又会出现新的问题,这是问什么呢?

综上,请大神指教!!

  • 微信图片_20190228222207.png

回复评论 (5)

看函数名应该是向LCD中写入数据
1) 这个你要看LCD的规格书,里面有关于写数据的时序
2) 看教程关于LCD驱动的定义,里面应该有这个函数,只要你这个函数包含过来就好
专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
点赞  2019-3-1 08:44
你这个应该是全局变量,那么声明放在所有函数之前。,给你我之前写的一些程序样板,你看看 01.jpg
点赞  2019-3-1 09:41
关于变量的声明和定义,全局变量、局部变量,尤其是数组变量的声明和定义,你要仔细去看看
点赞  2019-3-1 09:44
lcd_wdat(PASS_NEW[n]+0x30);函数原型要定义,并且在文件的开始要申明,如果是在其他文件中要extern +申明
点赞  2019-3-1 10:13
引用: tiankai001 发表于 2019-3-1 09:44
关于变量的声明和定义,全局变量、局部变量,尤其是数组变量的声明和定义,你要仔细去看看

问题解决了,也明白了自己之前的理解错误在哪,十分感谢
点赞  2019-3-4 17:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复