久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5700|回復: 1
收起左側

諾基亞5110屏的檢測程序(圖片和程序)51/52

[復制鏈接]
ID:76190 發表于 2015-4-5 17:23 | 顯示全部樓層 |閱讀模式
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//     COCOGUOJIA NOKIA 5110      //
//         PHILIPS PCD8544 48*48 LCD                    //
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//頭文件
#include <AT89X51.H>
#define u8  unsigned char
#define u16 unsigned int

u8 nop;
#define nop() nop++

u8 code character_table[]=
{
/*--  文字:  C  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x08,0x38,0x38,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x04,0x00,

/*--  文字:  O  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,

/*--  文字:  C  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x08,0x38,0x38,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x04,0x00,

/*--  文字:  O  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,

/*--  文字:  G  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x08,0x38,0x38,0x00,0x03,0x07,0x0C,0x08,0x09,0x0F,0x07,0x01,

/*--  文字:  U  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0x08,0xF8,0xF8,0x08,0x08,0xF8,0xF8,0x08,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,

/*--  文字:  O  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,

/*--  文字:  J  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x30,0x30,0x20,0x3F,0x1F,0x00,0x00,0x00,

/*--  文字:  I  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0x00,0x08,0x08,0xF8,0xF8,0x08,0x08,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,

/*--  文字:  A  --*/
/*--  Trebuchet MS11;  此字體下對應的點陣為:寬x高=8x14   --*/
/*--  高度不是8的倍數,現調整為:寬度x高度=8x16  --*/
0x00,0x00,0xE0,0xF8,0xF8,0xE0,0x00,0x00,0x08,0x0E,0x0F,0x09,0x09,0x0F,0x0E,0x08,



};

u8 code Chinese_table[]=
{
/*--  文字:  歡  --*/
/*--  Trebuchet MS12;  此字體下對應的點陣為:寬x高=17x16   --*/
0x34,0x64,0xC4,0xE4,0x7C,0x3C,0x38,0x1F,0xEF,0xE8,0x08,0x28,0x38,0x18,0x08,
0x00,0x20,0x30,0x5C,0x4F,0x43,0x6F,0x2C,0x30,0x1C,0x0F,0x07,0x1E,0x38,0x70,0x60,
0x20

/*--  文字:  迎  --*/
/*--  Trebuchet MS12;  此字體下對應的點陣為:寬x高=17x16   --*/
,0x41,0xCF,0xCE,0x04,0xFC,0xFC,0x06,0x02,0xFE,0xFC,0x04,0x04,0xFC,0xFC,0x00,
0x00,0x40,0x60,0x3F,0x3F,0x60,0x47,0x47,0x43,0x41,0x5F,0x5F,0x42,0x46,0x47,0x43,
0x40

/*--  文字:  光  --*/
/*--  Trebuchet MS12;  此字體下對應的點陣為:寬x高=17x16   --*/
,0x40,0x42,0x46,0x5C,0xDC,0xC8,0x7F,0x7F,0xC0,0xD0,0x5E,0x4E,0x64,0x60,0x40,
0x00,0x00,0x80,0xC0,0x60,0x38,0x1F,0x07,0x00,0x00,0x3F,0x7F,0x40,0x40,0x40,0x78,
0x78

/*--  文字:  臨  --*/
/*--  Trebuchet MS12;  此字體下對應的點陣為:寬x高=17x16   --*/
,0xF8,0xF8,0x00,0xFE,0xFE,0x70,0xBF,0x8F,0x0A,0x18,0x78,0x68,0x88,0x88,0x08,
0x00,0x00,0x1F,0x1F,0x00,0x7F,0x7F,0x00,0x7F,0x7F,0x21,0x3F,0x3F,0x21,0x7F,0x7F,
0x01
};

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//管腳定義(起個小名了~) lcd的內部驅動是PCD8544,一下的芯片即為PCD8544
sbit    RST = P0^1;  //芯片復位     0有效
sbit    SCE = P0^0;  //芯片使能 0有效
sbit    D_C = P3^4;  //模式選擇     1寫數據   0寫指令
sbit    DIN = P3^5;  //串行數據線 數據類型---8位
sbit    SCK = P3^6;  //串行時鐘線   上升沿有效

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//delay_1ms: 大約延時1ms
void delay_1ms(void)//1ms延時函數
{
u16 i;
for (i=0;i<500;i++)
{
;
}

}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Write_Byte: 寫數據或命令到LCD
//輸入參數:u8 Data_or_Command:要寫入的數據或命令;
// u8 D_or_C  :1 寫數據/ 0 寫命令

void LCD_Write_Byte(u8 Data_or_Command,u8 D_or_C)
{
u8 i;  
SCE=0;//選擇芯片
D_C=D_or_C;// 數據? 命令?
for(i=0;i<8;i++)//寫
{  
if(0x80==(Data_or_Command&0x80))
{
DIN=1;
}
else
{
DIN=0;
}


Data_or_Command<<=1;//移位

//造個上升沿
SCK=0;
nop();
nop();
nop();
nop();
SCK=1;  
}
//回復到安全狀態 保險
D_C=1;
SCE=1;
DIN=1;
}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_init: LCD初始化
void LCD_init(void)
{
RST=0;   
   delay_1ms();
   RST=1;
delay_1ms();   
LCD_Write_Byte(0x21,0);//初始化Lcd,功能設定使用擴充指令
LCD_Write_Byte(0xd0,0);//設定液晶偏置電壓
LCD_Write_Byte(0x20,0);//使用基本指令 水平尋址

//LCD_Write_Byte(0x0C,0);//設定顯示模式,正常顯示
LCD_Write_Byte(0x0D,0);  //設定顯示模式,反白顯示
}

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Set_XY: 設置LCD坐標函數 用于準備顯示高度是‘8個點’的漢字或字母
//輸入參數:X:0-83  Y:0-5
void LCD_Set_XY(u8 X, u8 Y)
{
LCD_Write_Byte(0x40 | Y, 0);// 豎
LCD_Write_Byte(0x80 | X, 0);// 橫
}

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Clear: LCD清屏函數
void LCD_Clear(void)
{
u8 x;
u8 y;
LCD_Set_XY(0,0);

for(y=0;y<=5;y++)
{  
for(x=0;x<=83;x++)
{  
LCD_Write_Byte(0x00,1);
}  
}
}  



/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Write_ABC: 顯示8(寬)*16(高)點陣列數字字母符號等半角類
//輸入參數: x:
// y:
// ABC:顯示的字符的序號

void LCD_Write_ABC(u8 x, u8 y,u8 ABC) //x:橫 y:豎 ABC:字符的序號
{
u8 i;   

LCD_Set_XY(x*8, y);//橫 ,豎  
for(i=0; i<8;i++)  
{
LCD_Write_Byte(character_table[ABC*16+i],1);  
}

    LCD_Set_XY(x*8, y+1);//橫 ,豎
for(i=8; i<16;i++)  
{
LCD_Write_Byte(character_table[ABC*16+i],1);
}   
}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Write_Chinese: 顯示16(寬)*16(高)點陣列漢字等半角類
//輸入參數:
// x:
// y:
// Chinese:顯示的漢字的序號

void LCD_Write_Chinese(u8 x, u8 y,u8 Chinese)
{
unsigned char i;   

LCD_Set_XY(x*8, y);// 列,頁  
for(i=0; i<16;i++)  
{
LCD_Write_Byte(Chinese_table[Chinese*32+i],1);  
}

    LCD_Set_XY(x*8, y+1);// 列,頁  
for(i=16; i<32;i++)  
{
LCD_Write_Byte(Chinese_table[Chinese*32+i],1);
}
}

void main(void)
{
unsigned char k;
RST=0;
for(k=0;k<250;k++);
RST=1;   

LCD_init();
LCD_Clear();

LCD_Write_ABC(0,1,0);
LCD_Write_ABC(1,1,1);
LCD_Write_ABC(2,1,2);
LCD_Write_ABC(3,1,3);
LCD_Write_ABC(4,1,4);
LCD_Write_ABC(5,1,5);
LCD_Write_ABC(6,1,6);
LCD_Write_ABC(7,1,7);
LCD_Write_ABC(8,1,8);
LCD_Write_ABC(9,1,9);

    LCD_Write_Chinese(1,3,0);
LCD_Write_Chinese(3,3,1);
LCD_Write_Chinese(5,3,2);
LCD_Write_Chinese(7,3,3);
  
  while(1)
   {
     ;
   }
}

--------------------------------------------------------------------------------------------------------------------------------------------

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// COCOGUOJIA NOKIA 5110    //
//         PHILIPS PCD8544 48*48 LCD                    //
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//頭文件
#include <AT89X51.H>
#define u8  unsigned char
#define u16 unsigned int

u8 nop;
#define nop() nop++


u8 code pic_table[]=
{
/*--  寬度x高度=80x40  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0x60,0x70,0x70,0x30,0x38,0x38,
0x18,0x18,0x1C,0x1C,0x0C,0x0C,0x8C,0x8E,0xCE,0xC6,0xE6,0xE6,0xE2,0xF2,0xF2,0xF0,
0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,
0xF0,0xF0,0xE0,0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
0x0C,0x0C,

0x80,0x80,0xC0,0xE0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,
0xFE,0xFE,0xFF,0x3F,0x1F,0x0F,0x07,0x07,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0xF8,0xFC,0xFE,0xFE,0xFF,0xFF,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7B,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,
0xF8,0xF8,0xF8,0xFC,0xFC,0xFE,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF8,0xF8,0xF0,0xF0,0xF0,0xE0,0xE0,0xE0,
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC1,0xC3,0xC7,0xC7,0xC7,0xC7,0xC6,
0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xE6,0xEE,0xEE,0xFE,0xFC,0xFC,0xFC,
0xF8,0xF8,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x01,0x83,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xBF,0x0F,0x0F,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x01,0x01,
0x01,0x1D,0x3F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,
0x1F,0x1F,0x0F,0x0F,0x07,0x03,0x01,0x80,0xC0,0xC0,0xC0,0xE0,0x60,0x60,0x70,0x30,
0x38,0x18,0x1C,0x1C,0x0E,0x0E,0x07,0x07,0x03,0x03,0x01,0x01,0x00,0x00,

0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x07,0x06,0x06,0x04,0x04,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00


};

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//管腳定義(起個小名了~) lcd的內部驅動是PCD8544,一下的芯片即為PCD8544
sbit    RST = P0^1;  //芯片復位     0有效
sbit    SCE = P0^0;  //芯片使能 0有效
sbit    D_C = P3^4;  //模式選擇     1寫數據   0寫指令
sbit    DIN = P3^5;  //串行數據線 數據類型---8位
sbit    SCK = P3^6;  //串行時鐘線   上升沿有效

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//delay_1ms: 大約延時1ms
void delay_1ms(void)//1ms延時函數
{
u16 i;
for (i=0;i<500;i++)
{
;
}

}




/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//delay_3s: 大約延時3s 里面的1ms的延時不太準
void delay_3s(void)
{
u16 i;
for(i=1;i<=1200;i++)
{
delay_1ms();
}
}






/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Write_Byte: 寫數據或命令到LCD
//輸入參數:u8 Data_or_Command:要寫入的數據或命令;
// u8 D_or_C  :1 寫數據/ 0 寫命令

void LCD_Write_Byte(u8 Data_or_Command,u8 D_or_C)
{
u8 i;  
SCE=0;//選擇芯片
D_C=D_or_C;// 數據? 命令?
for(i=0;i<8;i++)//寫
{  
if(0x80==(Data_or_Command&0x80))
{
DIN=1;
}
else
{
DIN=0;
}


Data_or_Command<<=1;//移位

//造個上升沿
SCK=0;
nop();
nop();
nop();
nop();
SCK=1;  
}
//回復到安全狀態 保險
D_C=1;
SCE=1;
DIN=1;
}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_init: LCD初始化
void LCD_init(void)
{
RST=0;   
   delay_1ms();
   RST=1;
delay_1ms();   
LCD_Write_Byte(0x21,0);//初始化Lcd,功能設定使用擴充指令
LCD_Write_Byte(0xd0,0);//設定液晶偏置電壓
LCD_Write_Byte(0x20,0);//使用基本指令 水平尋址

LCD_Write_Byte(0x0C,0);//設定顯示模式,正常顯示
//LCD_Write_Byte(0x0D,0);  //設定顯示模式,反白顯示
}

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Set_XY: 設置LCD坐標函數 用于準備顯示高度是‘8個點’的漢字或字母
//輸入參數:X:0-83  Y:0-5
void LCD_Set_XY(u8 X, u8 Y)
{
LCD_Write_Byte(0x40 | Y, 0);// 豎
LCD_Write_Byte(0x80 | X, 0);// 橫
}

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Clear: LCD清屏函數
void LCD_Clear(void)
{
u8 x;
u8 y;
LCD_Set_XY(0,0);

for(y=0;y<=5;y++)
{  
for(x=0;x<=83;x++)
{  
LCD_Write_Byte(0x00,1);
}  
}
}  

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Clear: LCD清屏函數 從0開始計數的 第5行
void LCD_Clear5(void)
{
u8 x;
LCD_Set_XY(0,5);
for(x=0;x<=83;x++)
{  
LCD_Write_Byte(0xFF,1);
}  

}  


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//LCD_Write_pic: 顯示 80(寬)* 8(高) 做圖
//輸入參數:
// x:
// y:
// pic: 圖片 高8 寬80 的圖片截圖 序號

void LCD_Write_pic(u8 x, u8 y,u8 pic)
{
unsigned char i;   

LCD_Set_XY(x*8, y);// 列,頁  

for(i=0; i<80;i++)  
{
LCD_Write_Byte(pic_table[pic*80+i],1);  
}
}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
void main(void)
{
LCD_init();
LCD_Clear();

LCD_Write_Byte(0x0C,0);//設定顯示模式,正常顯示

LCD_Write_pic(0,0,0);
LCD_Write_pic(0,1,1);
LCD_Write_pic(0,2,2);
LCD_Write_pic(0,3,3);
LCD_Write_pic(0,4,4);
   

  while(1)
   {
     delay_3s();
    LCD_Clear();
LCD_Write_Byte(0x0D,0);  //設定顯示模式,反白顯示
LCD_Write_pic(0,0,0);
LCD_Write_pic(0,1,1);
LCD_Write_pic(0,2,2);
LCD_Write_pic(0,3,3);
LCD_Write_pic(0,4,4);
LCD_Clear5();

delay_3s();
    LCD_Clear();
    LCD_Write_Byte(0x0C,0);//設定顯示模式,正常顯示
LCD_Write_pic(0,0,0);
LCD_Write_pic(0,1,1);
LCD_Write_pic(0,2,2);
LCD_Write_pic(0,3,3);
LCD_Write_pic(0,4,4);

   }
}


回復

使用道具 舉報

ID:71423 發表于 2015-4-12 21:58 | 顯示全部樓層
謝謝樓主分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲女优在线播放 | 午夜视频一区 | 欧美精品免费观看二区 | 龙珠z国语版在线观看 | 天堂成人国产精品一区 | 亚洲精品456 | 天天干天天爱天天爽 | 欧美性生活一区二区三区 | 成人综合久久 | 国产精品免费看 | 91手机精品视频 | 亚洲伦理自拍 | 国产日韩精品久久 | 91精品国产综合久久久密闭 | 国产精品毛片一区二区在线看 | 在线视频91 | 国产精品久久国产精品久久 | 91pron在线| 中文字幕欧美一区二区 | 中文字幕久久精品 | 日本天天操 | 午夜资源 | 日韩视频在线播放 | 中文字幕 亚洲一区 | 人人干超碰 | 亚洲第一在线视频 | 久久69精品久久久久久国产越南 | 91视频大全 | 欧美阿v | 日韩国产欧美视频 | 九九免费观看视频 | h视频在线免费 | 国产精品一区在线观看 | 国产精品视频一 | 成人免费xxxxx在线视频 | 午夜爽爽男女免费观看hd | 国产美女在线看 | 欧洲尺码日本国产精品 | 丝袜美腿一区 | 国产精品综合色区在线观看 | 欧美精品国产一区二区 |