lcdio.c

来自「该应用软件可以实现大多数单片机的仿真实验」· C语言 代码 · 共 83 行

C
83
字号
/*********************************************************************
**********************************************************************
*****                                                             ****
*****         L A B C E N T E R    E L E C T R O N I C S          ****
*****                                                             ****
*****                    PIC 18F452 LCD Driver                    ****
*****                                                             ****
**********************************************************************
*********************************************************************/

#include "calc.h"
#include "p18f452.h"

VOID lcd_init ()
// Initialise the LCD Display. 
 { PORTA = TRISA = 0; 
   TRISB = PORTB = 0xFF;
   ADCON1 = 7;
   wrcmd(0x30);                  // 8-bit mode - 1 line.
   wrcmd(LCD_SETVISIBLE+0x04);   // Display only - no cursors.
   wrcmd(LCD_SETMODE+0x03);      // Automatic Increment - Display shift left.
   wrcmd(LCD_SETDDADDR+0x0F);    // Initial Position far right.
 }

VOID clearscreen ()
// Clear the LCD Screen and reset
// initial position.
 { wrcmd(LCD_CLS);
   wrcmd(LCD_SETDDADDR+0x0F);
 }

/***** Utility Functions *****/

VOID wrcmd (CHAR cmdcode)
// Write a command to the LCD display.
 { TRISB = 0;
   PORTB = cmdcode;

   // Write to PORTB to latch data into the display.
   // Toggle Pin 'E' to send the command.
   PORTA  = LCD_CMD_WR;
   PORTA |= E_PIN_MASK;
   _asm
	NOP
	_endasm
   PORTA &= ~E_PIN_MASK;
   
   lcd_wait();
 }
     
VOID wrdata (CHAR data)
// Write a Character to the LCD Display. 
 { TRISB = 0;
   PORTB = data;
   
   PORTA = LCD_DATA_WR;
   PORTA |= E_PIN_MASK;
   _asm
	NOP
	_endasm
   PORTA &= ~E_PIN_MASK;
   
   lcd_wait();
 }

VOID lcd_wait ()
// Wait for the LCD busy flag to clear. 
 { BYTE status;
   TRISB = 0xFF;
   
   PORTA = LCD_BUSY_RD;
   do
    { PORTA |= E_PIN_MASK;
	   _asm
		NOP
		_endasm
      status = PORTB;
      PORTA &= ~E_PIN_MASK;
    } while (status & 0x80);
 }


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?