標題:
自己移植的Nokia5110的代碼驅(qū)動基于K60
[打印本頁]
作者:
爬山虎40
時間:
2017-8-10 10:15
標題:
自己移植的Nokia5110的代碼驅(qū)動基于K60
使用的是山外的庫函數(shù)
0.png
(44.27 KB, 下載次數(shù): 41)
下載附件
2017-8-10 17:42 上傳
單片機源程序如下:
#include "nokia5110.h"
#include "fontbank.h"
#include "MK60_gpio.h"
void Nokia5110_Send(uint8 data, DCType dc)
{
uint8 i;
if(dc == DC_DATA)
Nokia5110_DC_DATA();
else
Nokia5110_DC_CMD();
for(i=0; i<8; i++)
{
if((data<<i)&0x80)
Nokia5110_DIN_H();
else
Nokia5110_DIN_L();
Nokia5110_CLK_L();
DELAY_US(1);
Nokia5110_CLK_H();
}
}
void Nokia5110_Init(void)
{
gpio_init(PTD1,GPO,1);
gpio_init(PTD2,GPO,1);
gpio_init(PTD3,GPO,1);
gpio_init(PTD4,GPO,1);
gpio_init(PTD5,GPO,1);
gpio_init(PTD6,GPO,1);
Nokia5110_LIGHT_ON(); //打開背光燈
Nokia5110_RST_L();
DELAY_US(10); //這個延時是必須的
Nokia5110_RST_H();
Nokia5110_CE_H();
Nokia5110_CE_L();
//設(shè)置LCD
Nokia5110_Send(0x21, DC_CMD); //使用擴展命令設(shè)置Nokia5110模式
Nokia5110_Send(0xC8, DC_CMD); //設(shè)置偏置電壓
Nokia5110_Send(0x06, DC_CMD); //溫度校正
Nokia5110_Send(0x13, DC_CMD); //1:48
Nokia5110_Send(0x20, DC_CMD); //使用基本命令
Nokia5110_Send(0x0E, DC_CMD); //設(shè)定顯示模式,反轉(zhuǎn)顯示
Nokia5110_Clear();
}
void Nokia5110_Clear(void)
{
uint16 i;
Nokia5110_Send(0x40,DC_CMD); //設(shè)置RAM的Y坐標地址為0
Nokia5110_Send(0x80,DC_CMD); //設(shè)置RAM的X坐標地址為0
for(i=0; i<504; i++) //共計504個像素點
Nokia5110_Send(0, DC_DATA); //全部寫零達到清除的目的
}
void Nokia5110_SetXY(uint8 X, uint8 Y)
{
if(X > 13) X = 13;
if(Y > 5) Y = 5;
X *=6;
Nokia5110_Send(0x80 | X,DC_CMD);
DELAY_US(10);
Nokia5110_Send(0x40 | Y,DC_CMD);
}
/*設(shè)置屏幕對比度,contrast的范圍為0~64;*/
void Nokia5110_SetContrast(uint8 contrast)
{
if(contrast > 64) contrast = 64;
Nokia5110_Send(0x21,DC_CMD); //進入拓展命令模式
Nokia5110_Send(0x80 | contrast,DC_CMD); //設(shè)置對比度
Nokia5110_Send(0x20,DC_CMD); //進入基本命令模式
}
/*寫一個字節(jié)*/
void Nokia5110_WriteChar(uint8 ascii)
{
uint8 i;
for(i=0; i<6; i++)
Nokia5110_Send(Font6x8[ascii-32][i],DC_DATA);
}
uint8 LongToString(uint8 *str, signed long dat)
{
signed char i = 0;
unsigned char len = 0;
unsigned char buf[12];
if(dat < 0)
{
dat = -dat;
*str++ = '-';
len++;
}
do{
buf[i++] = dat % 10;
dat /= 10;
}while(dat > 0);
len += i;
while(i-- > 0)
{
*str++ = buf[i] + '0';
}
*str = '\0';
return len;
}
/* 在液晶上寫數(shù)字*/
void Nokia5110_WriteNum(uint8 X,uint8 Y,uint32 number)
{
uint8 str[12];
LongToString(str,number);
Nokia5110_WriteEnStr(X,Y,str);
}
/* 在液晶上顯示字符串,(x,y)-對應(yīng)屏幕上的起始坐標,str-字符串指針 */
void Nokia5110_WriteEnStr(uint8 X, uint8 Y, uint8 *str)
{
Nokia5110_SetXY(X,Y); //設(shè)置起始地址
while (*str != '\0') //連續(xù)寫入字符串數(shù)據(jù),直到檢測到結(jié)束符
{
Nokia5110_WriteChar(*str++);
}
Nokia5110_Send(0,DC_DATA);
}
/*寫一個中文字符*/
void Nokia5110_WriteChinese(uint8 X, uint8 Y,uint8 GBK)
{
uint8 i;
Nokia5110_SetXY(X,Y);
for(i=0; i<12; i++)
{
Nokia5110_Send(Font12x16_chinese[GBK][i],DC_DATA);
}
//delay_us(10);
Nokia5110_SetXY(X,Y+1);
for(i=12; i<24; i++)
{
Nokia5110_Send(Font12x16_chinese[GBK][i],DC_DATA);
}
}
/*寫一幅圖像到液晶*/
void Nokia5110_WriteImage(void)
{
uint8 row,column;
for(row=0; row<6; row++)
{
Nokia5110_SetXY(0,row);
for(column=0; column<83; column++)
{
Nokia5110_Send(image1[row][column],DC_DATA);
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
nokia5110.zip
(4.14 KB, 下載次數(shù): 6)
2017-8-10 10:14 上傳
點擊文件名下載附件
基于K60
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1