迪文DGUS屏的所有硬件參數(shù)和資料下載,都是通過屏上的SD/SDHC接口來完成的,文件必須使用FAT32文件格式。第一次使用SD卡前,推薦先格式化一次,流程如下:
1、 右鍵單擊SD卡,在彈出來的菜單中選擇“格式化”:
2、 在彈出的“格式化SD卡”屬性框中,我們需要將SD卡的文件系統(tǒng)設置成FAT32格式,分配單元大小設置成4096字節(jié),這兩點尤其重要,否則,可能識別不到SD卡。
SD卡成功格式化后,我們就可以將DGUS工程中的DWIN_SET文件夾復制到SD卡中了開始下載程序了,這里需要注意的是,SD卡中不要有其他的文件或文件夾,只能放一個DWIN_SET文件夾。
接下來,我們就可以把SD卡插到DGUS屏的SD卡接口上,DGUS屏檢測到SD卡后,會顯示藍屏提示用戶檢測到SD卡,然后開始下載SD卡中的文件到屏中。
在下載SD卡文件的時候,需要注意的是:兩次SD卡熱插拔之間必須間隔至少6秒,不然DGUS屏會認為是同一張卡,而不會啟動SD卡操作。如果用戶已經禁止SD卡接口,要啟用SD卡接口,除非事先解鎖或在SD卡的CONFIG.TXT文件中有解鎖指令。
SD卡下載完成,DGUS屏會自動復位一次,拔出SD卡,下載結束。
因為現(xiàn)在沒有跟單片機程序通信上,所以,屏上也都只是顯示一些變量的初始值,或許還有小伙伴們在下載工程文件后,發(fā)現(xiàn)顯示位置不對,或者說有點偏位,那么該怎么快速調整呢?這個時候,DGUS軟件的在線下載功能就可以為我們提供便利了,畢竟,只是修改一下變量的屬性的話,在線下載功能還是很方便的,既能馬上看到效果,又可以避免每次插拔SD卡的麻煩,下面接跟著筆者來體驗以下該功能吧。
首先,我們需要準備一條USB轉232的線,然后,將USB轉232線的RXD、TXD、GND跟觸摸屏的RXD、TXD、GND連接起來,這里需要注意的是,兩者之間一定要共地,還有就是RXD、TXD兩者需要交叉,連好之后,我們就可以開始在線調試了。
在我們每次重新修改了工程文件后,別忘記了重新生成一下配置文件,方法前面已經講過了,在此就不贅述。接下來,我們就可以打開DGUS串口工具了,如下圖所示:
首先,我們需要選擇正確的COM口,如果不知道是哪個,可以去電腦的設備管理器里面查看一下,筆者這里用的是COM5,所以這里選擇COM5:
然后就是波特率的選擇了,因為之前我們在建DGUS工程的時候,配置的通信波特率就是115200,所以這里我們需要選擇115200的波特率,同時,這里的R3跟RA的配置也是跟之前一樣,分別設置成5A和A5就好了。接下來我們將選項卡切換到“Fonts AND BIN File Download”界面,此時,如果我們懶得去找13、14號配置文件的話,我只需要快速勾選這兩個文件就好了,然后點擊“Download”按鈕,即可開始下載。當然,我們也可以用旁邊的手動選擇按鍵,手動加載這兩個文件:
點擊“Choose File”按鍵,再彈出來的對話框中直接點擊“否”即可,因為我們這里沒有用到字庫文件,所以也就不需要下載
接下來,找到13、14號兩個配置文件的路徑,并同時選中這兩個文件(也可以一個個選),然后點擊“打開”即可將這兩個文件加載進來:
配置文件成功加載后,這里尤其要注意一個問題,那就是這個“Position”下的數(shù)字要跟對應的文件名前面的數(shù)字一致,不知道是不是因為這個軟件BUG的緣故,很多時候加載文件成功后,這里都顯示的不是對應的文件前綴的數(shù)字,比如,經常出現(xiàn)的就是前面這個地方顯示0和1,如果這樣的話,是不能正確下載的,需要我們手動改一下,才能在成功下載后正常運行,在用這個工具下載其他文件的時候也是一樣需要注意這個問題,另外,下載之前,記得給DGUS屏上電哦,而且確保通信線是通的,否則會下載失敗。
當出現(xiàn)如下界面時,恭喜你下載成功!
DGUS串口下載工具不僅可以下載一些配置文件,還可以下載字庫文件、圖片文件等,只是這些文件有點大,下載的速度會相對比較慢,一般不建議用串口工具來下載,只是在需要稍微修改顯示變量和觸控變量的時候,才使用這個串口下載工具。也就是說,DGUS串口下載工具可以作為SD卡的一個輔助工具來使用,利用好這個DGUS串口下載工具,可以很方便的修改一些變量屬性,而不需要每次都用SD卡去下載,省了不少事。
接下來,我們就需要用串口助手來驗證一下,我們新建的DGUS工程有沒有問題了,首先,我們還是從最簡單的入手吧,這里,最簡單的自然莫過于“按鍵返回”控件了,那么我們嘗試下從Y0一直按到Y5,看下串口助手會返回什么:
我們先來分析一下第一幀數(shù)據(jù):5A A5 06 83 00 20 01 00 01,根據(jù)迪文DGUS指令說明中提到的,我們可以清楚地知道,在這一幀數(shù)據(jù)中:
l? 5A A5為數(shù)據(jù)幀的幀頭;
l? 06為數(shù)據(jù)長度,即:從該為開始后面數(shù)據(jù)的個數(shù);
l? 83為指令;
l? 00 20 為變量的地址;
l? 01 為從地址0x0020開始,返回的數(shù)據(jù)個數(shù);
l? 00 01為變量的值
再回想上一講我們建工程時定義的“按鍵返回”觸控變量的地址以及鍵值,我們就很容易理解串口返回的這幾串數(shù)據(jù)意義了,也就是說,當我們收到5A A5 06 83 00 20 01 00 01這串數(shù)據(jù)時,我們就知道是Y0按下了;當我們收到5A A5 06 83 00 20 01 00 02這串數(shù)據(jù)時,就知道是Y1按下……依次,我們就能識別到某一時刻,觸摸屏上的那個按鍵被按下了。
接下來,我們繼續(xù)來學習一下,如何往DGUS屏中的“數(shù)據(jù)變量顯示”控件中寫數(shù)據(jù)。這個地方就需要用到了DGUS屏的82指令—寫數(shù)據(jù)存儲區(qū)指令。我們直接看下《迪文DGUS指令說明》中的介紹吧:
相信看到這里,大家應該很明白了,比如,我要往地址為0x0010的“定時閃爍”數(shù)據(jù)變量顯示控件中寫一個數(shù)字“1”,那么我們只需要給對觸摸屏發(fā)送指令:5A A5 05 82 00 10 00 01就可以了,同樣,我們打開串口助手,將波特率什么的都設置好,然后再發(fā)送區(qū)輸入指令:5A A5 05 82 00 10 00 01,注意,這里發(fā)送的所有數(shù)據(jù)都是十六進制數(shù)。
指令發(fā)送完成后,我們可以看下觸摸屏上地址為0x0010這個變量值是不是就真的會顯示為1呢?
納尼?說的好“1”呢?怎么會變成65536?什么鬼?頓時心里一陣納悶有木有?納悶就對了,是不是大家都忘記了之前我們定義這個變量的數(shù)據(jù)類型的時候選擇的是“無符號長整數(shù)(4字節(jié))”了?那么就意味著,他在存儲區(qū)中實際上是占了兩個地址,即:0x0010和0x0011,不信的話,讀者可以自己嘗試一下,先往0x0010寫個0,然后再往0x0011寫個1,看下觸摸屏上是不是就會顯示1了呢?答案是肯定的!
那么,既然這個變量占四個字節(jié),我們又該如何往里面寫數(shù)據(jù)呢?還是一樣的方法,因為迪文的DGUS指令是支持連續(xù)寫數(shù)據(jù)的。也就是說,我們可以只用一條指令,往多個連續(xù)的地址中寫數(shù)據(jù),這個時候,之前指令中說的“變量地址”,實際上就變成了“變量首地址”了,另外,這時的“發(fā)送的數(shù)據(jù)長度”也要跟著變了。那么,接下來的指令就可以這樣改寫了:5A A5 07 82 00 10 00 00 00 01,也就是往0x0010和0x0011里分別寫0x0000和0x0001兩個數(shù)據(jù):
這時,我們再來看觸摸屏上的數(shù)據(jù),是不是就對了呢?沒錯,那是必須滴!
至此,數(shù)據(jù)變量我們知道怎么操作了,那么,接下里,圖標變量又要怎么顯示呢?很簡單,其實圖標變量跟數(shù)據(jù)變量的控制方式是一樣的,無非就是圖標變量的值跟對應的圖標扯上了關系,也就是說,一個變量值對應了一個圖標,那么,我們就只需要改變這個變量的值,不同的圖標就能顯示出來了。
以X0的輸入狀態(tài)為例,他的地址是0x0000,變量下限為0,對應的圖標是1(紅色圖標);變量上限為1 ,對應的圖標是2(綠色圖標)。這樣是不是就很明顯了:當我們需要顯示紅色圖標的時候,只需要往地址0x0000寫0x0000就可以了;當我們需要顯示綠色圖標的時候,就只需要往地址0x0000寫0x0001就可以了,是不是很簡單呢?這里也同樣可以用一條指令控制多個地址連續(xù)的圖標變量,為了對比性更明顯一點,我們用一條指令來控制所有的輸入輸出狀態(tài)的圖標,在之前設定變量地址的時候就是考慮到了這一點,所有將所有的圖標變量地址設置成了連續(xù)的了,即從0x0000-0x000D,一個14個地址。
接下來,我們就這樣來控制,讓X0-Y5分別按照這樣的規(guī)律來顯示:
X0狀態(tài)顯示紅色;
X1狀態(tài)顯示綠色;
X2狀態(tài)顯示紅色;
X3狀態(tài)顯示綠色;
X4狀態(tài)顯示紅色;
X5狀態(tài)顯示綠色;
X6狀態(tài)顯示紅色;
X7狀態(tài)顯示綠色;
Y0狀態(tài)顯示紅色;
Y1狀態(tài)顯示綠色;
Y2狀態(tài)顯示紅色;
Y3狀態(tài)顯示綠色;
Y4狀態(tài)顯示紅色;
Y5狀態(tài)顯示綠色;
那么,我們可以將這一天指令來這樣拆解:
5A A5 -- 幀頭
1F??? -- 發(fā)送數(shù)據(jù)長度
82??? -- 指令
00 00 -- 首地址
00 00 -- X0狀態(tài)-紅色
00 01 -- X1狀態(tài)-綠色
00 00 -- X2狀態(tài)-紅色
00 01 -- X3狀態(tài)-綠色
00 00 -- X4狀態(tài)-紅色
00 01 -- X5狀態(tài)-綠色
00 00 -- X6狀態(tài)-紅色
00 01 -- X7狀態(tài)-綠色
00 00 -- Y0狀態(tài)-紅色
00 01 -- Y1狀態(tài)-綠色
00 00 -- Y2狀態(tài)-紅色
00 01 -- Y3狀態(tài)-綠色
00 00 -- Y4狀態(tài)-紅色
00 01 -- Y5狀態(tài)-綠色
也就是說,只需要發(fā)送這樣一條指令就OK了:5A A5 1F 82 00 00 00 00 00 01 00 00 0001 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01是不是很簡單呢?
再來看下觸摸屏,是不是按照我們設想的來顯示呢?那還用說嘛?必須滴呀!
接下來,就是“數(shù)據(jù)變量錄入”這個功能了,其實這個功能也是比較簡單的,就是在鍵盤輸入完成按下OK鍵后,會將設定好的數(shù)據(jù)顯示在對應的變量控件里面,并且通過DGUS屏的串口發(fā)送出來。我們單擊之前設置的“數(shù)據(jù)變量錄入”觸控變量的位置,這時會彈出一個鍵盤用來輸入數(shù)據(jù),我們在此輸入一個數(shù)據(jù)“123”,并按下“OK”鍵:
當按下“OK”鍵之后,我們可以看到,串口助手接收到了這么一條數(shù)據(jù):5A A5 08 83 00 10 02 00 00 00 7B
有了前面的基礎,相信大家不難看懂這條指令了吧?很明顯,就是DGUS屏通過串口將變量地址為0x0010里面的值發(fā)出來了,該值得長度為兩個字,值為:0x0000007B,也就是十進制的:123。
至此,相信大家對迪文DGUS屏的基本操作應該不會再陌生了吧,相信,只要會用單片機串口的小伙伴們,不用我說,就應該知道怎么寫接下來的單片機程序了。當然,為了照顧一下跟我曾經一樣菜鳥的小伙伴,筆者在下一講還是會簡單介紹一下單片機部分的編程,這一講就先介紹這里了。如果小伙伴們喜歡這篇文章,認為他對你們有幫助,請不要吝嗇你們的點贊和打賞喲……
溫馨提示:
如果你在看本文有任何疑問,或者對工控、硬件設計、單片機比較感興趣,歡迎站內私信或提問,本項目講解完畢成后,將會在社區(qū)提供跟本項目相關的所有資料下載。
評論
查看更多