標(biāo)題: MSP-EXP430F5529白板子菜單及框架示例程序概覽資料下載 [打印本頁]

作者: jinweihong    時(shí)間: 2018-8-5 10:25
標(biāo)題: MSP-EXP430F5529白板子菜單及框架示例程序概覽資料下載
下面我將從這幾方面介紹:
(一)【編寫目的】
(二)【快速使用】
(三)【程序概覽】
(四)【實(shí)戰(zhàn)例子】
(五)【其他】
(一)【編寫目的】
首先使用白板子的好處就是:自帶一塊LCD顯示屏,所以【如何能非常方便的使用LCD,結(jié)合板子的各個(gè)模塊實(shí)現(xiàn)相應(yīng)需求】即為目的,
只為了【方便不了解的人能迅速上手通過修改添加相當(dāng)少的代碼即實(shí)現(xiàn)相應(yīng)需求】。
(二)【快速使用】
新建CCS工程(分享CCS5的下載地址  http://pan.baidu.com/s/1i48nYlB
下載我的代碼,代碼已上傳至群文件,也可在此下載(http://download.csdn.net/detail/yws_swy/9830060
下載好之后解壓文件,將其內(nèi)全部.c和.h文件復(fù)制
粘貼到剛才新建的工程里,全部覆蓋
然后連接好板子分別點(diǎn)擊這兩個(gè)標(biāo)志,進(jìn)行編譯連接和調(diào)試,過一會(huì)程序成功下載到板子上了,點(diǎn)擊運(yùn)行
此時(shí)屏幕上即出現(xiàn)歡迎界面,按S2鍵進(jìn)入菜單,滾動(dòng)滾輪選擇功能,按S1鍵進(jìn)入相應(yīng)功能,至此,算是開始使用了。
(三)【程序概覽】
首先看一下目錄結(jié)構(gòu):
main【總?cè)肟凇浚?/font>
board【白板子各模塊驅(qū)動(dòng)】;
dogs102x6【白板子液晶顯示屏】內(nèi)含畫折線圖、顯示字符串、畫圓、畫線、畫圖片等函數(shù);
globalvar【全局變量】如按鍵標(biāo)志、滾輪ADC采樣值、當(dāng)前菜單頁數(shù)等;
init【總體初始化】;
lib【基本運(yùn)算庫】內(nèi)含濾波函數(shù)、整數(shù)轉(zhuǎn)字符串函數(shù)、小數(shù)轉(zhuǎn)字符串函數(shù)、求最大值最小值函數(shù)、升序排序函數(shù);
menu【通過滾輪配合菜單選項(xiàng)】;
user【用戶來編寫的程序】;
綜上,注意,如果不是十分了解盡量不要修改其他文件代碼,僅需修改Yuser.c文件即可。
下面來看一下具體的代碼
main.c中僅初始化后調(diào)用了Yuser.c中的yUserStart();
Yuser.c文件中的yUserStart()里面的代碼才是真正的流程控制。
進(jìn)入到Y(jié)user.c文件(【提示】:按住Ctrl鍵并移動(dòng)鼠標(biāo)到函數(shù)名上,直到函數(shù)名下面出現(xiàn)下劃線,此時(shí)單擊鼠標(biāo)左鍵可快速進(jìn)入函數(shù)內(nèi)部查看)可以看到如下代碼:
至此足以看出大體流程,通過Ytotalitems設(shè)置菜單中的功能選項(xiàng)數(shù)量,在Ymenutext[]中寫好每一個(gè)選項(xiàng)的標(biāo)題,然后用selection保存滾輪最后確定的選項(xiàng),根據(jù)selection的值用switch...case...語句選擇執(zhí)行不同的功能。這就是基本流程控制。

下面結(jié)合著寫好的這幾個(gè)例子具體來看:
(1)第一個(gè)函數(shù)yWelcome();
yDogs102x6_imageDraw(s505, 0, 0);畫圖片(不推薦費(fèi)時(shí)間在這里,如有需要,詳細(xì)生成可參考http://download.csdn.net/detail/yws_swy/9581130
這里我們只看yDogs102x6_stringDraw(0, 0, "Press S2 to Menu.",NORMAL_STYLE); //顯示字符串
這個(gè)函數(shù)接受了四個(gè)參數(shù)(起始行(0~7)、起始列(0~102)、顯示字符串、顯示格式)
例如,在第二行顯示ystr字符串就可以寫成:
顯示格式有四種,分別是(白底黑字NORMAL_STYLE)、(黑底白字INVERT_STYLE)、(整行白底黑字NORMAL_STYLE+ROW_STYLE)、(整行黑底白字INVERT_STYLE+ROW_STYLE)
例如,把白底黑字改成黑底白字效果就是
(整行白底黑字NORMAL_STYLE+ROW_STYLE)和(整行黑底白字INVERT_STYLE+ROW_STYLE)這兩種格式是在字符串長度短,不能填滿一整行時(shí)的可選選項(xiàng),比如當(dāng)僅顯示"Press S2"時(shí),僅白底黑字就會(huì)出現(xiàn)下面的一半黑一半白的情況:
此時(shí)改為NORMAL_STYLE+ROW_STYLE,就會(huì)對整行都有效:
最后while (!(Ybuttonspressed & BUTTON_S2)); 表示直到按下S2鍵才返回菜單,因?yàn)榘聪耂2鍵觸發(fā)了按鍵中斷,中斷函數(shù)中修改了Ybuttonspressed的值,
這樣這里通過判斷Ybuttonspressed的值就知道是否按下了S2鍵,按下了則while結(jié)束,退出yWelcome函數(shù)。
(2)第二個(gè)函數(shù)yContrastSetting():
首先需要用滾輪采樣,則要yWheel_enable();使能滾輪及ADC,然后不停地通過yWheel_getPosition(25);獲取滾輪位置轉(zhuǎn)化為0~24之間的值來設(shè)置LCD對比度,直到S2鍵按下為止,最后別忘了禁止?jié)L輪yWheel_disable();
(3)第三個(gè)函數(shù)ySimpleDraw
這里面調(diào)用了畫圓和畫直線的函數(shù),還是那樣按住Ctrl鍵+鼠標(biāo)單擊,進(jìn)入函數(shù)內(nèi)部查看每個(gè)參數(shù)含義:
(4)第四個(gè)函數(shù)yShowNum()
這里有兩個(gè)我寫好的函數(shù)yItoa()和yFtoa(),在Ylib.c中可以看到它們的定義,可以得知實(shí)現(xiàn)了把數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為字符串顯示到了LCD上。
(5)第五個(gè)函數(shù)yInputNum()
因?yàn)榘存I過少,所以只能通過滾輪轉(zhuǎn)到不同位置來輸入不同數(shù)值,比如想輸入7.96,則要通過滾輪分別轉(zhuǎn)到7、·、9、6(這里為了避免按鍵消抖,虛擬設(shè)置了S2為S1使能,即S1為確定鍵,但每次按S1鍵前必須按一次S2來使能S1,這樣就避免了可能抖動(dòng)帶來的連續(xù)輸入了兩個(gè)7的情況)。輸入完畢后,再通過滾輪轉(zhuǎn)到END并確定結(jié)束,這時(shí)就會(huì)把輸入的字符串換算為值保存給gnum1。
(6)第六個(gè)函數(shù)yShowCurve()
實(shí)際上,這是通過調(diào)用很多次前面畫直線的函數(shù)來實(shí)現(xiàn)的,其中還用到了Ylib.c中的yFinMax、yFinMin求最值下標(biāo)等函數(shù),具體實(shí)現(xiàn)這里不細(xì)說,相關(guān)設(shè)置有幾處
(四)【實(shí)戰(zhàn)例子】
下面用上面提到的函數(shù)隨便寫個(gè)例子,比如實(shí)現(xiàn)一個(gè)fun函數(shù),要求由滾輪轉(zhuǎn)動(dòng)的位置轉(zhuǎn)換為0~100之內(nèi)的數(shù)值,并實(shí)時(shí)顯示到LCD屏幕上,按S2鍵結(jié)束。
注意咯,在菜單上每添加一個(gè)功能基本上都是下面這四個(gè)步驟:
(1)添加菜單選項(xiàng)標(biāo)題:
在Yuser.c中找到Y(jié)menutext部分,在其后添加第6項(xiàng)功能fun。
(2)設(shè)置菜單選項(xiàng)個(gè)數(shù):
將下面yUserStart()函數(shù)中的Ytotalitems的值由5改為6,表示有6項(xiàng)菜單選項(xiàng)。
(3)設(shè)置選項(xiàng)調(diào)用流程:
在下面的while(1)里面添加case 6的流程控制,表示第6項(xiàng)將執(zhí)行fun()函數(shù)。
(4)編寫新增函數(shù)fun():
void fun(){
int value = 0;
char str[4] = "";
yWheel_init();//使能滾輪
while (!(Ybuttonspressed & BUTTON_S2)){//直到S2鍵按下才會(huì)退出
value = yWheel_getPosition(100);//將滾輪位置轉(zhuǎn)換為0~100之間的值
yItoa(value,str);//int整數(shù)轉(zhuǎn)換為字符串
yDogs102x6_stringDraw(0,0,str,NORMAL_STYLE+ROW_STYLE);//畫字符串
}
yWheel_disable();//禁止?jié)L輪
}
//編譯運(yùn)行即可發(fā)現(xiàn)菜單中已經(jīng)多了一個(gè)fun選項(xiàng),進(jìn)入之后會(huì)隨著滾輪的轉(zhuǎn)動(dòng)實(shí)時(shí)顯示一個(gè)0~100之間的數(shù)值,至此完成了一個(gè)菜單選項(xiàng)的添加。
(五)【其他】
這其中,還需要注意的有幾個(gè)問題:
(1)按鍵只有兩個(gè),所以這里用滾輪+菜單來進(jìn)行功能選擇;
(2)IO口過少,一般只做控制信號通用IO和顯示功能,復(fù)雜的功能容易和板上資源沖突,所以沒考慮ADC等功能;
(3)只設(shè)置了一層菜單,沒有編寫多層,一方面因?yàn)橛辛藵L輪即使再多的功能都不擔(dān)心一層菜單顯示不下,另一方面因?yàn)槎鄬硬藛螘r(shí)需要考慮按鍵消抖,而一層菜單時(shí)S2鍵始終都是菜單鍵,S1鍵始終都是確定鍵,也就不需要考慮按鍵消抖了;
(4)為防止不必要的干擾,沒有設(shè)置背光亮度的PWM波,還降低了功耗;
(5)只寫出了以下三個(gè)在Yuser.c中的中斷函數(shù),如有需要請?jiān)赮user.c中自行添加
#pragma vector=PORT1_VECTOR //按鍵S1
#pragma vector=PORT2_VECTOR        //按鍵S2
#pragma vector = ADC12_VECTOR
(6)最好不要用sprintf等支持不全的函數(shù)來把數(shù)值轉(zhuǎn)換為字符串,因?yàn)镃CS5中支持sprintf,而CCS6中就不支持,所以這里最好使用Ylib.c中寫好的yItoa和yFtoa函數(shù)。
(7)此外,Ylib.c中還寫好了諸如簡單濾波,升序排序等函數(shù),可自行選擇使用,并歡迎繼續(xù)完善。
(8)
/*相關(guān)學(xué)習(xí)資料分享:
* MSP-EXP5529開發(fā)板實(shí)驗(yàn)指導(dǎo)書:
* http://download.csdn.net/detail/yws_swy/9830063
* MSP430F5529 官方代碼例程庫:
* http://download.csdn.net/detail/yws_swy/9830064
* MSP430F5529 中文手冊:
* http://download.csdn.net/detail/yws_swy/9789980
* CCS5的下載地址:
* http://pan.baidu.com/s/1i48nYlB
* LCD顯示動(dòng)畫、圖片、漢字教程
* http://pan.baidu.com/s/1slfh9vv
* https://pan.baidu.com/s/1bpF1X4V
*/



全部資料51hei下載地址:
MSP-EXP430F5529開發(fā)板硬件電路圖.zip (744.97 KB, 下載次數(shù): 22)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1