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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xianshi.c

?? 基于LCD的單片機開發 字符顯示"山西"的源代碼
?? C
字號:
#include   "absacc.h " 
#include   "intrins.h " 
#include "reg52.h"

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


//   LCD128*64   數據線 
#define   LCD12864DataPort   P1 

//   LCD128*64   I/O   信號管腳 
sbit   di   =P3^1;   //   數據\指令   選擇 
sbit   rw   =P3^3;   //   讀\寫   選擇 
sbit   en   =P3^2;   //   讀\寫使能 
sbit   cs1   =P3^4;   //   片選1,低有效(前64列) 
sbit   cs2   =P3^5;   //   片選2,低有效(后64列) 

sbit   reset=P0^7;   //   復位 

//開關顯示 
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點陣 
//旋轉90度:字模被豎著切分 
//lin:行(0-7),   column:   列(0-15) 
//address   :   字模區首地址 
void   Show88(unsigned   char   lin,unsigned   char   column,unsigned   int   address) 

//顯示8*16字符 
//旋轉90度:字模被豎著切分 
//lin:行(0-3),   column:   列(0-15) 
//character:字符代碼(標準ASCII碼) 
void   ShowChar(unsigned   char   lin,unsigned   char   column,unsigned   char   character) 

//顯示8*16字符串 
//!!!只能顯示在一行上即:   串長+column   <=15 
//旋轉90度:字模被豎著切分 
//lin:行(0-3),   column:   列(0-15) 
//address   :   字模區首地址 
void   ShowString(unsigned   char   lin,unsigned   char   column,   unsigned   char   *string) 

//顯示一個漢字 
//旋轉90度:字模被豎著切分 
//lin:行(0-3),   column:   列(0-15) 
//hzcode:   漢字代碼(自定義的) 
void   ShowHZ(unsigned   char   lin,unsigned   char   column,unsigned   int   hzcode) 

//顯示圖片 
//旋轉90度   :字模被豎著切分 
//startline   :開始行 
//startcolumn:開始列 
//linechar   :圖片行點除8(圖片以8*8點陣為單位) 
//columnchar   :圖片列點除8(圖片以8*8點陣為單位) 
//address   :   字模區首地址 
void   ShowPicture(unsigned   char   startline,unsigned   char   startcolumn,unsigned   char   linechar,unsigned   char   columnchar,unsigned   int   address) 
//!!問題大戶 
//顯示一行漢字 
//lin:行 
//lineheadaddr:   此行漢字代碼區首地址 
void   ShowLine(unsigned   char   lin,unsigned   int   lineheadaddr) 

//顯示一屏漢字 
//pageheadaddr:此屏漢字代碼地址區首地址 
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() 

//延時 
Lcd12864delay() 
{ 
unsigned   int   i=500; 
while(i--)   {;} 
} 

//狀態檢查 
void   CheckState() 
{ 
unsigned   char   dat; 
di=0; 
rw=1; 
do{ 
LCD12864DataPort=0xff; 
en=1;   dat=LCD12864DataPort;   en=0; 
dat=0x90   &   dat;   //僅當第4,7位為0時才可操作 
}while(!(dat==0x00)); 
} 

//寫顯示數據 
//dat:顯示數據 
void   WriteByte(unsigned   char   dat) 
{ 
CheckState(); 
di=1;   rw=0; 
LCD12864DataPort=dat; 
en=1;   en=0; 
} 

//向LCD發送命令 
//command   :命令 
SendCommandToLCD(unsigned   char   command) 
{ 
CheckState(); 
rw=0; 
LCD12864DataPort=command; 
en=1;   en=0; 
} 

//設定行地址(頁)--X   0-7 
void   SetLine(unsigned   char   line) 
{ 
line=line   &   0x07;   //   0 <=line <=7 
line=line|0xb8;   //1011   1xxx 
SendCommandToLCD(line); 
} 
//設定列地址--Y   0-63 
void   SetColumn(unsigned   char   column) 
{ 
column=column   &0x3f;   //   0= <column <=63 
column=column   |   0x40;   //01xx   xxxx 
SendCommandToLCD(column); 
} 
//設定顯示開始行--XX 
void   SetStartLine(unsigned   char   startline)   //0--63 
{ 
startline=startline   &   0x07; 
startline=startline|0xc0;   //1100   0000 
SendCommandToLCD(startline); 
} 
//開關顯示 
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點陣 
//旋轉90度:字模被豎著切分 
//lin:行(0-7),   column:   列(0-15) 
//address   :   字模區首地址 
void   Show88(unsigned   char   lin,unsigned   char   column,unsigned   int   address) 
{   unsigned   char   i; 
if(column> 16)   {return;} 
if(column <8)   SelectScreen(1);   //如果列數 <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字符 
//旋轉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 
//旋轉90度:字模被豎著切分 
//lin:行(0-3),   column:   列(0-15) 
//address   :   字模區首地址 
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++; 
} 
} 
*/ 

//顯示一個漢字 
//旋轉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); 
} 

//顯示圖片 
//旋轉90度   :字模被豎著切分 
//startline   :開始行 
//startcolumn:開始列 
//linechar   :圖片行點除8(圖片以8*8點陣為單位) 
//columnchar   :圖片列點除8(圖片以8*8點陣為單位) 
//address   :   字模區首地址 
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字節) 
//lin:行 
//lineheadaddr:   此行漢字代碼區首地址 
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位,組合成整型數地址 
ShowHZ(   lin,i,hzcode); 
i=i+2; 
} 
} 
} 

//顯示一屏漢字 
//pageheadaddr:此屏漢字代碼地址區首地址 
void   ShowPage(unsigned   char   pagehead[][16]) 
{   unsigned   char   i; 
for(i=0;i <4;i++)   ShowLine(i,pagehead[i]);   //1行8個漢字,16字節 
} 

//讀顯示數據 
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);   //如果列數 <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;//復位 
//reset=1; 

SelectScreen(0); 
SetOnOff(0);   //關顯示 

ClearScreen(1);//清屏 
ClearScreen(2); 

SelectScreen(0); 
SetOnOff(1);   //開顯示 
SelectScreen(0); 
SetStartLine(0);   //開始行:0 
} 

void   Reset()   //液晶復位 
{ 
//reset   低復位   _|- 
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); 

} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区五区| 成人福利视频网站| 欧美性xxxxxxxx| 亚洲人成亚洲人成在线观看图片| 国内精品久久久久影院色| 在线欧美小视频| 亚洲图片另类小说| 91在线免费视频观看| 久久久99久久精品欧美| 国产一区二区三区免费在线观看| 日韩欧美国产系列| 免费在线观看成人| 日韩欧美在线123| 亚洲欧美国产高清| 一本久道中文字幕精品亚洲嫩| 中文字幕一区二区三区乱码在线 | 国精产品一区一区三区mba桃花| 日本乱人伦一区| 一区二区三区在线视频播放| 91黄视频在线| 午夜激情久久久| 日韩精品一区二区三区在线| 免费欧美高清视频| 精品国产乱码久久久久久夜甘婷婷| 黄页视频在线91| 欧美国产一区二区| 97久久久精品综合88久久| 亚洲已满18点击进入久久| 欧美另类高清zo欧美| 日本va欧美va精品发布| 日韩免费电影网站| 成人精品视频一区| 人人狠狠综合久久亚洲| 国产精品伦理一区二区| 91麻豆精品91久久久久久清纯| 国产99久久久精品| 日韩精品1区2区3区| 国产精品萝li| 精品噜噜噜噜久久久久久久久试看 | 91国产免费观看| 国产一区二区免费在线| 一区二区国产视频| 国产亚洲欧美色| 欧美片在线播放| 一本久久a久久精品亚洲| 国产在线日韩欧美| 国产福利一区二区| 午夜日韩在线观看| 亚洲女同一区二区| 久久久精品黄色| 6080yy午夜一二三区久久| 91亚洲午夜精品久久久久久| 国产一区二区三区蝌蚪| 日产精品久久久久久久性色| 亚洲欧美日韩一区| 国产精品无遮挡| 久久婷婷久久一区二区三区| 欧美人与禽zozo性伦| 97se狠狠狠综合亚洲狠狠| 国产不卡视频一区二区三区| 久久精品国产在热久久| 日韩电影在线免费| 亚洲va韩国va欧美va| 亚洲三级在线观看| 国产精品另类一区| 国产欧美日韩精品一区| 久久色.com| 久久久久99精品一区| 精品伦理精品一区| 欧美变态口味重另类| 日韩一区二区三免费高清| 欧美久久久一区| 欧美精品久久99| 欧美美女黄视频| 欧美日韩中字一区| 欧美肥妇bbw| 欧美一区二区三区白人| 日韩一区二区三区av| 91精品国产免费| 欧美一区二区三区四区高清| 日韩欧美一区二区不卡| 日韩精品专区在线影院观看| 欧美大片顶级少妇| 国产亚洲综合在线| 中文字幕欧美日本乱码一线二线| 欧美激情一区二区三区全黄| 国产精品日日摸夜夜摸av| 1024成人网色www| 一区二区成人在线| 亚洲成av人片在线| 青椒成人免费视频| 国产在线精品一区二区不卡了| 国产一区视频导航| 成人国产视频在线观看| 色综合天天综合狠狠| 欧美系列亚洲系列| 欧美一区二区视频在线观看| 久久久久综合网| 亚洲同性同志一二三专区| 亚洲一二三四久久| 麻豆精品视频在线观看视频| 国产一区二区美女诱惑| www.亚洲在线| 在线播放中文字幕一区| 久久久久久久久久电影| 亚洲欧美怡红院| 丝袜亚洲另类欧美| 国产精品18久久久久久vr| 99久久综合色| 欧美日韩精品一区二区三区蜜桃 | 国产精品一区二区三区乱码| 99久久99久久精品免费观看| 在线观看亚洲a| 欧美精品一区二区三区视频| 综合久久给合久久狠狠狠97色| 五月婷婷欧美视频| 日本韩国一区二区三区| 欧美一区二区三区婷婷月色| 国产精品麻豆一区二区| 午夜精品福利一区二区三区av | 久久嫩草精品久久久久| 亚洲综合区在线| 精品一二三四区| 色综合久久中文综合久久牛| 日韩久久久久久| 亚洲激情五月婷婷| 国产精品自拍网站| 欧美人与z0zoxxxx视频| 中文字幕av一区二区三区免费看 | 日韩精品专区在线影院观看| 最好看的中文字幕久久| 狠狠色丁香久久婷婷综| 欧美视频一二三区| 国产精品久久毛片a| 久久精品国产77777蜜臀| 日本韩国欧美三级| 国产目拍亚洲精品99久久精品| 日韩av在线发布| 91在线视频18| 亚洲国产精品精华液ab| 精品一区二区三区视频在线观看 | 亚洲精品国久久99热| 国产一区二区h| 日韩一区二区免费视频| 亚洲一卡二卡三卡四卡无卡久久| 丁香婷婷综合色啪| 精品欧美黑人一区二区三区| 亚洲狠狠爱一区二区三区| av中文字幕亚洲| 中文在线免费一区三区高中清不卡| 蜜桃av噜噜一区二区三区小说| 欧美午夜精品电影| 亚洲人成在线观看一区二区| 成人午夜激情在线| 久久综合色天天久久综合图片| 日韩vs国产vs欧美| 欧美日韩日日摸| 亚洲国产精品一区二区久久恐怖片 | 91精品国产高清一区二区三区| 亚洲激情校园春色| av电影天堂一区二区在线| 国产欧美日韩在线观看| 国产高清精品在线| 中文字幕第一区二区| 国产98色在线|日韩| 久久久久久97三级| 国产精品99久久久久久久vr| 久久精品一区二区三区不卡 | 欧美精品第一页| 亚洲国产精品尤物yw在线观看| 欧美偷拍一区二区| 香蕉加勒比综合久久 | 欧美一区二区三区视频在线 | 免费在线看成人av| 日韩精品一区二区三区视频播放| 美女视频黄免费的久久| 欧美va亚洲va香蕉在线| 国精品**一区二区三区在线蜜桃| 精品福利一区二区三区免费视频| 精品一区二区影视| 亚洲黄色尤物视频| 欧美亚洲国产怡红院影院| 亚洲一区在线播放| 91麻豆精品国产91久久久使用方法| 免费高清在线一区| 久久综合色播五月| 99综合影院在线| 亚洲福利视频一区二区| 日韩亚洲欧美成人一区| 国产一区二区不卡老阿姨| 中文字幕日韩欧美一区二区三区| 99精品视频免费在线观看| 亚洲综合色丁香婷婷六月图片| 51精品国自产在线| 高清国产一区二区| 亚洲最色的网站| 精品av久久707| 99久久精品国产麻豆演员表| 性做久久久久久久久| 久久一二三国产|