📄 lcd.h
字号:
#ifndef __LCD_H__
#define __LCD_H__
#include <avr/io.h>
#include <avr/pgmspace.h>
// AVR <--> LCD connection
//
// change this configuration to suit yours
//
#define DATA_PORT PORTA
#define DATA_DDR DDRA
#define CTRL_PORT PORTC
#define CTRL_DDR DDRC
#define CTRL_RST 4
#define CTRL_CS2 2
#define CTRL_CS1 3
#define CTRL_E 5
#define CTRL_RW 6
#define CTRL_RS 7
#define CTRL_BL 0
// LCD control commands
#define DISPLAY_ON 0x3F
#define DISPLAY_OFF 0x3E
#define LINE_BASE 0xC0
#define Y_BASE 0x40 //0x40 + column# (0~63)
#define PAGE_BASE 0xB8 //0xB8 + page# (0~7)
// LCD size
#define SCR_HALF_WIDTH 64
#define SCR_WIDTH 2*SCR_HALF_WIDTH
#define SCR_PAGE 8
// control signal
#define PULSE_DELAY lcd_delay_us(10)
// redefine sbi and cbi
#define cbi(reg, bit_number) reg &= ~(1<<(bit_number)) // Clears the corresponding bit in register reg
#define sbi(reg, bit_number) reg |= (1<<(bit_number)) // Sets the corresponding bit in register reg
#define WRITE_CMD cbi(CTRL_PORT, CTRL_RW); cbi(CTRL_PORT, CTRL_RS); // command
#define WRITE_DATA cbi(CTRL_PORT, CTRL_RW); sbi(CTRL_PORT, CTRL_RS); // data
#define LCD_EN PULSE_DELAY; cbi(CTRL_PORT, CTRL_E); PULSE_DELAY;\
PULSE_DELAY; sbi(CTRL_PORT, CTRL_E); PULSE_DELAY;\
PULSE_DELAY; cbi(CTRL_PORT, CTRL_E); PULSE_DELAY;
#define LCD_RST PULSE_DELAY; sbi(CTRL_PORT, CTRL_RST); PULSE_DELAY;\
PULSE_DELAY; cbi(CTRL_PORT, CTRL_RST); PULSE_DELAY;\
PULSE_DELAY; sbi(CTRL_PORT, CTRL_RST); PULSE_DELAY;
#define LEFT_SCREEN sbi(CTRL_PORT, CTRL_CS1); cbi(CTRL_PORT, CTRL_CS2); // left-half screen
#define RIGHT_SCREEN cbi(CTRL_PORT, CTRL_CS1); sbi(CTRL_PORT, CTRL_CS2); // right-half screen
#define BKLIGHT {if (backlight) cbi(CTRL_PORT, CTRL_BL); else sbi(CTRL_PORT, CTRL_BL); backlight = 1 - backlight;}
// position for showing analog signal, change the values if necessary
#define T_START_PAGE 0 // the first page
#define T_END_PAGE 3 // the last page
#define T_DOT_VALUE 128/(T_END_PAGE - T_START_PAGE + 1) // voltage represented by one dot
#define T_PAGE_VALUE 8*T_DOT_VALUE // voltage represented by 8 dots
// position for showing spectrum, change the values if necessary
#define F_START_PAGE 4 // the first page
#define F_END_PAGE 7 // the last page
#define F_DOT_VALUE 128/(F_END_PAGE - F_START_PAGE + 1) // amplitude represented by one dot
#define F_PAGE_VALUE 8*F_DOT_VALUE // amplitude represented by 8 dots
extern void lcd_print_signal (unsigned int *wave);
extern void lcd_print_spectrum (unsigned int *spectrum);
extern void lcd_initial (void);
#endif //#ifndef __LCD_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -