Clip bài giảng, sơ đồ nguyên lý, Layout, hướng dẫn thi công board LCD, các file header, source code đã được update trên website tại link sau:
Bài Lập trình hiển thị với LCD 16x2
								Bài Lập trình hiển thị với LCD 16x2
Em download lại 2 file lcd.h và lcd.c ở link bài học trên, copy vào thư mục em tạo project (xoá file cũ đi), add lại vào project rồi build lại xem.Chị cho em hỏi là em copy cái Souce code (lcd_1_main.c) và build chương trình thì nó báo lỗi này:
Error [1098] E:\PIC project\LCD\lcd_1_main.c; 90. conflicting declarations for variable "_lcd_clear" (E:\PIC project\LCD\lcd.c:73)
********** Build failed! **********
vậy em phải sửa lại như thế nào?
lcd_init() chứ nhỉ, hình như em viết sai dòng này.e cũng bị lỗi tương tự...Error [499] ; 0. undefined symbol:
_lcd_int(bai1.obj)
e lấy 2 file trên link copy vào rồi mà vẫn vậy...
Em nên post cả code và post nguyên văn dòng lỗi khi gặp các vấn đề như thế này thì mọi người sẽ dễ tìm ra lỗi hơn nhé.em copy qua mà sao sai được...
add đầy đủ file ko ? có thể do bạn xài bản lite mode nó ko cho phép , bạn có thể crack thử. Ngoài ra bản này HITECH PICC 9.82 nên khai báo config khác các bản trước nên nó báo sai các ký tự VD: XT ... , bạn cài bản 9.7 là xài dc rùimáy bác giúp em khắc phục lỗi này với:
Build D:\Documents\Dien tu\PIC16F887\Tu hoc\Project LCD\lcd for device 16F887
Using driver C:\Program Files\HI-TECH Software\PICC\9.82\bin\picc.exe
Make: The target "D:\Documents\Dien tu\PIC16F887\Tu hoc\Project LCD\lcd.p1" is up to date.
Make: The target "D:\Documents\Dien tu\PIC16F887\Tu hoc\Project LCD\lcd_1_main.p1" is up to date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.82\bin\picc.exe" -olcd.cof -mlcd.map --summary=default --output=default lcd.p1 lcd_1_main.p1 --chip=16F887 -P --runtime=default --opt=default -D__DEBUG=1 --rom=default --ram=default -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.82
Copyright (C) 2011 Microchip Technology Inc.
(1273) Omniscient Code Generation not available in Lite mode (warning)
Error [800] lcd.as; 45. undefined symbol "DEBUGDIS"
Error [800] lcd.as; 45. undefined symbol "LVPDIS"
Error [800] lcd.as; 45. undefined symbol "FCMDIS"
Error [800] lcd.as; 45. undefined symbol "IESODIS"
Error [800] lcd.as; 45. undefined symbol "SWBOREN"
Error [800] lcd.as; 45. undefined symbol "UNPROTECT"
Error [800] lcd.as; 45. undefined symbol "MCLREN"
Error [800] lcd.as; 45. undefined symbol "PWRTEN"
Error [800] lcd.as; 45. undefined symbol "WDTDIS"
Error [800] lcd.as; 45. undefined symbol "XT"
Error [800] lcd.as; 49. undefined symbol "BORV21"
********** Build failed! **********


bạn ơi tiện thể cho mình hỏi ,làm thế nào để biết mình config bao gồm những gì vậy bạn , đồng thời có thể giải thik cái dòng CONFIG trên kia được k ? cảm ơn bạn nhiều :pbổ sung:
Trước khi code cho 1 con Pic nào đó với HT-PIC bạn nên đọc qua file header của con chip đó ở thư mục \include của bộ cài, cụ thể ở đay là file pic16f887.h, file này định nghĩa tất cả các thanh ghi của con chip. Ở các version khác nhau HTPIC định nghĩa các thanh ghi này có đôi chỗ khác nhau có thể gây ra lỗi như của bạn( chẳng hạn ở bài về ADC có thể sẽ gặp lỗi ở lệnh set GODONE, phải là GO_DONE mới đúng ..v.v.)
Thân
FOSC<2:0>: Oscillator Selection bits
111 = RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN
110 = RCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN
101 = INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
100 = INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
011 = EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN
010 = HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
001 = XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
000 = LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
	bit 8 BOR4V: Brown-out Reset Selection bit
0 = Brown-out Reset set to 2.1V
1 = Brown-out Reset set to 4.0V
	// Oscillator 
#define EXTCLK		0x3FFF	// External RC Clockout
#define EXTIO		0x3FFE	// External RC No Clock
#define INTCLK		0x3FFD	// Internal RC Clockout
#define INTIO		0x3FFC	// Internal RC No Clock
#define EC		0x3FFB	// EC
#define HS		0x3FFA	// HS
#define XT		0x3FF9	// XT
#define LP		0x3FF8	// LP
// Watchdog Timer 
#define WDTEN		0x3FFF	// On
#define WDTDIS		0x3FF7	// Disabled / SWDTEN control
// Power Up Timer 
#define PWRTDIS		0x3FFF	// Off
#define PWRTEN		0x3FEF	// On
// Master Clear Enable 
#define MCLREN		0x3FFF	// MCLR function is enabled
#define MCLRDIS		0x3FDF	// MCLR functions as IO
// Code Protect 
#define UNPROTECT	0x3FFF	// Code is not protected
#define CP		0x3FBF	// Code is protected
#define PROTECT		CP	//alternate
// Data EE Read Protect 
#define DUNPROTECT	0x3FFF	// Do not read protect EEPROM data
#define CPD		0x3F7F	// Read protect EEPROM data
// Brown Out Detect 
#define BORDIS		0x3CFF	// BOD and SBOREN disabled
#define SWBOREN		0x3DFF	// SBOREN controls BOR function (Software control)
#define BORXSLP		0x3EFF	// BOD enabled in run, disabled in sleep, SBOREN disabled
#define BOREN		0x3FFF	// BOD Enabled, SBOREN Disabled
// Internal External Switch Over Mode 
#define IESOEN		0x3FFF	// Enabled
#define IESODIS		0x3BFF	// Disabled
// Monitor Clock Fail-safe 
#define FCMEN		0x3FFF	// Enabled
#define FCMDIS		0x37FF	// Disabled
// Low Voltage Programming 
#define LVPDIS		0x2FFF	// Disabled
#define LVPEN		0x3FFF	// Enabled
// In-Circuit Debugger Mode 
#define DEBUGEN		0x1FFF	// Enable ICD2 debugging
#define DEBUGDIS	0x3FFF	// Disable ICD2 debugging
#define CONFIG_ADDR2	0x2008
// Brown-out Reset Voltage 
#define BORV21		0x3EFF	// 2.1 Volts
#define BORV40		0x3FFF	// 4.0 Volts
	__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS); //1st config. word
__CONFIG(BORV21);    //2st config. word
	
/*--------------Includes-----------------------------------------------------*/
#include <htc.h>
#include <pic.h>
#include "lcd.h"
/*--------------Defines------------------------------------------------------*/
#define 	_XTAL_FREQ		12000000 
/*--------------Configuration Settings---------------------------------------*/
__CONFIG(FOSC_HS &			// External Crystal at High Speed
	 	 WDTE_OFF &			// Disable Watchdog Timer
	 	 PWRTE_ON  &		//Enable Power Up Timer
	 	 BOREN_OFF &		//Disable Brown Out Reset
	 	 MCLRE_ON &			//MCLR function is enabled
	 	 LVP_OFF);			//Disable Low Voltage Programming
		 
/*--------------Global Variables---------------------------------------------*/
/*--------------Functions----------------------------------------------------*/
/*-----------------------------------------------------------------------------
 * Function Name  : pic_init
 * Description    : Setup the peripherals, we intend to use
 * Parameter   	  : None
 * Return         : None
 */
void pic_init(void) {	
	ANSEL = 0b00000000;		// 0=Digital; 1=Analog Input
	ANSELH = 0b00000000;	// 0=Digital; 1=Analog Input
	
	//TRISC = 0b00000000;
    TRISB = 0b00000000;
   // TRISC5=0;
}
/* -- void delay_1s() --------------------------------------------
 * 
 * Description	: delay 1s 
 * Parameters	: none
 * Return		: don't care
 */
void delay_1s()
{
	char i;
	for (i=0; i<10; i++)
		__delay_ms(100);
}
 /****************************************************************
 * MAIN
 ****************************************************************/	
 
/* -- void main (void)	-----------------------------------------
 * 
 * Description	: Display my name & my Student ID on LCD,
 *                and make them "blinky" 
 * Parameters	: none
 * Return		: don't care
 * Notes		: 
 */
 
void main(void)
{		
	lcd_init();
	__delay_ms(100);
	
	while (1)
	{
		lcd_clear();
		delay_1s();
		lcd_puts("Name"); 		//Put "Name" on row 0
		lcd_gotoxy(0,1); 		//Go to column 0, row 1
		lcd_puts("4050xxxx");	//Put Student ID on row 1
		delay_1s();
	};
	
}
/****************************************************************
 * END OF lcd_1_main.c
 ****************************************************************/