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

📄 lcd.h

📁 专门针对avr系列的单片机优化的fft算法
💻 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 + -