• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      矩陣LED的顯示與滾動拓展

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

      嚴海洲++杜博聞

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

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

      中圖分類號:TP393 文獻標識碼:A 文章編號: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實驗項目基于EmbestEduKit-IV(選用S3C2410處理器子板)教學(xué)實驗平臺,所有的實例代碼均在該教學(xué)實驗平臺上運行通過。

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

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

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

      1.1 硬件原理

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

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

      1.2 軟件設(shè)計

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

      要在點陣屏上顯示字符或圖形,只需要按照字符或圖形的編碼,點亮矩陣屏上相應(yīng)的LED即可。在顯示時,根據(jù)字庫碼,對矩陣屏逐行動態(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ù),同時傳遞待輸出字符的字庫碼地址。

      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()顯示滾動驅(qū)動函數(shù),同時傳遞顯示緩沖區(qū)的地址。

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

      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); //顯示滾動驅(qū)動函數(shù)

      }

      4)l_display_scroll( )顯示滾動驅(qū)動函數(shù)先后調(diào)用refresh_l_display_array()顯示區(qū)字碼庫遞進函數(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ū)字碼庫遞進函數(shù)

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

      } }

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

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

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

      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++; //當?shù)谝粋€字符完全移出、第三個字符完全移入時,更新緩沖區(qū)

      }}

      6)led_update()矩陣屏亮滅更新函數(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ù)組中的值點亮矩陣屏中對應(yīng)的像素點,最終完成一個顯示周期里的矩陣屏顯示。為了能夠穩(wěn)定地控制點陣屏的顯示,實驗平臺采用CD4094作為行線和列線掃描信號的控制芯片。掃描時,行線的數(shù)據(jù)與列線的數(shù)據(jù)都通過CD4094鎖存起來,然后經(jīng)過片選使能再同時輸出。經(jīng)過前述的延時處理,就可以實現(xiàn)字符、圖片的動態(tài)顯示。當矩陣屏顯示一個字符或圖案時,該字符或圖案對應(yīng)段的LED發(fā)光二極管是輪流點亮的,即控制信號按一定周期有效。在輪流點亮的過程中,點亮?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點陣顯示一個字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時就有些困難了。這就需要使用整個矩陣屏的16×16點陣來顯示。表2顯示了漢字“嚴”的16進制編碼經(jīng)2進制到10進制演化而來的過程。

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

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

      3 矩陣LED顯示方法的拓展

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

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

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

      {

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

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

      3.2 字符的陽刻和陰刻效果

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

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

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

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

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

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

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

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

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

      參考文獻:

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

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

      [3] 魏恒義.計算機網(wǎng)絡(luò)專題實驗中的創(chuàng)新能力培養(yǎng)[J].實驗室研究與探索,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點陣顯示一個字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時就有些困難了。這就需要使用整個矩陣屏的16×16點陣來顯示。表2顯示了漢字“嚴”的16進制編碼經(jīng)2進制到10進制演化而來的過程。

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

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

      3 矩陣LED顯示方法的拓展

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

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

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

      {

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

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

      3.2 字符的陽刻和陰刻效果

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

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

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

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

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

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

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

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

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

      參考文獻:

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

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

      [3] 魏恒義.計算機網(wǎng)絡(luò)專題實驗中的創(chuàng)新能力培養(yǎng)[J].實驗室研究與探索,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點陣顯示一個字母之類簡單字符是沒有問題,但要顯示漢字、尤其是復(fù)雜的漢字時就有些困難了。這就需要使用整個矩陣屏的16×16點陣來顯示。表2顯示了漢字“嚴”的16進制編碼經(jīng)2進制到10進制演化而來的過程。

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

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

      3 矩陣LED顯示方法的拓展

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

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

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

      {

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

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

      3.2 字符的陽刻和陰刻效果

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

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

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

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

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

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

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

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

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

      參考文獻:

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

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

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

      猜你喜歡
      嵌入式系統(tǒng)
      Teaching Research on IoT and—Embedded System of Software Engineering
      計算機教育(2016年8期)2016-12-24 10:34:05
      基于Xilinx口袋實驗室的組合邏輯電路設(shè)計實驗
      面向應(yīng)用的智能專業(yè)嵌入式系統(tǒng)教學(xué)
      基于物聯(lián)網(wǎng)的遠程紅外控制器
      嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
      基于AVR單片機的SPI接口設(shè)計與實現(xiàn)
      辦公自動化系統(tǒng)的設(shè)計
      嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
      基于物聯(lián)網(wǎng)項目驅(qū)動的嵌入式系統(tǒng)教學(xué)改革的研究與實踐
      嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實踐及啟示
      計算機教育(2016年7期)2016-11-10 08:31:34
      永善县| 光山县| 温宿县| 德化县| 铁岭市| 漾濞| 揭阳市| 鞍山市| 乌拉特前旗| 鸡泽县| 青川县| 甘德县| 会宁县| 岚皋县| 志丹县| 广南县| 铜山县| 绥中县| 永平县| 安新县| 涿州市| 兴化市| 开阳县| 巴林左旗| 富顺县| 龙井市| 云梦县| 青浦区| 策勒县| 岑巩县| 徐州市| 合山市| 金溪县| 电白县| 宿松县| 蒲江县| 舟山市| 得荣县| 久治县| 秭归县| 碌曲县|