📄 lcd_5110.h
字号:
#ifndef __NOKIA_5110_H__
#define __NOKIA_5110_H__
#define SET_SCLK P2OUT|=BIT4;
#define CLR_SCLK P2OUT&=~BIT4;
#define SET_SDIN P2OUT|=BIT3;
#define CLR_SDIN P2OUT&=~BIT3;
#define SET_LCD_DC P2OUT|=BIT2;
#define CLR_LCD_DC P2OUT&=~BIT2;
#define SET_LCD_CE P2OUT|=BIT1;
#define CLR_LCD_CE P2OUT&=~BIT1;
#define SET_LCD_RST P2OUT|=BIT0;
#define CLR_LCD_RST P2OUT&=~BIT0;
#define LCD_IN_USE 20
#define RADIX_POINT 0x08
/******************************************************
数据定义
*****************************************************/
unsigned char lcd_Buf[LCD_IN_USE][24]; // 自定义显示缓冲区,用于 // 外部设定要显示的数据
unsigned char xindian_Buf[84]={0}; // 定义测量心电结果暂存缓存,以便显示调用
unsigned char tu_Buf[3024]={0};
void zhuanhuan(unsigned int xindianresult) //心电转换函数
{
int a,i;
a=(int)((xindianresult*48)/25000);
for(i=0;i<83;i++)
{
xindian_Buf[83-i]=xindian_Buf[82-i];
}
xindian_Buf[0]=a;
}
void NOKIA5110_delay(void) //延时函数
{
unsigned int i;
for(i=0;i<1000;i++);
}
/*-----------------------------------------------------------------------
NOKIA5110_w_byte : 使用SPI接口写数据到LCD
输入参数:data :写入的数据;
command :写数据/命令选择;
-----------------------------------------------------------------------*/
void NOKIA5110_w_byte(unsigned char dat, unsigned char command)
{
unsigned char i;
CLR_LCD_CE;
if (command == 0) CLR_LCD_DC; // 传送命令
if (command == 1) SET_LCD_DC; // 传送数据
for(i=0;i<8;i++)
{ if(dat&0x80)
SET_SDIN ;
if(!(dat&0x80))
CLR_SDIN;
CLR_SCLK;
dat = dat << 1;
SET_SCLK ;
}
SET_LCD_CE;
}
/*-----------------------------------------------------------------------
NOKIA5110_clear : LCD清屏函数
-----------------------------------------------------------------------*/
void NOKIA5110_clear(void)
{
unsigned int i;
NOKIA5110_w_byte(0x0c, 0);
NOKIA5110_w_byte(0x80, 0);
for (i=0; i<504; i++)
NOKIA5110_w_byte(0, 1);
}
/****************************************************
NOKIA5110_init: LCD 初始化
*****************************************************/
void NOKIA5110_init(void)
{
// 产生一个让LCD复位的低电平脉冲
CLR_LCD_RST;
NOKIA5110_delay();
SET_LCD_RST;
// 关闭LCD
CLR_LCD_CE;
NOKIA5110_delay();
// 使能LCD
SET_LCD_CE;
NOKIA5110_delay();
NOKIA5110_w_byte(0x21, 0); // 使用扩展命令设置LCD模式
NOKIA5110_w_byte(0xc8, 0); // 设置偏置电压
NOKIA5110_w_byte(0x06, 0); // 温度校正
NOKIA5110_w_byte(0x13, 0); // 1:48
NOKIA5110_w_byte(0x20, 0); // 使用基本命令
NOKIA5110_clear(); // 清屏
NOKIA5110_w_byte(0x0c, 0); // 设定显示模式,正常显示
CLR_LCD_CE; // 关闭LCD
}
/*-----------------------------------------------------------------------
NOKIA5110_set_XY : 设置LCD坐标函数
输入参数:X:0-83
Y:0-5
-----------------------------------------------------------------------*/
void NOKIA5110_set_XY(unsigned char X, unsigned char Y)
{
NOKIA5110_w_byte(0x40 | Y, 0); // 列(竖)
NOKIA5110_w_byte(0x80 | X, 0); // 行(横)
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -