📄 lcd.c
字号:
/*
**
** LCD.c
**
** 7/30/06 LDJ v1.0
*/
#include <p24fj128ga010.h>
#include "LCD.h"
void initLCD( void)
{
// PMP initialization
PMCON = 0x83BF; // Enable the PMP, long waits
PMMODE = 0x3FF; // Master Mode 1
PMAEN = 0x0001; // PMA0 enabled
// init TMR1
T1CON = 0x8030; // Fosc/2, prescaled 1:256, 16us/tick
// wait for >30ms
TMR1 = 0; while( TMR1<2000);// 2000 x 16us = 32ms
//initiate the HD44780 display 8-bit init sequence
PMADDR = LCDCMD; // command register
PMDATA = 0b00111000; // 8-bit interface, 2 lines, 5x7
TMR1 = 0; while( TMR1<3); // 3 x 16us = 48us
PMDATA = 0b00001100; // display ON, cursor off, blink off
TMR1 = 0; while( TMR1<3); // 3 x 16us = 48us
PMDATA = 0b00000001; // clear display
TMR1 = 0; while( TMR1<100); // 100 x 16us = 1.6ms
PMDATA = 0b00000110; // increment cursor, no shift
TMR1 = 0; while( TMR1<100); // 100 x 16us = 1.6ms
} // initLCD
char readLCD( int addr)
{
int dummy;
while( PMMODEbits.BUSY); // wait for PMP to be available
PMADDR = addr; // select the command address
dummy = PMDATA; // initiate a read cycle, dummy read
while( PMMODEbits.BUSY); // wait for PMP to be available
return( PMDATA); // read the status register
} // readLCD
void writeLCD( int addr, char c)
{
while( busyLCD());
while( PMMODEbits.BUSY); // wait for PMP to be available
PMADDR = addr;
PMDATA = c;
} // writeLCD
void putsLCD( char *s)
{
while( *s) putLCD( *s++);
} //putsLCD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -