我正在学习如何使用CCS PCWHD IDE C编译器对PIC控制器进行编程。我尝试使用C代码在Proteus 8的LCD显示器上显示消息。
我编写的代码编译,生成.HEX和.COF文件没有问题。但是,当我尝试在Proteus 8上模拟这个代码时,我看到的只是LCD屏幕打开。没有闪烁的光标或文本出现。我已经对连接和Proteus原理图进行了三重检查,但在那里找不到任何问题。
我使用带有4MHz外部晶振的PIC16F877A微控制器我使用的LCD显示器是LM016L(16x2 LCD显示器)。我无法理解Proteus,C编译器或我的代码是否存在问题?
我写的代码如下:
#include <16F877A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000) //4MHz Crystal
#use fast_io(b)
#byte ADCON1=0x9F
//Implementing the LCD onto Port B
#define PORTB=0x06
#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_DATA_PORT PORTB
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#define LCD_TYPE 2 //2 Line display
#include <lcd.c> // LCD library
void main()
{
set_tris_b(0x00); //Port B is completely output
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//TODO: User Code
lcd_init();
delay_ms(10);
while (TRUE)
{
lcd_send_byte(0,0x0e); //Blinking Cursor
delay_ms(10);
printf(lcd_putc,"\fHello");
printf(lcd_putc,"\nWorld");
delay_ms(1000);
printf(lcd_putc,"\fMy");
printf(lcd_putc,"\nFirst");
delay_ms(1000);
lcd_gotoxy(5,1); //Row 1, Column 5
delay_ms(10);
printf(lcd_putc,"\fPIC");
lcd_gotoxy(1,2); //Row 2 column 5
delay_ms(10);
printf(lcd_putc,"Project");
delay_ms(1000);
}
}
答案 0 :(得分:1)
OSCCON
),这在给定代码中不存在。您要禁用ADC
,因此您使用了setup_adc_ports(NO_ANALOGS);
因此,不需要下一行setup_adc(ADC_CLOCK_DIV_2);
代码。
确保 R \ W 引脚已连接到ground
。
对比度调整电阻应该在那里
请查看以下图片以获取连接:
This link包含Micro C
中的代码,供您参考