欧美视频综合-欧美视频中文字幕-欧美视频在线观在线看-欧美视频在线观看网站-直接观看黄网站免费视频-正在播放久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
單片機(jī)和圖形液晶顯示器接口應(yīng)用技術(shù)
單片機(jī)和圖形液晶顯示器接口應(yīng)用技術(shù)
 更新時(shí)間:2008-8-18 13:23:14  點(diǎn)擊數(shù):27
【字體: 字體顏色

  for(j=0;j<16;j++) buf[j]=peekb(ascii_es,ascii_offset+j); /*讀16字節(jié)點(diǎn)陣數(shù)據(jù)*/
  for(m=0;m<16;m++) /*點(diǎn)陣數(shù)據(jù)轉(zhuǎn)換成LCD格式數(shù)據(jù)*/
  { if(m<8) { beginbyte= 7; shiftn=7;}
  else { beginbyte=15; shiftn=15;}
  for(j=0;j<8;j++)
  ascii8x16[m]=(ascii8x16[m]+ (buf[beginbyte-j]>>(shiftn-m))&0x01)<<1;
  }

  也可選用UCDOS的ASC16文件做字模庫(kù)。ASC16文件的字符為8×16點(diǎn)陣。所有字符按照ASCII值從小到大升序排列。計(jì)算字符首地址的公式:字符首地址=字符的ASCII碼值×16+字模庫(kù)首地址。

  (2) 建立所用到的16×16點(diǎn)陣字模庫(kù)。

  漢字字符可選用UCDOS的HZK16文件做字模庫(kù)。HZK16文件的字符為16×16點(diǎn)陣。所有字符按照區(qū)位碼從小到大升序排列。計(jì)算漢字字符首地址的公式如下:漢字首地址=((區(qū)碼-1)×94+位碼-1)×32。作者用C語(yǔ)言編寫的讀取UCDOS點(diǎn)陣字庫(kù)字模程序,完成字模讀取、數(shù)據(jù)重新排列,并按MCS-51匯編程序的要求寫成相應(yīng)格式的文本文件。

  p=((quma-1)*94+weima-1)*32;
  cclibfile=fopen("HZK16","rb");
  fseek(cclibfile,(long)p,SEEK_SET);
  fread(buf,sizeof(unsigned char),32,cclibfile); /*讀32字節(jié)點(diǎn)陣數(shù)據(jù)*/
  for(m=0;m<32;m++){ /*點(diǎn)陣數(shù)據(jù)轉(zhuǎn)換成LCD格式數(shù)據(jù)*/
  if(m<8) { beginbyte=14; shiftn=7;}
  else if( m>= 8 && m<16 ) { beginbyte=15; shiftn=15;}
  else if( m>=16 && m<24 ) { beginbyte=30; shiftn=23;}
  else { beginbyte=31; shiftn=31;}
  for(j=0;j<8;j++)
  hzk16x16[m]=(hzk16x16[m]+ (buf[beginbyte-2*j] >>(shiftn-m))&0x01)<<1;
  }

  (3) 常用圖形(如產(chǎn)品商標(biāo)等)的點(diǎn)陣圖形的建立。

  對(duì)已有的圖形可采用掃描儀進(jìn)行掃描,然后用圖形處理軟件進(jìn)行處理,再將BMP格式文件轉(zhuǎn)換成MCS-51的匯編文件的格式。

  以上所有的字模數(shù)據(jù)都存放在單片機(jī)W78E58的程序存儲(chǔ)器中,如用到的漢字、圖形較多,可選用較大容量的程序存儲(chǔ)器。

  通用子程序:通用子程序分左半屏、右半屏寫指令代碼子程序和寫顯示數(shù)據(jù)子程序。液晶顯示驅(qū)動(dòng)器HD16202內(nèi)部有個(gè)忙標(biāo)志寄存器,當(dāng)BF=1時(shí),表示內(nèi)部操作正在運(yùn)行,不能接受外部數(shù)據(jù)或指令。下面子程序中設(shè)指令代碼寄存器為COMM,數(shù)據(jù)寄存器為DATA。

  (COMM EQU 20H /*指令寄存器*/ DATA EQU 21H /*數(shù)據(jù)寄存器*/)

  (1) 左半屏寫指令子程序

  WR_CMD1: MOV DPTR,#CRADR1 ;/*讀狀態(tài)字口地址*/
  WAIT1: MOVX A,@DPTR ;/* 讀狀態(tài)字 */
  JB ACC.7,WAIT1 ;/*判忙標(biāo)志BF,如BF=1忙,等待*/
  MOV DPTR,#CWADR1 ;/*寫指令字口地址*/
  MOV A,COMM ;/*取指令代碼*/
  MOVX @DPTR,A ;/*寫指令代碼*/
  RET

  (2)左半屏寫數(shù)據(jù)子程序

  WR_DATA1:MOV DPTR,#CRADR1 ;/*讀狀態(tài)字口地址*/
  WAIT11: MOVX A,@DPTR ;/* 讀狀態(tài)字 */
  JB ACC.7,WAIT11 ;/*判忙標(biāo)志BF,如BF=1忙,等待*/
  MOV DPTR,#DWADR1 ;/*寫數(shù)據(jù)字口地址*/
  MOV A,DATA ;/*取數(shù)據(jù)/
  MOVX @DPTR,A ;/*寫數(shù)據(jù)*/
  RET

  (3)右半屏寫指令子程序WR_CMD2和右半屏寫數(shù)據(jù)子程序WR_DATA2的編制同左半屏子程序相同,只是對(duì)應(yīng)口地址不同。

  8X16字符顯示子程序:MGLS12864液晶顯示屏由二片HD61202控制,LCD顯示中應(yīng)盡量避免一個(gè)字符一半在左半屏顯示,另一半在右半屏顯示的情況。設(shè)列地址寄存器為COLUMN,頁(yè)地址寄存器為PAGE,要顯示的字符代碼寄存器為ASCIICODE,W78E58內(nèi)RAM28H-RAM37H共16個(gè)字節(jié)存放8×16的點(diǎn)陣數(shù)據(jù),生成的8×16點(diǎn)陣庫(kù)文件存放在單片機(jī)W78E58存儲(chǔ)器中的首地址定義為ASCII_DOT816。
DISP_ASCII816: MOV DPTR,#ASCII_DOT816 ;8×16點(diǎn)陣庫(kù)首地址MOV A,ASCIICODE ;顯示字符代碼ASCIICODE MOV B,#16 ;每個(gè)字符點(diǎn)陣占16個(gè)字節(jié) MUL AB ;計(jì)算顯示字符在字庫(kù)的首地址

  ADD A,DPL
  MOV DPL,A
  MOV A,DPH
  ADDC A,B
  MOV DPH,A
  ;
  MOV R0,#28H ;將點(diǎn)陣數(shù)據(jù)放到RAM28H-RAM37H
  MOV R2,#00H
  LP_MOVDOT16: MOV A,R2
  MOVC A,@A+DPTR
  MOV @R0,A ;如要將字符反顯(黑底白字),則讀出點(diǎn)
  INC R0 ;陣數(shù)據(jù)后求反放入單片機(jī)的RAM中
  INC R2
  CJNE R2,#16,LP_MOVDOT16
  ;
  PUSH COLUMN
  MOV A,COLUMN ;顯示列數(shù)COLUMN是否在右半屏
  CJNE A,#64,ASCII_IF64
  ASCII_IF64: JNC ASCII_YGE64
  MOV DPTR,#CWADR1 ;在左半屏?xí)r,選擇左半屏寫指令代碼地址
  CLR FIRST0_SECOND1_BIT ;左半屏列數(shù)標(biāo)志BIT=0
  SJMP ALL_COLUMN
  ASCII_YGE64: CLR C
  SUBB A,#64
  MOV COLUMN,A
  MOV DPTR,#CWADR2 ;在右半屏?xí)r,選擇右半屏寫指令代碼地址
  SETB FIRST0_SECOND1_BIT ;右半屏列數(shù)標(biāo)志BIT=1
  ALL_COLUMN: MOV A,PAGE
  ADD A,#10111000B ;設(shè)置頁(yè)地址命令
  MOVX @DPTR,A
  MOV A,COLUMN ;設(shè)置列地址命令
  ADD A,#01000000B
  MOVX @DPTR,A
  MOV DPTR,DWADR1 ;根據(jù)左右半屏列數(shù)標(biāo)志,選擇寫顯示數(shù)據(jù)地址
  JNB FIRST0_SECOND1_BIT,ALLMOV1
  MOV DPTR,DWADR2
  ALLMOV1: MOV R0,#28H
  MOV_8BYTE1: MOV A,@R0
  MOVX @DPTR,A ;寫顯示數(shù)據(jù)
  NOP
  INC R0
  CJNE R0,#30H,MOV_8BYTE1
  ;
  MOV DPTR,#CWADR1
  JNB FIRST0_SECOND_BIT,ALLMOV2
  MOV DPTR,#CWADR2
  ALLMOV2: MOV A,PAGE
  INC A ;頁(yè)地址加1
  ADD A,#10111000B
  MOVX @DPTR,A ;設(shè)置頁(yè)地址命令
  MOV A,COLUMN ;設(shè)置列地址命令
  ADD A,#01000000B
  MOVX @DPTR,A
  MOV DPTR,DWADR1;根據(jù)左右半屏列數(shù)標(biāo)志,選擇寫顯示數(shù)據(jù)地址
  JNB FIRST0_SECOND1_BIT,ALLMOV3
  MOV DPTR,DWADR2
  ALLMOV3: MOV R0,#30H
  MOV_8BYTE2: MOV A,@R0
  MOVX @DPTR,A ;寫顯示數(shù)據(jù)
  INC R0
  CJNE R0,#38H,MOV_8BYTE2
  ;
  POP COLUMN
  RET

  16×16漢字顯示子程序:16×16漢字顯示子程序與8X16字符顯示子程序基本相同。不同在于每次寫32字節(jié)顯示數(shù)據(jù),可定義W78E58內(nèi)RAM28H-RAM47H共32個(gè)字節(jié)存放16×16的點(diǎn)陣數(shù)據(jù),生成的16×16點(diǎn)陣庫(kù)文件存放在單片機(jī)W78E58存儲(chǔ)器中的首地址定義為HZK_DOT16X16。具體程序略,讀者如需要可來(lái)函索取。

  結(jié)語(yǔ)

  本文在介紹液晶顯示模塊與單片機(jī)接口的同時(shí),采用了新穎的改造方案以解決應(yīng)用中的問(wèn)題。由于節(jié)省了單片機(jī)口線,使系統(tǒng)資源得到了充分利用。可顯示漢字、字符和圖形,使人機(jī)界面更為美觀、易讀。其它如8×8西文點(diǎn)陣字庫(kù)及圖形的建立和顯示可參照上面介紹的方法來(lái)編寫程序。由于各種液晶顯示模塊的接口基本相同,因此本文所討論的內(nèi)容也適用于其它型號(hào)的液晶顯示模塊。液晶顯示較其它顯示終端有許多優(yōu)點(diǎn):功耗低且字型美觀、可用集成電池供電,便于攜帶等。相信它將得到越來(lái)越廣泛的使用。

  • 上一篇: 液晶顯示控制器T6963C與單片機(jī)的接口及編程
  • 下一篇: 多功能串行LED顯示驅(qū)動(dòng)器MAX7219
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1