⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_driver_ks0107.h

📁 lcd driver for 8051 and other controllers
💻 H
字号:
//*****************************************************************************//// Work File 	: lcd_driver_KS0107.h// Description	: Driver for KS0107 driven LCD display.//// Author       : Sami Varjo// Created      : 2008-06-23// Revised      : 2008-06-29// Version      : 0.03// Target MCU	: Atmel AVR - ATMEGA 5815 (or equivalent)// Uses         : avr-libc//// This code is distributed under the GNU Public License// which can be found at http://www.gnu.org/licenses/gpl.txt//// Change history:  //       ver 0.03: Cleaned up//       ver 0.02: Added several functions//       ver 0.01: Project started - basic definitions////*****************************************************************************#ifndef LCD_DRIVER_KS0107#define LCD_DRIVER_KS0107#include <inttypes.h>#include <avr/io.h>//MCU definitions#ifndef F_CPU//#define F_CPU 1000000UL //1M CPU speed (for <util/delay.h>) #define F_CPU  7372800UL //Atmega5815  7.3728MHz//#define F_CPU 14745600UL //Atmega8    14.7456MHz#endif//MCU connection definitions  (bits for pins and ports)//Control port pins#define LCD_CONTROLPORT   PORTC   //port to send control signals (PC1-PC7) #define LCD_CPDIRECTION   DDRC    //direction register for port to LCD control                                  //input 0, output 0b11111111 (0xff)#define LCD_CS1  (1<<PIN3) // Chip select 1#define LCD_CS2  (1<<PIN4) // Chip select 2#define LCD_RST  (1<<PIN5) // RESET bit - IF 0 IT STARTS INITIALIZATION#define LCD_RS   (1<<PIN0) //MCU pin to LCD RS  0 == command  | 1 == DDRAM data #define LCD_RW   (1<<PIN1) //MCU pin to LCD R/W 0 == write to 0|1 == read from  #define LCD_E    (1<<PIN2) //MCU pin to LCD E   1 == Enable operation - execute//Data port definitions (actual commands and data)#define LCD_DATAPORT      PORTA // MCU port connected to LCD data pins#define LCD_DATA_IN	  PINA  // Place to read data in#define LCD_DPDIRECTION   DDRA  // direction reg for data/command port data 1=out 0=in (A0)#define LCD_D0 (1<<PIN0) // MCU pin to LCD  : data bit 0#define LCD_D1 (1<<PIN1) // MCU pin to LCD  : data bit 1#define LCD_D2 (1<<PIN2) // MCU pin to LCD  : data bit 2#define LCD_D3 (1<<PIN3) // MCU pin to LCD  : data bit 3#define LCD_D4 (1<<PIN4) // MCU pin to LCD  : data bit 4#define LCD_D5 (1<<PIN5) // MCU pin to LCD  : data bit 5#define LCD_D6 (1<<PIN6) // MCU pin to LCD  : data bit 6#define LCD_D7 (1<<PIN7) // MCU pin to LCD  : data bit 7//LCD spec definitions#define LCD_PAGE_HEIGHT 8   //8 lines per page#define LCD_LINES       64#define LCD_LINE_LENGTH 128#define LCD_NUM_CHIPS   2#define FALSE   0x00#define TRUE    0x01#define LEFT  0#define RIGHT 1//LCD binary instructions#define SET_DISPLAY_OFF             0b00111110       #define SET_DISPLAY_ON              0b00111111#define SET_COLUMN_ADDRESS(col)     0b01000000|col  //0-63#define SET_INIT_DISPLAY_LINE(line) 0b11000000|line //0-63#define SET_PAGE_ADDRESS(page)      0b10111000|page //0-7//Function declarations for low level operationsvoid    LCD_sendCommand(uint8_t command);void    LCD_writeByte(uint8_t data);uint8_t LCD_readByte(void);uint8_t LCD_readStatus(void);void    LCD_selectChip(void);void    LCD_selectLeftChip(void);void    LCD_selectRightChip(void);//API function declarationsvoid LCD_init(void);   //do reset and int LCDvoid LCD_on(void);     //turn on  LCD (not backlight)void LCD_off(void);    //turn off LCD (not backlight)void LCD_clr(void);void LCD_allPagesOn(uint8_t byte);void LCD_setCursorXY(uint8_t x, uint8_t y);void LCD_pixelOn(uint8_t x, uint8_t y);void LCD_pixelOff(uint8_t x, uint8_t y);void LCD_invertPixel(uint8_t x, uint8_t y);void LCD_invertPage(uint8_t page, uint8_t x1, uint8_t x2);void LCD_onPage(uint8_t page,uint8_t x1,uint8_t x2);void LCD_offPage(uint8_t page,uint8_t x1,uint8_t x2);void LCD_putchar(uint8_t c);void LCD_puts(uint8_t* string);void LCD_putsp(uint8_t* string, uint8_t page, uint8_t x);uint8_t LCD_isBusy(void);uint8_t LCD_isOff(void);uint8_t LCD_isReseting(void);//Functions to set RAM addresses for read and write operationsvoid LCD_setPageAddress(uint8_t page);void LCD_setColumnAddress(uint8_t col);void LCD_setInitialLineAddress(uint8_t line);//help functionsvoid LCD_wait_execution(void);void LCD_wait_busy(void);void LCD_selectSide(uint8_t side);uint8_t _LCD_readByte(void);#endif //Define LCD_DRIVER

⌨️ 快捷键说明

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