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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

12864無字庫液晶顯示

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年03月12日   【字體:


 

      這篇文章主要來寫一下12864液晶顯示的程序,至于一些寄存器的設置,和12864液晶的資料介紹,大家可以參看12864液晶的datesheet,上面一般都很全面,一些具體注意事項請大家參看:http://hi.baidu.com/echoas  他的空間里面介紹的比較清楚,我在這里也沒必要浪費時間重復了。

     我在這里直接貼出程序,程序注釋比較清楚,相信大家對照dateshee可以看明白。

/************************************
程序功能:無字庫12864液晶的顯示
編譯環境:keil4
運行環境:proteus7.7
整理人:張家越  QQ:435835181
整理時間:2011-04-28
取模軟件使用的是:ZM201
***********************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define port P0  //DB0~DB7數據口
sbit e=P2^0;//使能
sbit rw=P2^1;//讀寫
sbit rs=P2^2;//數據/命令
sbit cs2=P2^3;//片選
sbit cs1=P2^4;
sbit busy=P0^7;//檢測忙

uchar code hz[][32]={


/*--  文字:  書  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0x10,0x10,0x10,0xFF,0x88,0x88,0xFA,0x82,0x84,0x8C,0x00,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x7F,0x00,0x00,0x08,0x10,0x0C,0x03,0x00,0x00,0x00},

/*--  文字:  山  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x20,0x20,0x20,0x1F,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00},

/*--  文字:  有  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x10,0x10,0x90,0x50,0xF0,0x4C,0x4B,0x28,0x28,0x28,0xE8,0x08,0x08,0x00,0x00,
0x00,0x02,0x01,0x00,0x00,0x7F,0x0A,0x0A,0x05,0x05,0x20,0x7F,0x00,0x00,0x00,0x00},

/*--  文字:  路  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x3C,0x24,0xE2,0x9E,0x20,0x18,0x97,0x64,0x54,0x8C,0x00,0x00,0x00,0x00,
0x00,0x10,0x1F,0x08,0x0F,0x04,0x02,0x7D,0x24,0x22,0x12,0x1E,0x01,0x01,0x01,0x00},

/*--  文字:  勤  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x08,0x88,0xBF,0xE4,0x54,0x5F,0xC4,0x44,0xC0,0x3F,0x20,0xE0,0x00,0x00,0x00,
0x00,0x20,0x2B,0x2A,0x1F,0x15,0x55,0x31,0x0C,0x23,0x40,0x30,0x0F,0x00,0x00,0x00},

/*--  文字:  為  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0x40,0x44,0x58,0xC0,0x38,0x27,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x10,0x21,0x46,0x30,0x0F,0x00,0x00,0x00,0x00},

/*--  文字:  徑  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x10,0x88,0xC4,0x33,0x40,0x44,0x24,0x22,0x12,0x9A,0xA6,0xA0,0x40,0x00,0x00,
0x02,0x01,0x00,0x7F,0x00,0x20,0x21,0x21,0x21,0x1F,0x10,0x10,0x10,0x10,0x00,0x00},

/*--  文字:  ,  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x2C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--  文字:  學  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x60,0x20,0xA0,0xA2,0xAC,0x51,0x56,0xD0,0x5C,0x13,0x10,0x30,0x10,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x24,0x44,0x3F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00},

/*--  文字:  海  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x20,0x40,0x04,0xC8,0x20,0x10,0xCC,0x4B,0xA8,0x28,0x24,0xE4,0x04,0x00,0x00,0x00,
0x00,0x10,0x3E,0x01,0x02,0x1A,0x17,0x12,0x2E,0x49,0x39,0x0F,0x09,0x01,0x00,0x00},

/*--  文字:  無  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x40,0x44,0x44,0x44,0xC4,0x3C,0xE2,0x22,0x22,0x22,0x20,0x00,0x00,0x00,
0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x1F,0x20,0x20,0x20,0x20,0x3C,0x00,0x00},

/*--  文字:  涯  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x20,0x40,0x02,0xC4,0x00,0xFC,0x24,0x24,0xFC,0x92,0x92,0x82,0x00,0x00,0x00,
0x00,0x10,0x3C,0x43,0x30,0x4E,0x41,0x49,0x49,0x3F,0x24,0x24,0x20,0x20,0x00,0x00},

/*--  文字:  苦  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x80,0x88,0x88,0x88,0x9E,0x84,0xE4,0x44,0x5F,0x44,0x44,0x44,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x7C,0x44,0x44,0x23,0x22,0x22,0x3E,0x00,0x00,0x00,0x00,0x00},

/*--  文字:  作  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x80,0x40,0x20,0xF8,0x07,0x40,0x30,0x1C,0xF3,0x90,0x90,0x48,0x48,0x08,0x00,0x00,
0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x7F,0x04,0x04,0x02,0x02,0x02,0x00,0x00},

/*--  文字:  舟  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0x00,0xF8,0x88,0x8C,0x9B,0xA4,0x84,0xFC,0x40,0x40,0x40,0x00,0x00,
0x01,0x41,0x21,0x19,0x07,0x00,0x02,0x04,0x10,0x20,0x7F,0x00,0x00,0x00,0x00,0x00},

/*--  文字:  。  --*/
/*--  仿宋_GB231212;  此字體下對應的點陣為:寬x高=16x16   --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

 

{0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,
 0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00},
//"聯",14

{0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00},
//"系",15

{0x08,0x08,0x08,0x08,0x08,0x08,0xF9,0x4A,0x4C,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,
 0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x20,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},
//"方",16

{0x00,0x08,0x88,0x88,0x88,0x88,0x88,0x08,0xFF,0x08,0x09,0x0E,0x0A,0x08,0x00,0x00,
 0x00,0x20,0x60,0x30,0x1F,0x10,0x08,0x08,0x00,0x07,0x18,0x20,0x40,0x80,0x70,0x00},
//"式",17


};

 

uchar code num[][16]={
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
//"0",0

{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
//"1",1

{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
//"2",2

{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
//"3",3

{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},
//"4",4

{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},
//"5",5

{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},
//"6",6

{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},
//"7",7

{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},
//"8",8

{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00} //"9",9

};

uchar code sign[][16]={

{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},
//"!",0


{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},
//":",1

{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00}
//"Q",2

};


  //延時
void delay(uint n)
{
  uint i;
  for(;n>0;n--)
    for(i=200;i>0;i--);
}

//判斷是否忙
void check()
{
    rs=0;  
 rw=1;   //讀 e=1;
 port=0x00;
 e=1; 
 while(busy);
 e=0;
}
//寫指令
void sendcommand(uchar command)
{
    check();
 rs=0;  //指令
 rw=0;  //寫 e=0;
 port=command;
 e=1;
 e=0; //寫入指令
}
//寫數據
void writedata(uchar dat)
{
    check();
 rs=1;    //數據
 rw=0;
 port=dat;
 e=1;
 e=0;
}
//選屏幕 0--全屏,1--左屏,2--右屏;
void select(uint n)
{
    switch(n)
 {
    case 0:cs1=0;cs2=0;break;   //低電平選中
       case 1:cs1=0;cs2=1;break;   //cs1左屏
    case 2:cs1=1;cs2=0;break;   //cs2右屏
 }  
}
//頁
void setpage(uchar page)
{
   page=page&0x07;
   page=page|0xb8;
   sendcommand(page);
}
//列
void setcolumn(uchar column)
{
   column=column&0x3f;
   column=column|0x40;
   sendcommand(column);
}
//起始行
void setline(uchar line)
{
    line=line&0x3f;
 line=line|0xc0;
 sendcommand(line);
}
//屏幕開關顯示 0--關,1--開;
void seton(uint n)
{
   n=n|0x3e;
   sendcommand(n);
}
//清屏 0--全屏,1--左屏,2--右屏;
void clear(uint n)
{
   uchar i,j;
   select(n);
   for(i=0;i<8;i++)
   {
      setpage(i);
   setcolumn(0);
   for(j=0;j<64;j++)
     writedata(0);  //置0清空
   }
}
//初始化
void init(uchar i)
{
  check();

  seton(1);
  select(0);
  //clear(0);
  setline(i);
}
//顯示漢字 16*16顯示
void show16(uchar page,uchar column,uchar screen,uchar method,uchar *str)  //頁,列,
{
  uchar i,j;
  select(screen);
  j=0;
 
  setpage(page);
  setcolumn(column);
  for(i=0;i<16;i++)
  {  if(method==1)   writedata(~str[j++]); //method為顯示方式。當等于1時,反白。
     else            writedata(str[j++]);     
  }
  setpage(page+1);
  setcolumn(column);
  for(i=0;i<16;i++)
  {  if(method==1)   writedata(~str[j++]);
     else            writedata(str[j++]);     
  }
} 
//顯示數字 8*16顯示
void show8(uchar page,uchar column,uchar screen,uchar method,uchar *str)
{
  uchar i,j;
 select(screen);j=0;
 
 setpage(page);
 setcolumn(column);
 for(i=0;i<8;i++)
 {  if(method==1)   writedata(~str[j++]);
     else            writedata(str[j++]);     
 }
 setpage(page+1);
 setcolumn(column);
  for(i=0;i<8;i++)
  {  if(method==1)   writedata(~str[j++]);
     else            writedata(str[j++]);     
  }
}
void welcome()
{
  uint i=0,j;
  for(j=0;j<3;j++,j++)
  for(i=0;i<4;i++)
  {  show16(j,16*i,1,0,hz[i+j*4]);    //寫左屏數據
 //    if(i+4+j*4<16)
  show16(j,16*i,2,0,hz[i+4+j*4]);   //寫右屏數據
 
  }
//  show8(2,32,2,0,sign[0]); //!

  for(i=0;i<4;i++)
  {
   show16(4,16*i,1,0,hz[16+i]);
  }
   show8(4,0,2,0,sign[1]); //:

   show8(6,0,1,0,sign[2]); //Q
   show8(6,8,1,0,sign[2]); //Q
   show8(6,16,1,0,sign[1]); //:
//以下數字均為反白顯示。
   show8(6,32,1,1,num[4]); //4
   show8(6,40,1,1,num[3]);  //3
   show8(6,48,1,1,num[5]); //5
   show8(6,56,1,1,num[8]); //8
   show8(6,0,2,1,num[3]);   //3
   show8(6,8,2,1,num[5]); //5
   show8(6,16,2,1,num[1]); //1
   show8(6,24,2,1,num[8]); //8
   show8(6,32,2,1,num[1]); //1

}
void main()
{
 uchar j;
 clear(0);
 while(1)
 {
  for(j=0;j<63;)
  {
   j=j+16;
   if(j>60)
   j=0;
   init(j);
//   delay(200);
   welcome();
    delay(500);
  }
 }


}

由于本人水平有限,難免有錯誤和不妥之處,希望大家批評指正。

 

關閉窗口

相關文章

主站蜘蛛池模板: 91av久久久| 欧美一区二区三区四区五区无卡码 | 超碰在线国产 | 国产91观看 | 日韩电影免费在线观看中文字幕 | 国产精品一区二区免费看 | 一区二区三区欧美在线观看 | 亚洲精品国产精品国自产在线 | 男女羞羞视频在线免费观看 | 嫩呦国产一区二区三区av | 亚洲欧美日韩在线 | 欧美三级视频在线观看 | 电影在线 | 国产精品久久777777 | 国产一区二区三区 | 91精品国产一区二区三区 | 久久精品免费 | 国产成人精品一区二区三区在线 | 免费在线一区二区 | 99精品免费在线观看 | 久久久久国产一区二区三区不卡 | 国产精品日日夜夜 | 在线观看国产视频 | 久久久国产一区二区三区四区小说 | 日韩影音 | 亚洲精品4 | 欧美bondage紧缚视频 | 日韩不卡一区二区三区 | 日韩电影在线一区 | 国产成人av免费看 | 亚洲精品www久久久 www.蜜桃av | 日日干夜夜操 | 亚洲欧美少妇 | 久久小视频 | 久久精品视频12 | 亚洲国产欧美国产综合一区 | 国产良家自拍 | 久久网站免费视频 | 欧美男人天堂 | 国产四区| 久草视频在线播放 |