/********************************************************************NOKIA5110(3310)液晶屏驱动程序**晶振 频率:11.0592M**线路->单片机实验开发板A******************************************************************/ #include/*---------定义Nokia5110引角---------*/ sbitsclk=P3^3; sbitsdin=P3^4; sbitdc =P3^5; sbitsce=P3^7; sbitres=P3^6; voidinitNokia5110(void); /*NOkia5110初始化 */ voidclearNokia5110(void); /*清除屏幕整屏清空*/ voidDisplay_char(unsignedcharx,unsignedchary,char*s); /*写字符x设置显示字符的X位置;y设置显示字符的Y位置 *s显示字符的首地址*/ voidDisplay_num(unsignedcharx,unsignedchary,chars); /*写数字x设置显示字符的X位置;y设置显示字符的Y位置 s显示数字*/ voidwrite_byte(unsignedchardata1); /*发送1字节到NOkia5110*/ voidsetxy(unsignedcharx,unsignedchary); /*设置显示坐标x行坐标(0-83) unsignedchary列坐标(0-5)*/ voiddelay(unsignedinttime); voidmain(void){ initNokia5110(); /*NOkia5110初始化 */ clearNokia5110(); /*清除屏幕整屏清空*/ Display_char(1,2,"www.52c51.com"); /*写字符x设置显示字符的X位置;y设置显示字符的Y位置 *s显示字符的首地址*/ Display_char(10,4,"NOKIA5510"); /*写字符x设置显示字符的X位置;y设置显示字符的Y位置 *s显示字符的首地址*/ //Display_num(0,0,9); //写数字while(1);}/****************************51100-9字模**************************//*函数原型:无/*函数功能:0-9字模/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/unsignedcharcodeasc2tab[][6]={ {0x00,0x00,0x00,0x00,0x00,0x00},//sp {0x00,0x00,0x00,0x2f,0x00,0x00},//! {0x00,0x00,0x07,0x00,0x07,0x00},//" {0x00,0x14,0x7f,0x14,0x7f,0x14},//# {0x00,0x24,0x2a,0x7f,0x2a,0x12},//$ {0x00,0x62,0x64,0x08,0x13,0x23},//% {0x00,0x36,0x49,0x55,0x22,0x50},//& {0x00,0x00,0x05,0x03,0x00,0x00},//' {0x00,0x00,0x1c,0x22,0x41,0x00},//( {0x00,0x00,0x41,0x22,0x1c,0x00},//) {0x00,0x14,0x08,0x3E,0x08,0x14},//* {0x00,0x08,0x08,0x3E,0x08,0x08},//+ {0x00,0x00,0x00,0xA0,0x60,0x00},//, {0x00,0x08,0x08,0x08,0x08,0x08},//- {0x00,0x00,0x60,0x60,0x00,0x00},//. {0x00,0x20,0x10,0x08,0x04,0x02},/// {0x00,0x3E,0x51,0x49,0x45,0x3E},//0 {0x00,0x00,0x42,0x7F,0x40,0x00},//1 {0x00,0x42,0x61,0x51,0x49,0x46},//2 {0x00,0x21,0x41,0x45,0x4B,0x31},//3 {0x00,0x18,0x14,0x12,0x7F,0x10},//4 {0x00,0x27,0x45,0x45,0x45,0x39},//5 {0x00,0x3C,0x4A,0x49,0x49,0x30},//6 {0x00,0x01,0x71,0x09,0x05,0x03},//7 {0x00,0x36,0x49,0x49,0x49,0x36},//8 {0x00,0x06,0x49,0x49,0x29,0x1E},//9 {0x00,0x00,0x36,0x36,0x00,0x00},//: {0x00,0x00,0x56,0x36,0x00,0x00},//; {0x00,0x08,0x14,0x22,0x41,0x00},//< {0x00,0x14,0x14,0x14,0x14,0x14},//= {0x00,0x00,0x41,0x22,0x14,0x08},//> {0x00,0x02,0x01,0x51,0x09,0x06},//? {0x00,0x32,0x49,0x59,0x51,0x3E},//@ {0x00,0x7C,0x12,0x11,0x12,0x7C},//A {0x00,0x7F,0x49,0x49,0x49,0x36},//B {0x00,0x3E,0x41,0x41,0x41,0x22},//C {0x00,0x7F,0x41,0x41,0x22,0x1C},//D {0x00,0x7F,0x49,0x49,0x49,0x41},//E {0x00,0x7F,0x09,0x09,0x09,0x01},//F {0x00,0x3E,0x41,0x49,0x49,0x7A},//G {0x00,0x7F,0x08,0x08,0x08,0x7F},//H {0x00,0x00,0x41,0x7F,0x41,0x00},//I {0x00,0x20,0x40,0x41,0x3F,0x01},//J {0x00,0x7F,0x08,0x14,0x22,0x41},//K {0x00,0x7F,0x40,0x40,0x40,0x40},//L {0x00,0x7F,0x02,0x0C,0x02,0x7F},//M {0x00,0x7F,0x04,0x08,0x10,0x7F},//N {0x00,0x3E,0x41,0x41,0x41,0x3E},//O {0x00,0x7F,0x09,0x09,0x09,0x06},//P {0x00,0x3E,0x41,0x51,0x21,0x5E},//Q {0x00,0x7F,0x09,0x19,0x29,0x46},//R {0x00,0x46,0x49,0x49,0x49,0x31},//S {0x00,0x01,0x01,0x7F,0x01,0x01},//T {0x00,0x3F,0x40,0x40,0x40,0x3F},//U {0x00,0x1F,0x20,0x40,0x20,0x1F},//V {0x00,0x3F,0x40,0x38,0x40,0x3F},//W {0x00,0x63,0x14,0x08,0x14,0x63},//X {0x00,0x07,0x08,0x70,0x08,0x07},//Y {0x00,0x61,0x51,0x49,0x45,0x43},//Z {0x00,0x00,0x7F,0x41,0x41,0x00},//[ {0x00,0x55,0x2A,0x55,0x2A,0x55},//55 {0x00,0x00,0x41,0x41,0x7F,0x00},//] {0x00,0x04,0x02,0x01,0x02,0x04},//^ {0x00,0x40,0x40,0x40,0x40,0x40},//_ {0x00,0x00,0x01,0x02,0x04,0x00},//' {0x00,0x20,0x54,0x54,0x54,0x78},//a {0x00,0x7F,0x48,0x44,0x44,0x38},//b {0x00,0x38,0x44,0x44,0x44,0x20},//c {0x00,0x38,0x44,0x44,0x48,0x7F},//d {0x00,0x38,0x54,0x54,0x54,0x18},//e {0x00,0x08,0x7E,0x09,0x01,0x02},//f {0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g {0x00,0x7F,0x08,0x04,0x04,0x78},//h {0x00,0x00,0x44,0x7D,0x40,0x00},//i {0x00,0x40,0x80,0x84,0x7D,0x00},//j {0x00,0x7F,0x10,0x28,0x44,0x00},//k {0x00,0x00,0x41,0x7F,0x40,0x00},//l {0x00,0x7C,0x04,0x18,0x04,0x78},//m {0x00,0x7C,0x08,0x04,0x04,0x78},//n {0x00,0x38,0x44,0x44,0x44,0x38},//o {0x00,0xFC,0x24,0x24,0x24,0x18},//p {0x00,0x18,0x24,0x24,0x18,0xFC},//q {0x00,0x7C,0x08,0x04,0x04,0x08},//r {0x00,0x48,0x54,0x54,0x54,0x20},//s {0x00,0x04,0x3F,0x44,0x40,0x20},//t {0x00,0x3C,0x40,0x40,0x20,0x7C},//u {0x00,0x1C,0x20,0x40,0x20,0x1C},//v {0x00,0x3C,0x40,0x30,0x40,0x3C},//w {0x00,0x44,0x28,0x10,0x28,0x44},//x {0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y {0x00,0x44,0x64,0x54,0x4C,0x44},//z {0x14,0x14,0x14,0x14,0x14,0x14}};/****************************Nokia5110初始化函数**************************//*函数原型:initNokia5110(void)/*函数功能:Nokia5110初始化/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/voidinitNokia5110(void){ delay(10); //系统复位 res=0; delay(2); res=1; dc =0; write_byte(0x21); //;芯片是活动的(PD=0)使用扩展指令集 write_byte(0xd5); write_byte(0x20); //;芯片是活动的(PD=0)使用水平寻址(V=0)使用基本指令集(H=0) write_byte(0x0c); //;设置显示配置(D=1E=0)}/****************************Nokia5110清屏函数*********************//*函数原型:voidclearNokia5110(void)/*函数功能:Nokia5110清屏/*输入参数:无/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/voidclearNokia5110(void){ unsignedinti,j; for(i=0;i<6;i++) { setxy(j,i); dc =1; while(j<84) { write_byte(0x00); j++; } j =0; }}/*--------------------------------------;模块名称:Display_char(unsignedcharx,unsignedchary,char*s);;功 能:写字符;占用资源:;参数说明:x设置显示字符的X位置;y设置显示字符的Y位置 *s显示字符的首地址;创建日期:2001.01.19;版 本:VER2.0 ★STALI☆;-------------------------------------*/voidDisplay_char(unsignedcharx,unsignedchary,char*s){ unsignedcharline; setxy(x,y); while(*s) { for(line=0;line<6;line++) { dc =1; write_byte(asc2tab[*s-32][line]); } s++; } sce=1;}/****************************Nokia5110写数字函数*********************//*函数原型:voidDisplay_num(unsignedcharx,unsignedchary,chars)/*函数功能:Nokia5110写数字/*输入参数:x设置显示字符的X位置;y设置显示字符的Y位置 s显示数字/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/voidDisplay_num(unsignedcharx,unsignedchary,chars){ unsignedcharline; setxy(x,y); dc =1; for(line=0;line<6;line++) { write_byte(asc2tab[s+16][line]); } sce=1;} /*************************Nokia5110发送1字节函数*********************//*函数原型:voidDisplay_num(unsignedcharx,unsignedchary,chars)/*函数功能:发送1字节到NOkia5110/*输入参数:x设置显示字符的X位置;y设置显示字符的Y位置 s显示数字/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/voidwrite_byte(unsignedchardata1){ unsignedchari; res=1; sce=0; for(i=0;i<8;i++) { sdin=(bit)(data1&0x80); sclk=0; ; sclk=1; data1<<=1; }}/*************************Nokia5110设置显示坐标函数*********************//*函数原型:voidsetxy(unsignedcharx,unsignedchary)/*函数功能:设置显示坐标/*输入参数:unsignedcharx行坐标(0-83) unsignedchary列坐标(0-5)/*输出参数:无/*调用模块:/*建立时间:2006/10/1/*作者:站长/**********************************************************************/voidsetxy(unsignedcharx,unsignedchary){ dc =0; write_byte(y|0x40); //设置y轴。 write_byte(x|0x80); //设置x轴。}/*******************************延时函数*********************************//*函数原型:delay(unsignedintdelay_time)/*函数功能:延时函数/*输入参数:delay_time(输入要延时的时间)/*输出参数:无/*调用模块:无/*建立时间:2005/10/21/*作者:站长/**********************************************************************/voiddelay(unsignedintdelay_time) //延时子程序{for(;delay_time>0;delay_time--){} }