今天也没什么想说的,因为某些事情忙的不行不行的。就偷个懒贴上自己移植的代码吧,希望能帮到初学者们。
- 头文件nokia_5110.h
#ifndef __nokia_5110_h_
#define __nokia_5110_h_
#include <msp430.h>
#define LCD_5110_DIR P3DIR
#define LCD_5110_OUT P3OUT
#define LCD_RST 2
#define LCD_CE 3
#define LCD_DC 4
#define LCD_DIN 5
#define LCD_CLK 6
//extern void LCD_PORT_INIT(void);
extern void LCD_init(void);
extern void LCD_clear(void);
extern void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
extern void LCD_write_chinese_string(unsigned char X, unsigned char Y,
unsigned char ch_with,unsigned char num,
unsigned char line,unsigned char row);
extern void LCD_write_char(unsigned char c);
extern void LCD_write_byte(unsigned char dat, unsigned char dc);
extern void LCD_ShowChar(unsigned char X,unsigned char Y,unsigned char c);
extern unsigned int LCD_mypow(unsigned char m,unsigned char n);
extern void LCD_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len);
extern void LCD_ShowFloat(unsigned char x, unsigned char y,float num,unsigned int n1,unsigned int n2);
extern void LCD_ShowString(unsigned char X,unsigned char Y,char *s);
#endif
- 函数nokia_5110.c
#include "nokia_5110.h"
#include "english_6x8_pixel.h"
#include "write_chinese_string_pixel.h"
/*-----------------------------------------------------------------------
LCD_init : 5110LCD初始化
-----------------------------------------------------------------------*/
void delay_1us(void) //1us延时函数
{
unsigned int i;
for(i=0;i<100;i++);
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
void LCD_init(void)
{
// 产生一个让LCD复位的低电平脉冲
// LCD_RST = 0;
LCD_5110_DIR |= (0x01 << LCD_RST) + (0x01 << LCD_CE) + (0x01 << LCD_DC)
+ (0x01 << LCD_DIN) + (0x01<< LCD_CLK);
LCD_5110_OUT &= ~(0x01 << LCD_RST);
delay_1us();
// LCD_RST = 1;
LCD_5110_OUT |= (0x01 << LCD_RST);
// 关闭LCD
//LCD_CE = 0;
LCD_5110_OUT &= ~(0x01 << LCD_CE);
delay_1us();
// 使能LCD
//LCD_CE = 1;
LCD_5110_OUT |= (0x01 << LCD_CE);
delay_1us();
LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
LCD_write_byte(0xc8, 0); // 设置偏置电压
LCD_write_byte(0x06, 0); // 温度校正
LCD_write_byte(0x13, 0); // 1:48
LCD_write_byte(0x20, 0); // 使用基本命令
LCD_clear(); // 清屏
LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
// 关闭LCD
LCD_5110_OUT &= ~(0x01 << LCD_CE);
}
/*-----------------------------------------------------------------------
LCD_clear : LCD清屏函数
-----------------------------------------------------------------------*/
void LCD_clear(void)
{
unsigned int i;
LCD_write_byte(0x0c, 0);
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
LCD_write_byte(0, 1);
}
/*-----------------------------------------------------------------------
LCD_set_XY : 设置LCD坐标函数
输入参数:X :0-83