NOKIA 5510.docx
《NOKIA 5510.docx》由会员分享,可在线阅读,更多相关《NOKIA 5510.docx(10页珍藏版)》请在冰豆网上搜索。
![NOKIA 5510.docx](https://file1.bdocx.com/fileroot1/2023-2/3/059d7f68-9580-4ce9-ad68-958e2280a279/059d7f68-9580-4ce9-ad68-958e2280a2791.gif)
NOKIA5510
nokia7110LCD显示汉字
nokia7110LCD显示汉字
简单的打点。
至于屏幕右下角出现的那几条线,可能是proteus的BUG
程序如下
#include
#include"stdio.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineCLR_CSPORTD&=~(1<<0)
#defineSET_CSPORTD|=(1<<0)
#defineCLR_DCPORTD&=~(1<<1)//lowforControldata highforDisplaydata
#defineSET_DCPORTD|=(1<<1)
#defineCLR_RESETPORTD&=~(1<<2)
#defineSET_RESETPORTD|=(1<<2)
ucharHZ[][32]={{0xFF,0xBF,0x4D,0x69,0x65,0x6D,0x09,0x65,0x6C,0x6E,0x66,0x68,0x6E,0x6F,0xCF,0xFF,0xBF,0xDF,0x5F,0x6F,0xB3,0xB8,0xD5,0xD5,0xED,0xE5,0xD9,0xDD,0xBF,0x3F,0xBF,0xFF},/*"爱",0*/
{0xDF,0xDF,0xDD,0xDD,0x01,0xDE,0xDE,0xDF,0xDF,0x00,0xDF,0xDD,0x53,0xDF,0xDF,0xFF,0xFB,0xFB,0xBD,0x7D,0x80,0xFE,0xFE,0xEF,0xEF,0xF7,0xF8,0xE5,0xDE,0xBF,0x0F,0xFF},/*"我",1*/
{0xFF,0xFF,0x03,0xF7,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0xF7,0xF7,0x03,0xF7,0xFF,0xFF,0xFF,0xFF,0xF8,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xFD,0xFD,0xF8,0xFF,0xFF,0xFF},/*"中",2*/
{0xDF,0xEF,0xF7,0x03,0xFC,0xFD,0xEF,0xEF,0x80,0x77,0x77,0x7B,0x79,0x1B,0xFF,0xFF,0xFF,0xFB,0xFB,0xFA,0xFB,0xFB,0xFB,0x00,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFF},/*"华",3*/
{0xDF,0xDF,0xDD,0xDD,0x01,0xDE,0xDE,0xDF,0xDF,0x00,0xDF,0xDD,0x53,0xDF,0xDF,0xFF,0xFB,0xFB,0xBD,0x7D,0x80,0xFE,0xFE,0xEF,0xEF,0xF7,0xF8,0xE5,0xDE,0xBF,0x0F,0xFF},/*"我",4*/
{0xFF,0x07,0x73,0x74,0x77,0x07,0xBF,0xCF,0x70,0xF7,0xF7,0xF7,0xF7,0x07,0xFF,0xFF,0xFF,0x80,0xEF,0xEF,0xEF,0xC0,0xFF,0xFF,0xFF,0xFC,0xD9,0xBF,0xDF,0xE0,0xFF,0xFF},/*"的",5*/
{0xFF,0xE7,0xFB,0xEB,0x6B,0x6B,0x2A,0x49,0xEB,0xEB,0x6B,0xFB,0xEB,0xF3,0xFB,0xFF,0xFF,0xD6,0xD6,0xEA,0xEB,0xB5,0x76,0xBB,0xC0,0xF9,0xF6,0xF6,0xEF,0xCF,0xEF,0xFF}};
/**********************************************************
GlobalVariable
**********************************************************/
ucharpage;
ucharx,y;
ucharchar_row;
ucharcharpos;
ucharchardata;
voidnokia_write_dorc(ucharbytefornokia);
voidnokia_write_command(ucharbytefornokia_command);
voidnokia_write_data(ucharbytefornokia_data);
voidnokia_gotoxy(ucharxnokia,ucharynokia);
voidlcdpixel(ucharx,uchary,uchard);
voidlcd_chr(ucharcharsel);
voiddelay_ms(uintt)
{
uinti,j;
for(i=0;i for(j=0;j<100;j++);
}
voidSPI_init()
{
DDRB|=(1<<5)|(1<<7);//MOSISCKOUTPUT
SPCR=(0<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(0<<1)|
(1);
}
voidSPI_sendB(uchard)
{
/*启动数据传输*/
SPDR=d;
/*等待传输结束*/
while(!
(SPSR&(1<}
/********************************************************
NokiaclearLCDfunction
********************************************************/
voidnokia_cls(){
for(page=0;page<9;page++) //9page
{
nokia_write_command(0xB0|page); //pageaddressie:
0xB0,0xB1,...,0xB7
nokia_write_command(0x11); //most4bitcolumnaddresscommand00010011
nokia_write_command(0x02); //least4bitcolumnaddresscommand00000011
for(x=96;x>0;x--) //96column
nokia_write_data(0x00);
}
}
/**********************************************************
ResetLCDFunction
**********************************************************/
voidnokia_reset()
{
SET_RESET; //1
delay_ms(10);
CLR_RESET; //0
delay_ms(10);
SET_RESET; //1
delay_ms(100);
}
/**********************************************************
InitialLCDFunction
**********************************************************/
voidnokia_init(){
nokia_reset();
nokia_write_command(0xA6);//lcdinnormaldisplaymode(0xA7negativemode)
nokia_write_command(0xA3);//lcdbias(1/90xA2-1/70xA3)
nokia_write_command(0xA1);//(0xA1reverselcd-0xA0selectnormal)
nokia_write_command(0xC0);//commonoutputnormal(0xC8reverse)
nokia_write_command(0x22);//V5resistorratio
nokia_write_command(0x81);//electronicvolumemode
nokia_write_command(0x2E);//powercontrolsetvalue(contrastlevel-->0x00lightestto0x3Fdarkest)
nokia_write_command(0x2F);//powercontrolsetvalue
nokia_write_command(0xE3);//nop
nokia_write_command(0x40);//startlineset
nokia_write_command(0xAF);//lcdon
nokia_write_command(0xA5);//lcdallpointson
delay_ms(500);
nokia_write_command(0xAE);//lcdoff
nokia_cls();
nokia_write_command(0xAF);//lcdon
nokia_write_command(0xA4);//lcdnormaldisplaymode
}
/**********************************************************
sent8bitdatatoLCDbyseries
**********************************************************/
voidnokia_write_dorc(ucharbytefornokia)
{
SPI_sendB(bytefornokia);
}
/**********************************************************
SentCommandtoLCDFunction
**********************************************************/
voidnokia_write_command(ucharbytefornokia_command)
{
CLR_DC; //lcdcommandmode
CLR_CS; //chipenabled
nokia_write_dorc(bytefornokia_command);
SET_CS; //chipdisabled
}
/**********************************************************
SentDatatoLCDFunction
**********************************************************/
voidnokia_write_data(ucharbytefornokia_data){
SET_DC; //displaydatamode
CLR_CS; //chipenabled
nokia_write_dorc(bytefornokia_data);
SET_CS; //chipdisabled
}
/**********************************************************
gotoxypositiononLCDFunction
**********************************************************/
voidnokia_gotoxy(ucharlcd_row,ucharlcd_col)
{ //lcy_row:
0-8(8thcolumnhasonly1line/D0,lcd_col:
0-15
charcol_addr;
nokia_write_command(0xB0+lcd_row); //pageaddressset.pg8-48inthedatasheet.
col_addr=0x12+(lcd_col); //eachfonthasfivecolumns+1blankcolumn.xaddr:
0-95onnoki
//a7110.nooffset.
//lcd_1st_col=0x12:
thefirstcolumnofdisplaystartshere.Weird!
thedatasheetdidn'tmentionit.
nokia_write_command(0x10|(col_addr>>4));//columnaddress4mostbitset
nokia_write_command(0x0f&col_addr);//columnaddress4leastbitset
}
/**********************************************************
在xy位置xie一个字节
**********************************************************/
voidlcdpixel(ucharx,uchary,uchard)//左下角为(0,0)x0-75 有个bug
// y0-63
{
nokia_gotoxy(x,y);
nokia_write_data(d);
}
voidlcd_HZ(ucharx,uchary,uchar*s)
{
uchari;
y=y*16;
for(i=0;i<16;i++)
{
lcdpixel(x,y+i,s[i]);
}
for(i=16;i<32;i++)
{
lcdpixel(x+1,y+i-16,s[i]);
}
}
voidmain()
{
uchari;
DDRD=0XFF;
SPI_init();
nokia_init();
//lcdpixel(1,0,0xaa);
for(i=0;i<8;i++)
lcd_HZ(0,i,HZ[i]);
//nokia_write_command(0xa5); //diaplayallpointson
//while
(1);
}
字模的提取还是用的PCtoLCD2000
######################################################################
上面的“家”,没显示出来
voidmain()
{
uchari;
DDRD=0XFF;
SPI_init();
nokia_init();
//lcdpixel(1,0,0xaa);
for(i=0;i<6;i++)
lcd_HZ(0,i,HZ[i]);
lcd_HZ(2,0,HZ[6]);
//nokia_write_command(0xa5); //diaplayallpointson
//while
(1);
}