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

        ?

        矩陣LED的顯示與滾動(dòng)拓展

        2014-07-28 05:50:04嚴(yán)海洲杜博聞
        電腦知識(shí)與技術(shù) 2014年18期
        關(guān)鍵詞:嵌入式系統(tǒng)

        嚴(yán)海洲++杜博聞

        摘要:矩陣LED實(shí)驗(yàn)是《嵌入式系統(tǒng)導(dǎo)論》課程的重要實(shí)驗(yàn)項(xiàng)目。通過層次化設(shè)置該精品實(shí)驗(yàn)項(xiàng)目的內(nèi)容和師生的有效互動(dòng),可以培養(yǎng)大多數(shù)本科生的創(chuàng)新思維和實(shí)踐技能。通過課程內(nèi)容設(shè)計(jì)、實(shí)驗(yàn)過程互動(dòng)和自主設(shè)計(jì)實(shí)驗(yàn)的創(chuàng)新引導(dǎo),課程延伸了學(xué)生的認(rèn)識(shí)和思維過程、引導(dǎo)和開發(fā)了學(xué)生的創(chuàng)新能力,從而讓他們在基礎(chǔ)實(shí)驗(yàn)結(jié)果上進(jìn)一步完成自主設(shè)計(jì)的實(shí)驗(yàn)內(nèi)容。四年來的教學(xué)實(shí)踐表明,本實(shí)驗(yàn)課程在本科生實(shí)踐創(chuàng)新能力培養(yǎng)方面取得了滿意的效果。

        關(guān)鍵詞:矩陣LED實(shí)驗(yàn);實(shí)踐創(chuàng)新能力引導(dǎo);嵌入式系統(tǒng)

        中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)18-4324-06

        The Expansion of The Displaying and Scrolling on Matrix LED

        YAN Hai-zhou, DU Bo-wen

        (School of Software Engineering, Tongji University, Shanghai 201804, China)

        Abstract: The matrix LED experiment is an important project for Introduction to Embedded System. By set up course contents at several levels and effective interaction between student and teacher in this elaborate experimental project, most undergraduates would develop innovative thinking and practical skills. By well-designed course contents, interaction and innovative guidance of self-designed experiments, this course helps the students extend their cognition and thinking, to guide and develop their innovation ability, and therefore, students could accomplish their self-designed experiments based on fundamental experiment. According to the feedback of four years teaching practice, this experimental item has received satisfying results in undergraduate practical and creative ability training.

        Key words: matrix LED experiment; practical and innovative ability guidance; embedded system

        本矩陣LED實(shí)驗(yàn)項(xiàng)目基于EmbestEduKit-IV(選用S3C2410處理器子板)教學(xué)實(shí)驗(yàn)平臺(tái),所有的實(shí)例代碼均在該教學(xué)實(shí)驗(yàn)平臺(tái)上運(yùn)行通過。

        矩陣LED實(shí)驗(yàn)是與《嵌入式系統(tǒng)導(dǎo)論》課程配套的一個(gè)綜合性實(shí)驗(yàn)項(xiàng)目,是整個(gè)嵌入式系統(tǒng)導(dǎo)論實(shí)驗(yàn)課程中的一個(gè)焦點(diǎn)和亮點(diǎn)。實(shí)驗(yàn)著重于培養(yǎng)學(xué)生的動(dòng)手能力和嵌入式開發(fā)平臺(tái)的基本應(yīng)用技能,使學(xué)生理解嵌入式系統(tǒng)和嵌入式軟件的特點(diǎn),掌握嵌入式軟件開發(fā)的基本特點(diǎn)、基本流程和基本方法。

        實(shí)驗(yàn)的設(shè)計(jì)目標(biāo)是培養(yǎng)學(xué)生綜合運(yùn)用知識(shí)能力、實(shí)踐能力和創(chuàng)新意識(shí)。整體上,考慮到嵌入式系統(tǒng)實(shí)驗(yàn)要求知識(shí)的多面性與綜合性,根據(jù)因材施教的教學(xué)原則,采用由基礎(chǔ)實(shí)驗(yàn)設(shè)計(jì)到高級實(shí)驗(yàn)拓展的分級設(shè)計(jì)思想。

        1 矩陣LED顯示基礎(chǔ)設(shè)計(jì)

        1.1 硬件原理

        本實(shí)驗(yàn)平臺(tái)設(shè)計(jì)了一個(gè)16×16的矩陣屏,屏上有16×16個(gè)LED發(fā)光二極管,每個(gè)發(fā)光二極管可理解為一個(gè)像素點(diǎn)(故又稱點(diǎn)陣LED,Dot LED),它們按行與列的形式整齊地排列,通過控制每個(gè)LED(像素點(diǎn))的亮滅,矩陣屏可以顯示英文文本、漢字,甚至圖形。本實(shí)驗(yàn)平臺(tái)的矩陣屏電路如圖1所示。

        矩陣屏上每一行16個(gè)LED,它們采用共陽極的接法;每一列16個(gè)LED,它們采用共陰極的接法。如圖1所示:QL1~QL16是矩陣屏的行驅(qū)動(dòng)信號(hào),每一個(gè)信號(hào)控制一行;LR1~LR16是矩陣屏的列驅(qū)動(dòng)信號(hào),每一個(gè)信號(hào)控制一列。故通過利用相應(yīng)行線輸出高電平,相應(yīng)列線輸出低電平,就可以點(diǎn)亮矩陣屏上相應(yīng)的LED。再結(jié)合一定的控制或掃描方法,就可以實(shí)現(xiàn)字幕、文字和圖形的顯示。

        1.2 軟件設(shè)計(jì)

        要在矩陣屏上顯示字母,就需要對字母編碼(即字庫碼),再根據(jù)編碼點(diǎn)亮矩陣屏上相應(yīng)的LED。字庫碼表明了顯示某個(gè)字母時(shí)矩陣屏上LED的亮滅布局,具體可見表1中示例的大寫字母R對應(yīng)的LED的亮滅布局。每一個(gè)LED燈的狀態(tài)用一位二進(jìn)制表示,1表示該LED亮,0表示該LED滅,一組16×8點(diǎn)陣的字庫碼,可以指定矩陣屏上16行8列LED的亮滅布局,每行8位正好為一個(gè)字節(jié),16行即為16個(gè)字節(jié)。為了準(zhǔn)確定位LED的亮滅布局,我們對不同的位設(shè)置不同的數(shù)值,表1顯示了大寫字母R的16進(jìn)制編碼經(jīng)2進(jìn)制到10進(jìn)制演化而來的過程。

        要在點(diǎn)陣屏上顯示字符或圖形,只需要按照字符或圖形的編碼,點(diǎn)亮矩陣屏上相應(yīng)的LED即可。在顯示時(shí),根據(jù)字庫碼,對矩陣屏逐行動(dòng)態(tài)掃描。函數(shù)的具體調(diào)用過程如下。

        1)main()主函數(shù)首先依次調(diào)用系統(tǒng)初始化行數(shù)和矩陣屏初始化函數(shù),然后調(diào)用char_out()字符輸出函數(shù),并向char_out()函數(shù)傳遞待輸出的字符。endprint

        2)char_out()字符輸出函數(shù)調(diào)用refresh_assic_buffer()顯示緩沖區(qū)刷新函數(shù),同時(shí)傳遞待輸出字符的字庫碼地址。

        void char_out(u8 font, u8 *str)

        {

        u8 *str_ptr;

        u8 glyph;

        glyph = ( u8 )*str;

        while(glyph != '\0' )

        {

        str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;

        refresh_assic_buffer(str_ptr); //顯示緩沖區(qū)刷新函數(shù)

        str++;

        glyph = ( u8 )*str;

        }}

        3)refresh_assic_buffer()顯示緩沖區(qū)刷新函數(shù)調(diào)用l_display_scroll()顯示滾動(dòng)驅(qū)動(dòng)函數(shù),同時(shí)傳遞顯示緩沖區(qū)的地址。

        在這里為了實(shí)現(xiàn)字符和圖片的動(dòng)態(tài)流動(dòng)顯示,程序設(shè)立了一個(gè)大小可容納3個(gè)字符字庫碼(3×16字節(jié))的緩沖區(qū),該緩沖區(qū)中每次保存3個(gè)字符的字庫碼。

        static void refresh_assic_buffer(u8 *str)

        {

        copy_data(&assic_buffer[0], &assic_buffer[16],16);

        copy_data(&assic_buffer[16], &assic_buffer[32],16);

        copy_data(&assic_buffer[32], str,16);

        l_display_scroll(assic_buffer); //顯示滾動(dòng)驅(qū)動(dòng)函數(shù)

        }

        4)l_display_scroll( )顯示滾動(dòng)驅(qū)動(dòng)函數(shù)先后調(diào)用refresh_l_display_array()顯示區(qū)字碼庫遞進(jìn)函數(shù)和led_update()矩陣屏亮滅更新函數(shù)。

        static void l_display_scroll ( u8 *str )

        {

        int i;

        for(i=0;i<8;i++)

        {

        refresh_l_display_array(i, str); //顯示區(qū)字碼庫遞進(jìn)函數(shù)

        led_update(); //矩陣屏亮滅更新函數(shù)

        } }

        5)refresh_l_display_array()顯示區(qū)字碼庫遞進(jìn)函數(shù)刷新每個(gè)顯示周期里矩陣屏上需要點(diǎn)亮的各像素點(diǎn)的對應(yīng)數(shù)據(jù),并寫入l_display_array[]數(shù)組。

        在本實(shí)驗(yàn)平臺(tái)上,矩陣屏為16×16點(diǎn)陣,每屏可顯示兩個(gè)字母。因此在顯示區(qū)字碼庫遞進(jìn)函數(shù)中,開辟有一個(gè)容量為2個(gè)字母字庫碼的顯示區(qū)。該顯示區(qū)用來接受經(jīng)顯示緩沖區(qū)刷新函數(shù)處理后傳遞過來的字庫碼。為后續(xù)程序根據(jù)顯示緩沖區(qū)的內(nèi)容控制點(diǎn)陣屏上LED燈的亮滅提供了前提。

        同樣,為了在后續(xù)的顯示過程中達(dá)到流動(dòng)的效果,在本程序里每次將該顯示區(qū)中的前兩個(gè)字符字庫碼的各字節(jié)左移bits位與其后第16字節(jié)右移8-bits位相或的結(jié)果復(fù)制到顯示區(qū)中,直到第一個(gè)字符完全移出、第三個(gè)字符完全移入時(shí),更新緩沖區(qū)。然后采用動(dòng)態(tài)掃描的方法來實(shí)現(xiàn)字符、圖形的顯示。每次掃描一行,這樣依次循環(huán)掃描16行,如此循環(huán)即可實(shí)現(xiàn)字符的流動(dòng)顯示。

        static void refresh_l_display_array(u8 bits, u8 *str)

        {

        u32 i;

        u32 remaining_bits = 8-bits;

        for(i=0;i<16;i++)

        {

        l_display_array[2*i] = (*str<>remaining_bits);

        l_display_array[2*(i+1)-1] = (*(str+16)<>remaining_bits);

        str++; //當(dāng)?shù)谝粋€(gè)字符完全移出、第三個(gè)字符完全移入時(shí),更新緩沖區(qū)

        }}

        6)led_update()矩陣屏亮滅更新函數(shù)首先是控制矩陣屏的刷新周期,或者說延時(shí)的時(shí)間,然后是調(diào)用led_char_disp()矩陣屏顯示函數(shù)。

        static void led_update(void)

        {

        int j = 20;

        while(j—) //控制矩陣屏的刷新周期

        {

        led_char_disp();

        }}

        7)led_char_disp()矩陣屏顯示函數(shù)根據(jù)l_display_array[]數(shù)組中的值點(diǎn)亮矩陣屏中對應(yīng)的像素點(diǎn),最終完成一個(gè)顯示周期里的矩陣屏顯示。為了能夠穩(wěn)定地控制點(diǎn)陣屏的顯示,實(shí)驗(yàn)平臺(tái)采用CD4094作為行線和列線掃描信號(hào)的控制芯片。掃描時(shí),行線的數(shù)據(jù)與列線的數(shù)據(jù)都通過CD4094鎖存起來,然后經(jīng)過片選使能再同時(shí)輸出。經(jīng)過前述的延時(shí)處理,就可以實(shí)現(xiàn)字符、圖片的動(dòng)態(tài)顯示。當(dāng)矩陣屏顯示一個(gè)字符或圖案時(shí),該字符或圖案對應(yīng)段的LED發(fā)光二極管是輪流點(diǎn)亮的,即控制信號(hào)按一定周期有效。在輪流點(diǎn)亮的過程中,點(diǎn)亮?xí)r間極為短暫(約1ms),由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),矩陣屏的顯示依然是非常清晰、穩(wěn)定的。

        void led_char_disp(void)

        {

        UINT8T i=0;

        UINT8T j=2,k=0;

        UINT16T x;

        for(i = 0; i < 32; i++)

        dispram[i] = ~l_display_array[i];

        i=0;

        while(i < 16)

        {

        Rstr_L; // Enable RSTR

        Lstr_L; // Enable LSTR

        DisEn_Dataout; // lock the data

        do { // Write the row data

        j—;

        write_R4094(dispram[i * 2 + j]);

        }while(j);

        x=~(0x8000 >> i); // Write one list data

        write_L4094(x);

        En_Dataout; // Output the data

        for(k = 0;k < 250; k++);

        i++;

        j = 2;

        }}

        2 矩陣LED顯示內(nèi)容的拓展

        用矩陣屏的一半16×8點(diǎn)陣顯示一個(gè)字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時(shí)就有些困難了。這就需要使用整個(gè)矩陣屏的16×16點(diǎn)陣來顯示。表2顯示了漢字“嚴(yán)”的16進(jìn)制編碼經(jīng)2進(jìn)制到10進(jìn)制演化而來的過程。

        可見,顯示漢字的時(shí)候,在矩陣屏上實(shí)際采用的是一種左右拼接的方法。在程序里的實(shí)現(xiàn)方法是:首先在按照ASCII碼值的順序編制的常用字符的字碼庫里挑選2個(gè)在你的應(yīng)用中沒有用到的2個(gè)字符,如$和%,把$在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的左半邊的16進(jìn)制編碼,同樣把%在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的右半邊的16進(jìn)制編碼。但在main()函數(shù)中,調(diào)用char_out()函數(shù)時(shí)要寫作char_out(0,"$%"),而不能寫作char_out(0,"嚴(yán)"),原因是只有這樣char_out()函數(shù)中的“str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;”語句才能順利根據(jù)$和%的ASCII碼值找到“嚴(yán)”的左右部分在字碼庫中的編碼。圖1便是根據(jù)此辦法編碼并成功顯示的漢字“嘉”,其中第三筆“一”上有兩個(gè)斷點(diǎn),就是因?yàn)榫幋a時(shí)有意把這2個(gè)應(yīng)該設(shè)置為1的像素設(shè)置為0了。

        同樣道理,如果你要做一個(gè)愛心的圖案“?”,你也可以對這顆愛心的左右部分分別編碼。任何其他較大的圖案你都可以分為左右兩部分分別編碼。

        3 矩陣LED顯示方法的拓展

        在矩陣LED實(shí)驗(yàn)中可以較自由地創(chuàng)造一些獨(dú)特、新穎的設(shè)計(jì):如字符的陰陽文反轉(zhuǎn)、字符和背景的反轉(zhuǎn)、字符顯示的正向和反向循環(huán),等等?,F(xiàn)擇要說明若干。

        3.1 字符顯示由正向循環(huán)改為反向循環(huán)

        1) 修改refresh_l_display_array()顯示區(qū)字碼庫遞進(jìn)函數(shù),改變其顯示字符的順序和顯示的滾動(dòng)方向。

        {

        l_display_array[2*(i+1)-1] = (*(str+32)>>bits) |(*(str+16)<

        l_display_array[2*i] = (*(str+16)>>bits) |(*(str)<

        str++;

        }

        2) 修改refresh_assic_buffer()顯示緩沖區(qū)刷新函數(shù),改變其讀取字庫碼的方向。

        static void refresh_assic_buffer(u8 *str)

        {

        copy_data(&assic_buffer[32], &assic_buffer[16],16);

        copy_data(&assic_buffer[16], &assic_buffer[0],16);

        copy_data(&assic_buffer[0], str,16);

        l_display_scroll(assic_buffer);

        }

        3) 修改后的程序運(yùn)行結(jié)果見圖2,原本正向左循環(huán)的“I?U”變?yōu)榉聪蛴已h(huán)了。

        圖2 反向右循環(huán)的“I?U”的局部顯示

        3.2 字符的陽刻和陰刻效果

        所謂字符陽刻的效果是指實(shí)心字,字符陰刻的效果是指空心字。

        1) 方法一:修改字符的字庫碼。

        將原本陽刻的字符的字庫碼,按位取反,使得在矩陣屏上原本亮的LED二極管不亮,原本不亮的設(shè)置為亮。圖3就是同時(shí)顯示的陰刻和陽刻的、筆畫較少的漢字亓(音 qí )。

        2) 方法二:修改led_char_disp()矩陣屏顯示函數(shù)。對顯示數(shù)組l_display_array[]中的值不再按位取反。

        for(i = 0; i < 32; i++)

        dispram[i] = l_display_array[i];

        圖3 陰刻和陽刻的漢字“亓”

        4 結(jié)束語

        在實(shí)驗(yàn)課中,先是簡短的演示,讓學(xué)生們看到實(shí)驗(yàn)的結(jié)果,并提示他們觀察的要點(diǎn),然后的教學(xué)過程按照“講、做、思、創(chuàng)”的四階段模式開展。

        講,即實(shí)驗(yàn)項(xiàng)目相關(guān)知識(shí)的講解。重點(diǎn)講解在實(shí)驗(yàn)過程中涉及到的理論知識(shí),可能會(huì)遇到的問題以及一些具體的建議。對于樣例代碼進(jìn)行簡單的分析,解釋其運(yùn)行機(jī)理,提示學(xué)生在樣例代碼的基礎(chǔ)之上可實(shí)施的創(chuàng)新方向。

        做,即帶領(lǐng)同學(xué)們實(shí)施實(shí)驗(yàn)項(xiàng)目。讓每個(gè)學(xué)生自己動(dòng)手實(shí)際參與到實(shí)驗(yàn)中去,老師與助教在課堂內(nèi)巡回協(xié)助解決他們在實(shí)驗(yàn)中遇到的各種問題。讓學(xué)生了解嵌入式系統(tǒng)設(shè)備配置的基本過程,應(yīng)對不同外設(shè)條件的設(shè)置與調(diào)用方法,熟悉和理解整個(gè)項(xiàng)目實(shí)現(xiàn)的軟硬件基礎(chǔ)、程序的調(diào)用機(jī)制和硬件的工作過程。

        思,提出若干問題供學(xué)生思考實(shí)踐。幫助他們在現(xiàn)有實(shí)驗(yàn)平臺(tái)上了解到更多的知識(shí),思考更多可以調(diào)用的功能和應(yīng)用。針對樣例代碼本身提出一些思考方向;或者對原有代碼的執(zhí)行效率提出改進(jìn),分析思路與方法。

        創(chuàng),指導(dǎo)學(xué)生在完成思考題以后按照自己設(shè)想的思路去創(chuàng)造新的實(shí)驗(yàn)結(jié)果。以實(shí)驗(yàn)內(nèi)容為依托,引導(dǎo)學(xué)生加入自己的思考,去構(gòu)思和實(shí)現(xiàn)新的功能,達(dá)到能夠靈活運(yùn)用現(xiàn)有專業(yè)知識(shí)的目的。在原有樣例代碼的基礎(chǔ)之上,實(shí)現(xiàn)新的功能擴(kuò)展與應(yīng)用。

        培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新精神是當(dāng)前實(shí)驗(yàn)教學(xué)的一個(gè)重要問題。要在實(shí)驗(yàn)過程中,抓住學(xué)生的注意力、調(diào)動(dòng)他們的積極性和主動(dòng)性,就必須注意實(shí)驗(yàn)內(nèi)容的趣味性、實(shí)驗(yàn)內(nèi)容的可塑性和實(shí)驗(yàn)難度的層次性,讓每個(gè)學(xué)生都有自己思考和動(dòng)手的空間。學(xué)生思考、嘗試和提問的實(shí)驗(yàn)過程,就是他們不斷分析問題和解決問題的過程,這是學(xué)生實(shí)踐技能和創(chuàng)新能力培養(yǎng)的有效方法。

        參考文獻(xiàn):

        [1] Embest教學(xué)業(yè)務(wù)線.基于S3C2410嵌入式MDK開發(fā)實(shí)驗(yàn)與實(shí)踐[M].深圳市英蓓特信息技術(shù)有限公司, 2008:156-161.

        [2] 徐寧.“精品實(shí)驗(yàn)項(xiàng)目”建設(shè)重在詮釋經(jīng)典和方法創(chuàng)新[J].實(shí)驗(yàn)室研究與探索,2013,32(2):112-115.

        [3] 魏恒義.計(jì)算機(jī)網(wǎng)絡(luò)專題實(shí)驗(yàn)中的創(chuàng)新能力培養(yǎng)[J].實(shí)驗(yàn)室研究與探索,2013,32(8):97-101.

        void led_char_disp(void)

        {

        UINT8T i=0;

        UINT8T j=2,k=0;

        UINT16T x;

        for(i = 0; i < 32; i++)

        dispram[i] = ~l_display_array[i];

        i=0;

        while(i < 16)

        {

        Rstr_L; // Enable RSTR

        Lstr_L; // Enable LSTR

        DisEn_Dataout; // lock the data

        do { // Write the row data

        j—;

        write_R4094(dispram[i * 2 + j]);

        }while(j);

        x=~(0x8000 >> i); // Write one list data

        write_L4094(x);

        En_Dataout; // Output the data

        for(k = 0;k < 250; k++);

        i++;

        j = 2;

        }}

        2 矩陣LED顯示內(nèi)容的拓展

        用矩陣屏的一半16×8點(diǎn)陣顯示一個(gè)字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時(shí)就有些困難了。這就需要使用整個(gè)矩陣屏的16×16點(diǎn)陣來顯示。表2顯示了漢字“嚴(yán)”的16進(jìn)制編碼經(jīng)2進(jìn)制到10進(jìn)制演化而來的過程。

        可見,顯示漢字的時(shí)候,在矩陣屏上實(shí)際采用的是一種左右拼接的方法。在程序里的實(shí)現(xiàn)方法是:首先在按照ASCII碼值的順序編制的常用字符的字碼庫里挑選2個(gè)在你的應(yīng)用中沒有用到的2個(gè)字符,如$和%,把$在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的左半邊的16進(jìn)制編碼,同樣把%在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的右半邊的16進(jìn)制編碼。但在main()函數(shù)中,調(diào)用char_out()函數(shù)時(shí)要寫作char_out(0,"$%"),而不能寫作char_out(0,"嚴(yán)"),原因是只有這樣char_out()函數(shù)中的“str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;”語句才能順利根據(jù)$和%的ASCII碼值找到“嚴(yán)”的左右部分在字碼庫中的編碼。圖1便是根據(jù)此辦法編碼并成功顯示的漢字“嘉”,其中第三筆“一”上有兩個(gè)斷點(diǎn),就是因?yàn)榫幋a時(shí)有意把這2個(gè)應(yīng)該設(shè)置為1的像素設(shè)置為0了。

        同樣道理,如果你要做一個(gè)愛心的圖案“?”,你也可以對這顆愛心的左右部分分別編碼。任何其他較大的圖案你都可以分為左右兩部分分別編碼。

        3 矩陣LED顯示方法的拓展

        在矩陣LED實(shí)驗(yàn)中可以較自由地創(chuàng)造一些獨(dú)特、新穎的設(shè)計(jì):如字符的陰陽文反轉(zhuǎn)、字符和背景的反轉(zhuǎn)、字符顯示的正向和反向循環(huán),等等。現(xiàn)擇要說明若干。

        3.1 字符顯示由正向循環(huán)改為反向循環(huán)

        1) 修改refresh_l_display_array()顯示區(qū)字碼庫遞進(jìn)函數(shù),改變其顯示字符的順序和顯示的滾動(dòng)方向。

        {

        l_display_array[2*(i+1)-1] = (*(str+32)>>bits) |(*(str+16)<

        l_display_array[2*i] = (*(str+16)>>bits) |(*(str)<

        str++;

        }

        2) 修改refresh_assic_buffer()顯示緩沖區(qū)刷新函數(shù),改變其讀取字庫碼的方向。

        static void refresh_assic_buffer(u8 *str)

        {

        copy_data(&assic_buffer[32], &assic_buffer[16],16);

        copy_data(&assic_buffer[16], &assic_buffer[0],16);

        copy_data(&assic_buffer[0], str,16);

        l_display_scroll(assic_buffer);

        }

        3) 修改后的程序運(yùn)行結(jié)果見圖2,原本正向左循環(huán)的“I?U”變?yōu)榉聪蛴已h(huán)了。

        圖2 反向右循環(huán)的“I?U”的局部顯示

        3.2 字符的陽刻和陰刻效果

        所謂字符陽刻的效果是指實(shí)心字,字符陰刻的效果是指空心字。

        1) 方法一:修改字符的字庫碼。

        將原本陽刻的字符的字庫碼,按位取反,使得在矩陣屏上原本亮的LED二極管不亮,原本不亮的設(shè)置為亮。圖3就是同時(shí)顯示的陰刻和陽刻的、筆畫較少的漢字亓(音 qí )。

        2) 方法二:修改led_char_disp()矩陣屏顯示函數(shù)。對顯示數(shù)組l_display_array[]中的值不再按位取反。

        for(i = 0; i < 32; i++)

        dispram[i] = l_display_array[i];

        圖3 陰刻和陽刻的漢字“亓”

        4 結(jié)束語

        在實(shí)驗(yàn)課中,先是簡短的演示,讓學(xué)生們看到實(shí)驗(yàn)的結(jié)果,并提示他們觀察的要點(diǎn),然后的教學(xué)過程按照“講、做、思、創(chuàng)”的四階段模式開展。

        講,即實(shí)驗(yàn)項(xiàng)目相關(guān)知識(shí)的講解。重點(diǎn)講解在實(shí)驗(yàn)過程中涉及到的理論知識(shí),可能會(huì)遇到的問題以及一些具體的建議。對于樣例代碼進(jìn)行簡單的分析,解釋其運(yùn)行機(jī)理,提示學(xué)生在樣例代碼的基礎(chǔ)之上可實(shí)施的創(chuàng)新方向。

        做,即帶領(lǐng)同學(xué)們實(shí)施實(shí)驗(yàn)項(xiàng)目。讓每個(gè)學(xué)生自己動(dòng)手實(shí)際參與到實(shí)驗(yàn)中去,老師與助教在課堂內(nèi)巡回協(xié)助解決他們在實(shí)驗(yàn)中遇到的各種問題。讓學(xué)生了解嵌入式系統(tǒng)設(shè)備配置的基本過程,應(yīng)對不同外設(shè)條件的設(shè)置與調(diào)用方法,熟悉和理解整個(gè)項(xiàng)目實(shí)現(xiàn)的軟硬件基礎(chǔ)、程序的調(diào)用機(jī)制和硬件的工作過程。

        思,提出若干問題供學(xué)生思考實(shí)踐。幫助他們在現(xiàn)有實(shí)驗(yàn)平臺(tái)上了解到更多的知識(shí),思考更多可以調(diào)用的功能和應(yīng)用。針對樣例代碼本身提出一些思考方向;或者對原有代碼的執(zhí)行效率提出改進(jìn),分析思路與方法。

        創(chuàng),指導(dǎo)學(xué)生在完成思考題以后按照自己設(shè)想的思路去創(chuàng)造新的實(shí)驗(yàn)結(jié)果。以實(shí)驗(yàn)內(nèi)容為依托,引導(dǎo)學(xué)生加入自己的思考,去構(gòu)思和實(shí)現(xiàn)新的功能,達(dá)到能夠靈活運(yùn)用現(xiàn)有專業(yè)知識(shí)的目的。在原有樣例代碼的基礎(chǔ)之上,實(shí)現(xiàn)新的功能擴(kuò)展與應(yīng)用。

        培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新精神是當(dāng)前實(shí)驗(yàn)教學(xué)的一個(gè)重要問題。要在實(shí)驗(yàn)過程中,抓住學(xué)生的注意力、調(diào)動(dòng)他們的積極性和主動(dòng)性,就必須注意實(shí)驗(yàn)內(nèi)容的趣味性、實(shí)驗(yàn)內(nèi)容的可塑性和實(shí)驗(yàn)難度的層次性,讓每個(gè)學(xué)生都有自己思考和動(dòng)手的空間。學(xué)生思考、嘗試和提問的實(shí)驗(yàn)過程,就是他們不斷分析問題和解決問題的過程,這是學(xué)生實(shí)踐技能和創(chuàng)新能力培養(yǎng)的有效方法。

        參考文獻(xiàn):

        [1] Embest教學(xué)業(yè)務(wù)線.基于S3C2410嵌入式MDK開發(fā)實(shí)驗(yàn)與實(shí)踐[M].深圳市英蓓特信息技術(shù)有限公司, 2008:156-161.

        [2] 徐寧.“精品實(shí)驗(yàn)項(xiàng)目”建設(shè)重在詮釋經(jīng)典和方法創(chuàng)新[J].實(shí)驗(yàn)室研究與探索,2013,32(2):112-115.

        [3] 魏恒義.計(jì)算機(jī)網(wǎng)絡(luò)專題實(shí)驗(yàn)中的創(chuàng)新能力培養(yǎng)[J].實(shí)驗(yàn)室研究與探索,2013,32(8):97-101.

        void led_char_disp(void)

        {

        UINT8T i=0;

        UINT8T j=2,k=0;

        UINT16T x;

        for(i = 0; i < 32; i++)

        dispram[i] = ~l_display_array[i];

        i=0;

        while(i < 16)

        {

        Rstr_L; // Enable RSTR

        Lstr_L; // Enable LSTR

        DisEn_Dataout; // lock the data

        do { // Write the row data

        j—;

        write_R4094(dispram[i * 2 + j]);

        }while(j);

        x=~(0x8000 >> i); // Write one list data

        write_L4094(x);

        En_Dataout; // Output the data

        for(k = 0;k < 250; k++);

        i++;

        j = 2;

        }}

        2 矩陣LED顯示內(nèi)容的拓展

        用矩陣屏的一半16×8點(diǎn)陣顯示一個(gè)字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時(shí)就有些困難了。這就需要使用整個(gè)矩陣屏的16×16點(diǎn)陣來顯示。表2顯示了漢字“嚴(yán)”的16進(jìn)制編碼經(jīng)2進(jìn)制到10進(jìn)制演化而來的過程。

        可見,顯示漢字的時(shí)候,在矩陣屏上實(shí)際采用的是一種左右拼接的方法。在程序里的實(shí)現(xiàn)方法是:首先在按照ASCII碼值的順序編制的常用字符的字碼庫里挑選2個(gè)在你的應(yīng)用中沒有用到的2個(gè)字符,如$和%,把$在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的左半邊的16進(jìn)制編碼,同樣把%在字碼庫中的16進(jìn)制編碼替換為“嚴(yán)”的右半邊的16進(jìn)制編碼。但在main()函數(shù)中,調(diào)用char_out()函數(shù)時(shí)要寫作char_out(0,"$%"),而不能寫作char_out(0,"嚴(yán)"),原因是只有這樣char_out()函數(shù)中的“str_ptr = fonts[font].ascii_code + ( glyph - fonts[font].ascii_beg) * fonts[font].ascii_height;”語句才能順利根據(jù)$和%的ASCII碼值找到“嚴(yán)”的左右部分在字碼庫中的編碼。圖1便是根據(jù)此辦法編碼并成功顯示的漢字“嘉”,其中第三筆“一”上有兩個(gè)斷點(diǎn),就是因?yàn)榫幋a時(shí)有意把這2個(gè)應(yīng)該設(shè)置為1的像素設(shè)置為0了。

        同樣道理,如果你要做一個(gè)愛心的圖案“?”,你也可以對這顆愛心的左右部分分別編碼。任何其他較大的圖案你都可以分為左右兩部分分別編碼。

        3 矩陣LED顯示方法的拓展

        在矩陣LED實(shí)驗(yàn)中可以較自由地創(chuàng)造一些獨(dú)特、新穎的設(shè)計(jì):如字符的陰陽文反轉(zhuǎn)、字符和背景的反轉(zhuǎn)、字符顯示的正向和反向循環(huán),等等?,F(xiàn)擇要說明若干。

        3.1 字符顯示由正向循環(huán)改為反向循環(huán)

        1) 修改refresh_l_display_array()顯示區(qū)字碼庫遞進(jìn)函數(shù),改變其顯示字符的順序和顯示的滾動(dòng)方向。

        {

        l_display_array[2*(i+1)-1] = (*(str+32)>>bits) |(*(str+16)<

        l_display_array[2*i] = (*(str+16)>>bits) |(*(str)<

        str++;

        }

        2) 修改refresh_assic_buffer()顯示緩沖區(qū)刷新函數(shù),改變其讀取字庫碼的方向。

        static void refresh_assic_buffer(u8 *str)

        {

        copy_data(&assic_buffer[32], &assic_buffer[16],16);

        copy_data(&assic_buffer[16], &assic_buffer[0],16);

        copy_data(&assic_buffer[0], str,16);

        l_display_scroll(assic_buffer);

        }

        3) 修改后的程序運(yùn)行結(jié)果見圖2,原本正向左循環(huán)的“I?U”變?yōu)榉聪蛴已h(huán)了。

        圖2 反向右循環(huán)的“I?U”的局部顯示

        3.2 字符的陽刻和陰刻效果

        所謂字符陽刻的效果是指實(shí)心字,字符陰刻的效果是指空心字。

        1) 方法一:修改字符的字庫碼。

        將原本陽刻的字符的字庫碼,按位取反,使得在矩陣屏上原本亮的LED二極管不亮,原本不亮的設(shè)置為亮。圖3就是同時(shí)顯示的陰刻和陽刻的、筆畫較少的漢字亓(音 qí )。

        2) 方法二:修改led_char_disp()矩陣屏顯示函數(shù)。對顯示數(shù)組l_display_array[]中的值不再按位取反。

        for(i = 0; i < 32; i++)

        dispram[i] = l_display_array[i];

        圖3 陰刻和陽刻的漢字“亓”

        4 結(jié)束語

        在實(shí)驗(yàn)課中,先是簡短的演示,讓學(xué)生們看到實(shí)驗(yàn)的結(jié)果,并提示他們觀察的要點(diǎn),然后的教學(xué)過程按照“講、做、思、創(chuàng)”的四階段模式開展。

        講,即實(shí)驗(yàn)項(xiàng)目相關(guān)知識(shí)的講解。重點(diǎn)講解在實(shí)驗(yàn)過程中涉及到的理論知識(shí),可能會(huì)遇到的問題以及一些具體的建議。對于樣例代碼進(jìn)行簡單的分析,解釋其運(yùn)行機(jī)理,提示學(xué)生在樣例代碼的基礎(chǔ)之上可實(shí)施的創(chuàng)新方向。

        做,即帶領(lǐng)同學(xué)們實(shí)施實(shí)驗(yàn)項(xiàng)目。讓每個(gè)學(xué)生自己動(dòng)手實(shí)際參與到實(shí)驗(yàn)中去,老師與助教在課堂內(nèi)巡回協(xié)助解決他們在實(shí)驗(yàn)中遇到的各種問題。讓學(xué)生了解嵌入式系統(tǒng)設(shè)備配置的基本過程,應(yīng)對不同外設(shè)條件的設(shè)置與調(diào)用方法,熟悉和理解整個(gè)項(xiàng)目實(shí)現(xiàn)的軟硬件基礎(chǔ)、程序的調(diào)用機(jī)制和硬件的工作過程。

        思,提出若干問題供學(xué)生思考實(shí)踐。幫助他們在現(xiàn)有實(shí)驗(yàn)平臺(tái)上了解到更多的知識(shí),思考更多可以調(diào)用的功能和應(yīng)用。針對樣例代碼本身提出一些思考方向;或者對原有代碼的執(zhí)行效率提出改進(jìn),分析思路與方法。

        創(chuàng),指導(dǎo)學(xué)生在完成思考題以后按照自己設(shè)想的思路去創(chuàng)造新的實(shí)驗(yàn)結(jié)果。以實(shí)驗(yàn)內(nèi)容為依托,引導(dǎo)學(xué)生加入自己的思考,去構(gòu)思和實(shí)現(xiàn)新的功能,達(dá)到能夠靈活運(yùn)用現(xiàn)有專業(yè)知識(shí)的目的。在原有樣例代碼的基礎(chǔ)之上,實(shí)現(xiàn)新的功能擴(kuò)展與應(yīng)用。

        培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新精神是當(dāng)前實(shí)驗(yàn)教學(xué)的一個(gè)重要問題。要在實(shí)驗(yàn)過程中,抓住學(xué)生的注意力、調(diào)動(dòng)他們的積極性和主動(dòng)性,就必須注意實(shí)驗(yàn)內(nèi)容的趣味性、實(shí)驗(yàn)內(nèi)容的可塑性和實(shí)驗(yàn)難度的層次性,讓每個(gè)學(xué)生都有自己思考和動(dòng)手的空間。學(xué)生思考、嘗試和提問的實(shí)驗(yàn)過程,就是他們不斷分析問題和解決問題的過程,這是學(xué)生實(shí)踐技能和創(chuàng)新能力培養(yǎng)的有效方法。

        參考文獻(xiàn):

        [1] Embest教學(xué)業(yè)務(wù)線.基于S3C2410嵌入式MDK開發(fā)實(shí)驗(yàn)與實(shí)踐[M].深圳市英蓓特信息技術(shù)有限公司, 2008:156-161.

        [2] 徐寧.“精品實(shí)驗(yàn)項(xiàng)目”建設(shè)重在詮釋經(jīng)典和方法創(chuàng)新[J].實(shí)驗(yàn)室研究與探索,2013,32(2):112-115.

        [3] 魏恒義.計(jì)算機(jī)網(wǎng)絡(luò)專題實(shí)驗(yàn)中的創(chuàng)新能力培養(yǎng)[J].實(shí)驗(yàn)室研究與探索,2013,32(8):97-101.

        猜你喜歡
        嵌入式系統(tǒng)
        Teaching Research on IoT and—Embedded System of Software Engineering
        基于Xilinx口袋實(shí)驗(yàn)室的組合邏輯電路設(shè)計(jì)實(shí)驗(yàn)
        面向應(yīng)用的智能專業(yè)嵌入式系統(tǒng)教學(xué)
        基于物聯(lián)網(wǎng)的遠(yuǎn)程紅外控制器
        嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
        基于AVR單片機(jī)的SPI接口設(shè)計(jì)與實(shí)現(xiàn)
        辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)
        嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
        基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
        嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
        久久免费精品国产72精品剧情| 精品久久久无码人妻中文字幕豆芽| 亚洲av无码国产精品色软件下戴| 亚洲Va欧美va国产综合| 国产成人av综合色| 亚洲精品一区二区网站| 午夜熟女插插xx免费视频| 国产精品久久久久久52avav| 伊人久久亚洲综合影院首页| 精品人妻夜夜爽一区二区| 手机在线免费av资源网| 亚洲精品久久久久中文字幕一福利| 欧美在线综合| 国产精品三级自产拍av| 懂色av一区二区三区尤物| 久久久久久国产精品mv| 国产精品区一区二区三在线播放| 国产一级av理论手机在线| 亚洲国产色一区二区三区 | 国产精品美女AV免费观看| 亚洲综合伊人久久综合| 国产69精品久久久久9999apgf| 手机在线看永久av片免费| 亚洲成Av人片不卡无码观看| 极品夫妻一区二区三区| 国产色在线 | 日韩| 国产成人无码aⅴ片在线观看| 国产精品亚洲av国产| 日本一区三区三区在线观看| 亚洲精品国产av天美传媒| 大陆国产乱人伦| 81久久免费精品国产色夜| 国产夫妇肉麻对白| 久久久久亚洲av无码尤物| 韩国免费一级a一片在线| 国产一区二区三区不卡在线观看| 国产午夜福利片| 亚洲另在线日韩综合色| 午夜视频一区二区在线观看| 好紧好爽免费午夜视频| 日本一区不卡在线|