Usart GPU 使用手冊html
文檔更新日期程序員 |
更新內容數據庫 |
2014-9-10編程 |
C編程sprintf問題app |
2014-8-8electron |
版本程序1.0,升級了自定義波特率部分編輯器 |
------函數 |
原始版本測試 |
第一部分:基礎應用字體
概述:
Usart 是串口的意思,GPU 是圖形處理器的意思,產品的含義是作一個單片機使用的專用圖形處理器,或者稱之爲串口液晶顯示模塊。
開箱後,能夠將串口輸出的4根引腳焊上排插,使用杜邦線將串口接到USB轉TTL線上,便可接到電腦USB口上上電,屏幕即會顯示第一屏的Hello界面;
說明下:照片中是我調試用的,所以增長了RESET按鈕和運行程序刷機切換的BOOT自鎖開關,正常使用和產品中不帶這兩個東東;
主板中使用XC6206接到5V的,6206是一個低壓差穩壓器,輸出3.3V,160mV的低壓差,讓板子在3.46V便可正常供電,實際使用中,電壓低到3V,6206也能夠正常輸出電壓可是不穩壓;因爲STM32 最低2V便可工做,所以本板子能夠直接接單節鋰電池便可工做;
這是上電後的Hello界面,俗稱歡迎界面,此界面屬於第一個批界面,能夠有上位機程序在PC下自由設計,用戶能夠在這個界面上設計本身產品的名字和公司的圖標;
開機界面十秒種,若是收不到串口命令,就會進入演示狀態。正常的量產以後,單片機須要在上電十秒內給串口液晶屏發送指令,只要一發送指令,就自動的進入串口命令狀態。
將USB轉TTL接入計算機,注意因爲程序的緣由串口號不能超過10,即COM1~COM9方可以使用;
從:
http://pan.baidu.com/share/link?shareid=1322038799&uk=3204894695
下載GpuMaker程序,程序是一個ZIP包,綠色軟件,解壓到硬盤中便可使用;
若是您有多個使用串口屏的項目,請把此軟件解壓多份,每份一個項目;
運行解開目錄中的GpuMaker.exe,系統進入:
選擇,左上角的串口號,點擊「打開按鈕」,串口鏈接成功;此時點擊「發送指令」,液晶屏便可顯示錶示鏈接正常;
命令 |
說明 |
示例 |
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 |
設置屏幕顯示的方向;n爲0~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; |
顏色是由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號顏色設置成剛纔選擇的顏色;
系統支持十二、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);
發送完成以後界面:
此時液晶屏顯示:
GpuMaker目錄以下:
進入pic目錄,選擇縮略圖顯示:
這樣很容易看出圖形對應的序號;
添一張圖進去:
使用圖形處理軟件,將圖縮到220*176點如下,若是是別的格式的圖,能夠用圖形處理軟件轉換下;
啓動 GpuMaker,進入:圖形處理頁面:
點擊「生產所有圖片的數據」按鈕,系統自動將pic目錄下的全部圖片處理好;
進入「串口命令」界面,連上串口,點擊「上傳圖形信息」按鈕,系統將圖片信息傳入GPU:
輸入命令:
CLS(0);
PIC(0,0,9);
液晶屏顯示:
咱們使用的單片機,大多數都不能提供充足的內存,所以對於複雜一些的UI有時就得考慮內存方面的問題,所以,能不能像DOS下批處理同樣,將一羣複雜的UI界面語句組合起來,這就是批界面;
在這個界面,右邊就是批界面,系統容許有127個批界面,點擊右邊序號後面的格子,就能夠修改描述以及批界面的語句,點擊存入列表,就能夠將批界面語句存入數據庫;點擊「上傳頁面信息」就能夠將批界面語句傳入GPU中;
使用的時候,可使用串口傳入命令:SPG(批界面序號);便可顯示該界面,無需將複雜的UI語句放置在單片機內存,再用串口傳到GPU;
另外:序號爲1的批界面咱們稱之爲HELLO界面,即GPU上電後當即顯示的第一界面,所以此界面須要設計爲產品的名稱,公司的LOGO之類的,上電後,第一界面會顯示10秒中,在這10秒鐘內,主系統的單片機須要向GPU傳送第一條指令,不然GPU就會進入演示模式,挨個將批界面依次顯示,直到接收到串口指令;
技巧:
一、任何一個界面都分爲背景元素和前臺元素,背景元素是從界面創立起就一成不變的,所以很是適合放在批界面中;顯示界面的時候,先使用批界面顯示背景界面,再由串口指令刷新前臺數據顯示;
二、批界面中能夠不加CLS清屏指令,這樣可使用多個批界面組合成一個更復雜的UI界面,這種狀況下,某幾個批界面能夠成爲某個背景界面的前臺元素;好比:鋰電池充電界面,左側是充電數據,右側是充電進度數據,咱們可使用另一個批界面將右側換成電池的圖形,顯示電池容量;
三、第一個批頁面含有初始參數的設置,好比波特率的調整,詳見串口波特率調整一節;
以上界面使用:
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);
接法很是簡單,如圖接好便可;
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這個語句,具體語句的詳細內容能夠自行百度下,這裏僅提供簡單使用方法:
#include "stdio.h"
此函數大約須要3K左右的空間;
char buf[100]; //要求命令串長度不超100字符
float vol; //vol 變量是浮點數
vol=1.253; //vol爲1.253V,可由AD採樣在此步賦值
sprintf(buf,"DS12(0,0,'電壓:%.3fV',1);\r\n",vol);
GpuSend(buf);
【重要說明】:
一、因爲GPU系統容許接收命令組,所以串口傳入的名利必須以0x0d,0x0a結束(就是常說的回車換行,字符串中的\r\n),不發送這個,系統會一直等待下去,表現爲發送命令不起做用!
二、若是接不通,建議RX TX反一下,有些下載線是指接入單片機端的標誌,不是自身標示;
三、GPU執行指令須要時間,所以快速發送指令時,須要按需求區分兩種狀況處理:
狀況一:重要界面確保顯示;須要延時足夠的時間,或延時到串口收到「OK」字符爲止;
狀況二:數據刷新,寧丟勿慢;經常使用在UI界面上數值調整,好比有+ - 鍵,按住不放,數值不停的增長或減小,此時直接不停的發就能夠,漏點無所謂,但最後一次傳的必定能夠正確顯示。
第一步:按本文第一節中將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跳線,從新上電便可啓動新版本程序;
1、2.2寸外形尺寸:
定位孔是爲ø3mm的螺絲設計,PCB總體長70mm,寬45mm;
孔間距:橫向:63.3mm,垂直:38.2mm;
液晶屏外框:56X42mm
2、2.8吋外形尺寸
定位孔是爲ø3mm的螺絲設計,PCB總體長85mm,寬45mm;
孔間距:橫向:78.5mm,垂直:38.5mm;
液晶屏外框:72X42.5mm(約,液晶屏爲窄邊框設計)
Usart GPU模塊使用的W25Q16存儲器數據和MCU芯片無關,所以,當調試好一個樣品後,少許的能夠經過GPUMaker寫入,但量產這個效率很是低;建議直接使用在線編程器在線燒寫或從板子上焊下25Q16,直接使用片對片拷貝的方式用編程器燒寫;大多數編程器全編程(檫除、寫入、校驗)能夠在20秒內完成;
若是您將串口屏應用到產品上,請先使用標準屏調試,造成產品後,獲取存儲器數據能夠採用OEM訂單的方式獲取批量產品,甚至可將電路嵌入您產品的PCB中;
1、亂碼問題:
程序裏書寫的漢字到串口屏中,顯示亂碼,可是英文字母正常;
緣由:你的程序編輯環境是UTF8的,所以寫入程序的漢字時UTF8字符集的,須要找到程序編輯器設置爲GB2312或GBK格式就正常了;或者用外部的編輯器存爲普通格式或GBK格式便可;
2、鏈接沒有反應
檢測第一串口是否是RX TX接反了;第二檢測送的語句是否已0d 0a結尾;
3、上傳的數據不正常
表現爲:上傳的大字體點陣顯示不正常或者圖片不正常,請上傳的時候關注輸出:
若是是如圖輸出:中間出現PG:xxxx 就表示正常,若是出現一堆OK,沒有PG:xxx,表示傳輸數據中出現丟包致使數據校驗不成功,沒有寫入成功;
SPI Flash是沒256字節一頁的,咱們每次寫1K,也就是4頁,連續寫時,PG是每次增長4;
碰見此問題的童鞋能夠換一根TTL線試試,或者換臺電腦;TTL線電平較低,不能傳輸很遠距離,且容易受到干擾,通常接線不超過20cm最好;
第二部分:高級應用
說明:高級應用屬於高手使用的部分,這部分會用到比較多的技巧和基本知識,所以咱們沒法提供更多客服,請自行參考使用;
不少51,52的用戶提出,89C51,89C52之類你們熟悉的單片機因爲設計過於久遠,不能提供115200波特率,最高只能提供9600的波特率,所以,不能使用串口液晶屏;所以對於須要使用9600波特率的用戶,須要按下列步驟使用:
波特率支持: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;
【重點強調:】U3;不是命令,由於你不能在已經按115200波特率鏈接下的串口用串口命令修改波特率,U3;只是一個存儲標誌,GPU是在開機的時候檢測這個標誌,而後按標誌對應的波特率初始化串口,所以須要上傳批頁面才能起效;
當您升級爲V1.0後,對於220X176的版本,會發如今DS16輸出英文字符的時候會顯示空白方框,此現象爲asc8X16點陣缺失致使,解決方法是:
將asc8X16點陣數據上傳
END!
歡迎你們一塊兒交流 ,分享程序員勵志故事。 幸福的程序員 QQ羣: