




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 光立方設計論文 班級:微電子1104 學號:110205040 姓名: 2013年 07月15日目錄1、 摘要.12、 關鍵字.13、 引言.24、 正文.2(1) 、主要元件介紹.31、stc12c5a60s2.32、74hc573.33、 uln2803.4(2) 、工作原理.51、 驅動模塊原理.6(三)、元器件選擇.7(四)、制作、調試.81、制作.92、調試.11五、結束語.13六、參考文獻.12七、附錄(程序).13光立方一、摘要: 本設計采用8*8*8 的模式,硬件主要分為三個模塊:主控模塊、驅動模塊、顯示模塊。采用的主控芯片為stc12c5a60s2 芯片,驅動電路是采用我們
2、常用74hc573數(shù)字芯片。數(shù)組 out0代表光立方從第一層 d0 到第八層 d0 的數(shù)據(jù),以此類推數(shù) 組 out1 代表光立方從第一層 d1 到第八層 d1 的數(shù)據(jù)。本設計采用c語言編程,利用單片機控制led的亮滅,采用延時控制led亮滅時間,最終使得整個立體展現(xiàn)不同的造型和圖案,使其變得美輪美奐、絢麗多彩。二、關鍵字:led光立方,74hc573,stc12c5a60s2,uln2803三、引言: 光立方是由四千多棵光藝高科技“發(fā)光樹”組成的,在2009年10月1日天安門廣場舉行的國慶聯(lián)歡晚會上面世,這是新中國成立六十周年國慶晚會最具創(chuàng)意的三大法寶之首,自從國慶60周年聯(lián)歡晚會開始演練后,
3、一個全新的名詞“光立方”,吸引了全國人民的關注。國慶聯(lián)歡晚會三樣法寶,光立方為最,“光立方”在氣勢和整體感覺上,融合了北京奧運會開幕式“擊缶而歌”和“活字印刷”的風格,而各種圖案則與貫穿奧運會開幕式的“畫卷”有異曲同工之妙。“光立方”可以根據(jù)愛國歌曲的不同內容,展示不同的造型和圖案,具有豐富的視覺效果。四、正文(1) 主要元件介紹:1、stc12c5a60s2stc12c5a60s2/ad/pwm系列單片機是宏晶科技生產的單時鐘/機器周期(1t)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內部集成max810專用復位電路,2路p
4、wm,8路高速10位a/d轉換(250k/s),針對電機控制,強干擾場合。1) 增強型8051 cpu,1t,單時鐘/機器周期,指令代碼完全兼容傳統(tǒng)80512) 工作電壓:stc12c5a60s2系列工作電壓:5.5v- 3.3v(5v單片機)3) 工作頻率范圍:0 - 35mhz,相當于普通8051的0420mhz4) 應用程序空間8k /16k / 20k / 32k / 40k / 48k / 52k / 60k / 62k字節(jié)5) 片上集成1280字節(jié)ram6) 外部中斷i/o口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的pca模塊,power down模式可由外部中
5、斷喚醒,int0/p3.2, int1/p3.3,t0/p3.4,t1/p3.5,rxd/p3.0,ccp0/p1.3(也可通過寄存器設置到p4.2 ), ccp1/p1.4 (也可通過寄存器設置到p4.3)。7) a/d轉換, 10位精度adc,共8路,轉換速度可達250k/s(每秒鐘25萬次)8) 通用全雙工異步串行口(uart),由于stc12系列是高速的8051,可再用定時器或pca軟件實現(xiàn)多串口9) stc12c5a60s2系列有雙串口,后綴有s2標志的才有雙串口,rxd2/p1.2(可通過寄存器設置到p4.2),txd2/p1.3(可通過寄存器設置到p4.3)10) 工作溫度范圍:
6、-40 - +85(工業(yè)級) / 0 - 75(商業(yè)級)2、74hc573 74hc573是八進制 3 態(tài)非反轉透明鎖存器。器件的輸入是和標準 cmos 輸出兼容的;加上拉電阻,他們能和ls/alsttl輸出兼容。當鎖存使能端為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步)。當鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下,可以多個芯片并聯(lián)輸出,當輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持3、uln2803 uln2803是八重達林頓管,1至 8腳為8路輸入,18 到 11腳為8路輸出。驅動能力為 500ma
7、50v。應用時9腳接地,10腳接負載電源v+,輸入的電平信號為0或5v。輸入0是輸出達林頓管截止,輸入為5v電平時,輸出達林頓飽和。輸出負載加在電源v+和輸出口上,當輸入為高電平時,輸出負載工作,該電路為反向輸出型,即輸入低電平電壓,輸出端才能導通工作。(2) 工作原理 有8個8*8點陣,再用8個引腳來當充當各個8*8點陣的“開關”。只要將64個燈陽極連在一起,在連到這個引腳上。采用了hc573暫存的方法,來分別把64個燈的亮滅信息存到這個上面,然后再一起輸出到燈上,573的64個輸出引腳控制前面所述每一個面的64個燈;而每層燈的陰極全連接在一起接入uln2803,由uln2803控制的每一個
8、層燈。通過單片機主控芯片stc12c5a60s2來控制所有燈的亮滅,從而控制p0、p1、p2實現(xiàn)控制x、y、z空間立體控制來顯示我們所需要顯示的現(xiàn)象。 圖1 8層面 圖2 64個燈孔整個設計主要分為三個模塊分別是主控模塊、驅動模塊、顯示模塊1、驅動模塊原理 圖3 74hc573驅動 圖4 原理圖 uln2803的18腳接主控芯片的p1口(18腳),數(shù)據(jù)由主控芯片p2口輸入經(jīng)過uln2803從1118腳輸出,實現(xiàn)通過uln2803來驅動每一層。每個573的29腳(數(shù)據(jù)輸入)都連接在一起連接到主控芯片的p0口(3239腳),數(shù)據(jù)從主控芯片p0口輸送到573,573的1腳是3態(tài)輸出使能輸入(低電平)
9、一般都與地相接,573的11腳(鎖存使能輸入)都連接在一起連接到主控芯片的p2口(2128腳)作為鎖存控制。當573的11腳為高電平和29腳為高電平時,573的1219腳(3態(tài)鎖存輸出)為高電平,驅動一豎面的燈亮,當11腳為高低平、29腳為低電平時,573的1219腳則就為低電平,從而燈滅,當11腳為低電平時,29腳不管高低電平,1219腳的輸出不變。主控芯片通過573+uln2803來驅動控制哪豎面的哪一層的哪個燈的亮滅。r1r16是限流電阻。(三)元器件選擇1) 由于光立方的程序量比較大,而且要求相對比較高,因此用 51 系列的增強型芯片 stc12c5a60s2,選擇的理由:1.無法解密
10、,采用第六代加密技術; 2.超強抗干擾;3.內部集成高可靠復位電路,外部復位可用可不用;4.速度快,比 8051 快 8-12 倍。 2)由于燈的個數(shù)比較多,因此所需要的電流相對也比較大,所以選擇uln2803。 3)驅動部分使用了熟悉的74hc573,其優(yōu)點有 1.高阻態(tài),就是輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下,可以多個芯片并聯(lián)輸出;2.數(shù)據(jù)鎖存;當輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持;3.數(shù)據(jù)緩沖、加強驅動能力。4)led 燈的選擇,出于外觀和整體的形狀美觀,采用的是霧狀藍光的 led 燈 ,由于高亮燈比霧狀燈刺眼,所以選擇霧狀燈。 圖 5 霧狀led
11、燈(四)制作、調試1)制作:1、我們首先完成的是驅動電路 驅動電路由于線比較多電路比較復雜,所以我們有比較多的跳線,由八個74hc573組成的,如下圖: 圖6 573驅動連接反面 圖7 573驅動連接正面2、 主控電路 主控電路是最簡單的電路,主要是最小系統(tǒng),其中還有一個控制層的驅動芯片焊接在主控板上,如圖所示: 圖8 最小系統(tǒng)3、顯示模塊 首先我們用一塊比較大萬能板,在上面做了8*8個點的標志,間距為2mm然后把燈按統(tǒng)一形狀掰好管腳。然后固定在在萬能板上進行焊接,焊接完如下圖: 圖9 燈的焊接 焊好的如圖:每次焊完以后都要去檢查測試每個燈是否會亮,很重要的步驟 圖 10 把八個面做好以后就是
12、把八個面一層一層的疊起來,在這里要注意的是必須用尺子量好各個角度的高度(我們做的間距為2厘米),必須使每一個面在同一水平面上,如下圖所示:同樣的每次焊完以后都要去檢查測試每個燈是否會亮 圖11 8層燈顯示部分反面,如下圖: 圖12 2) 調試: 主要是檢查全部的燈是否正常工作:(1)程序燒寫進單片機之后,發(fā)現(xiàn)有兩列沒有點亮,還好兩列的都在邊上,進而如果換燈也相對容易,我們用排除法來檢查電路,首先是檢查燈的線路是否虛焊,斷路,果真有一列的是斷路了,把它接上后這一列也亮了。(2)還剩下另外一列,我們用同樣的方法來做,從驅動電路到顯示的都沒有問題,而且在輸入那一列的電壓也正常,我們就想不通了,是什么
13、原因呢?我們懷疑是不是有燈壞了,我們又一個一個的檢查了這一列燈,但是全部都會亮,經(jīng)過很細心的檢查,發(fā)現(xiàn)有一個燈的亮度和其他的燈亮度完全不同,相對比較暗,于是我們把它換了下來,接上另外一個,果然是哪個燈的問題,原來是由于這燈的阻抗很大,把那一列的電平都拉低了,使燈無法亮起來。(3)在調試過程中,有一豎面的燈完全不亮,第一個想法是燈沒有供電,檢測供電電路法發(fā)現(xiàn)沒有問題,于是我找到573這一部分,因為這一部分跳線較多且線路密集,逐一測量發(fā)現(xiàn)線頭間短路了,從新焊接后測試,故障順利排除。(4)在調試過程中有幾個燈一直不亮,用萬用表歐姆檔測量發(fā)現(xiàn)燈已經(jīng)燒壞,拆下壞掉,但是有2個燈是存在虛焊問題,從新焊接后
14、正常工作。五、結束語經(jīng)過這次的設計,讓我們更明確了團隊合作的要領和精神,更明白了焊接技術的重要性,也讓我們對單片機編程的進一步了解,為了這次設計我們找了查找了很多資料,包括一些對該設計元件的作用、工作電壓等資料的了解,感謝百度和google公司。他們的搜索功能龐大、快捷又免費,讓我們很方便地搜索到了我們所需要的設計資料和豐富的知識。此次畢業(yè)設計,是我大學學習中遇到過的時段最長、涉及內容最廣、 工作量最大的一次設計。用老師的一句話概括就是這次畢業(yè)設計相當如是把以前的小課程設計綜合在一起的過程,只要把握住每個小課設的精華、環(huán)環(huán)緊扣、增強邏輯,那么這次的任務也就不難了。同時感謝老師對我們的指導和為我
15、們理清思路從而使我們更快我完成設計。6、 參考文獻【1】 祈偉楊亭.單片機c51程序設計教程與實驗 北京航空航天大學出版社2006年1月 【2】張瑞玲.單片機原理與應用 西北工業(yè)大學出版社2010年12月【3】趙亮,侯國銳.單片機c語言編程與實例m.北京:人民郵電出版社,2003. 七、附錄(源程序) #include #include #define uchar unsigned char#define uint unsigned int uchar display88; /*rank:a,1,2,3,4,i,心,u*/uchar code table_cha88=0x51,0x51,0x5
16、1,0x4a,0x4a,0x4a,0x44,0x44,0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0x66,0x30,0x18,0xc,0x6,0xf6,0x3c,0x66,0x60,0x38,0x60,0x60,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x30,0x3c,0x3c,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,
17、0x3c;/*the ideasoft*/uchar code table_id40=0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x81,0xff,0x00,0xff,0x09,0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00;/*railway*/uchar code dat128=0x0,0x20,0x40,0x60,0x80,0xa0,
18、0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,0x8f,0x9
19、3,0x73,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0
20、x4;/*railway 2*/ uchar code dat228=0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4;/*railway 3*/uchar code dat324=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5
21、0,0x40,0x30,0x20,0x10;/*3p char*/uchar code table_3p38=0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f,0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18;/*initializtionthat is to initialize the program .it is write to set the timer in c52 mcu.so the program can renovate the led
22、_3d_cube in fixed time use the interrupt function.*/void sinter() ie=0x82; tcon=0x01; th0=0xc0; tl0=0; tr0=1; void delay5us(void) /誤差 -0.026765046296us stc 1t 22.1184mhz unsigned char a,b; for(b=7;b0;b-) for(a=2;a0;a-);void delay(uint i) while (i-) delay5us();/12t的mcu 注釋這個延時即可/*to judge the num bit判
23、斷數(shù)字點*/uchar judgebit(uchar num,uchar b)char n; num=num&(1=5) b+; return b;/*to figure out the absolute value找出絕對值*/uchar abss(char a) if (a(*b) t=(*a); (*a)=(*b); (*b)=t; /*the function is to figure out the max number and return it.*/uchar maxt(uchar a,uchar b,uchar c) if (ab) a=b; if (ac) a=c; retu
24、rn a; void clear(char le) uchar i,j; for (j=0;j8;j+) for (i=0;i=-3;i-) if (i=0) for (j=0;j8;j+) displayji=displayji+1; if (i4) for (j=0;j8;j+) displayji+4=0; delay(speed); void point(uchar x,uchar y,uchar z,uchar le) uchar ch1,ch0; ch1=1x; ch0=ch1; if (le) displayzy=displayzy|ch1; else displayzy=dis
25、playzy&ch0;void type(uchar cha,uchar y) uchar xx; for (xx=0;xx8;xx+) displayxxy=table_chachaxx; /*the first variable is the distance from the midpoint.the second is the layer.the third is the flash speed of the time between each two point.the forth is the enable io,it controls weather draw or claen.
26、*/void cirp(char cpp,uchar dir,uchar le) uchar a,b,c,cp; if (cpp=0) if (dir) cp=127-cpp; else cp=cpp; a=(datcp5)&0x07; b=(datcp2)&0x07; c=datcp&0x03; if (cpp63) c=7-c; point (a,b,c,le); void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le) char t,a,b,c,a1,b1,c1,i; a1=x2-x1; b1=y2
27、-y1; c1=z2-z1; t=maxt(abss(a1),abss(b1),abss(c1); a=x1*10; b=y1*10; c=z1*10; a1=a1*10/t; b1=b1*10/t; c1=c1*10/t; for (i=0;it;i+) point(abs(a),abs(b),abs(c),le); a+=a1; b+=b1; c+=c1; point(x2,y2,z2,le);void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) uchar i,j,t=0;
28、max(&x1,&x2); max(&y1,&y2); max(&z1,&z2); for (i=x1;i=x2;i+) t|=1i; if (!le) t=t; if (fill) if (le) for (i=z1;i=z2;i+) for (j=y1;j=y2;j+) displayji|=t; else for (i=z1;i=z2;i+) for (j=y1;j=y2;j+) displayji&=t; else if (le) displayy1z1|=t; displayy2z1|=t; displayy1z2|=t; displayy2z2|=t; else displayy1
29、z1&=t; displayy2z1&=t; displayy1z2&=t; displayy2z2&=t; t=(0x01x1)|(0x01x2); if (!le) t=t; if (le) for (j=z1;j=z2;j+=(z2-z1) for (i=y1;i=y2;i+) displayij|=t; for (j=y1;j=y2;j+=(y2-y1) for (i=z1;i=z2;i+) displayji|=t; else for (j=z1;j=z2;j+=(z2-z1) for (i=y1;i=y2;i+) displayij&=t; for (j=y1;j=y2;j+=(y
30、2-y1) for (i=z1;i=z2;i+) displayji&=t; void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)uchar i;max(&z1,&z2);if (fill)for (i=z1;i=z2;i+) line (x1,y1,i,x2,y2,i,le); elseline (x1,y1,z1,x2,y2,z1,le);line (x1,y1,z2,x2,y2,z2,le);line (x2,y2,z1,x2,y2,z2,le);line
31、(x1,y1,z1,x1,y1,z2,le);void poke(uchar n,uchar x,uchar y)uchar i;for (i=0;i=0)&(i=8)&(i=16)&(i-40;i-)for (j=0;j=0)&(a24)boxtola(a,table_idj);delay(speed);void roll_apeak_yz(uchar n,uint speed)uchar i;switch(n)case 1:for (i=0;i7;i+)displayi7=0;display76-i=255;delay(speed);break;case 2: for (i=0;i7;i+
32、)display77-i=0;display6-i0=255;delay(speed);break;case 3:for (i=0;i7;i+)display7-i0=0;display0i+1=255;delay(speed);break;case 0:for (i=0;i7;i+)display0i=0;displayi+17=255;delay(speed);break;void roll_apeak_xy(uchar n,uint speed)uchar i;switch(n)case 1: for(i=0;i7;i+)line(0,i,0,0,i,7,0);line(i+1,7,0,
33、i+1,7,7,1);delay(speed); break;case 2: for (i=0;i7;i+)line(i,7,0,i,7,7,0);line(7,6-i,0,7,6-i,7,1);delay(speed);break;case 3: for (i=0;i7;i+)line(7,7-i,0,7,7-i,7,0);line(6-i,0,0,6-i,0,7,1);delay(speed);break;case 0: for (i=0;i7;i+)line(7-i,0,0,7-i,0,7,0);line(0,i+1,0,0,i+1,7,1);delay(speed);break;voi
34、d roll_3_xy(uchar n,uint speed)uchar i;switch(n)case 1: for (i=0;i8;i+) box_apeak_xy (0,i,0,7,7-i,7,1,1); delay(speed); if (i7) box_apeak_xy (3,3,0,0,i,7,1,0); ; break;case 2: for (i=0;i8;i+) box_apeak_xy (7-i,0,0,i,7,7,1,1); delay(speed); if (i7) box_apeak_xy (3,4,0,i,7,7,1,0); ; break;case 3: for (i=0;i8;i+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于數(shù)模雙域融合的辦公空間規(guī)劃優(yōu)化策略研究
- 2025房屋交易中介服務合同(買方)
- 2025跨國服務采購合同
- 2025帶抵押條款的借款合同示范文本
- 2025《光伏項目委托貸款合同》
- 醫(yī)療領域中數(shù)字政府的運用與優(yōu)化
- 教育數(shù)字資源建設與共享策略研究
- 常州電子政務系統(tǒng)的多領域應用與創(chuàng)新
- 安全生產操作規(guī)程編寫培訓
- 辦公空間數(shù)字化的趨勢下企業(yè)文化的新形態(tài)
- 2025年國際安全與反恐研究職業(yè)資格考試試題及答案
- 2025年下半年黔東南州能源投資限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- GB/T 45551-2025蜜蜂生產性能測定技術規(guī)范
- 荔枝采摘合同協(xié)議書
- 太湖蘇州轄區(qū)生態(tài)清淤一期工程環(huán)境影響報告書
- 精神分裂癥患者個案護理查房
- 2025屆江蘇省蘇州市高考沖刺押題(最后一卷)英語試卷含解析
- 中國共產主義青年團紀律處分條例試行解讀學習
- 三方水泥合同協(xié)議
- 江蘇省南通市如皋市八校2025屆初三下學期教育質量調研(二模)化學試題含解析
- 2025至2030年抗應激添加劑項目投資價值分析報告
評論
0/150
提交評論