基于單片機(jī)硬件字庫設(shè)計(jì)_第1頁
基于單片機(jī)硬件字庫設(shè)計(jì)_第2頁
基于單片機(jī)硬件字庫設(shè)計(jì)_第3頁
基于單片機(jī)硬件字庫設(shè)計(jì)_第4頁
基于單片機(jī)硬件字庫設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 陜西理工學(xué)院課程設(shè)計(jì)基于單片機(jī)的硬件字庫設(shè)計(jì)作者:湯美玲陜西理工學(xué)院(物電學(xué)院)電子信息科學(xué)與技術(shù)專業(yè)2008級 陜西 漢中 723000指導(dǎo)教師:劉東摘要:隨著液晶顯示技術(shù)的發(fā)展和應(yīng)用,越來越多的開發(fā)人員希望在自己開發(fā)的儀器設(shè)備中使用液晶屏幕來顯示漢字,通常的漢字顯示方式是先根據(jù)所需要的漢字提取漢字點(diǎn)陣如16x16 點(diǎn)陣,將點(diǎn)陣文件存入ROM 形成新的漢字編碼,而在使用時(shí)則需要先根據(jù)新的漢字編碼組成語句再由MCU 根據(jù)新編碼提取相應(yīng)的點(diǎn)陣進(jìn)行漢字顯示,在這種顯示方式中如果使用的漢字?jǐn)?shù)量較大或語句較多時(shí),利用漢字的新編碼組成語句將是一件繁瑣而枯燥的工作。如果有新的漢字加入那么漢字庫的維護(hù)也成

2、問題,而我們?nèi)粘I畹囊恍┦殖止ぞ呱先缡謾C(jī)快譯通等等它們可以任意輸入漢字不僅靈活性大而且檢索速度快,這其中的主要原因就是在這些設(shè)備中固化了硬件漢字庫。本設(shè)計(jì)就是通過keil軟件編寫c語言程序并生成HEX文件聯(lián)合proteus電路設(shè)計(jì)仿真軟件制作一個(gè)簡單的硬件字庫系統(tǒng)。關(guān)鍵詞:c語言, 單片機(jī),硬件,字庫一.任務(wù) 設(shè)計(jì)并制作一個(gè)基于單片機(jī)的硬件字庫系統(tǒng).二.要求 1.基本要求 1.1可顯示任何漢字字符. 1.2 可實(shí)現(xiàn)花樣顯示. 2.發(fā)揮部分 2.1 不需要使用專門的字模軟件提取固定漢字字模. 2.2 可人性化設(shè)置.三.說明3.1 時(shí)間要求:11月12日到11月24日.3.2 完成實(shí)際電路,總結(jié)

3、報(bào)告.3.3 本例將262KB的16x16點(diǎn)陣中文字庫文件HZK16拆分為兩個(gè)128KB文件,分別保存到兩片24C1024中,多余6KB被刪除,運(yùn)行時(shí),對于任意輸入的漢字或中文標(biāo)題符號,程序會(huì)直接從24C1024所保存的字庫中提取點(diǎn)陣并轉(zhuǎn)換為液晶格式,在12864液晶屏上顯示。四. 硬件字庫系統(tǒng)設(shè)計(jì)的基本原理及分析本系統(tǒng)在兩塊24C1024芯片中內(nèi)置了16x16點(diǎn)陣漢字庫文件HZK16,該文件共262KB(兩塊芯片各保存128KB),多余的部分被刪除。本例運(yùn)行時(shí),程序根據(jù)漢字內(nèi)碼得到區(qū)位碼,再根據(jù)區(qū)位碼從硬件字庫中提取漢字點(diǎn)陣,所提取的字庫點(diǎn)陣進(jìn)一步轉(zhuǎn)換為本例液晶屏漢字顯示所需要的格式后即可顯

4、示在液晶屏上。本例顯示任何漢字時(shí),不再需要使用專門的字模軟件提取固定漢字字模。本系統(tǒng)框圖如下圖4.1圖: 單片機(jī)最小系統(tǒng)外圍電路89C51單片驅(qū)動(dòng)電路LCD漢字字庫顯示 圖4.1 硬件字庫系統(tǒng)框圖五.電路的功能單元設(shè)計(jì)1.硬件電路的設(shè)計(jì)該硬件字庫系統(tǒng)是以單片機(jī)AT89C51為核心來完成的,在硬件電路方面,電路中采用P0口、P2口的前六個(gè)管腳與LCD液晶顯示屏連接,這是由于P0口輸出驅(qū)動(dòng)電路工作處于開漏狀態(tài),它的驅(qū)動(dòng)能力強(qiáng)。因?yàn)樵诤蟨roteus中找不到更大容量的存儲(chǔ)芯片,本系統(tǒng)使用了兩片具有128KB空間的24C1024保存漢字庫的前半部分與后半部分,拆分字庫文件時(shí),也可以自己編寫TC程序完成

5、完成,也可以直接使用本書案例壓縮包中提供的文件拆分軟件。圖5.1為LCD的管腳圖。圖5.1 LCD管腳圖AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)(FPEROMFalshProgrammable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的A

6、T89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。電路構(gòu)成:(1)單片機(jī)最小系統(tǒng)電路。(2)LCD液晶顯示屏驅(qū)動(dòng)電路。(3)24C1024電路部分。圖5.1為AT89C51的管腳圖。圖5.1 AT89C51管腳圖2.軟件程序的設(shè)計(jì)本系統(tǒng)程序中讀取

7、各漢字內(nèi)碼后,將2B漢字內(nèi)碼分別減去0xa0得到區(qū)位碼,再根據(jù)區(qū)位碼求出漢字點(diǎn)陣在字庫中的位置。由于漢字存放在94行94列的區(qū)域中,每個(gè)漢字點(diǎn)陣占32B,根據(jù)漢字的區(qū)位碼,也就是漢字在字庫表中的行列位置,可得出漢字在字庫中的點(diǎn)陣字節(jié)的起始位置,公式為(94x(SectionCode-1)+(PlaceCode-1))x32L,其中SectionCode與PlaceCode分別為區(qū)位碼和位碼。由于字庫中各漢字的32B點(diǎn)陣是逐行取模的,每行16個(gè)像素,即2B,從上到下共32B,而本例液晶顯示漢字時(shí),需要的漢字點(diǎn)陣取模順序是從漢字上半部分開始,從左到右垂直取得16B,且各字節(jié)是高位在下,低位在上,然

8、后在從左到右取得漢字下半部分的16B,因此,本例還需要將字庫點(diǎn)陣格式轉(zhuǎn)換為液晶點(diǎn)陣格式。六測試報(bào)告在閱讀并調(diào)試本例時(shí),可以將其中的液晶屏改為16x16點(diǎn)陣的LCD點(diǎn)陣屏,仍使用本例中的硬件字庫,實(shí)現(xiàn)任意漢字的滾動(dòng)顯示。另外,本例僅實(shí)現(xiàn)了全角漢字和全角英文及數(shù)字字符的顯示,可進(jìn)一步改進(jìn),使之能實(shí)現(xiàn)全角與半角文字與字符的混合顯示。七.總結(jié) 本設(shè)計(jì)是以單片機(jī)80C51芯片為核心部件,實(shí)現(xiàn)了硬件字庫在液晶屏上顯示的功能。通過這次設(shè)計(jì),我熟練掌握了Keil C51集成開發(fā)環(huán)境和Proteus7仿真環(huán)境的使用方法,加深了對單片機(jī)常用指令的理解與運(yùn)用,同時(shí)進(jìn)一步掌握c語言的熟練使用。在設(shè)計(jì)過程中,我得到了一

9、次用專業(yè)知識(shí)、專業(yè)技能分析和解決問題、全面系統(tǒng)的鍛煉的機(jī)會(huì),對于同一個(gè)設(shè)計(jì),自己經(jīng)過思考,做出多種方案,并選擇其中適用的,合理的,方案進(jìn)行設(shè)計(jì),也使我在需求分析及總體分析設(shè)計(jì)、單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,和常用編程設(shè)計(jì)思路技巧(特別是c語言)的掌握方面都能向前邁了一大步。 同時(shí)在老師的悉心指導(dǎo)和嚴(yán)格要求下,極大地提高了電路設(shè)計(jì)與程序分析設(shè)計(jì)的能力,同時(shí)也感受到理論與實(shí)踐之間的差距,使我們對單片機(jī)系統(tǒng)的應(yīng)用有了更加深刻的認(rèn)識(shí).參考文獻(xiàn)1 梅麗鳳,王艷秋,等.單片機(jī)原理及接口技術(shù)M 清華大學(xué)出版社,2004.2 朱定華,劉玉.單片機(jī)原理及應(yīng)用技術(shù)學(xué)習(xí)輔導(dǎo)M 電子工業(yè)出版社,2001.

10、3 薛鈞義.MCS-51/96系列單片微型機(jī)算計(jì)及應(yīng)用M 西安交通大學(xué)出版社,1998.4 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M 北京航空航天大學(xué)出版社,2001. 附錄1:硬件總圖,軟件仿真圖附錄2:程序清單附錄1:硬件總圖第 4 頁 共 14 頁 陜西理工學(xué)院課程設(shè)計(jì)軟件仿真圖附錄2:程序清單/-/說明:本例將262KB的16x16點(diǎn)陣中文字庫文件HZK16拆分為兩個(gè)128KB文件,分別保存到兩/ 片24C1024中,多余6KB被刪除,運(yùn)行時(shí),對于任意輸入的漢字或中文標(biāo)題符號,程序會(huì)/ 直接從24C1024所保存的字庫中提取點(diǎn)陣并轉(zhuǎn)換為液晶格式,在12864液晶屏上顯示。/-#in

11、clude<reg51.h>#include <intrins.h>#include<string.h>#define uchar unsigned char #define uint unsigned int#define ulong unsigned long/12864LCD相關(guān)函數(shù)void LCD_Initialize();void Display_A_Char(uchar,uchar,uchar *);void Display_A_WORD_String(uchar,uchar,uchar,uchar *);void Display_A_Image

12、(uchar,uchar,uchar,uchar,uchar *);/I2C相關(guān)函數(shù)void IIC_24C1024_Init();uchar RecString (uchar Slave,ulong Mem_address,uchar *Buffer,uchar N);/從漢字庫所取得的一個(gè)漢字的點(diǎn)陣存放區(qū)uchar Word_Dot_Matrix32;/轉(zhuǎn)換為LCD顯示格式的漢字點(diǎn)陣存放區(qū)uchar LCD_Dot_Matrix32;/-/讀取漢字點(diǎn)陣并將字庫點(diǎn)陣格式轉(zhuǎn)換為液晶屏漢字取模格式/-void Read_HZ_dot_Matrix_AND_Convert_TO_LCD_Fmt(u

13、char c);ulong Offset; /漢字在點(diǎn)陣庫中的偏移位置uchar SectionCode , PlaceCode; /漢字區(qū)位碼與位碼uchar AT24C1024_A1; /標(biāo)識(shí)24C1024芯片編號0,1uchar i,j,LCD_Byte,block; /格式轉(zhuǎn)換變量uchar Idx4=0,1,16,17; /四個(gè)板塊轉(zhuǎn)換的起始字節(jié)索引SectionCode=c0-0xa0; /取得漢字區(qū)位碼PlaceCode=c1-0xa0;Offset=(94*(SectionCode-1)+(PlaceCode-1)*32L; /計(jì)算偏移/取得偏移地址Offset的第18位,AT

14、24C1024_A1為0時(shí)表示/該漢字點(diǎn)陣處在字庫前半段,即處于第一片24C1024/否則表示該漢字點(diǎn)陣在字庫后半段,即在第二片24C1024中AT24C1024_A1=Offset>>17;Offset&= 0x0001FFFF;/從Offset開始讀取該漢字32B的點(diǎn)陣數(shù)據(jù)if(AT24C1024_A1=0)RecString (0xa0, Offset,Word_Dot_Matrix,32);elseRecString (0xa4, Offset,Word_Dot_Matrix,32);/將16x16 點(diǎn)陣分為4各8x8點(diǎn)陣區(qū)域進(jìn)行轉(zhuǎn)換(漢字上半部分與下半部分各自占兩

15、個(gè)區(qū)域)for(block=0;block<4;block+) for(i=0;i<8;i+) LCD_Byte=0x00; for(j=0;i<8;i+) if(Word_Dot_MatrixIdxblock+2*j&(0x80>>i) !=0x00) LCD_Byte |=(uchar)0x01<<j; LCD_Dot_Matrixi+block*8=LCD_Byte; /-/主程序/-void main() /主程序 uchar i,j; /下面可以任意輸入文字,注意標(biāo)點(diǎn)符號使用中文全角方式輸入char code Poem15="

16、;白日依山盡,","黃河入海流.","欲窮千里目,","更上一層樓."LCD_Initialize(); /初始化LCDIIC_24C1024_Init(); /IIC初始化 /共顯示4行,分別顯示在0,2,4,6頁,每行占2頁 for(i=0;i<4;i+) /顯示每行文字 for(j=0;i<strlen(Poemi);i+=2) /從每行第j個(gè)字節(jié),每次跨度為2B(一個(gè)漢字)取得漢字點(diǎn)陣并轉(zhuǎn)換為本例液晶格式 Read_HZ_dot_Matrix_AND_Convert_TO_LCD_Fmt(Poemi+j)

17、; /從第i頁開始,左邊距19,每次顯示一個(gè)漢字Display_A_WORD_String(i*2,j/2*16+19,1, LCD_Dot_Matrix);/-24C1024.c-/24C1024 IIC讀/寫程序/-#include<reg51.h>#include <intrins.h>#define uchar unsigned char #define uint unsigned int#define ulong unsigned long#define Delay4us()_nop_();_nop_(); _nop_();_nop_();sbit SCL=P

18、32; /串行時(shí)鐘sbit SDA=P33; /串行數(shù)據(jù)/-/起始位/-void Start() SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;/-/停止位/-void Stop() SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;/-/IIC初始化/-void IIC_24C1024_Init()SCL=0;Stop();/-/發(fā)送應(yīng)答信號/-void ACK() SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;/-/發(fā)送非應(yīng)答信號/-void NO_ACK() SDA=1;SCL

19、=1;Delay4us();SCL=0;SDA=0;/-/讀取1字節(jié)/-uchar RecByte() uchar i,rd;rd=0x00;SDA=1; for(i=0;i<8;i+) SCL=1; rd<<=1; rd|=SDA; Delay4us(); SCL=0; Delay4us(); SCL=0; Delay4us(); return rd;/-/發(fā)送1字節(jié)/-uchar SendByte(uchar wd) uchar i; bit ACK0; for(i=0;i<8;i+) /循環(huán)移入8位 SDA=(bit)(wd&0x80);_nop_();_nop_(); SCL=1; Delay4us(); SCL=0; wd<<=1; Delay4us(); SDA=1; /準(zhǔn)備讀取應(yīng)答 SCL=1; Delay4us();ACK0=!SDA; /0表示無應(yīng)答SCL=0; Delay4us(); return ACK0; /返回應(yīng)答/-/從24C1024接收多字節(jié)/-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論