AVR单片机GCC编译问题,D:\prj\mcu\Debug\default/../LCD1602.c:59: multiple definition of `LCD_Init'

//MAIN.Cintmain(){LCD_Init();while(1){}}//========//1602.C========================#de... //MAIN.C
int main()
{
LCD_Init();
while(1)
{}
}
//========//1602.C========================
#define LCDcmd 0x0
#define LCDdata 0x1
//======清除显示======
#define LCDClear 0x01
//===========光标复位============
#define LCDCursorReturn 0x02
//===========显示模式=============
#define LCDDisplayMode 0x04
#define Cur_left 0x0;//光标左移
#define Cur_right 0x2;//光标右移
#define Screen_freeze 0x0;//屏幕不移动
#define Screen_right 0x1;//屏幕右移
//============显示开关控制============
#define LCDDisplayControl 0x08//
#define disp_on 0x04
#define disp_off 0x00
#define cur_on 0x02
#define cur_off 0x00
#define cur_bl_on 0x01
#define cur_bo_off 0x00
//======显示或光标移位========
#define LCDCursorSetting 0x10
#define left 0x00//左移
#define right 0x04//右移
#define string_move 0x08//字符移动
#define cursor_move 0x00//光标移动
//========设定字符发生器地址=========
#define LCDCGRAMAddr 0x40 //需加地址:LCDCGRAMAddr | addr
//========设定数据存储器地址=========
#define LCDDDRAMAddr 0x80//需要加地址 LCDDDRAMAddr | addr
//==========忙标志位==========
#define BF 0x7//
//==========功能设定==========
#define LCDFunctionSetting 0x20//功能设定
#define bit4 0x00//4位方式 DL
#define bit8 0x10
#define row1 0x00//一行字符显示
#define row2 0x08//两行字符显示
#define font5_7 0x00
#define font5_11 0x04
//==============指令宏=================
#define wr1602 rw_l//写信好
#define rd1602 rw_h//读信号
#define data1602 rs_h//数据信号
#define cmd1602 rs_l//命令信号
#define e_h sbi(LCD1602_ctrl_port,e)
#define LCD1602_port_in LCD1602_ddr=0x00
#define LCD1602_port_out LCD1602_ddr=0xff
#define LCD1602_ctrl_port_out LCD1602_ctrl_ddr|=( (1<<rw) | (1<<e) | (1<<rs) | (1<<bl) )
#define nop asm("nop")

void LCD_Init(void);
void LCD_Send(unsigned char command, unsigned char data);
void LCD_Busy_Wait(void);
void LCD_Write_String(const char ptr[]);
unsigned int LCD_Read(void);*/
//================LCD_Busy_Wait==========
void LCD_Busy_Wait(void)
{
_delay_ms(10);
rd1602;//RW = 1
rs_l;//cmd1602;
LCD1602_port_in;
//LCD1602_port=0xff;
e_l;
e_h;
while(bit_is_set(LCD1602_pin,BF) );
e_l; //E=0
}
void LCD_Send(unsigned char command, unsigned char data)
{
LCD_Busy_Wait();
省略代码}
void LCD_Init(void)
{//省略代码}
void LCD_Write_String (const char ptr[])
{//省略代码}
展开
 我来答
gdxizhilang
2013-11-20 · TA获得超过3333个赞
知道小有建树答主
回答量:802
采纳率:50%
帮助的人:302万
展开全部
两个建议:

1、主函数部分要放到最后,就是把函数声明和预定义放到头文件下面,所有子函数和主函数之前;
如您在这样就要把 下面部分放到最后,LCD_Send()定义之后

int main()
{
LCD_Init();
while(1)
{}
}
2、“unsigned int LCD_Read(void);*/ " 这句有问题,后面多了个*/

希望能帮到您。
更多追问追答
追问
以前都放到头文件里面的,不行我才直接放到1602.C文件里面的,也不行,我就放到MAIN.C里面就编译通过了,搞不清楚是哪出问题了。
追答
头文件您放到Include文件夹里面,如果是那没问题,如果不是您要用 include ”lcd1602.h"而不是用
include
有时候GCC就这样,程序太长了,就会出一些莫名其妙的问题,甚至遇到过这种情况:
一行代码放在这里不行,隔一行放就OK了,也是不可思议,用的时间长了就习惯了,总的来说这种莫名其妙的问题有但非常少。
逐缈若岛柿橇T
2013-11-20 · 超过34用户采纳过TA的回答
知道答主
回答量:216
采纳率:50%
帮助的人:80.3万
展开全部
LCD_Init
重复定义了...
追问
根本没有重复定义么。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式