999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

藍(lán)牙通信中的漢字編碼研究與字符點(diǎn)陣顯示

2017-02-09 03:16:44鄧高旭鄧琛王一鳴
關(guān)鍵詞:單片機(jī)

鄧高旭,鄧琛,王一鳴

(上海工程技術(shù)大學(xué) 電子與電氣工程學(xué)院,上海201620)

?

藍(lán)牙通信中的漢字編碼研究與字符點(diǎn)陣顯示

鄧高旭,鄧琛,王一鳴

(上海工程技術(shù)大學(xué) 電子與電氣工程學(xué)院,上海201620)

單片機(jī)的I/O端口控制特性主要是通過對二進(jìn)制碼的控制來實(shí)現(xiàn)對I/O端口的電平高低特性的八字節(jié)的輸入和輸出,傳輸?shù)臄?shù)據(jù)通常為單字節(jié)的數(shù)字和英文字符。本文基于Android智能手機(jī)的藍(lán)牙控制APP與單片機(jī)藍(lán)牙模塊的通信,主要針對由兩個(gè)字節(jié)組成的漢字的單發(fā)、多發(fā)和通信編碼問題進(jìn)行了研究,實(shí)現(xiàn)了漢字在點(diǎn)陣上的顯示。

藍(lán)牙4.0通信;Android APP;MCU;漢字編碼;點(diǎn)陣

引 言

隨著視頻控制領(lǐng)域擴(kuò)展、圖像處理的發(fā)展、光纖技術(shù)的應(yīng)用[1],已經(jīng)研發(fā)出了全彩顯示屏,尤其應(yīng)用于體育場館、會(huì)展中心等大型場所。通常要修改這些顯示的內(nèi)容,必須在上位機(jī)進(jìn)行修改,為了方便文字的修改和操作,實(shí)現(xiàn)動(dòng)態(tài)顯示漢字,本文在實(shí)現(xiàn)算法上對漢字的編碼進(jìn)行研究,并設(shè)計(jì)手機(jī)APP通過藍(lán)牙顯示屏進(jìn)行操作。

1 藍(lán)牙通信協(xié)議

藍(lán)牙采用串行通信協(xié)議,單片機(jī)的通信方式也是串口數(shù)據(jù)傳輸,所以可以很好地將藍(lán)牙模塊應(yīng)用到單片機(jī)上,串行通信是基于幀的協(xié)議,串行口發(fā)送信號時(shí),信號是一幀一幀發(fā)送的,通信鏈路[2]中所有的內(nèi)容都將包含在這樣的一個(gè)幀中,信號幀的格式如下所示:

幀 首設(shè)備地址幀類型功能代碼數(shù)據(jù)長度數(shù)據(jù)校驗(yàn)碼幀尾1Byte1Byte1Byte1Byte1Byte不確定1Byte1Byte

幀中包含了多個(gè)信號數(shù)據(jù)部分,包括幀首、設(shè)備地址、幀類型、功能代碼、數(shù)據(jù)長度、數(shù)據(jù)校驗(yàn)碼以及幀尾,串口通信的幀數(shù)據(jù)傳遞保證了通信的可靠和安全。

藍(lán)牙串行通信的軟件實(shí)現(xiàn)如下:

void init(); //藍(lán)牙串口初始化函數(shù)

void send(unsigned char a); //單字節(jié)發(fā)送函數(shù)

void ctrl(); //接收處理函數(shù)[3]

2 Android APP控制點(diǎn)陣漢字顯示的軟件框圖

Android APP控制點(diǎn)陣漢字顯示的軟件框圖如圖1所示。

圖1 軟件框圖

3 漢字編碼

由于CPU和MCU都是以二進(jìn)制的形式進(jìn)行運(yùn)算和處理的,對于數(shù)字、英文字母和一些特殊字符都有相應(yīng)的ASCII碼對應(yīng),這樣使得程序員可以和計(jì)算機(jī)進(jìn)行方便的交流,使得機(jī)器語言和人類語言聯(lián)系了起來,而且由于計(jì)算機(jī)在中國普及較晚,漢字復(fù)雜且數(shù)量多,不可能直接進(jìn)行ASCII碼編碼[4],GB2312碼編碼方式很好地解決了漢字與計(jì)算機(jī)語言的轉(zhuǎn)化。GB2312碼是一種以矩陣的形式從字母A到Z對中國常用的漢字進(jìn)行了排序,行和列分別代表漢字GB2312碼的高字節(jié)和低字節(jié),GB2312碼也稱為漢字的機(jī)內(nèi)碼,GB2312碼的編碼表B部分如表1所列。

表1 GB2312編碼表B部分

通過PC串口助手,將手機(jī)APP發(fā)送端發(fā)送的漢字的轉(zhuǎn)化碼以十六進(jìn)制形式顯示了出來,比如“啊”字,顯示的十六進(jìn)制為0xB0、0xA1,與GB2312碼編碼表中漢字編碼矩陣的“啊”字的編碼0xB0A1的高8位字節(jié)和低8位字節(jié)對應(yīng)。

Android手機(jī)的APP通過藍(lán)牙和單片機(jī)的藍(lán)牙模塊[5]進(jìn)行通信,方式均為串口通信,通信協(xié)議主要通過軟件編程來搭建。

對于單片機(jī)和計(jì)算機(jī),要使用這些漢字的編碼,該漢字的矩陣碼就構(gòu)成了一個(gè)漢字字庫,并將其封裝在芯片中,使用者只需要在字庫里調(diào)用該漢字字庫芯片的對應(yīng)編碼即可。

4 單片機(jī)和字庫芯片通信的實(shí)現(xiàn)

字庫芯片采用的是GT21L系列芯片,字庫芯片讀取函數(shù)會(huì)將傳進(jìn)去的兩個(gè)字節(jié)逐個(gè)讀取并尋找漢字所在的矩陣的位置[6],然后返回漢字字模的首地址,通過字模讀取函數(shù)將字模逐個(gè)讀取并存放到字模數(shù)組中,單片機(jī)對字庫芯片讀取的軟件實(shí)現(xiàn)為:

(1) 向GT21L系列芯片送一個(gè)字節(jié)數(shù)據(jù)

void Send_Byte(unsigned char out){

unsigned char i=0;

for (i = 0; i < 8; i++){

if ((out & 0x80) == 0x80)

SPID_H();

else

SPID_L();

SPICLK_L();

out = (out << 1);

SPICLK_H();

}

}

(2) 從GT21L系列芯片得到一個(gè)字節(jié)數(shù)據(jù)

unsigned char Get_Byte(){

unsigned char i = 0, in = 0, temp = 0;

for (i = 0; i < 8; i++){

SPICLK_L();

in = (in << 1);

SPICLK_H();

temp = SPID_DO;

if (temp == 1)

in = in | 0x01;

}

return in;

}

(3) 快速從GT21L系列芯片讀出所要的漢字點(diǎn)陣數(shù)據(jù)存于數(shù)組upperfont_32void HighSpeed_Read_Cont(unsigned long Dst,unsigned long no_bytes){

unsigned long i = 0;

unsigned long j = 0;

SPICS_L();

Send_Byte(0x0B);

Send_Byte(((Dst & 0xFFFFFF) >> 16));

Send_Byte(((Dst & 0xFFFF) >> 8));

Send_Byte(Dst & 0xFF);

Send_Byte(0xFF);

for (i = 0; i < no_bytes; i++){

upperfont_32[i] = Get_Byte();

}

SPICS_H();

for(j = 0; j < no_bytes; j++){

rev_font[j] = reverse(upperfont_32[j]);

}

}

這時(shí)數(shù)組里存放的數(shù)據(jù)就是根據(jù)一個(gè)漢字的GB2312碼所讀取的字庫芯片里的漢字點(diǎn)陣字模編碼。

5 Android APP界面的實(shí)現(xiàn)

圖2 藍(lán)牙APP用戶界面圖

Android 是基于Linux內(nèi)核的軟件平臺操作系統(tǒng),包括操作系統(tǒng)、用戶界面和應(yīng)用程序,用戶界面主要由控件實(shí)現(xiàn),也可以直接在xml腳本文件中實(shí)現(xiàn);應(yīng)用程序主要由Java編寫,開發(fā)環(huán)境為eclipse,主要實(shí)現(xiàn)的功能有藍(lán)牙的通信連接;APP用戶界面,主要使用包編程方式[7],藍(lán)牙的通信主要使用到了Android BluetoothDevice 包和BluetoothAdapter 包,如圖2所示。界面包括顯示所有被搜索到的藍(lán)牙用戶的列表界面和控制功能界面,在藍(lán)牙配對后由用戶列表界面轉(zhuǎn)入到功能界面,與單片機(jī)藍(lán)牙模塊通信的關(guān)鍵程序?yàn)?

//獲取本機(jī)的藍(lán)牙適配器

mBtAdapter = BluetoothAdapter.getDefaultAdapter();

//獲取當(dāng)前所打開的藍(lán)牙設(shè)備

Set pairedDevices = mBtAdapter.getBondedDevices();

//如果得到藍(lán)牙設(shè)備的連接狀態(tài)時(shí),啟動(dòng)藍(lán)牙的數(shù)據(jù)發(fā)送和接

//收服務(wù)if (mChatService.getState() == BluetoothChatService.STATE_NONE)

ChatService.start();

//初始化內(nèi)容發(fā)送按鈕

mSendButton = (Button) findViewById(R.id.button_send);

mSendButton.setOnClickListener(new OnClickListener(){

public void onClick(View v) {

//在內(nèi)容編輯控件里編輯發(fā)送內(nèi)容

TextView view = (TextView) findViewById(R.id.edit_text_out);

String message = view.getText().toString();

sendMessage(message);

}

};

6 單片機(jī)多字節(jié)接收問題

Android手機(jī)APP使用的是藍(lán)牙串口,可以直接搜索單片機(jī)的藍(lán)牙并進(jìn)行配對,配對后由APP發(fā)送漢字GB2312碼到單片機(jī),單片機(jī)會(huì)連續(xù)接收兩個(gè)字節(jié)并保存到數(shù)組里,由于單片機(jī)的串口協(xié)議是單字節(jié)接收[8]的,所以直接利用串口協(xié)議不能實(shí)現(xiàn)兩個(gè)字節(jié)的接收,這時(shí)就需要用到單片機(jī)的串口中斷,手機(jī)APP每發(fā)送一個(gè)漢字就觸發(fā)一次單片機(jī)串口中斷,通過對串口控制寄存器和配置寄存器進(jìn)行配置,并設(shè)置串口中斷標(biāo)志位,因此單片機(jī)只有接收到一個(gè)漢字后才會(huì)觸發(fā)一次串口中斷,然后先將一個(gè)字節(jié)的數(shù)據(jù)存放在緩存寄存器SBUF里,只要中斷標(biāo)志位沒有改變,就默認(rèn)是一個(gè)漢字字節(jié)的接收,然后連續(xù)分兩次存放在數(shù)組里。單片機(jī)的串口中斷讀取兩個(gè)字節(jié)的軟件實(shí)現(xiàn)函數(shù)為:

void read_mess(void) interrupt 4{

if(RI==1){

uchar tmp;

tmp =SBUF;

a[flag]=tmp;

if(flag==1){

flag=0;

}

flag++;

RI=0;

}

}

16×16的點(diǎn)陣正好只能一次顯示一個(gè)漢字,所以在多漢字發(fā)送時(shí),單片機(jī)只能對第一個(gè)漢字進(jìn)行處理,其他漢字都會(huì)被忽略。如果想要顯示多漢字,則必須將多個(gè)16×16點(diǎn)陣進(jìn)行串聯(lián),然后只要改變點(diǎn)陣的列控制程序即可。

7 16×16點(diǎn)陣漢字的連續(xù)顯示

16×16點(diǎn)陣是由4個(gè)8×8的點(diǎn)陣組成[9],分別由芯片控制行和列,可以完全與字庫芯片中讀取的十六進(jìn)制的字模相對應(yīng),字模的一位對應(yīng)點(diǎn)陣的每一個(gè)LED,先發(fā)送行信號,然后發(fā)送列信號,再送第二行的字模和選通信號[10],這樣循環(huán)掃描8次,行控制和列控制的點(diǎn)陣就會(huì)顯示漢字。只要控制循環(huán)的次數(shù)就可以使點(diǎn)陣的顯示不會(huì)有視覺暫留的效果,直到接收到下一個(gè)漢字,數(shù)組中的漢字字模[11]才會(huì)發(fā)生變化,點(diǎn)陣才會(huì)顯示下一個(gè)漢字。單片機(jī)對點(diǎn)陣行控制和列控制的軟件實(shí)現(xiàn)為:

void SendSer(unsigned char dat1,unsigned char dat2){

//列控制函數(shù)

SendByte(dat1);

SendByte(dat2);

LATCH=1;

_nop_();

LATCH=0;

}

void SendSeg(unsigned int a){

//行控制函數(shù)

SendByte1(a>>8);

SendByte1(a);

LATCH_B=1;

_nop_();

LATCH_B=0;

}

結(jié) 語

[1] 潘矜矜.一種LED點(diǎn)陣漢字顯示屏的制作[J].福建電腦,2006(3).

Chinese Character Coding and Dot Matrix Display of Bluetooth Communication

Deng Gaoxu,Deng Chen,Wang Yiming

(School of Electronic and Electrical Engineering,Shanghai University of Engineering Science,Shanghai 201620,China)

The I/O port control features of the MCU are realized through the control of the binary code to realize the input and output of the I/O ports,the data transfered is usually a single-byte and english characters.In the paper,based on the Android smartphone bluetooth control APP and the single-chip microcomputer communication,the problems that the single and multiple and communication coding of the characters are researched which are consist of two byters. The display of Chinese characters on the dot matrix is realized.

Bluetooth4.0 communication;Android APP;MCU;Chinese code;dot matrix

TP391.9

A

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計(jì)
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個(gè)全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計(jì)
主站蜘蛛池模板: 国产午夜看片| 国产成人高清在线精品| 日韩在线播放中文字幕| 日韩激情成人| 国产精品对白刺激| 国产一区成人| 91无码网站| 国产精品高清国产三级囯产AV| 婷婷丁香在线观看| 日韩毛片免费观看| 欧美伊人色综合久久天天| 久久香蕉国产线看观看精品蕉| 国产成人禁片在线观看| 亚洲国产亚洲综合在线尤物| www精品久久| 亚洲人成色77777在线观看| 无码免费视频| 一级毛片免费的| 人妻中文久热无码丝袜| 午夜无码一区二区三区在线app| 原味小视频在线www国产| 久久国产V一级毛多内射| 国产美女91视频| 久久久久夜色精品波多野结衣| 在线精品亚洲国产| 在线免费观看AV| 国产香蕉在线| 国产精品3p视频| 直接黄91麻豆网站| 九九视频在线免费观看| 黄色网页在线观看| 91久久偷偷做嫩草影院精品| www亚洲天堂| 色老头综合网| 国产成人福利在线视老湿机| www.狠狠| 国产 在线视频无码| 欧美成人午夜视频免看| 在线不卡免费视频| 91无码视频在线观看| 在线欧美日韩国产| 亚洲自拍另类| 国产99精品视频| 国产亚洲精品自在久久不卡 | 亚洲第一色视频| 亚洲日韩欧美在线观看| 97综合久久| 欧美日韩在线亚洲国产人| 综合色婷婷| 精品福利视频导航| 老司机精品一区在线视频| 亚洲AV人人澡人人双人| 免费女人18毛片a级毛片视频| 日本爱爱精品一区二区| 国产原创自拍不卡第一页| 成人免费一级片| 日韩成人高清无码| 国产色网站| 亚洲人成网7777777国产| 国产高清无码第一十页在线观看| 久久久精品无码一二三区| 九色综合伊人久久富二代| 欧美另类精品一区二区三区| 婷婷亚洲综合五月天在线| 日本在线亚洲| 男女男精品视频| 97国产精品视频自在拍| 亚洲无限乱码一二三四区| 国产精品露脸视频| 亚洲欧洲日韩综合色天使| 香蕉伊思人视频| 91亚洲精选| 国产最爽的乱婬视频国语对白| 国产香蕉一区二区在线网站| 欧美日韩第二页| 幺女国产一级毛片| 无码久看视频| 国产极品美女在线观看| 高清无码一本到东京热| 欧美人与动牲交a欧美精品| 亚卅精品无码久久毛片乌克兰| 亚洲天堂777|