亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于元件技術(shù)手冊的嵌入式驅(qū)動開發(fā)的探索

        2016-05-30 22:22:39楊佳鄧力
        企業(yè)科技與發(fā)展 2016年3期
        關(guān)鍵詞:嵌入式

        楊佳 鄧力

        (1.南寧第三職業(yè)技術(shù)學(xué)校 廣西 南寧 530001;2.桂林理工大學(xué) 南寧分校,廣西 南寧 530001)

        【摘 要】文章通過對國內(nèi)嵌入式系統(tǒng)崗位的技能進(jìn)行分析,針對國內(nèi)院校嵌入式系統(tǒng)課程的教學(xué)內(nèi)容、實(shí)驗(yàn)實(shí)訓(xùn)開設(shè)的現(xiàn)狀,根據(jù)企業(yè)對嵌入式崗位招聘需求,提出了基于元件技術(shù)手冊的嵌入式驅(qū)動開發(fā)的新思路。以LPC2106驅(qū)動LCD1602液晶的項(xiàng)目,探索了基于元件技術(shù)手冊來進(jìn)行新產(chǎn)品開發(fā)的培訓(xùn)新思路,提出了基于元件技術(shù)手冊進(jìn)行產(chǎn)品研發(fā)的新方法,對拓展國內(nèi)外嵌入式系統(tǒng)教學(xué)提供了新的課程培訓(xùn)思路。

        【關(guān)鍵詞】嵌入式;驅(qū)動開發(fā);LCD1602;LPC2106

        【中圖分類號】TP311 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2016)03-0046-05

        1 嵌入式系統(tǒng)崗位分析

        隨著我國信息化與工業(yè)化融合的推進(jìn),嵌入式技術(shù)的廣泛應(yīng)用已成為必然趨勢[1]。企業(yè)不僅對嵌入式系統(tǒng)人才需求的數(shù)量在增加,對嵌入式系統(tǒng)人才的技能要求也在不斷地提高。從事嵌入式產(chǎn)品的相關(guān)研發(fā),離不開硬件層、中間層、軟件層、功能層4個層次的研發(fā)工作[2]。它的開發(fā)流程都必須先定義產(chǎn)品功能,再對定義進(jìn)行系統(tǒng)分割,然后進(jìn)行軟硬件的規(guī)劃和設(shè)計(jì),按照崗位職能可進(jìn)一步細(xì)分如下。

        軟件研發(fā)分為系統(tǒng)構(gòu)建工程師、上層驅(qū)動開發(fā)工程師、上層應(yīng)用程序開發(fā)工程師。

        硬件研發(fā)分為電路原理圖設(shè)計(jì)工程師、PCB設(shè)計(jì)工程師、底層驅(qū)動開發(fā)工程師。

        軟件研發(fā)的3類工程師按照操作系統(tǒng)的種類又分出與各種操作系統(tǒng)相對應(yīng)的工程師。目前,在各領(lǐng)域應(yīng)用的主流操作系統(tǒng)有UCOS-II、LINUX、WINCE、VXWORKS等。企業(yè)一般會按照不同的操作系統(tǒng)平臺招聘相應(yīng)的工程師。

        2 當(dāng)前嵌入式系統(tǒng)培訓(xùn)的不足

        目前,國內(nèi)高校開設(shè)嵌入式系統(tǒng)課程的高校、培訓(xùn)機(jī)構(gòu)較少,嵌入系統(tǒng)課程的教學(xué)內(nèi)容、實(shí)驗(yàn)實(shí)訓(xùn)的開設(shè)還處在探索的階段[3]。通過對畢業(yè)學(xué)生、學(xué)員的回訪和到企業(yè)的調(diào)研發(fā)現(xiàn),由于在學(xué)習(xí)時學(xué)員對元件的手冊沒有全面地練習(xí),對設(shè)備、元件的相關(guān)代碼都是通過修改(教師提供或網(wǎng)上下載)而得到的,因此當(dāng)采用新元件時,學(xué)員對新元件的驅(qū)動編寫無從下手。

        3 嵌入式系統(tǒng)培訓(xùn)改進(jìn)的基本思想

        (1)要讓學(xué)員學(xué)習(xí)如何查看廠家提供的技術(shù)手冊并根據(jù)元器件技術(shù)手冊來進(jìn)行設(shè)計(jì)。

        (2)培訓(xùn)項(xiàng)目元件的選取要有一定的復(fù)雜性,但最好選取學(xué)員不太陌生的元器件。

        (3)為了使學(xué)員能更深刻地理解驅(qū)動程序的代碼是如何與元件的硬件電路相對應(yīng)的,驅(qū)動程序的代碼編寫先不采用操作系統(tǒng)。

        4 項(xiàng)目設(shè)計(jì)

        根據(jù)項(xiàng)目設(shè)置的基本思想,設(shè)置一個嵌入式驅(qū)動液晶顯示的電路并完成相關(guān)驅(qū)動代碼的編寫。

        液晶采用LCD1602,嵌入式CPU采用LPC2106,驅(qū)動項(xiàng)目編寫軟件采用ADS1.2,為了驗(yàn)證驅(qū)動代碼運(yùn)行的結(jié)果是否正確,采用Proteus軟件完成電路設(shè)計(jì),并通過Proteus電路仿真來驗(yàn)證[4]驅(qū)動代碼在液晶電路的運(yùn)行情況。

        項(xiàng)目主要通過LCD1602的顯示程序來學(xué)習(xí)如何根據(jù)LCD1602廠家的技術(shù)手冊編寫驅(qū)動程序代碼。

        液晶LCD1602的主要技術(shù)參數(shù)如下。

        1602字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式LCD,可以顯示2行,每行顯示16個ASCII字符,并且可以自定義圖形,只需要寫入相對應(yīng)字符的ASCII碼就可以顯示[5](見表1)。

        根據(jù)液晶接口信號引腳說明,完成液晶和CPU的電路連接(如圖1所示)。

        根據(jù)電路的連接,在程序中完成管腳的定義:

        #define rs (1<<8)

        #define rw (1<<9)

        #define en (1<<10)

        #define busy (1<<7)

        根據(jù)手冊管腳的接口信號說明,確定和液晶相連接的LPC2106的引腳為輸入輸出IO口,同時將與液晶連接的CPU引腳定義為輸出IO口的類型:

        PINSEL0=0x00000000; //設(shè)置所有引腳連接GPIO

        PINSEL1=0x00000000;

        IO0DIR=0x7ff; //設(shè)置P0.0—P0.10為輸出IO口

        1602液晶的D0~D7端為8位數(shù)據(jù)口,進(jìn)行數(shù)據(jù)傳送,而RS、R/W、E端則配合可以做出不同的操作[5],對1602進(jìn)行操作主要有4種,如下:{1}讀狀態(tài),輸入:RS=L,RW=H,E=H。輸出:D0~D7=狀態(tài)字。{2}寫指令,輸入:RS=L,RW=L,D0~D7=指令,E=高脈沖。輸出:無。{3}讀數(shù)據(jù),輸入:RS=H,RW=H,E=H。輸出:D0~D7=數(shù)據(jù)。{4}寫數(shù)據(jù),輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖。輸出:無。

        在進(jìn)行讀操作的時候,RW置于1,RS則根據(jù)讀的內(nèi)容(狀態(tài)或數(shù)據(jù))置為1或0,E置為1,可以在數(shù)據(jù)口讀到正確的數(shù)據(jù),在將E置為1之后,就可以緊跟著指令去讀取數(shù)據(jù),在讀到數(shù)據(jù)后,再將E置為0。

        在進(jìn)行寫操作的時候,RW要置為0,RS根據(jù)寫的內(nèi)容不同(指令或數(shù)據(jù))置為1或0,同時在將E置為1之前,要先將數(shù)據(jù)送到數(shù)據(jù)口上,然后將E置為1,經(jīng)過一定的延時后,再將E置為0,在這個時間段內(nèi)必須保證數(shù)據(jù)口上的數(shù)據(jù)穩(wěn)定不變,且為有效的數(shù)據(jù)。

        從上文可以看出,如果想對1602進(jìn)行何種操作,只要按其相對應(yīng)的操作規(guī)程來做即可。

        雖然以上有4種操作,但實(shí)際上歸類起來只有2種,一種讀一種寫,并且進(jìn)行讀或?qū)懚家M(jìn)行數(shù)據(jù)的傳送。

        液晶狀態(tài)字說明如圖2所示。

        用CPU來控制LCD模塊的方式十分簡單,LCD模塊的內(nèi)部可以看成2組寄存器,一個為指令寄存器,另一個為數(shù)據(jù)寄存器,由RS引腳來控制。所有對指令寄存器或數(shù)據(jù)寄存器的存取均需檢查LCD內(nèi)部的忙碌標(biāo)志STA7,此標(biāo)志用來告知LCD內(nèi)部正在工作,并不允許接收任何的控制命令。而此位的檢查可以令RS=0,用讀取D7來加以判斷。當(dāng)D7為0時,才可以寫入指令或數(shù)據(jù)寄存器。因此,在對控制器每次進(jìn)行讀寫操作之前,都必須進(jìn)行讀寫檢測,確保STA7為0。

        根據(jù)手冊的要求,編寫、讀寫檢測函數(shù):

        /****************************************************************************

        * 名稱:ChkBusy( )

        * 功能:檢查總線是否忙

        ****************************************************************************/

        void ChkBusy( )

        {

        IO0DIR=0x700;

        while(1)

        {

        IO0CLR=rs;

        IO0SET=rw;

        IO0SET=en;

        if(?。↖O0PIN & busy))break;

        IO0CLR=en;

        }

        IO0DIR=0x7ff;

        }

        代碼說明:

        根據(jù)讀狀態(tài),輸入RS=L,RW=H,E=H; 輸出D0~D7狀態(tài)字的定義。為了能讀出D7的狀態(tài),要使RS=L,RW=H,E=H,因此定義IO0DIR=0x700,使P0.8-P0.10為輸出IO口,而P0.0-P0.7輸入IO口。

        忙檢測完成后,需要對LCD1602輸入指令和數(shù)據(jù),因此定義IO0DIR=0x7ff,將P0.0-P0.10全部定義為輸出IO口。

        在對液晶進(jìn)行忙檢測后,就可以對液晶進(jìn)行讀寫操作。寫操作分為寫指令與寫數(shù)據(jù)2種操作,寫指令是定義對液晶進(jìn)行何種操作,寫數(shù)據(jù)是將數(shù)據(jù)傳遞給1602液晶。對液晶進(jìn)行寫操作一般是先執(zhí)行寫操作,然后再寫數(shù)據(jù)。寫指令與寫數(shù)據(jù)相對應(yīng)的函數(shù)如下:

        /****************************************************************************

        * 名稱:WrOp( )

        * 功能:寫指令函數(shù)

        ****************************************************************************/

        void WrOp(uint8 dat)

        {

        ChkBusy( );

        IO0CLR=rs; //全部清零

        IO0CLR=rw;

        IO0CLR=0xff; //先清零

        IO0SET=dat; //再送數(shù)

        IO0SET=en;

        IO0CLR=en;

        }

        通過寫指令函數(shù)完成對液晶的寫操作。

        寫數(shù)據(jù)函數(shù):

        /****************************************************************************

        * 名稱:WrDat()

        * 功能:寫數(shù)據(jù)函數(shù)

        ****************************************************************************/

        void WrDat(uint8 dat) //讀數(shù)據(jù)

        {

        ChkBusy();

        IO0SET=rs;

        IO0CLR=rw;

        IO0CLR=0xff; //先清零

        IO0SET=dat; //再送數(shù)

        IO0SET=en;

        IO0CLR=en;

        }

        LCD1602手冊中液晶初始化的要求如圖3所示。

        在使用1602之前,必須對其進(jìn)行初始化操作,初始化過程是往1602固定寫入一定的指令,里面包括指定使用模式、清屏等[5]。LPC2106晶振為11.0592 MHz,為了能準(zhǔn)確地延時,可能通過調(diào)用延時函數(shù)完成延時。

        /*****************************************************************************

        *名稱:DelayNS( )

        *功能:長軟件延時

        ******************************************************************************/

        void delay(uint8 z)

        {

        uint8 x,y;

        for(x=z;x>0;x--)

        for(y=200;y>0;y--) ;

        }

        /****************************************************************************

        * 名稱:lcd_init( )

        * 功能:lcd初始化函數(shù)

        ****************************************************************************/

        void lcd_init(void)

        {

        Delay(15);

        WrOp(0x38);

        Delay(5);

        WrOp(0x38);

        Delay(5);

        WrOp(0x38); //顯示模式設(shè)置

        Delay(5);

        WrOp(0x08); //顯示關(guān)屏

        WrOp(0x01); //顯示清屏

        WrOp(0x06); //光標(biāo)加1

        WrOp(0x0c); //開顯示

        }

        在1602上,分為二行,每行有16個字符位置,如何在我們需要的位置上顯示出對應(yīng)的字符呢?可由RAM地址映射圖及數(shù)據(jù)指針設(shè)置,確定液晶顯示的位置(如圖4所示)。

        要顯示字符時先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符:比如第二行第一個字符的地址是40 H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時要求最高位D7恒定為高電平1,所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)

        圖5是1602顯示RAM緩沖區(qū)對應(yīng)的地址,要在對應(yīng)的位置顯示出字符,首先要寫入一個設(shè)置數(shù)據(jù)地址的指令碼(80H+地址),然后緊跟著寫入要顯示的數(shù)據(jù)即可。

        寫指令:WrOp (0x80+地址,0)

        寫數(shù)據(jù):WrDat (字符ASCII碼,1)

        比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。

        最后完成主函數(shù)的編寫使用:

        /****************************************************************************

        * 名稱:main()

        * 功能:顯示文本

        ****************************************************************************/

        int main(void)

        {

        lcd_init( );

        IODIR=0x7ff; //設(shè)置為輸出

        IOCLR=0x7ff;

        WrOp(0xc1);

        WrDat('a');

        }

        代碼說明:WrOp(0xc1)寫指令函數(shù)定義字符在液晶中顯示的地址為第二行第一個字符,WrDat('a')將要顯示的字符a傳遞至液晶顯示。

        完成程序的編譯后將生成的.hex文件下載到proteus電路中完成仿真,液晶在第二行第一列正常顯示出字符a。

        5 項(xiàng)目的擴(kuò)展

        在完成了嵌入式液晶驅(qū)動代碼的實(shí)驗(yàn)后,還可以引導(dǎo)學(xué)員對該項(xiàng)目進(jìn)行擴(kuò)展。

        (1)如何在液晶中顯示字符串?

        為了能夠顯示字符串,可編寫字符串顯示函數(shù):

        /****************************************************************************

        * 名稱:DisText( )

        * 功能:顯示文本函數(shù)

        ****************************************************************************/

        void DisText(uint8 addr,uint8 *p)

        {

        WrOp(addr);

        while(*p !='\0')WrDat(*(p++));

        }

        (2)引導(dǎo)學(xué)員修改程序:如何讓液晶上顯示的字符動態(tài)移動顯示?

        (3)如何將ARM中LCD1602液晶的顯示代碼移植到其他的CPU中(以移植到8051為例),讓學(xué)員感受到C語言作為高級語言的優(yōu)勢。

        (4)在項(xiàng)目中,針對元件技術(shù)手冊引導(dǎo)學(xué)員進(jìn)行其他課程的實(shí)驗(yàn):如由元件外形尺寸,引導(dǎo)學(xué)生在設(shè)計(jì)PCB時根據(jù)手冊上的元件外形尺寸設(shè)計(jì)LCD1602的元件PCB封裝。

        6 結(jié)論

        本文通過對國內(nèi)嵌入式系統(tǒng)崗位的分析,針對國內(nèi)嵌入式系統(tǒng)教學(xué)、培訓(xùn)的情況,通過LPC2106驅(qū)動LCD1602液晶的項(xiàng)目,系統(tǒng)地展現(xiàn)了基于元件技術(shù)手冊進(jìn)產(chǎn)品研發(fā)的方法,探索了基于元件技術(shù)手冊來進(jìn)行新產(chǎn)品開發(fā)的培訓(xùn)新思路,對拓展國內(nèi)外嵌入式系統(tǒng)教學(xué)提供了新的課程培訓(xùn)思路。

        參 考 文 獻(xiàn)

        [1]黃福瑩,黎相成,何華光.嵌入式技術(shù)課程的教學(xué)探討[J].廣西大學(xué)學(xué)報(bào)(哲學(xué)社會科學(xué)版),2007,29(5):77-78.

        [2]潘曉寧.高職高專院校嵌入式系統(tǒng)課程教學(xué)方法的探討[J].職業(yè)教育研究,2007(8):24-25.

        [3]張其亮,韓斌.“嵌入式系統(tǒng)”課程的實(shí)驗(yàn)教學(xué)研究[J].實(shí)驗(yàn)室研究與探索,2009,28(6):132-133.

        [4]倪蘊(yùn)濤.基于嵌入式系統(tǒng)實(shí)驗(yàn)課程教學(xué)方法改革和教學(xué)思路探索的研究[J].牡丹江教育學(xué)院學(xué)報(bào),2007(4):130-131.

        [5]趙亮.液晶顯示模塊LCD1602應(yīng)用[J].電子制作,2007(3):58-59.

        [責(zé)任編輯:鐘聲賢]

        猜你喜歡
        嵌入式
        Focal&Naim同框發(fā)布1000系列嵌入式揚(yáng)聲器及全新Uniti Atmos流媒體一體機(jī)
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        嵌入式PLC的設(shè)計(jì)與研究
        電子制作(2018年16期)2018-09-26 03:27:18
        搭建基于Qt的嵌入式開發(fā)平臺
        基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開發(fā)
        嵌入式單片機(jī)在電機(jī)控制系統(tǒng)中的應(yīng)用探討
        電子制作(2017年8期)2017-06-05 09:36:15
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        Altera加入嵌入式視覺聯(lián)盟
        日韩制服国产精品一区| 国产成人av区一区二区三| 熟女人妻在线中文字幕| 精品精品国产自在97香蕉| 国产成a人亚洲精v品无码性色| 国产精品自产拍在线观看中文 | 日韩精品极品免费在线视频| 久久国产乱子精品免费女| 琪琪av一区二区三区| 蜜桃av在线免费网站| 影音先锋男人站| 亚洲色大成在线观看| 日本久久黄色高清视频| 女人被狂躁的高潮免费视频| 在办公室被c到呻吟的动态图| 精品人妻系列无码人妻免费视频| 99精品国产第一福利网站| 性感熟妇被我玩弄到高潮| 超碰人人超碰人人| 亚洲精品国产精品国自产观看| 国产成人亚洲综合小说区| 国产成人av三级在线观看韩国| 亚洲欧美中文字幕5发布| 三年在线观看免费大全下载 | 国产久视频国内精品999| 免费人成黄页网站在线观看国产| 国产肥熟女免费一区二区| 精品久久久无码中字| 国产成人精品午夜福利免费APP| 亚洲高清中文字幕精品不卡| 精品女厕偷拍视频一区二区区| 亚洲精品白浆高清久久久久久| 成全视频高清免费| 韩国一级成a人片在线观看| 中文字幕亚洲乱码熟女1区2区| 亚洲人成网站色7799| 国产av无码专区亚洲av手机麻豆| 国产不卡在线免费视频| 久久一区二区三区久久久| 国产果冻豆传媒麻婆精东| 久久人人97超碰超国产|