串口屏之------Usart GPU 使用手冊

Usart GPU 使用手冊html

文檔更新日期程序員

更新內容數據庫

2014-9-10編程

C編程sprintf問題app

2014-8-8electron

版本程序1.0,升級了自定義波特率部分編輯器

------函數

原始版本測試

 

 

 

 

 

 

 

 

 

第一部分:基礎應用字體

 

概述:

Usart 是串口的意思,GPU 是圖形處理器的意思,產品的含義是作一個單片機使用的專用圖形處理器,或者稱之爲串口液晶顯示模塊。

1、 接線

開箱後,能夠將串口輸出的4根引腳焊上排插,使用杜邦線將串口接到USB轉TTL線上,便可接到電腦USB口上上電,屏幕即會顯示第一屏的Hello界面;

說明下:照片中是我調試用的,所以增長了RESET按鈕和運行程序刷機切換的BOOT自鎖開關,正常使用和產品中不帶這兩個東東;

主板中使用XC6206接到5V的,6206是一個低壓差穩壓器,輸出3.3V,160mV的低壓差,讓板子在3.46V便可正常供電,實際使用中,電壓低到3V,6206也能夠正常輸出電壓可是不穩壓;因爲STM32 最低2V便可工做,所以本板子能夠直接接單節鋰電池便可工做;

2、 上電,觀看演示

這是上電後的Hello界面,俗稱歡迎界面,此界面屬於第一個批界面,能夠有上位機程序在PC下自由設計,用戶能夠在這個界面上設計本身產品的名字和公司的圖標;

開機界面十秒種,若是收不到串口命令,就會進入演示狀態。正常的量產以後,單片機須要在上電十秒內給串口液晶屏發送指令,只要一發送指令,就自動的進入串口命令狀態。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、 接GpuMaker

將USB轉TTL接入計算機,注意因爲程序的緣由串口號不能超過10,即COM1~COM9方可以使用;

 

從:

http://pan.baidu.com/share/link?shareid=1322038799&uk=3204894695

 下載GpuMaker程序,程序是一個ZIP包,綠色軟件,解壓到硬盤中便可使用;

若是您有多個使用串口屏的項目,請把此軟件解壓多份,每份一個項目;

 

運行解開目錄中的GpuMaker.exe,系統進入:

選擇,左上角的串口號,點擊「打開按鈕」,串口鏈接成功;此時點擊「發送指令」,液晶屏便可顯示錶示鏈接正常;

 

4、 命令表

命令

說明

示例

CLS(c);

c顏色清屏

CLS(0);

SCC(c,n);

自定義c顏色,顏色值n由上位機提供計算

SCC(15,65535);

SBC(c);

設置背景色C,顯示漢字等時無點陣時填的顏色

SBC(1);

PS(x,y,c);

(x,y)的地方畫一個顏色c的點

PS(100,100,1);

PL(x1,y1,x2,y2,c);

(x1,y1)用顏色c畫一條直線到(x2,y2)

PL(0,0,100,0,2);

BOX(x1,y1,x2,y2,c);

用顏色c畫一個方框,左上角(x1,y1),右下角(x2,y2)

BOX(0,0,100,100,2);

BOXF(x1,y1,x2,y2,c);

用顏色c畫一個實心方框,左上角(x1,y1),右下角(x2,y2)

BOXF(0,0,100,100,2);

PIC(x,y,n);

(x,y)處畫第n幅圖

PIC(0,0,1);

CIR(x,y,r,c);

(x,y)處用顏色c畫一個半徑r的園

CIR(100,100,50,1);

SPG(n);

顯示第n個批界面

SPG(1);

DS12(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行12點陣字

DS12(0,0,'顯示字符串',1);

DS16(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行16點陣字

DS16(0,0,'顯示字符串',1);

DS24(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行24點陣字

DS24(0,0,'顯示字符串',1);

DS32(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行32點陣字

DS32(0,0,'顯示字符串',1);

DS48(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行48點陣字

DS48(0,0,'顯示字符串',1);

DS64(x,y,'顯示內容字符串',c);

(x,y)處用顏色c顯示一行64點陣字

DS64(0,0,'顯示字符串',1);

DRn

設置屏幕顯示的方向;n0~3,分別對應屏的4個方向,可使用此調整橫豎屏顯示;另外此命令不清屏,所以能夠顯示在橫屏下顯示部分豎顯漢字。

DR0;   橫屏顯示

DR1;   豎屏顯示

DR2;   橫屏倒立

DR3;   豎屏倒立

BS12(x1,y1,x2,lw,'顯示內容',c);

(x1,y1)處,顯示12點陣字符串,在x2處自動折行,行間距lw,顏色c;

BS12(0,0,219,4,'顯示內容...不少字',c);

BS16(x1,y1,x2,lw,'顯示內容',c);

(x1,y1)處,顯示16點陣字符串,在x2處自動折行,行間距lw,顏色c;

BS16(0,0,219,4,'顯示內容...不少字',c);

INF;

傳回系統序列號等信息

INF;

           

 

5、 定義顏色

 

 

顏色是由RGB構成的,系統支持的64K色實際上是65536中顏色,使用16位二進制(2字節)組成,16位,分紅:R紅色5位;G綠色6位;B藍色5位,就是俗稱RGB565模式;常規的計算機顏色描述是由3字節組成,每字節一色,好比紅色描述爲:0xFF0000;綠色描述爲0x00FF00;而藍色描述爲0x0000FF

看不懂也不要緊,只須要進入GpuMaker,到「幫助與說明」找到:

點擊「顏色」就能夠出現:

 

選擇一個顏色:點擊肯定,系統就會顯示顏色的16進制值;點擊「轉換」

 

 

選中的顏色就可被計算出GPU的顏色值,如上例是13507;

您就可使用SCC(1,13507);命令將1號顏色設置成剛纔選擇的顏色;

 

 

 

 

6、 截取漢字點陣

系統支持十二、16點陣的全GB2312的字庫,含符號區;所以十二、16點陣無需使用軟件截取能夠直接使用,可是2四、3二、4八、64點陣須要使用GpuMaker進行點陣的截取轉換;

啓動GpuMaker 進入:「字體點陣」

 

能夠看到4種字體分全角漢字和半角字符共8類,咱們以32點陣漢字爲例講述使用方法:

 

第一步:點擊點陣序號3後面的欄目,進入32點陣漢字的編輯狀態:

 

此時,字體編輯區可選;32點陣那一行後面的狀態變爲「編輯中」;

 

第二步:選擇字模的屬性。

點擊「字體」按鈕選擇相應的字體,點擊「測試位置」,右邊的顯示區就能夠顯示漢字的點陣:

 

在測試漢字選擇上,咱們通常選擇「薄、餐」等複雜漢字,以避免出界;

若是漢字較小,能夠增大圖中「大小:」後面34的值,漢字就會放大,反之縮小;

若是漢字偏向一邊,可使用 上下左右 按鈕進行調整,使漢字儘量大的填滿方框;

將須要顯示的漢字放到「漢字及字符」輸入框中,無需查重,系統會自動查重,能夠直接輸入須要顯示的每句話;

調整完成以後;點擊「設置」按鈕,將設置信息存好;

依次設置完別的字體;當設置半角字體的時候,須要注意:

一、半角能夠經過「大小:」標籤後的2個參數設置橫寬比,這點不一樣於漢字,漢字只認後一個參數;測試的字符通常使用W等超寬字符;

二、選擇半角字體的時候,若是要顯示所有字母,建議找等寬字體,不然很難調比如例;

 

所需的字體能夠百度下字體資源網站獲得;

 

第三步:生產點陣;

 

點擊「生產全部抽取式漢字數據」,系統就會將全部漢字循環一邊,生成數據;

 

第四步:上傳數據到GPU串口液晶屏

回到串口命令界面,使用USB-TTL串口線接上GPU模塊,而後點擊「鏈接」,再點擊「上傳24~64點陣字庫」;如圖,系統將字庫上傳到GPU模塊,完成界面如上圖;

 

而後發送命令:

CLS(0);

DS32(10,10,'串口液晶屏',1);

發送完成以後界面:

 

此時液晶屏顯示:

 

7、 自定義圖形

GpuMaker目錄以下:

進入pic目錄,選擇縮略圖顯示:

 

這樣很容易看出圖形對應的序號;

添一張圖進去:

 

 

使用圖形處理軟件,將圖縮到220*176點如下,若是是別的格式的圖,能夠用圖形處理軟件轉換下;

啓動 GpuMaker,進入:圖形處理頁面:

 

點擊「生產所有圖片的數據」按鈕,系統自動將pic目錄下的全部圖片處理好;

進入「串口命令」界面,連上串口,點擊「上傳圖形信息」按鈕,系統將圖片信息傳入GPU:

 

 

輸入命令:

CLS(0);

PIC(0,0,9);

 

液晶屏顯示:

 

8、 使用批界面

咱們使用的單片機,大多數都不能提供充足的內存,所以對於複雜一些的UI有時就得考慮內存方面的問題,所以,能不能像DOS下批處理同樣,將一羣複雜的UI界面語句組合起來,這就是批界面;

 

在這個界面,右邊就是批界面,系統容許有127個批界面,點擊右邊序號後面的格子,就能夠修改描述以及批界面的語句,點擊存入列表,就能夠將批界面語句存入數據庫;點擊「上傳頁面信息」就能夠將批界面語句傳入GPU中;

使用的時候,可使用串口傳入命令:SPG(批界面序號);便可顯示該界面,無需將複雜的UI語句放置在單片機內存,再用串口傳到GPU;

另外:序號爲1的批界面咱們稱之爲HELLO界面,即GPU上電後當即顯示的第一界面,所以此界面須要設計爲產品的名稱,公司的LOGO之類的,上電後,第一界面會顯示10秒中,在這10秒鐘內,主系統的單片機須要向GPU傳送第一條指令,不然GPU就會進入演示模式,挨個將批界面依次顯示,直到接收到串口指令;

 

技巧:

一、任何一個界面都分爲背景元素和前臺元素,背景元素是從界面創立起就一成不變的,所以很是適合放在批界面中;顯示界面的時候,先使用批界面顯示背景界面,再由串口指令刷新前臺數據顯示;

二、批界面中能夠不加CLS清屏指令,這樣可使用多個批界面組合成一個更復雜的UI界面,這種狀況下,某幾個批界面能夠成爲某個背景界面的前臺元素;好比:鋰電池充電界面,左側是充電數據,右側是充電進度數據,咱們可使用另一個批界面將右側換成電池的圖形,顯示電池容量;

三、第一個批頁面含有初始參數的設置,好比波特率的調整,詳見串口波特率調整一節;

9、 界面示例

 

 

以上界面使用:

CLS(15);

BOX(0,0,219,175,15);

BOX(1,1,218,174,0);

BOXF(2,2,217,17,3);

PL(2,18,218,18,0);

SBC(3);

DS12(60,4,'菜單演示界面',15);

SBC(15);

PIC(20,40,1);DS12(25,75,'電壓',0);

PIC(70,40,2);DS12(75,75,'電流',0);

PIC(120,40,3);DS12(125,75,'充電',0);

PIC(170,40,4);DS12(175,75,'輸入',0);

PIC(20,110,5);DS12(25,145,'輸出',0);

PIC(70,110,6);DS12(75,145,'測試',0);

PIC(120,110,7);DS12(125,145,'關閉',0);

PIC(170,110,8);DS12(175,145,'設置',0);

 

10、 接單片機

 

接法很是簡單,如圖接好便可;

TTL電平是0~5V的電平,所以TTL串口不存在5V和3.3V單片機電平轉換的問題,能夠直接接入使用;但不可直接與RS232的串口接入,由於RS232的串口電平標準是12V以上,直接接入會燒掉GPU上的單片機;

 

在程序驅動來講,全部的單片機程序對於發送串口指令無在意就三個要點:

一、初始化串口,因爲目前GPU只支持統一的115200的串口波特率,所以初始化得初始化成此波特率,其他的參數均爲默認;不熟悉的話,能夠按照串口助手默認參數定;

二、將一個BYTE發送到串口發送端;

三、判斷髮送標示等待發送結束,結束後繼續發送下一個字節;

所以,對於STM32來講可使用下面的語句:

 1 GpuSend("CLS(13);BOX(0,0,219,175,15);BOX(1,1,218,174,0);BOXF(2,2,217,17,3);PL(2,18,218,18,0);\r\n");
 2  
 3 void GpuSend(char * buf1)
 4 {  u8 i=0;
 5    while (1)
 6    {  if (buf1[i]!=0)
 7      {  USART_SendData(USART1, buf1[i]);  //發送一個byte到串口
 8         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}; //等待發送結束
 9         i++;
10      }
11      else return;
12    }

其餘單片機請參考單片機手冊自行書寫相應語句;通常來講單片機對串口編程的例子是不少的,能夠baidu下或直接參考開發板例程;

 

【C語言參考】:很多用戶都是從彙編語言轉到C語言的,對於C語言的字符串處理徹底沒有概念,有很多用戶都問:AD獲取的電壓值如何用串口屏顯示的問題,在這裏統一回答下:

要解決這個問題,要使用C語言的sprintf這個語句,具體語句的詳細內容能夠自行百度下,這裏僅提供簡單使用方法:

  1. sprintf 是須要  stdio.h  來聲明的,所以須要在程序開頭使用:

#include  "stdio.h"

   此函數大約須要3K左右的空間;

  1. 聲明一個存儲空間,用於存放須要顯示的字符串

char buf[100]; //要求命令串長度不超100字符

  1. 假設由AD取回並轉換成電壓的浮點數 vol

float vol; //vol 變量是浮點數

vol=1.253; //vol爲1.253V,可由AD採樣在此步賦值

  1. 產生送給gpu的命令字符串

sprintf(buf,"DS12(0,0,'電壓:%.3fV',1);\r\n",vol);

  1. 發送給gpu

GpuSend(buf;

 

 

【重要說明】:

一、因爲GPU系統容許接收命令組,所以串口傳入的名利必須以0x0d,0x0a結束(就是常說的回車換行,字符串中的\r\n),不發送這個,系統會一直等待下去,表現爲發送命令不起做用!

二、若是接不通,建議RX TX反一下,有些下載線是指接入單片機端的標誌,不是自身標示;

三、GPU執行指令須要時間,所以快速發送指令時,須要按需求區分兩種狀況處理:

狀況一:重要界面確保顯示;須要延時足夠的時間,或延時到串口收到「OK」字符爲止;

狀況二:數據刷新,寧丟勿慢;經常使用在UI界面上數值調整,好比有+ - 鍵,按住不放,數值不停的增長或減小,此時直接不停的發就能夠,漏點無所謂,但最後一次傳的必定能夠正確顯示。

 

11、 升級程序

第一步:按本文第一節中將GPU模塊與計算機相連;

第二步:認識GPU模塊上的和刷機相關的接口:

 

第三步:下載刷機軟件:

 

您能夠去官網下載V2.6以上的版本,也能夠去下我準備的綠色版本:

http://pan.baidu.com/share/link?shareid=1903893858&uk=3204894695

第四步:查看序列號:

在GPUMake中,使用INF命令獲取序列號:

1 send:INF; 
2 SN:U53AC89A3 FN:EF14 RC:320X240

U53AC89A3 便是序列號;

備註:早期的版本可能不支持INF命令,能夠在接好GPUMake的,短路下GPU上的RESET,GPU即傳回:

1 Usart-GPU 2.2B  Ver 0.9b B0617
2 [FFFFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFC0]
3 53AC89A3  

其中 53AC89A3  前加U 即U53AC89A3就是序列號;

第五步:下載新ROM;

去網站:http://stm32.sinaapp.com/gpu22b/,有歷史的各個版本能夠下載,輸入序列號,便可下載bin文件;

第六步:拔下USB刷機線(GPUMaker的串口程序可能與刷機軟件的自動波特率檢測衝突,須要拔下設備,再接入USB刷機線時會初始化串口);跳線帽短路BOOT後,將USB刷機線從新接入電腦;

第七步:運行:

STMicroelectronics flash loader.exe

出現:

點擊next:

 

若是不出現此界面,請用鑷子短路下RESET,而後再試一次;若是還不行,請檢查一下BOOT跳線是否接好;

而後出現:

繼續點next:

 

此界面,請按圖中設置,選擇Download,且文件選擇剛下載的ROM文件(BIN後綴的文件),點擊next;進度條走2遍,不顯示紅色進度條的話,表示刷機成功。

第八步:去掉BOOT跳線,從新上電便可啓動新版本程序;

 

12、 外形尺寸:

12.2寸外形尺寸:

 

 

定位孔是爲ø3mm的螺絲設計,PCB總體長70mm,45mm;

孔間距:橫向:63.3mm,垂直:38.2mm; 

液晶屏外框:56X42mm

 

22.8吋外形尺寸

定位孔是爲ø3mm的螺絲設計,PCB總體長85mm,45mm;

孔間距:橫向:78.5mm,垂直:38.5mm; 

液晶屏外框:72X42.5mm(約,液晶屏爲窄邊框設計)

 

十3、 量產方案

Usart GPU模塊使用的W25Q16存儲器數據和MCU芯片無關,所以,當調試好一個樣品後,少許的能夠經過GPUMaker寫入,但量產這個效率很是低;建議直接使用在線編程器在線燒寫或從板子上焊下25Q16,直接使用片對片拷貝的方式用編程器燒寫;大多數編程器全編程(檫除、寫入、校驗)能夠在20秒內完成;

若是您將串口屏應用到產品上,請先使用標準屏調試,造成產品後,獲取存儲器數據能夠採用OEM訂單的方式獲取批量產品,甚至可將電路嵌入您產品的PCB中;

 

十4、 QA

1、亂碼問題:

程序裏書寫的漢字到串口屏中,顯示亂碼,可是英文字母正常;

緣由:你的程序編輯環境是UTF8的,所以寫入程序的漢字時UTF8字符集的,須要找到程序編輯器設置爲GB2312GBK格式就正常了;或者用外部的編輯器存爲普通格式或GBK格式便可;

2、鏈接沒有反應

檢測第一串口是否是RX TX接反了;第二檢測送的語句是否已0d 0a結尾;

3、上傳的數據不正常

表現爲:上傳的大字體點陣顯示不正常或者圖片不正常,請上傳的時候關注輸出:

若是是如圖輸出:中間出現PGxxxx 就表示正常,若是出現一堆OK,沒有PGxxx,表示傳輸數據中出現丟包致使數據校驗不成功,沒有寫入成功;

SPI Flash是沒256字節一頁的,咱們每次寫1K,也就是4頁,連續寫時,PG是每次增長4

碰見此問題的童鞋能夠換一根TTL線試試,或者換臺電腦;TTL線電平較低,不能傳輸很遠距離,且容易受到干擾,通常接線不超過20cm最好;

 

 

 

第二部分:高級應用 

說明:高級應用屬於高手使用的部分,這部分會用到比較多的技巧和基本知識,所以咱們沒法提供更多客服,請自行參考使用;

 

1、 改變產品的波特率

不少51,52的用戶提出,89C51,89C52之類你們熟悉的單片機因爲設計過於久遠,不能提供115200波特率,最高只能提供9600的波特率,所以,不能使用串口液晶屏;所以對於須要使用9600波特率的用戶,須要按下列步驟使用:

  1. 將串口屏刷到V1.0版本,刷機方法參見第一部分 第11節:升級程序;
  2. 下載新版本的GPUmaker,新版本增長了波特率選擇;

 

 

 

  1. 1號批界面頂頭加U3;(本例中將波特率設置成19200) 三個字母表示設置波特率;

波特率支持:2400,4800,9600,19200,38400,57600,115200,256000 

對應關係:
U0;  //2400
U1;  //4800
U2;  //9600
U3;  //19200
U4;  //38400
U5;  //57600
U6;  //115200
U7;  //256000

 

U3; 請務必第一行頂頭書寫;

請不要忘記點擊:,而後點擊

將設置好的上傳到GPU

 

  1. 從新給串口屏GPU上電,此時開機界面的序列號後面顯示:B:19200  表示當前波特率爲19200;此時用單片機的19200的串口就能夠正常使用GPU串口液晶屏了;
  2. 從新設置了GPU波特率了,相應的GPUMaker程序也必須使用新的波特率才能正常連通;
  3. 若是波特率設置的較高,超出了電腦TTL串口的波特率限制,沒法使用GPUMaker連通以下降波特率,請使用刷機軟件刷回0.9版,0.9版本固定波特率115200
  4. 9600下,gpuMaker傳輸圖形等大量數據須要花費更長的時間,請作好內心準備;

 

【重點強調:】U3;不是命令,由於你不能在已經按115200波特率鏈接下的串口用串口命令修改波特率,U3;只是一個存儲標誌,GPU是在開機的時候檢測這個標誌,而後按標誌對應的波特率初始化串口,所以須要上傳批頁面才能起效;

2、 關於asc8 點陣問題

當您升級爲V1.0後,對於220X176的版本,會發如今DS16輸出英文字符的時候會顯示空白方框,此現象爲asc8X16點陣缺失致使,解決方法是:

  1. 將新版本的gpumake.exe 覆蓋原有目錄下的gpumaker.exe;
  2. 將新版本work目錄下的asc文件拷入源gpumake/work/ 目錄下
  3. 點擊:
  4. 點擊:

asc8X16點陣數據上傳

  1. 重啓GPU串口屏

 

3、 關於Arduino如何使用串口屏資料

  

      軟件

      串口屏

      廠家

 

  END!

 

歡迎你們一塊兒交流 ,分享程序員勵志故事。 幸福的程序員 QQ羣:幸福的程序員
相關文章
相關標籤/搜索