📄 lcd.c
字号:
/********************************************************************
/********************************************************************
/*
/* ST7565
/* 128 X 64
/*
********************************************************************/
#include <FS7805Reg.h>
#include "lcd.h"
void delay_us(unsigned char t)
{
unsigned char i;
for(; t>0; t--)
{
for (i=0; i<10; i++);
}
}
void delay(unsigned int t)
{
for(; t>0; t--)
{
unsigned int i;
for (i=0; i<1000; i++);
}
}
void send_data(unsigned char temp)
{
unsigned char i;
for(i=0; i<8; i++)
{
LCD_SCL_L();
if(temp&0x80) LCD_SDA_H();
else LCD_SDA_L();
delay_us(10); //延时
LCD_SCL_H();
temp <<= 1;
}
}
void write_command(unsigned char cmd)
{
LCD_CS_L(); //Chip Select
delay_us(10);
LCD_RS_L(); //Command Regsiter
delay_us(10);
send_data(cmd); //Transfer Command Data
}
void write_data(unsigned char dat)
{
LCD_CS_L(); //Chip Select
delay_us(10);
LCD_RS_H(); //Data Regsiter
delay_us(10);
send_data(dat); //Transfer Display Data
}
void init_lcd(void)
{
PDCTL = ((1<<P1D_CTL)|(1<<P5D_CTL));
P1OE |= ((1<<LCD_SDA)|(1<<LCD_SCL)|(1<<LCD_CS)|(1<<LCD_RST));
P5OE |= (1<<LCD_CS);
SYSIO_CFG |= (1<<bmEX_INT_EN);
LCD_CS_L();
delay(10);
LCD_RST_L();
delay(100);
LCD_RST_H();
delay(10);
write_command(0xe2);
delay(10);
write_command(0xa2);
write_command(0xa0);
write_command(0xc8);
write_command(0x24);
write_command(0x81);
write_command(0x19);
write_command(0x2f);
delay(10);
write_command(0xaf);
delay(20);
}
void init_address(unsigned char addr, unsigned char msb, unsigned char lsb)
{
write_command(addr);
write_command(msb);
write_command(lsb);
}
void display_test(void)
{
unsigned char addr=0xb0, msb=0x10, lsb=0x00;
unsigned page, k;
for(page=0; page<8; page++)
{
init_address(addr, msb, lsb);
for(k=0; k<66; k--)
{
write_data(0xff);
write_data(0xff);
}
addr++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -