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

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

?? 22.txt

?? 這是一個液晶驅(qū)動程序
?? TXT
字號:
128x64液晶KS0108驅(qū)動程序(C51)

===========================================================================================*/ 
#include "absacc.h"
#include "intrins.h"
//自定義庫 在"C:\comp51\UserLib\"文件夾中
#include ".\inc\ASCII816.h" //標準ASCII庫
#include ".\inc\HZTable.h" //漢字點陣庫(自做)
#include ".\inc\Menu.h" //菜單庫(自做)

// LCD128*64 數(shù)據(jù)線
#define LCD12864DataPort P1
// LCD128*64 I/O 信號管腳
sbit di =P3^1; // 數(shù)據(jù)\指令 選擇
sbit rw =P3^3; // 讀\寫 選擇
sbit en =P3^2; // 讀\寫使能
sbit cs1 =P3^4; // 片選1,低有效(前64列)
sbit cs2 =P3^5; // 片選2,低有效(后64列)
sbit reset=P0^7; // 復(fù)位
/*----------------------------------------------------------------------------------------------------*/
/* ****函數(shù)列表****
//開關(guān)顯示
void SetOnOff(unsigned char onoff)
//選擇屏幕
//screen: 0-全屏,1-左屏,2-右
void SelectScreen(unsigned char screen)
//清屏
//screen: 0-全屏,1-左屏,2-右
void ClearScreen(unsigned char screen)
//顯示8*8點陣
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-7), column: 列(0-15)
//address : 字模區(qū)首地址
void Show88(unsigned char lin,unsigned char column,unsigned int address)
//顯示8*16字符
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//character:字符代碼(標準ASCII碼)
void ShowChar(unsigned char lin,unsigned char column,unsigned char character)
//顯示8*16字符串
//!!!只能顯示在一行上即: 串長+column <=15
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//address : 字模區(qū)首地址
void ShowString(unsigned char lin,unsigned char column, unsigned char *string)
//顯示一個漢字
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//hzcode: 漢字代碼(自定義的)
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
//顯示圖片
//旋轉(zhuǎn)90度 :字模被豎著切分
//startline :開始行
//startcolumn:開始列
//linechar :圖片行點除8(圖片以8*8點陣為單位)
//columnchar :圖片列點除8(圖片以8*8點陣為單位)
//address : 字模區(qū)首地址
void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char columnchar,unsigned int address)
//!!問題大戶
//顯示一行漢字
//lin:行
//lineheadaddr: 此行漢字代碼區(qū)首地址
void ShowLine(unsigned char lin,unsigned int lineheadaddr)
//顯示一屏漢字
//pageheadaddr:此屏漢字代碼地址區(qū)首地址
void ShowPage(unsigned int pageheadaddr)
//反顯一個8*8字塊
//lin:行(0-3), column: 列(0-7)
void ReverseShow88(unsigned char lin,unsigned char column)

//反顯一個字符
//lin:行(0-4), column: 列(0-15)
void ReverseShowChar(unsigned char lin,unsigned char column)

//反顯一個漢字
//lin:行(0-3), column: 列(0-7)
ReverseShowHZ(unsigned char lin,unsigned char column)
//反顯一行漢字
//lin:行
ReverseShow(unsigned char lin)
//初始化LCD
void InitLCD()
****函數(shù)列表結(jié)束**** */
/*----------------------------------------------------------------------------------------------------*/
/*--基本函數(shù)源程序------------------------------------------------------------------------------------*/
//延時
Lcd12864delay()
{
unsigned int i=500;
while(i--) {;}
}
/*----------------------------------------------------------------------------------------------------*/
//狀態(tài)檢查
void CheckState()
{
unsigned char dat;
di=0;
rw=1;
do{
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
dat=0x90 & dat; //僅當?shù)?,7位為0時才可操作
}while(!(dat==0x00));
}
/*----------------------------------------------------------------------------------------------------*/
//寫顯示數(shù)據(jù)
//dat:顯示數(shù)據(jù)
void WriteByte(unsigned char dat)
{
CheckState();
di=1; rw=0;
LCD12864DataPort=dat;
en=1; en=0;
}
/*-----------------------------------------------------------------------------------------------------*/
//向LCD發(fā)送命令
//command :命令
SendCommandToLCD(unsigned char command)
{
CheckState();
rw=0;
LCD12864DataPort=command;
en=1; en=0;
}
/*----------------------------------------------------------------------------------------------------*/
//設(shè)定行地址(頁)--X 0-7
void SetLine(unsigned char line)
{
line=line & 0x07; // 0<=line<=7
line=line|0xb8; //1011 1xxx
SendCommandToLCD(line);
}
//設(shè)定列地址--Y 0-63
void SetColumn(unsigned char column)
{
column=column &0x3f; // 0=<column<=63
column=column | 0x40; //01xx xxxx
SendCommandToLCD(column);
}
//設(shè)定顯示開始行--XX
void SetStartLine(unsigned char startline) //0--63
{
startline=startline & 0x07;
startline=startline|0xc0; //1100 0000
SendCommandToLCD(startline);
}
//開關(guān)顯示
void SetOnOff(unsigned char onoff)
{
onoff=0x3e | onoff; //0011 111x
SendCommandToLCD(onoff);
}
/*---------------------------------------------------------------------------------------------------*/
//選擇屏幕
//screen: 0-全屏,1-左屏,2-右屏
void SelectScreen(unsigned char screen)
{ //北京顯示器:負有效 cs1: 0--右; cs2: 0--左
switch(screen)
{ case 0: cs1=0;//全屏
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
cs2=0; 
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
break; 
case 1: cs1=1;//左屏
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
cs2=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
break;
case 2: cs1=0;//右屏
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
cs2=1;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
break;
}
}
/*---------------------------------------------------------------------------------------------------*/
//清屏
//screen: 0-全屏,1-左屏,2-右
void ClearScreen(unsigned char screen)
{ unsigned char i,j;
SelectScreen(screen);
for(i=0;i<8;i++)
{ SetLine(i);
for(j=0;j<64;j++)
{
WriteByte(0x00);
}
}
}
/*--------------------------------------------------------------------------------------------------*/
//顯示8*8點陣
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-7), column: 列(0-15)
//address : 字模區(qū)首地址
void Show88(unsigned char lin,unsigned char column,unsigned int address)
{ unsigned char i;
if(column>16) {return;}
if(column<8) SelectScreen(1); //如果列數(shù)<8(0,1,2,3,4,5,6,7)則寫在第一屏上
else {
SelectScreen(2); //否則 (8,9,10,11,12,13,14,15)寫在第二屏上
column=column & 0x07; //防止越界
}
SetLine(lin);
SetColumn(column<<3);
for(i=0;i<8;i++) WriteByte( CBYTE[address+i] );
}
/*------------------------------------------------------------------------------------------------*/
//顯示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 );
}
/*-----------------------------------------------------------------------------------------------*/
/*
//顯示8*16字符串
//!!!只能顯示在一行上即: 串長+column <=15
//旋轉(zhuǎn)90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//address : 字模區(qū)首地址
void ShowString(unsigned char lin,unsigned char column, unsigned char *string)
{ unsigned char ch;
unsigned char i=0;
while(*string!='\0')
{
ch=*string;
if(i+column >15) break; //(只能顯示在一行上即: 串長+column <=15)
ShowChar(lin,i+column,ch);
string++; i++;
}
}
*/
/*----------------------------------------------------------------------------------------------*/
//顯示一個漢字
//旋轉(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);
}
/*----------------------------------------------------------------------------------------------*/
//顯示圖片
//旋轉(zhuǎn)90度 :字模被豎著切分
//startline :開始行
//startcolumn:開始列
//linechar :圖片行點除8(圖片以8*8點陣為單位)
//columnchar :圖片列點除8(圖片以8*8點陣為單位)
//address : 字模區(qū)首地址
void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char columnchar,unsigned int address)
{ unsigned char i,j;
for(i=0;i<columnchar;i++)
for(j=0;j<linechar;j++)
Show88(startline+i , startcolumn+j , address+(i*linechar+j)*8 );
}
/*----------------------------------------------------------------------------------------------*/
//顯示一行字符串(漢字,字母混排,一行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<4;i++) ShowLine(i,pagehead[i]); //1行8個漢字,16字節(jié)
}
/*----------------------------------------------------------------------------------------------------*/
//讀顯示數(shù)據(jù)
unsigned char ReadByte()
{
unsigned char dat;
CheckState();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}
/*----------------------------------------------------------------------------------------------------*/
//反顯一個8*8字塊
//lin:行(0-3), column: 列(0-7)
void ReverseShow88(unsigned char lin,unsigned char column)
{ unsigned char i;
unsigned char tab[8];
if(column<8) SelectScreen(1); //如果列數(shù)<4(0,1,2,3),則寫在第一屏上
else SelectScreen(2); //否則 (4,5,6,7), 寫在第二屏上
//讀上部8列
column=column<<3; //每個方塊8*8大小
SetLine(lin);
SetColumn(column);
tab[0]=ReadByte(); //空讀!!!!! //?
for(i=0;i<8;i++) tab[i]=~ReadByte();
//寫回
SetLine(lin);
SetColumn(column);
for(i=0;i<8;i++) WriteByte(tab[i]);
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
//反顯一個字符
//lin:行(0-4), column: 列(0-15)
void ReverseShowChar(unsigned char lin,unsigned char column)
{ lin=lin<<1;
ReverseShow88(lin ,column);
ReverseShow88(lin+1,column);
}
/*----------------------------------------------------------------------------------------------------*/
//反顯一個漢字
//lin:行(0-3), column: 列(0-7)
ReverseShowHZ(unsigned char lin,unsigned char column)
{
lin=lin<<1;
column=column<<1;
ReverseShow88(lin ,column );
ReverseShow88(lin ,column+1);
ReverseShow88(lin+1,column );
ReverseShow88(lin+1,column+1);
}
/*----------------------------------------------------------------------------------------------------*/
//反顯一行漢字
//lin:行
ReverseShow(unsigned char lin)
{ unsigned char i;
for(i=0;i<8;i++) ReverseShowHZ(lin,i);
}
/*----------------------------------------------------------------------------------------------------*/
void InitLCD() //初始化LCD
{ unsigned char i=250; //延時
while(i--);
//reset=0;//復(fù)位
//reset=1;
SelectScreen(0);
SetOnOff(0); //關(guān)顯示
ClearScreen(1);//清屏
ClearScreen(2);
SelectScreen(0);
SetOnOff(1); //開顯示
SelectScreen(0);
SetStartLine(0); //開始行:0
}
/*----------------------------------------------------------------------------------------------------*/
void Reset() //液晶復(fù)位
{
//reset 低復(fù)位 _|-
reset=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
reset=1;

//全屏
cs1=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
cs2=0; 
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
SendCommandToLCD(0x3F);
}
/*----------------------------------------------------------------------------------------------------*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色播五月激情综合网| 国产精品久久久久久久久免费相片 | 91蜜桃传媒精品久久久一区二区| 国产欧美精品一区二区三区四区| 国产a精品视频| 亚洲欧美一区二区视频| 91福利国产成人精品照片| 亚洲在线观看免费| 欧美一区二区三区在线看| 精品在线免费视频| 国产欧美一区在线| 色一区在线观看| 日韩高清不卡在线| 久久久99精品免费观看不卡| www.欧美亚洲| 亚洲第一av色| 久久精品在线观看| 色猫猫国产区一区二在线视频| 香港成人在线视频| 久久亚洲一级片| 色综合色综合色综合色综合色综合| 2022国产精品视频| 久久99国产精品麻豆| 亚洲自拍另类综合| 欧美在线观看一二区| 蜜桃一区二区三区在线| 欧美国产日韩a欧美在线观看| 91麻豆视频网站| 日本伊人精品一区二区三区观看方式 | 欧美国产精品一区二区三区| 色悠悠久久综合| 久草精品在线观看| 专区另类欧美日韩| 精品少妇一区二区三区在线播放| 成人黄色国产精品网站大全在线免费观看| 一区二区三区精品视频| 精品国产乱子伦一区| 91福利视频在线| 国产精品自拍三区| 视频一区欧美日韩| 中文字幕制服丝袜一区二区三区 | 欧美精品成人一区二区三区四区| 国产一区二区三区蝌蚪| 亚洲成人一区在线| 国产精品久久久久影院色老大| 91精品国产一区二区| 99精品欧美一区二区三区综合在线| 免费观看在线综合色| 亚洲欧美日韩在线播放| 精品国产99国产精品| 色先锋aa成人| 全国精品久久少妇| 日韩欧美另类在线| 69堂精品视频| 午夜欧美在线一二页| 中文字幕不卡三区| 日韩欧美黄色影院| 欧美日韩国产首页在线观看| 成人动漫一区二区| 国产精品小仙女| 麻豆精品久久久| 婷婷成人激情在线网| 一区二区三区不卡在线观看| 中文字幕成人在线观看| 久久久久久久久久久久久夜| 日韩女优av电影| 欧美日韩在线三区| 欧美网站一区二区| 91国产福利在线| 色哟哟国产精品免费观看| 99国产精品国产精品毛片| 国产精品乡下勾搭老头1| 极品少妇xxxx精品少妇| 久久99精品久久久久久| 久久国产成人午夜av影院| 男人的j进女人的j一区| 日韩精品电影在线| 肉色丝袜一区二区| 五月婷婷激情综合网| 亚洲狠狠爱一区二区三区| 亚洲午夜免费电影| 国产一区久久久| 精品亚洲成av人在线观看| 久久草av在线| 国产一区二区三区在线观看免费视频| 另类欧美日韩国产在线| 国产一区二区三区在线观看免费| 国产一区二区三区最好精华液| 国产精品一区二区三区四区| 成人性生交大片免费看中文网站| 国产成人在线看| 成人国产精品免费观看视频| 99re视频这里只有精品| 在线国产电影不卡| 欧美丰满嫩嫩电影| 精品国产伦一区二区三区观看方式 | 欧美狂野另类xxxxoooo| 91精品国模一区二区三区| 日韩免费视频一区二区| 欧美极品另类videosde| 亚洲女同女同女同女同女同69| 亚洲综合久久av| 蜜桃av一区二区三区| 国产高清视频一区| 91成人看片片| 日韩一级高清毛片| 国产精品免费网站在线观看| 亚洲一区二区在线观看视频| 另类综合日韩欧美亚洲| 91亚洲国产成人精品一区二区三| 欧美午夜精品免费| 精品国产伦一区二区三区观看方式| 国产精品色婷婷久久58| 亚洲国产中文字幕在线视频综合| 麻豆一区二区99久久久久| www.日韩大片| 日韩视频一区在线观看| 国产剧情一区在线| 色噜噜狠狠成人网p站| 日韩一区二区三区在线视频| 国产欧美一区二区在线| 午夜精品久久久久久久99水蜜桃 | 韩国精品一区二区| 91久久精品午夜一区二区| 7777精品伊人久久久大香线蕉的| 国产亚洲综合在线| 舔着乳尖日韩一区| 97成人超碰视| 精品国产sm最大网站免费看| 一区二区三区不卡在线观看| 国产一区二区在线看| 欧美视频精品在线观看| 欧美国产乱子伦| 美女爽到高潮91| 在线观看日韩一区| 国产精品久久夜| 韩国女主播成人在线| 欧美日韩精品一区二区三区蜜桃| 日本一区二区三区四区在线视频| 日韩avvvv在线播放| 91亚洲精华国产精华精华液| 国产亚洲一区二区三区四区| 午夜在线成人av| 一本一道波多野结衣一区二区| 久久久不卡影院| 蜜桃视频一区二区三区 | 成人福利在线看| 精品女同一区二区| 日韩不卡一区二区三区 | www.性欧美| 国产欧美精品一区| 国产麻豆精品在线观看| 日韩视频免费观看高清完整版| 亚洲国产美女搞黄色| 91麻豆123| 亚洲色图另类专区| 成人美女在线观看| 国产欧美综合在线观看第十页| 久久国产夜色精品鲁鲁99| 制服丝袜av成人在线看| 亚洲国产日韩a在线播放性色| 一本色道久久加勒比精品| 国产精品毛片久久久久久久| 国产美女精品一区二区三区| 精品国产91久久久久久久妲己| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美精品电影在线播放| 日韩不卡免费视频| 欧美一级在线免费| 麻豆精品新av中文字幕| 日韩精品最新网址| 蜜桃视频免费观看一区| 日韩欧美中文一区二区| 欧美在线观看一二区| 欧美在线一区二区三区| 精品国产乱码久久久久久1区2区| 青青草国产精品97视觉盛宴| 欧美一区二区视频在线观看 | 欧美性受xxxx黑人xyx| 亚洲一二三四区不卡| 欧美日韩一区二区三区四区五区| 亚洲成a人片在线观看中文| 欧美日韩免费观看一区三区| 同产精品九九九| 欧美电影免费观看完整版| 国产一区二区不卡在线| 国产精品免费视频一区| 91网站最新地址| 五月综合激情网| 久久久久久99久久久精品网站| 国产激情91久久精品导航| 最新高清无码专区| 欧美网站一区二区| 久久精品国产精品亚洲红杏| 国产午夜精品一区二区三区视频 | 91美女福利视频| 亚洲电影视频在线| 欧美精品一区二区精品网| 成人久久18免费网站麻豆| 一区二区三区精品在线观看|