3310lcd_function.c

来自「本程序简单的示范了如何使用3310液晶。 显示静止的英文显示静止的中文 」· C语言 代码 · 共 44 行

C
44
字号
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/pgmspace.h>
#include "3310LCD_main.h"
#include "3310LCD_function.h"
#include "english_6x8_pixel.h"

/*-----------------------------------------------------------------------
LCD_init          : 3310LCD初始化
-----------------------------------------------------------------------*/
void LCD_init(void)
{
    PORTB &= ~(1 << LCD_nRST);		// 产生一个让LCD复位的低电平脉冲
    _delay_ms(1);
    PORTB |= (1 << LCD_nRST);

    PORTB &= ~(1 << LCD_nCE);
    _delay_us(10);
    PORTB |= (1 << LCD_nCE);		// LCD SPI同步

    LCD_write_byte(0x21, 0);		// 使用扩展命令设置LCD模式
    LCD_write_byte(0x80 + 0x48, 0);	// 设置偏置电压
    LCD_write_byte(0x04 + 0x02, 0);	// 温度校正
    LCD_write_byte(0x10 + 0x03, 0);	// 1:48
    LCD_write_byte(0x20, 0);  		// 使用基本命令
    LCD_clear();		 			// 清屏
    LCD_write_byte(0x0c, 0);		// 设定显示模式,正常显示
}

/*-----------------------------------------------------------------------
LCD_write_byte    : 使用SPI接口写数据到LCD
 
输入参数:	data    :写入的数据;
			command :写数据/命令选择;
-----------------------------------------------------------------------*/
void LCD_write_byte(unsigned char data, unsigned char command)
{
    PORTB &= ~(1 << LCD_nCE) ;			// 使能LCD
    if (command == 0)
        PORTB &= ~(1 << LCD_DnC);		// 传送命令
    else
        PORTB |= (1 << LCD_DnC);		// 传送数据
    SPDR = data;			 			// 传送数据到SPI寄存器
    while ((SPSR & (1 << SPIF)) == 0);	// 等待数据传送完

⌨️ 快捷键说明

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