亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 122x32液晶1520控制器驅(qū)動程序(c51) .txt

?? 122x32液晶1520控制器驅(qū)動程序(C51)
?? TXT
字號:
#include "reg51.h"
#include "intrins.h"
#include "absacc.h"
#include ".\inc\ASCII816.h" //標準ASCII碼庫
#include ".\inc\HZTable.h" //自制的漢字庫
#include ".\inc\menu.h"</P><P>  //自制的菜單庫
sbit LCD12232_A0=P3^3;
sbit LCD12232_RW=P3^1; //讀寫
sbit LCD12232_E1=P3^5; //片選1(Master)
sbit LCD12232_E2=P3^4; //片選2(slave)
#define LCD12232_DATA P1 //數(shù)據(jù)口
void ClearScreen(void);
/*----------------------------------------------------------------------------
調(diào)用方式:void OutMI(unsigned char i)
函數(shù)說明:發(fā)指令i到主窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
------------------------------------------------------------------------------*/
void OutMI(unsigned char i)
{
LCD12232_E2=0; //確認
LCD12232_A0=0;
LCD12232_RW=1;
LCD12232_E1=1; _nop_();
LCD12232_DATA = i;
while( LCD12232_DATA & 0x80 ); //busy?
LCD12232_E1=0; _nop_();</P><P>LCD12232_RW=0;
LCD12232_E1=1; _nop_();</P><P>LCD12232_DATA=i;_nop_();
LCD12232_E1=0; _nop_();
}
/*------------------------------------------------------------------------------
調(diào)用方式:void OutMD(unsigned char i)
函數(shù)說明:發(fā)數(shù)據(jù)i到主窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void OutMD(unsigned char i)
{
LCD12232_E2=0; //確
LCD12232_A0=0;
LCD12232_RW=1;
LCD12232_E1=1; _nop_();
LCD12232_DATA = i;
while( LCD12232_DATA & 0x80 );
LCD12232_E1=0; _nop_();LCD12232_A0=1;
LCD12232_RW=0;
LCD12232_E1=1; _nop_();
LCD12232_DATA=i; _nop_();
LCD12232_E1=0; _nop_();
}
*------------------------------------------------------------------------------
調(diào)用方式:void OutSI(unsigned char i)
函數(shù)說明:發(fā)指令i到從窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void OutSI(unsigned char i)
{
LCD12232_E1=0; //確認
LCD12232_A0=0;
LCD12232_RW=1;
LCD12232_E2=1; _nop_();
LCD12232_DATA = i;
while( LCD12232_DATA & 0x80 );
LCD12232_E2=0; _nop_();
LCD12232_RW=0;
LCD12232_E2=1; _nop_();
LCD12232_DATA=i; _nop_();
LCD12232_E2=0; _nop_();
}
/*------------------------------------------------------------------------------
調(diào)用方式:void OutSD(unsigned char i)
函數(shù)說明:發(fā)數(shù)據(jù)i到從窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void OutSD(unsigned char i)
{
LCD12232_E1=0; //確認
LCD12232_A0=0;
LCD12232_RW=1;
LCD12232_E2=1; _nop_();
LCD12232_DATA =i;
while( LCD12232_DATA & 0x80 );
LCD12232_E2=0; _nop_();
LCD12232_A0=1;
LCD12232_RW=0;
LCD12232_E2=1; _nop_();
LCD12232_DATA=i; _nop_();
LCD12232_E2=0; _nop_();
}</P><P>/*--------------------------------------------------------------------------------------------------*/
//顯示8*8點陣
//字模被豎著切分
//lin:行(0-3), column: 列(0-14)
//address : 字模區(qū)首地址
void Show88(unsigned char lin,unsigned char column,unsigned int address)
{
unsigned char i,j;</P><P> if( column > 14) return;</P><P></P><P> if( column < 7 ) //8*8點陣都在左屏(Master)
{ OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //設(shè)置顯示列
for(i=0; i<8 ; i++ ) { OutMD( CBYTE[address+i] ); }
}
if( column == 7) //8*8點陣,前6個在左屏(Master),后兩個在右屏(Slave)
{ OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //左屏
for(i=0; i<6 ; i++ )
{ OutMD( CBYTE[address+i] ); }</P><P> OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( 0 ); //右屏
for(i=0; i<3 ; i++ ) { OutSD( CBYTE[address+i+5] ); }
}
if( column > 7) //8*8點陣都在右屏(Slave)
{ OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( column*8-61 );
for(i=0; i<8 ; i++ ) { OutSD( CBYTE[address+i] ); }
}
}</P><P>/*------------------------------------------------------------------------------------------------*/
//顯示8*16字符
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//character:字符代碼(標準ASCII碼)
void ShowChar(unsigned char lin,unsigned char column,unsigned char character)
{ lin=lin<<1;
Show88(lin ,column,ASCII816[character-0x20] );
Show88(lin+1,column,ASCII816[character-0x20]+8 );
}
/*----------------------------------------------------------------------------------------------*/
//顯示一個漢字
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-7)
//hzcode: 漢字代碼(自定義的)
//uchar code HZtable
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
{
lin=lin<<1; //lin*2
Show88(lin,column,HZTable[hzcode]);
Show88(lin,column+1,HZTable[hzcode]+8);
Show88(lin+1,column,HZTable[hzcode]+16);
Show88(lin+1,column+1,HZTable[hzcode]+24);
}
////////////////////////////////////////////////////////////////////////</P><P>
/*------------------------------------------------------------------------------
調(diào)用方式:void LcdIni(void)
函數(shù)說明:12232點陣液晶初始化,開機后僅調(diào)用一次。
------------------------------------------------------------------------------*/
void InitLCD(void)
{
OutMI(0XE2);OutSI(0XE2);//復(fù)位
OutMI(0XAE);OutSI(0XAE);//POWER SAVE
OutMI(0XA4);OutSI(0XA4);//動態(tài)驅(qū)動
OutMI(0XA9);OutSI(0XA9);//1/32占空比
OutMI(0XA0);OutSI(0XA0);//時鐘線輸出
OutMI(0XEE);OutSI(0XEE);//寫模式
OutMI(0XC0);OutMI(0X00);//顯示起始行為0,列地址為0
OutSI(0XC0);OutSI(0X00);//顯示起始行為0,列地址為0
OutMI(0XAF);OutSI(0XAF); //開顯示
ClearScreen();
}</P><P>/*------------------------------------------------------------------------------
調(diào)用方式:void clrscr(void)
函數(shù)說明:清屏
------------------------------------------------------------------------------*/
void clrscr(void)
{
unsigned char i;
unsigned char page;
for( page=0;page<2; page ++)
{
for(i=0;i<5;i++) ShowChar( page,i,' ');
}
}///////////////////////////////////////////////////////////////////////
/*------------------------------------------------------------------------------
調(diào)用方式:void SetPage(unsigned char page0,unsigned char page1)
函數(shù)說明:同時設(shè)置主從顯示頁為0-3頁。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
------------------------------------------------------------------------------*/
void SetPage(unsigned char page0,unsigned char page1)
{
OutMI(0xB8|page1);
OutSI(0xB8|page0);
}
/*------------------------------------------------------------------------------
調(diào)用方式:void SetAddress(unsigned char address0,unsigned char address1)
函數(shù)說明:同時設(shè)置主從列地址為0-121。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void SetAddress(unsigned char address0,unsigned char address1)
{
OutMI(address1&0x7F);
OutSI(address0&0x7F);
}
/*------------------------------------------------------------------------------
調(diào)用方式:void PutChar0(unsigned char ch)
函數(shù)說明:在左頁當前地址畫一個字節(jié)8個點。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void PutChar0(unsigned char ch)
{
OutSD(ch);
}
/*------------------------------------------------------------------------------
調(diào)用方式:void PutChar1(unsigned char ch)
函數(shù)說明:在右頁當前地址畫一個字節(jié)8個點。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
-------------------------------------------------------------------------------*/
void PutChar1(unsigned char ch)
{
OutMD(ch);
}
/*------------------------------------------------------------------------------
調(diào)用方式:void DrawBmp(unsigned char x,bit layer,unsigned char width,unsigned char *bmp)
函數(shù)說明:畫一個圖,橫坐標是x,layer表示上下層,width是圖形的寬,高都是16,bmp是
圖形指針
使用zimo21軟件,采用縱向取模得到bmp數(shù)據(jù)。
------------------------------------------------------------------------------*/
void DrawBmp(unsigned char x0,bit layer,unsigned char width,unsigned char *bmp)
{
unsigned char x,address,i=0; //address表示顯存的物理地址
unsigned char page=0;
bit window=0; //page表示上下兩頁,window表示左右兩頁
if (layer) page=2;
for (x=x0;x<x0+width;x++)
{
if (x>62) {window=1;address=x%62;}
else address=x;
SetPage(page,page);
SetAddress(address,address);
if (window)
{
PutChar0(bmp[i]);
}
else
{
PutChar1(bmp[i]);// Master ,畫上層
}
SetPage(page+1,page+1);
SetAddress(address,address);
if (window)
{
PutChar0(bmp[i+width]);
}
else
{
PutChar1(bmp[i+width]);//畫下層
}
i++;
}
}
void ClearScreen(void)
{
unsigned char i;
unsigned char page;
for (page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0,0);
for (i=0;i<62;i++)
{
PutChar1(0x0);
PutChar0(0x0);
}
}
}
//顯示一行字符串(漢字,字母混排,一行16字節(jié))
//lin:行
//lineheadaddr: 此行漢字代碼區(qū)首地址
void ShowLine(unsigned char lin,unsigned char linehead[])
{ unsigned char i;
unsigned char byte;
unsigned int hzcode;
for( i=0; i<16; )
{ byte=linehead[i];
if(byte < 0x80) //字母
{
if(i>15) return; //!!編譯器有問題,須強制退出
ShowChar(lin, i , byte);
i=i+1;
}
else // byte >= 0x80(漢字)
{
if(i>15) return; //!!編譯器有問題,須強制退出
byte=byte & 0x7f; //最高位置0,即:減去0x8000
hzcode=(unsigned int)byte<<8; //?? //高8位
hzcode=hzcode+linehead[i+1]; //加低8位,組合成整型數(shù)地址
ShowHZ( lin,i,hzcode);
i=i+2;
}
}
}
//顯示一屏漢字
//pageheadaddr:此屏漢字代碼地址區(qū)首地址
void ShowPage(unsigned char pagehead[][16])
{ unsigned char i;
for(i=0;i<2;i++) ShowLine(i,pagehead[i]); //1行8個漢字,16字節(jié)
}unsigned char ReadByte_1()
{
unsigned char dat;
LCD12232_E2=0; //確
LCD12232_A0=1;
LCD12232_RW=1;
LCD12232_E1=1; _nop_(); _nop_();
LCD12232_DATA=0xff;
dat=LCD12232_DATA; _nop_(); _nop_();
LCD12232_E1=0; _nop_(); _nop_();
return dat;
}unsigned char ReadByte_2()
{
unsigned char dat;
LCD12232_E1=0; //確
LCD12232_A0=1;
LCD12232_RW=1;
LCD12232_E2=1; _nop_(); _nop_();
LCD12232_DATA=0xff;
dat=LCD12232_DATA; _nop_(); _nop_();
LCD12232_E2=0; _nop_(); _nop_();
return dat;
}
//反顯一個8*8字塊
//lin:行(0-3), column: 列(0-7)
void ReverseShow88(unsigned char lin,unsigned char column)
{
unsigned char i,j,dat[8];
if( column > 14) return;</P><P> if( column < 7 ) //8*8點陣都在左屏(Master)
{ OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //設(shè)置顯示列
dat[i]=~ReadByte_1();
for(i=0;i<8;i++)
{
dat[i]=~ReadByte_1();
}
OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //設(shè)置顯示列
for(i=0; i<8 ; i++ ) { OutMD(dat[i]); }
}
if( column == 7) //8*8點陣,前6個在左屏(Master),后兩個在右屏(Slave)
{ OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //左屏
dat[i]=~ReadByte_1();
for(i=0;i<6;i++)
{
dat[i]=~ReadByte_1();
}
OutMI( 0xB8 | lin); //設(shè)置顯示行
OutMI( column*8 ); //左屏
for(i=0; i<6 ; i++ )
{ OutMD(dat[i]); }
OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( 0 ); //右屏
dat[i]=~ReadByte_2();
for(i=0;i<2;i++)
{
dat[i]=~ReadByte_2();
}
OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( 0 ); //右屏
for(i=0; i<2 ; i++ ) { OutSD(dat[i]); }
}
if( column > 7) //8*8點陣都在右屏(Slave)
{ OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( column*8-62 );
dat[i]=~ReadByte_2();
for(i=0;i<8;i++)
{
dat[i]=~ReadByte_2();
}
OutSI( 0xB8 | lin); //設(shè)置顯示行
OutSI( column*8-62 );
for(i=0; i<8 ; i++ ) { OutSD(dat[i]); }
}
}
//反顯一行
ReverseShow(unsigned char lin)
{
unsigned char i;
lin=lin*2;
for(i=0;i<15;i++)
{
ReverseShow88(lin,i);
ReverseShow88(lin+1,i);
}
}
//反顯一個漢字
ReverseShowHZ(unsigned char lin,unsigned char col)
{
lin=lin*2;
ReverseShow88(lin,col);
ReverseShow88(lin+1,col);
ReverseShow88(lin,col+1);
ReverseShow88(lin+1,col+1);
}
//反顯一個字符
ReverseShowChar(unsigned char lin,unsigned char col)
{
lin=lin*2;
ReverseShow88(lin,col);
ReverseShow88(lin+1,col);
}</P><P>void Reset() //液晶復(fù)位
{
_nop_(); _nop_();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美经典| 国产精品久久久久久久久果冻传媒 | 亚洲人精品一区| 国产精品天干天干在线综合| 国产婷婷精品av在线| 欧美激情综合五月色丁香 | 一本大道久久a久久综合婷婷 | 欧美一区二区三区在线| 3d动漫精品啪啪| 日韩一区二区在线看片| 日韩免费观看高清完整版在线观看| 日韩视频在线观看一区二区| 日韩免费性生活视频播放| 精品久久久影院| 中文一区一区三区高中清不卡| 欧美激情综合五月色丁香小说| **性色生活片久久毛片| 亚洲五月六月丁香激情| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久爱www久久做| 成人精品免费网站| 欧美午夜精品久久久久久超碰 | 欧美日韩不卡在线| 欧美一级理论片| 国产精品全国免费观看高清| 亚洲综合小说图片| 久久超级碰视频| 91网站视频在线观看| 欧美亚洲综合在线| 久久久精品欧美丰满| 亚洲另类在线制服丝袜| 久久99精品国产.久久久久久| 成人不卡免费av| 欧美一卡2卡3卡4卡| 中文幕一区二区三区久久蜜桃| 亚洲高清免费在线| 国产剧情一区在线| 欧美日韩精品一区二区三区蜜桃 | 午夜电影网一区| 丰满岳乱妇一区二区三区| 欧美色爱综合网| 国产精品私人自拍| 蜜臀精品一区二区三区在线观看| 懂色av一区二区夜夜嗨| 91精品久久久久久蜜臀| 亚洲欧美一区二区三区国产精品| 九色综合国产一区二区三区| 91激情五月电影| 国产精品毛片a∨一区二区三区| 日韩电影免费在线观看网站| 成人app软件下载大全免费| 日韩欧美高清一区| 天天综合日日夜夜精品| 色综合色狠狠综合色| 欧美激情一区二区三区不卡| 日本成人超碰在线观看| 在线观看一区不卡| 中文字幕在线观看一区| 国产综合久久久久久鬼色| 制服丝袜中文字幕亚洲| 亚洲综合激情网| 91麻豆福利精品推荐| 国产精品久久久久久一区二区三区| 九九九精品视频| 精品国产一二三区| 日韩成人午夜电影| 6080午夜不卡| 麻豆精品在线播放| 欧美电影免费观看高清完整版在线| 同产精品九九九| 欧美一级欧美三级| 日韩精品91亚洲二区在线观看| 欧美色综合影院| 亚洲电影一级黄| 久久久午夜精品| 国产精一品亚洲二区在线视频| 欧美精品一区二区在线观看| 精品亚洲aⅴ乱码一区二区三区| 91精品国产高清一区二区三区| 午夜久久电影网| 欧美大片日本大片免费观看| 久久成人免费网| 国产欧美精品一区aⅴ影院| 国产精品夜夜爽| 国产精品国产三级国产三级人妇 | 麻豆久久一区二区| 日韩一区二区三区免费看| 久久福利视频一区二区| 久久久久久久电影| 成人高清视频在线观看| 夜夜夜精品看看| 欧美日韩大陆在线| 国产一区二区三区免费| 国产亚洲欧美日韩日本| 不卡一区二区在线| 亚洲妇熟xx妇色黄| 欧美电影免费观看完整版| 成人一二三区视频| 亚洲一区二区三区小说| 日韩精品一区在线观看| 91亚洲精品久久久蜜桃网站| 无码av免费一区二区三区试看 | 久久久亚洲高清| 在线视频一区二区免费| 九九热在线视频观看这里只有精品| 欧美高清在线一区二区| 在线观看亚洲成人| 国内偷窥港台综合视频在线播放| 国产欧美精品区一区二区三区| 欧洲生活片亚洲生活在线观看| 美女网站视频久久| 亚洲摸摸操操av| 欧美精品一区视频| 欧美性三三影院| 成人aa视频在线观看| 日本vs亚洲vs韩国一区三区 | 爽好久久久欧美精品| 国产精品欧美一区喷水| 欧美一区二区三区视频在线| 成人高清在线视频| 麻豆国产91在线播放| 樱花影视一区二区| 国产日产欧美一区| 欧美丰满高潮xxxx喷水动漫| 成人av电影在线| 国产美女在线观看一区| 日本欧美韩国一区三区| 一级女性全黄久久生活片免费| 日本一区二区三区国色天香| 91国产视频在线观看| 成人午夜视频福利| 狠狠网亚洲精品| 日本不卡的三区四区五区| 亚洲图片一区二区| 亚洲免费在线看| 中文字幕精品三区| 国产日韩欧美电影| 久久久精品免费观看| 精品乱人伦小说| 欧美一区二区啪啪| 欧美日韩一区视频| 欧美日韩精品一区二区天天拍小说| 91视频免费观看| 91在线视频播放地址| 成人永久免费视频| 成人动漫中文字幕| 91尤物视频在线观看| 91香蕉视频在线| 91麻豆精品秘密| 色88888久久久久久影院按摩| 99久久久精品免费观看国产蜜| 大白屁股一区二区视频| www.一区二区| 不卡视频免费播放| 91色综合久久久久婷婷| 一本久久综合亚洲鲁鲁五月天| 色系网站成人免费| 欧美性感一类影片在线播放| 欧美日韩国产高清一区二区三区| 欧美色区777第一页| 欧美精品国产精品| 欧美tk丨vk视频| 久久亚洲精品小早川怜子| 国产喷白浆一区二区三区| **性色生活片久久毛片| 一区二区三国产精华液| 日韩中文欧美在线| 国产在线麻豆精品观看| 成人做爰69片免费看网站| 91免费版在线| 欧美老女人第四色| 久久亚洲一区二区三区四区| 国产精品天干天干在观线| 亚洲一二三四区| 久久激情五月激情| 成人亚洲精品久久久久软件| 在线这里只有精品| 日韩欧美久久久| 中文字幕一区二区三区视频| 亚洲午夜精品久久久久久久久| 美女爽到高潮91| av一本久道久久综合久久鬼色| 欧美日韩一级片网站| 精品久久久久久无| 亚洲柠檬福利资源导航| 久久99精品国产91久久来源| 9人人澡人人爽人人精品| 欧美体内she精高潮| 久久久久久亚洲综合| 亚洲在线视频一区| 国产91丝袜在线18| 在线播放一区二区三区| 国产精品无码永久免费888| 日韩在线卡一卡二| 91在线看国产| 精品国产髙清在线看国产毛片 | 欧美草草影院在线视频| 亚洲丝袜精品丝袜在线| 国产一区欧美二区| 欧美三级电影网|