社区导航

 

搜索
查看: 812|回复: 5

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

[复制链接]

15

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 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


回复

使用道具 举报

1267

TA的帖子

7

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-3-1 08:44 | 显示全部楼层
看函数名应该是向LCD中写入数据
1) 这个你要看LCD的规格书,里面有关于写数据的时序
2) 看教程关于LCD驱动的定义,里面应该有这个函数,只要你这个函数包含过来就好
专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void


回复

使用道具 举报

7482

TA的帖子

4951

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2019-3-1 09:41 | 显示全部楼层
你这个应该是全局变量,那么声明放在所有函数之前。,给你我之前写的一些程序样板,你看看 01.jpg


回复

使用道具 举报

7482

TA的帖子

4951

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2019-3-1 09:44 | 显示全部楼层
关于变量的声明和定义,全局变量、局部变量,尤其是数组变量的声明和定义,你要仔细去看看


回复

使用道具 举报

2860

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-3-1 10:13 | 显示全部楼层
lcd_wdat(PASS_NEW[n]+0x30);函数原型要定义,并且在文件的开始要申明,如果是在其他文件中要extern +申明


回复

使用道具 举报

15

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-3-4 17:06 | 显示全部楼层
tiankai001 发表于 2019-3-1 09:44
关于变量的声明和定义,全局变量、局部变量,尤其是数组变量的声明和定义,你要仔细去看看

问题解决了,也明白了自己之前的理解错误在哪,十分感谢


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-3-22 00:37 , Processed in 0.201174 second(s), 17 queries , Gzip On, MemCache On.

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