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

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

128*64液晶簡單單片機代碼

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

控制芯片是常用的HD61202列驅動,HD61203行驅動

 


  

一個漢字由16*16個像素點構成。

 

掃描順序上下,然后到第2列再上下,一次類推。

顯示結果:

 參考文獻:<<手把手教你學單片機c程序設計>> 下載地址:http://www.zg4o1577.cn/bbs/dpj-22812-1.html

主函數代碼:

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

#define dataport P0   //數據口
sbit CS1=P2^4;    //左顯引腳
sbit CS2=P2^3;    //右顯引腳
sbit RST=P2^2;    //復位引腳
sbit rs=P2^7;    //數據或指令寄存器引腳
sbit rw=P2^6;    //讀或寫操作引腳
sbit en=P2^5;    //讀寫時能引腳
void delay(unsigned long v); //延時
void wcode(uchar c,uchar csl,uchar csr);  //寫指令
void wdata(uchar c,uchar csl,uchar csr);  //寫數據
void set_startline(uchar i);    //設置起始行
void set_xy(uchar x,uchar y);    //設置X,Y方向
void dison_off(uchar k);     //顯示器開或關
void reset();       //復位
void lcd_init();       //顯示器初始化
void lw(uchar x,uchar y,uchar dd);   //將數據寫入左右半屏
void display_hz(uchar xx,uchar yy,uchar n,uchar fb); //顯示漢字函數
uchar code hz[]; //漢字字摸
#include "12864hh.h"  //調用文件(函數庫)

void main(void)
{
 lcd_init();
 delay(1000);
 while(1)
 {

display_hz(2,0,0,0);              //display_hz( 顯示列位置,顯示頁位置,顯示第幾個漢字,是否反顯);
display_hz(4,0,1,0);
display_hz(6,0,2,0);
display_hz(8,0,3,0);
display_hz(10,0,4,0);
display_hz(2,4,5,0);
display_hz(4,4,6,0);
display_hz(6,4,7,0);
display_hz(8,4,8,0);
display_hz(10,4,9,0);


}
delay(60000);

 

 

 }

//---------------------------------------------字形碼------------------------------------------------------

uchar code hz[]={
0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10,
0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00,/*"我",0*/

0x00,0x40,0x40,0x20,0xB2,0xA0,0x96,0x90,0x9A,0x4C,0x92,0x47,0xF6,0x2A,0x9A,0x2A,
0x93,0x12,0x91,0x1A,0x99,0x26,0x97,0x22,0x91,0x40,0x90,0xC0,0x30,0x40,0x00,0x00,/*"愛",1*/

0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,
0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"單",2*/

0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,
0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",3*/

0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,
0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00, /*機",4*/

 

0x00,0x00,0x00,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,
0x04,0x10,0x04,0x10,0x04,0x10,0x06,0x10,0x04,0x10,0x00,0x18,0x00,0x10,0x00,0x00,/*"二",0*/

0x00,0x04,0x0C,0x04,0x04,0x04,0x55,0x0A,0x55,0x0A,0x55,0x09,0x85,0x2A,0x7F,0xCC,
0x85,0x28,0x55,0x19,0x55,0x09,0x55,0x02,0x05,0x06,0x0C,0x02,0x04,0x02,0x00,0x00,/*"零",1*/

0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,/*"一",2*/

0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,/*"一",3*/
0x40,0x04,0x20,0x04,0x10,0x04,0x0C,0x04,0xE3,0x07,0x22,0x04,0x22,0x04,0x22,0x04,
0xFE,0xFF,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0x00,0x04,0x00,0x00};/*"年",4*/

 

//---------------------------12864.h-----------函數庫------------

void delay(unsigned long  v)  //延時子函數
{
while(v--);
}

void lcd_busy()  //判斷是否繁忙函數
{
rs=0;
rw=1;
dataport=0xff;
while(1)
{
 en=1;
 if(dataport<0x80)break;  //并口最高位為1時表示芯片正在工作
 en=0;
}
en=0;
}

void wcode(uchar c,uchar csl,uchar csr)  //寫指令函數
{
CS1=csl;                                                  //顯示左屏變量
CS2=csr;                                                  //顯示右屏變量
lcd_busy();
rs=0;
rw=0;
dataport=c;
en=1;
en=0;
}

void wdata(uchar c,uchar csl,uchar csr)   //寫數據子函數
{
CS1=csl;
CS2=csr;
lcd_busy();
rs=1;
rw=0;
dataport=c;
en=1;
en=0;
}

void lw(uchar x,uchar y,uchar dd)          // 寫1個字節進RAM函數
{
 if(x>=64)                                                //列大于64說明是右半屏操作
 {
  set_xy(x-64,y);
  wdata(dd,0,1);
 }
 else
 {                                                              //否則左半屏
 set_xy(x,y);
 wdata(dd,1,0);
 }
}
void set_startline(uchar i)                     //設置起始行
{       
i=0xc0+i;      
wcode(i,1,1);     

void set_xy(uchar x,uchar y)                //列,行定位函數
{    
x=x+0x40;                     
y=y+0xb8;                   
wcode(x,1,1);                   
wcode(y,1,1);                   

void dison_off(uchar k)              //液晶關,開函數
{
k=k+0x3e;
wcode(k,1,1);
}

void reset()                                //復位函數
{
 RST=0;
 delay(40);
 RST=1;
 delay(40);
}

void lcd_init(void)                      //液晶初始化
{uchar x,y;             
reset();    
set_startline(0);   
dison_off(0);     
for(y=0;y<8;y++)    
 {
 for(x=0;x<128;x++)lw(x,y,0);
 }
dison_off(1);     

void display_hz(uchar xx, uchar yy, uchar n, uchar fb)    //中文字顯示函數  掃描方法采用逐列式
{     
uchar i,dx;                       
for(i=0;i<16;i++)     //一個漢字列掃描值
{dx=hz[2*i+n*32];    //漢字上半部分掃描
if(fb)dx=255-dx;    //反顯
lw(xx*8+i,yy,dx);    //數據寫入芯片
dx=hz[(2*i+1)+n*32];    //漢字下半部分掃描
if(fb)dx=255-dx;          //反顯
lw(xx*8+i,yy+1,dx);   //數據寫入芯片
}       
}

關閉窗口

相關文章

主站蜘蛛池模板: 国产一区二区三区在线免费观看 | 国产一区二区三区在线观看免费 | 日韩三极| www.亚洲国产精品 | 中文字幕1区2区3区 日韩在线视频免费观看 | 成人a视频 | 99国产精品久久久久 | 欧美电影在线观看网站 | 在线午夜 | 性色av香蕉一区二区 | 亚洲毛片在线观看 | 91视频三区 | 久久亚洲国产精品 | 久久久久久99 | 国产精品99久久久久久大便 | 在线永久看片免费的视频 | www.嫩草| 国产精品日韩在线观看 | 日本精品一区二区三区在线观看 | 91国产在线播放 | 亚洲色图插插插 | 亚洲精品一区在线观看 | 懂色tv | 精品一区二区三区免费视频 | 久久久久久免费观看 | www.亚洲一区二区三区 | 一区二区三区成人 | 亚洲va欧美va天堂v国产综合 | 日韩欧美电影在线 | 亚洲三区视频 | 91在线第一页 | 国产欧美一区二区在线观看 | 羞羞涩涩在线观看 | 酒色成人网 | 免费在线视频a | 亚洲精品久| 亚洲视频一区二区三区 | 91精品国产综合久久久久久蜜臀 | 精品三级在线观看 | 岛国精品 | 国产一区2区 |