《單片機(jī)技術(shù)》課件項(xiàng)目七 單片機(jī)門店招牌系統(tǒng)設(shè)計(jì)_第1頁
《單片機(jī)技術(shù)》課件項(xiàng)目七 單片機(jī)門店招牌系統(tǒng)設(shè)計(jì)_第2頁
《單片機(jī)技術(shù)》課件項(xiàng)目七 單片機(jī)門店招牌系統(tǒng)設(shè)計(jì)_第3頁
《單片機(jī)技術(shù)》課件項(xiàng)目七 單片機(jī)門店招牌系統(tǒng)設(shè)計(jì)_第4頁
《單片機(jī)技術(shù)》課件項(xiàng)目七 單片機(jī)門店招牌系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、學(xué)習(xí)目標(biāo)1.了解點(diǎn)陣的硬件結(jié)構(gòu)。2.掌握單片機(jī)驅(qū)動8*8點(diǎn)陣方法。3.掌握單片機(jī)驅(qū)動16*16點(diǎn)陣方法。4.掌握點(diǎn)陣的動態(tài)顯示方法。5.掌握點(diǎn)陣顯示內(nèi)容動態(tài)更新方法。二、學(xué)習(xí)任務(wù)任務(wù)一8*8點(diǎn)陣的使用;任務(wù)二16*16點(diǎn)陣的使用;任務(wù)三16*64點(diǎn)陣的使用。三、任務(wù)分解任務(wù)一8*8點(diǎn)陣的使用【任務(wù)描述】隨著信息產(chǎn)業(yè)的高速發(fā)展,LED顯示屏作為信息傳播的一種重要手段成為現(xiàn)代信息化社會的一個閃亮標(biāo)志。近年LED顯示屏已廣泛應(yīng)用于室內(nèi)、外需要進(jìn)行服務(wù)內(nèi)容和服務(wù)宗旨宣傳的公眾場所如銀行、營業(yè)部、車站、機(jī)場、港口、體育場館等信息的發(fā)布,政府機(jī)關(guān)政策、政令,各類市場行情信息的發(fā)部和宣傳等。漢字顯示方式是先根據(jù)所需要的漢字提取漢字點(diǎn)陣,將點(diǎn)陣文件存入ROM,形成新的漢字編碼。而在使用時則需要先根據(jù)新的漢字編碼組成語言,再由MCU根據(jù)新編碼提取相應(yīng)的點(diǎn)陣進(jìn)行漢字顯示。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。【任務(wù)分析】無論是單個發(fā)光二極管還是數(shù)碼管,都不能顯示字符漢字和一些特殊字符,更不能顯示復(fù)雜的圖像信息,這主要是因?yàn)樗鼈儧]有足夠的信息顯示單位。LED點(diǎn)陣顯示器是把很多的LED按矩陣方式排列在一起,通過對各個LED的亮滅控制來完成各種字符或圖形的顯示?!鞠嚓P(guān)知識】一、8X8點(diǎn)陣簡介1.點(diǎn)陣結(jié)構(gòu)(以8*8為例)8X8點(diǎn)陣共由64個發(fā)光二極管按照8行8列排列成矩陣形式,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上(類似矩陣式按鍵)引腳:16根(8行8列),字母為行引腳,數(shù)字為列引腳。一般需要自己用萬用表檢測雙色點(diǎn)陣;24根(16行8列)(1).共陰(對行而言)例如型號為JM-M1088A2.點(diǎn)陣分類(2).共陽(對行而言)例如型號為JM-M1088B有時也不做區(qū)分,旋轉(zhuǎn)即可3.點(diǎn)陣原理

以共陽為例,當(dāng)對應(yīng)的某一行置1電平,某一列置0電平,則相應(yīng)的二極管就亮;如要將第一個點(diǎn)點(diǎn)亮,則9腳接高電平13腳接低電平,則第一個點(diǎn)就亮了;如果要將第一行點(diǎn)亮,則第9腳要接高電平,而(13、3、4、10、6、11、15、16)這些引腳接低電平,那么第一行就會點(diǎn)亮;如要將第一列點(diǎn)亮,則第13腳接低電平,而(9、14、8、12、1、7、2、5)接高電平,那么第一列就會點(diǎn)亮。共陰呢?

4.顯示方式點(diǎn)陣LED一般采用掃描式顯示,實(shí)際運(yùn)用分為三種方式:(1)點(diǎn)掃描(逐點(diǎn)顯示);(2)行掃描(逐行顯示);(3)列掃描(逐列顯示);若使用第一種方式,其掃描頻率必須大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三種方式,則頻率必須大于16×8=128Hz,周期小于7.8ms即可符合視覺暫留要求。此外一次驅(qū)動一列或一行(8顆LED)時需外加驅(qū)動電路提高電流,否則LED亮度會不足。5.舉例例:使用一塊8X8的LED點(diǎn)陣來顯示一個心型1.那么如何點(diǎn)亮一個點(diǎn)?首先調(diào)出一個8×8點(diǎn)陣,在點(diǎn)陣的管腳上接上VCC,另一端的管腳就接GND,運(yùn)行仿真,看看點(diǎn)陣是不是能亮,亮了哪幾個點(diǎn),如果不亮就調(diào)換VCC和GND,這樣測出點(diǎn)陣的行和列,共陰或共陽等引腳信息。

從圖3判別出上面為行,下面為列,為共陰點(diǎn)陣。要想顯示如圖所示的亮點(diǎn):則上面對應(yīng)的行為低電平,對應(yīng)的列為高電平(此時8個列值00100000,和第二行8個點(diǎn)亮滅情況一致)。所以我們可以通過某一行8個等的亮滅狀態(tài)從而得到顯示時所需的列值2.采用動態(tài)顯示(行掃描法,逐行顯示)以共陰點(diǎn)陣為例先顯示第一行,8個燈亮滅情況為00100100,則此時需送進(jìn)去的列值也為00100100(即24H),延時;再第二行,8個燈亮滅情況為01011010,則此時需送進(jìn)去的列值為01011010(5AH),再延時;依次類推,第三行:42H;第四行:42H;第五行:42H;第六行:24H;第七行:18H;第八行:00H總結(jié):采用共陰點(diǎn)陣,行掃描法顯示,8行對應(yīng)的列值分別為:24H,5AH,42H,42H,42H,24H,18H,00H(該值也叫做編碼)3.如何得到其他字符的編碼?(1).自己在紙上畫(2).利用軟件生成(PCtoLCD2002,字模生成軟件)對應(yīng)的程序代碼為:#include<reg52.h>charcodetable[]={0x24,0x5a,0x42,0x42,0x42,0x24,0x18,0x00};//"心"形編碼voiddelay(intz)//延時函數(shù){intx,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}voidmain(){intnum;while(1)//循環(huán)顯示

{for(num=0;num<8;num++)//8行掃描P3行選,P0列選

{P3=num;//行選

P0=table[num];//列選

delay(5);//延時

}}}【任務(wù)實(shí)施】#include<reg52.h>charcodetable[]={0x00,0x08,0x08,0x7E,0x18,0x14,0x24,0x43};//"大"字編碼voiddelay(intz)//延時函數(shù){intx,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}#include<reg52.h>charcodetable[]={0x00,0x08,0x08,0x7E,0x18,0x14,0x24,0x43};//"大"字編碼voiddelay(intz)//延時函數(shù){intx,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}voidmain(){intnum;while(1)//循環(huán)顯示

{for(num=0;num<8;num++)//8行掃描P3行選,P2列選

{P3=num;//行選

P2=table[num];//列選

delay(5);//延時

}}}注意:由于此時如果用字模軟件生成字模的話,按下圖進(jìn)行設(shè)置:【進(jìn)階提高】接下來,我們在前面所介紹知識的基礎(chǔ)上,讓8*8點(diǎn)陣輪流顯示0-9,看看如何實(shí)現(xiàn)呢?字的滾動,實(shí)際上就是列取表的偏移量變化。例如,從右往左滾動,第一幅畫面就是,前n列不亮,最后一列顯示漢字最左邊一列,第二幅畫面就是,前n-1列不亮,漢字最左邊2列亮。比如,一個8*8點(diǎn)陣,一個漢字8個模,偏移量0~7是一副畫面,1~8是一副畫面,2~9是一副畫面。點(diǎn)陣滾動顯示對應(yīng)的程序代碼如下:#include<reg52.h>unsignedcharcodedigittab[88]={//行選通0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//00x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00,/*1*/0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,/*2*/0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,/*3*/0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,/*4*/0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,/*5*/0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00,/*6*/0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,/*7*/0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,/*8*/0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00,/*9*/0x00,0x00,0x00,0x00//讓9繼續(xù)滾動完};unsignedcharcodetab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,};//列選通voiddelay(){unsignedintx,y;for(x=2;x>0;x--)for(y=123;y>0;y--);}voidmain(){unsignedchari=0,x=0,tcount=0;while(1){for(x=0;x<8;x++)//掃描顯示出當(dāng)前字樣{P0=tab[x];P2=digittab[x+i];delay();}if(++tcount>20)//掃描20次{tcount=0;if(++i>=80)i=0;}}}任務(wù)二16*16點(diǎn)陣的使用【任務(wù)描述】在16*16點(diǎn)陣上先顯示一個漢字,然后實(shí)現(xiàn)動態(tài)顯示“歡迎光臨!”【任務(wù)分析】由于Proteus中沒有16*16點(diǎn)陣,需要自己制作(網(wǎng)上有制作好的16*16點(diǎn)陣元件,大家可以自行搜索下載),制作教程查閱本任務(wù)相關(guān)知識。先實(shí)現(xiàn)靜態(tài)顯示然后在實(shí)現(xiàn)動態(tài)顯示。【相關(guān)知識】一、16*16點(diǎn)陣的制作首先打開Proteus,輸入MATRIX-8×8,放置一8×8點(diǎn)陣,然后選中該點(diǎn)陣執(zhí)行順時針旋轉(zhuǎn)90度。接著選中該點(diǎn)陣,右鍵單擊,執(zhí)行copytoCliboard,復(fù)制4份如圖:引腳上添加標(biāo)簽,如圖

接下來,可以把四個推擠,形成一個16*16點(diǎn)陣二、相關(guān)芯片介紹1.74HC595的使用74HC595具有8位移位寄存器和一個存儲器,三態(tài)輸出功能。具有移位寄存器和存儲器有相互獨(dú)立的時鐘,其引腳如圖14腳:SI,串行數(shù)據(jù)輸入引腳。

英文全稱是:Serialdatainput,顧名思義,就是串行數(shù)據(jù)輸入口。595的數(shù)據(jù)來源只有這一個口,一次只能輸入一個位,那么連續(xù)輸入8次,就可以積攢為一個字節(jié)了。13腳:OE,

輸出使能控制腳,它是低電才使能輸出,所以接GND12腳:RCK,輸出存儲器鎖存時鐘線。上升沿時移位寄存器的數(shù)據(jù)進(jìn)入存儲寄存器(相當(dāng)于通過引腳QA-QH輸出數(shù)據(jù)),下降沿時存儲寄存器數(shù)據(jù)不變。11腳:SCK,移位寄存器時鐘引腳,上升沿時,移位寄存器中的bit數(shù)據(jù)整體后移,并接受新的bit,上升沿時數(shù)據(jù)寄存器的數(shù)據(jù)按QA-->QB-->QC-->...-->QH移動;下降沿移位寄存器數(shù)據(jù)不變。10腳:SCLR,低電平時,清空移位寄存器中已有的bit數(shù)據(jù),一般不用,接高電平即可。9腳:串行數(shù)據(jù)出口引腳。當(dāng)移位寄存器中的數(shù)據(jù)多于8bit時,會把已有的bit“擠出去”,就是從這里出去的。用于595的級聯(lián)。Qx:并行輸出引腳賽馬其實(shí)就兩步第一步:首先8匹馬有“側(cè)門”一匹一匹進(jìn)入,待全部進(jìn)入后,第二步:一聲槍響“大門”打開,8匹馬聞聲出欄。

我們將每一匹馬比作電腦里面的二進(jìn)制位,公馬為陽(1),母馬為陰(0)。每當(dāng)一匹馬要從側(cè)門進(jìn)入馬欄時,需打開側(cè)門,這里的側(cè)門鎖就是“SCLR(10號)引腳”為1開門,為0關(guān)門,每一匹馬進(jìn)欄都必須先開門然后關(guān)門,進(jìn)入前開,進(jìn)入后關(guān),循環(huán)八次開關(guān)門,八匹馬就都進(jìn)欄了,至于這個字節(jié)的值就看公母的排序了。當(dāng)八匹馬都進(jìn)欄后,我們就立刻打開”大門“這里的大門鎖就是“RCK(12號)引腳”為1開門,為0關(guān)門,當(dāng)然打開后八匹馬都跑出去了,就要立刻關(guān)上門了。2.74HC154簡介只要控制端G1、G2任意一個為高電平,A、B、C、D任意電平輸入都無效。G1、G2必須都為低電平才能操作芯片。【任務(wù)實(shí)施】程序代碼:#include<reg52.h>sbitSH_CP=P2^0;sbitDS=P2^1;sbitST_CP=P2^2;unsignedcharcodedisplay[]={0x10,0x04,0x60,0x04,0x02,0x7E,0x8C,0x01,0x00,0x00,0x88,0x1F,0x88,0x08,0xFF,0x08,0x88,0x08,0x88,0x9F,0x00,0x60,0xFE,0x1F,0x22,0x42,0x22,0x82,0xFE,0x7F,0x00,0x00,/*"湖",0*/};voidhc595_senddat(unsignedchardat){ unsignedchari; for(i=0;i<8;i++) { DS=dat&0x80; SH_CP=1; SH_CP=0; dat<<=1; } }main(){ unsignedchari; SH_CP=0; ST_CP=0; while(1) { for(i=0;i<16;i++) { hc595_senddat(display[2*i+1]); hc595_senddat(display[2*i]); P3=i; ST_CP=1; ST_CP=0; } }}【進(jìn)階提高】16*16點(diǎn)陣中滾動顯示“歡迎光臨!”對應(yīng)的程序代碼如下:#include<reg52.h>sbitSH_CP=P2^0;sbitDS=P2^1;sbitST_CP=P2^2; unsignedcharcodedisplay[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,/*歡*/0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41,0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,/*迎*/0x40,0x00,0x40,0x80,0x42,0x40,0x44,0x20,0x58,0x18,0xC0,0x07,0x40,0x00,0x7F,0x00,0x40,0x00,0xC0,0x3F,0x50,0x40,0x48,0x40,0x46,0x40,0x64,0x40,0x40,0x70,0x00,0x00,/*光*/0x00,0x00,0xFC,0x1F,0x00,0x00,0xFF,0xFF,0x40,0x00,0x20,0xFF,0x10,0x41,0x0C,0x41,0x2B,0x41,0x48,0x7F,0xC8,0x41,0x08,0x41,0x08,0x41,0x8C,0xFF,0x08,0x01,0x00,0x00,/*臨*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,0xFE,0x3B,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*!*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};voiddelay(unsignedxms){ unsignedi,j; for(i=0;i<xms;i++) for(j=0;j<120;j++);}voidhc595_senddat(unsignedchardat){ unsignedchari; for(i=0;i<8;i++) { DS=dat&0x80; SH_CP=1; SH_CP=0; dat<<=1; } }voidhc595_out(){ ST_CP=0; ST_CP=1; ST_CP=0;}voidclear_out(){ unsignedchari; SH_CP=0; for(i=0;i<16;i++) { hc595_senddat(display[2*i+1]); hc595_senddat(display[2*i]); P3=i; hc595_out();}}main(){ unsignedchari,j; unsignedintk=2; SH_CP=0; //ST_CP=0; while(1) {for(j=0;j<20;j++){ for(i=0;i<16;i++) { hc595_senddat(display[2*i+1+k]); hc595_senddat(display[2*i+k]); P3=i; hc595_out(); delay(3); }clear_out(); k+=2; if(k==288)k=0; } }}任務(wù)三16*64點(diǎn)陣的使用【任務(wù)描述】在16*64點(diǎn)陣上滾動顯示“眾創(chuàng)咖啡歡迎您!”,并實(shí)現(xiàn)串口對其顯示內(nèi)容動態(tài)更新。【任務(wù)分析】繼續(xù)熟悉74HC595的級聯(lián)使用,同時使用PC與單片機(jī)的通信方法,特別是十六進(jìn)數(shù)的發(fā)送方法?!鞠嚓P(guān)知識】一、51單片機(jī)數(shù)組的定義方法(code與data的作用)數(shù)組前不加“code”或“data”,則默認(rèn)將數(shù)組存放在程序存儲器中;code指定數(shù)據(jù)是存儲在代碼區(qū),數(shù)據(jù)是在編程的時候跟代碼一起寫入代碼存儲器,運(yùn)行過程中不能改變;xdata指定數(shù)據(jù)是存儲在外部數(shù)據(jù)存儲器了;data指定數(shù)據(jù)存儲在內(nèi)部低128字節(jié)數(shù)據(jù)存儲器里,如果變量不指定存儲位置,默認(rèn)就是data型,這部分存儲器尋址速度最快;idata指定數(shù)據(jù)存儲在內(nèi)部低256字節(jié)數(shù)據(jù)存儲器里,但51只有128字節(jié)內(nèi)部RAM,52才有256字節(jié);pdata指定數(shù)據(jù)存儲在外部低256字節(jié)數(shù)據(jù)存儲器里,這時候?qū)ぶ酚?位寄存器R0和R1,而不用16位的DPTR,尋址速度比xdata快。單片機(jī)C語言unsignedcharcodetable[]code是什么作用?code的作用是告訴單片機(jī),我定義的數(shù)據(jù)要放在ROM(程序存儲區(qū))里面,寫入后就不能再更改,其實(shí)是相當(dāng)與匯編里面的尋址MOVC(好像是),因?yàn)镃語言中沒辦法詳細(xì)描述存入的是ROM還是RAM(寄存器),所以在軟件中添加了這一個語句起到代替匯編指令的作用,對應(yīng)的還有data是存入RAM的意思。程序可以簡單的分為code(程序)區(qū),和data(數(shù)據(jù))區(qū),code區(qū)在運(yùn)行的時候是不可以更改的,data區(qū)放全局變量和臨時變量,是要不斷的改變的,cpu從code區(qū)讀取指令,對data區(qū)的數(shù)據(jù)進(jìn)行運(yùn)算處理,因此code區(qū)存儲在什么介質(zhì)上并不重要,像以前的計(jì)算機(jī)程序存儲在卡片上,code區(qū)也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是運(yùn)行速度要慢很多,主要讀flash比讀ram要費(fèi)時間),因此一般的做法是要將程序放到flash里面,然后load到ram里面運(yùn)行的;DATA區(qū)就沒有什么選擇了,肯定要放在RAM里面,放到rom里面改動不了。二、用Proteus仿真C51時用到xdata時的問題在用Proteus仿真做一個程序,但是51的內(nèi)存資源太過稀有,使用到較大的數(shù)組的時候資源很快就耗盡了,這時需要用到xdata大模式下編譯。然而在Proteus下默認(rèn)xdata是必須加上外擴(kuò)ram才可運(yùn)行的,需要對Proteus下的單片機(jī)的數(shù)據(jù)內(nèi)存位圖設(shè)置,如圖:三、生產(chǎn)點(diǎn)陣字模的處理這里介紹另外一個字模軟件,曉奇工作室液晶漢字字提取軟件。取模方式縱向8點(diǎn)下高位,數(shù)據(jù)排列順序選擇低2項(xiàng),從上到下,從左到右,然后單擊參數(shù)確認(rèn)。接下來,輸入“眾創(chuàng)咖啡歡迎您!”,得到其字模為:structtypFNT_GB16codeGB_16[]=//數(shù)據(jù)表{"眾",0x00,0x40,0x00,0x20,0x40,0x10,0x40,0x0C,0x20,0x03,0x10,0x04,0x08,0x58,0x07,0x20,0x08,0x10,0x10,0x0C,0x20,0x03,0x60,0x0C,0x20,0x30,0x00,0x60,0x00,0x20,0x00,0x00,"創(chuàng)",0x80,0x00,0x40,0x00,0xF0,0x3F,0x4C,0x40,0x43,0x42,0x44,0x44,0xC8,0x43,0x10,0x70,0x30,0x00,0x00,0x00,0xF8,0x07,0x00,0x40,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,"咖",0x00,0x00,0xFC,0x1F,0x04,0x88,0xFC,0x4F,0x10,0x30,0xFF,0x0F,0x10,0x20,0x10,0x40,0xF8,0x3F,0x10,0x00,0xF8,0x7F,0x08,0x20,0x08,0x20,0xFC,0x7F,0x08,0x00,0x00,0x00,"啡",0x00,0x00,0xFC,0x1F,0x04,0x08,0x04,0x08,0xFE,0x1F,0x8C,0x10,0x88,0x10,0x88,0x10,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x88,0x10,0xCC,0x18,0x88,0x10,0x00,0x00,"歡",0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,"迎",0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41,0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,"您",0x40,0x40,0x20,0x30,0x10,0x00,0xFC,0x77,0x23,0x80,0x10,0x81,0x8C,0x88,0x67,0x92,0x04,0xB4,0xF4,0x83,0x04,0x80,0x44,0xE0,0x94,0x00,0x8C,0x11,0x00,0x60,0x00,0x00,"!",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,0xFE,0x3B,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};把此數(shù)組內(nèi)的內(nèi)容復(fù)制到Notepad++軟件中,進(jìn)行批量替換處理。【任務(wù)實(shí)施】16*64點(diǎn)陣驅(qū)動電路對應(yīng)的程序代碼如下:#include<reg52.h>sbitSH_CP=P2^0;sbitDS=P2^1;sbitST_CP=P2^2;unsignedcharcodedisplay[]={0x00,0x40,0x00,0x20,0x40,0x10,0x40,0x0C,0x20,0x03,0x10,0x04,0x08,0x58,0x07,0x20,0x08,0x10,0x10,0x0C,0x20,0x03,0x60,0x0C,0x20,0x30,0x00,0x60,0x00,0x20,0x00,0x00,/*"眾",0*/0x80,0x00,0x40,0x00,0xF0,0x3F,0x4C,0x40,0x43,0x42,0x44,0x44,0xC8,0x43,0x10,0x70,0x30,0x00,0x00,0x00,0xF8,0x07,0x00,0x40,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,/*"創(chuàng)",1*/0x00,0x00,0xFC,0x1F,0x04,0x88,0xFC,0x4F,0x10,0x30,0xFF,0x0F,0x10,0x20,0x10,0x40,0xF8,0x3F,0x10,0x00,0xF8,0x7F,0x08,0x20,0x08,0x20,0xFC,0x7F,0x08,0x00,0x00,0x00,/*"咖",2*/0x00,0x00,0xFC,0x1F,0x04,0x08,0x04,0x08,0xFE,0x1F,0x8C,0x10,0x88,0x10,0x88,0x10,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x88,0x10,0xCC,0x18,0x88,0x10,0x00,0x00,/*"啡",3*/};voidhc595_senddat(unsignedchardat){ unsignedchari; for(i=0;i<8;i++) { DS=dat&0x80; SH_CP=1; SH_CP=0; dat<<=1; } }main(){ unsignedchari; charj; SH_CP=0; ST_CP=0; while(1) { for(i=0;i<16;i++) { for(j=3;j>=0;j--) { hc595_senddat(display[32*j+2*i+1]); hc595_senddat(display[32*j+2*i]); } P3=i; ST_CP=1; ST_CP=0; } }}【進(jìn)階提高】在18*64點(diǎn)陣上滾動顯示“眾創(chuàng)咖啡歡迎您!”,且由串口實(shí)現(xiàn)動態(tài)更新。16*64點(diǎn)陣串口動態(tài)更新對應(yīng)程序代碼如下:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitSH_CP=P2^0;sbitDS=P2^1;sbitST_CP=P2^2;#defineN256ucharx;charxdatatable[N];uintcnt=0;uintRecStart=0,chaoshi=0,sendone=0;//接收開始標(biāo)志位ucharsendFlag=0;//未發(fā)送數(shù)據(jù)時ucharreceFlag=0;//未接受到數(shù)據(jù)時uinti=0,j;/*****************************

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論