【正文】
clrvoxel(snake[i][0],snake[i][1],snake[i][2])。 } else if (drawmode == 0x02) // flip the voxel in question { flpvoxel(x,y,z)。 dz == 1) dz = 1。amp。amp。 y++) { if (axis == AXIS_Z) 36 clrvoxel(x,y,i)。 x++) { 35 for (y = 0。 lastz = z1。 tmp = x2。iy=y2。 } } } } // Draw a wireframe box. This only draws the corners and edges, // no walls. void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2) { int iy。 int ix。 int ix。 for (x=0。zCUBE_SIZE。 zCUBE_SIZE) { for (x=0。 xCUBE_SIZE) { for (i=0。 } } // Flip the state of a voxel. // If the voxel is 1, its turned into a 0, and vice versa. void flpvoxel(int x, int y, int z) { if (inrange(x, y, z)) cube[x][y] ^= (1 z)。 x CUBE_SIZE amp。 } //************************************************************** void delay_ms(uint16_t x) { uint8_t y, z。 xdata unsigned char fb[CUBE_SIZE][CUBE_SIZE]=0。為可靠起見,電源穩(wěn)定后還要經(jīng)過一定的延時才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分 合過程中引起的抖動而影響復(fù)位。 鎖存芯片 74HC573 74HC573 的八個鎖存器都是透明的 D 型鎖存器,當使能( G)為高時, Q 輸出將隨數(shù)據(jù)( D)輸入而變。 P2 口 (21~ 28):名稱為 ~ ?,F(xiàn)今 3D 一詞儼然成為了顯示器的一項不可或缺的功能,在未來 3D技術(shù)將會顯得非常重要。 8X8 LED 點陣的外觀及引腳如圖 31,等效電路圖如圖 32 所示。 3D 技術(shù)也有缺點,觀看時需佩戴 3D眼鏡。 隨著能源緊缺問題越來越突出, LED 的重要性和市場空間更加顯著。藍色 LED晶片研制成功,全彩色 LED顯示屏進入市場;電子計算機及微電子領(lǐng)域的技術(shù)發(fā)展,在顯示屏控制技術(shù)領(lǐng)域出現(xiàn)了視頻控制技術(shù),顯示屏灰度等級實現(xiàn) 16級灰度和 64級灰度調(diào)灰,顯示屏的動態(tài)顯示效果大 大提高。 7 LED 屏的工作原理該光立方在顯示 3D 圖片和動畫時從立方體的各各面都可以看到立體動畫,富有科技感,讓人覺得就像是在看 3D 電影一般而且還是不用 3D 眼鏡的裸眼 3D 全方位不受視角限制的 3D。先后研制出藍色 LED、全彩色LED, LED 屏的顯示技術(shù)取得很大的提升。當系統(tǒng)受到外界激發(fā)后, 會從穩(wěn)定的低能態(tài)躍遷到不穩(wěn)定的高能態(tài),當系統(tǒng)由不穩(wěn)定的高能態(tài)重新回到穩(wěn)定的低能態(tài)時,能量差以光的形式輻射出來,就會產(chǎn)生發(fā)光現(xiàn)象。 進入新世紀,光電子產(chǎn)業(yè)得到廣泛的重視,中國加入 WTO、北京奧運成功舉辦等,成為 LED 顯示屏產(chǎn)業(yè)發(fā)展的契機,我國 LED 顯示屏及相關(guān)的技術(shù)必將得到飛躍發(fā)展。繼上海、廈門、大連、南昌和深圳成為首批五個國家半導(dǎo)體產(chǎn)業(yè)化基地,國內(nèi)封裝和應(yīng)用企業(yè)形成快速的市場適應(yīng)能力和價格優(yōu)勢,我國大陸已經(jīng)成為世界上重要的 LED 封裝生產(chǎn)基地。 LED 發(fā)光燈可以分為單色發(fā)光燈、雙色發(fā)光燈、三色發(fā)光燈、面發(fā)光燈、閃爍發(fā)光燈 、電壓型發(fā)光燈等多種類型。在行掃描工作方式下,同一排 LED 點陣片的同名行控制引腳是并接在一條線上的,共 8 條線,最后連接在一個行驅(qū)動電路上;行驅(qū)動電路中也一定有一片鎖存器或移位寄存器,用來鎖存行掃描 信號 。表 331 給出了其主要功能。 P3 口是一個具有內(nèi)部上拉電阻的 8 位雙向 I/O 口, p2 輸出緩沖器能驅(qū)動 4 個 TTL 邏輯電平。引腳如圖 3311 74HC573 引腳功能表: PIN No 引腳號 SYMBOL 符號 NAME AND FUNCTION 名稱及功能 1 OE 3 State output Enable Input (Active LOW)3 態(tài)輸出使能輸入(低電平) 2, 3, 4, 5, 6, 7, 8, 9 D0 to D7 Data Inputs 數(shù)據(jù)輸入 12,13,14,15,16,17,18,19 Q0 to Q7 3 State Latch Outputs 3 態(tài)鎖存輸出 11 LE Latch Enable Input 鎖存使能輸入 10 GND Ground 接地 (0V) 13 圖 3311 74HC573 引腳 HC573 邏輯圖 真值表: 20 VCC Positive Supply Voltage 電源電壓 INPUTS 輸入 Outputs 輸出 14 .3 放大三極管 S8550 參數(shù): 耗散功率 (貼片: ) 集電極電流 集電極 基極電壓 40V 集電極 發(fā)射極擊穿電壓 25V 集電極 發(fā)射極飽和電壓 特征頻率 fT 最小 150MHZ 典型值產(chǎn)家的目錄沒給出 引腳 排列為 EBC 或 ECB 838 電子 按三極管后綴號分為 B C D 檔 放大倍數(shù) B85160 C120200 D160300 L100200 H200350 三極管 74HC573 OE LE D Q (HC573) Q (HC563) H X X Z Z L L X NO CHANGE * NO CHANGE * L H L L H L H H H L 15 硬件構(gòu)成 單片機最小系統(tǒng) 晶振電路: 最小系統(tǒng)晶振電路如圖 3321所示。 8 只三極管的 E 極都接入單片機的 ~ 口作為輸入信號, B 極接電源的正極用作信號的放大, C 極則接入光立方由 上到下的 8 層 LED。i8。 y++){ for ( z = 0 。amp。 } *ox1 = ix1。 if (z=0 amp。= ~(1 z)。 break。 } } } void tmpfill (unsigned char pattern) { int x。y1, amp。y1, amp。 argorder(y1, y2, amp。 } // Lines along X axis for (ix=x1。 y1 = tmp。 setvoxel(x,y,z)。 altervoxel(x,y,ii,state)。 y == 0 amp。 y == 0 amp。 if (lol == 0) dx = 0。amp。 snake[i][1] = snake[i1][1]。 } else { fill(0xff)。 i++) { positions[i] = 4。 loop++。i8。 clrvoxel(x,y,z)。amp。 z == 0) || (x == 7 amp。 z == 0) || (x == 0 amp。 y CUBE_SIZE。 x CUBE_SIZE。 } else { xz = (float)(z2z1)/(float)(x2x1)。 // We always want to draw the line from x=0 to x=7. // If x1 is bigget than x2, we need to flip all the values. if (x1x2) { int tmp。 // Lines along Y axis for (iy=y1。 } else { cube[ix][iy] |= ((0x01 z1) | (0x01 z2))。 32 } } } // Darw a hollow box with side walls. void box_walls(int x1, int y1, int z1, int x2, int y2, int z2) { int iy。 } //Draw a box with all walls drawn and all voxels inside set void box_filled(int x1, int y1, int z1, int x2, int y2, int z2) { int iy。 int y。 yCUBE_SIZE) { for (z=0。amp。amp。 } else { clrvoxel(x,y,z)。amp。 UART_Send(cData)。 acall anjian //檢測按鍵 djnz r4,loop33 //沒有 8 次循環(huán) ret //返回 yudian: mov dptr,table1 //保存束移表格 mov a,r1 //將 r1 值作為指針給 a movc a,a+dptr //查表 mov p2,a //結(jié)果送入 p2 口 acall suo //調(diào)用鎖存程序 ret //返 回 suo: mov dptr,table1 //保存第一類鎖存表格 mov a,r2 //將 r2 作為指針給 a movc a,a+dptr //查表 mov p1,a //結(jié)果送 p1 口 mov p1,00H //鎖存 ret //返回 suo2: mov dptr,table3 //保存第二類鎖存地址 mov a,r2 //將 r2 作為指針給 a movc a,a+dptr //查表 mov p1,a //結(jié)果送 p1 口 mov p1,00H //鎖存 ret //返回 bo1: mov dptr,table2 //保存橫向波紋表格 22 mov a,r1 //將 r1 作為指針給 a movc a,a+dptr //查表 mov p2,a //結(jié)果送 p2 口 ret //返回 bo2: mov dptr,table3 //保存縱向波紋表格 mov a,r1 //將 r1 作為指針給 a movc a,a+dptr //查表 mov p2,a //結(jié)果送 p2 口 ret //返回 table1: db 3fH,1fH,0fH,07H,03H,01H table2: db 1fH,0fH,07H,03H,01H,00H table3: db 5fH,2fH,17H,0bH,05H,02H //結(jié)束程序 an: lcall guanbi //調(diào)用關(guān)閉程序 jmp an //無限循環(huán) //關(guān)閉所有輸出 guanbi: mov p2,0ffH //關(guān)閉 p2 口 mov p1,0ffH //同步輸出 mov p1,00H //鎖存 mov p3,0ffH //關(guān)閉 p3 口 ret //返回 /* //按鍵檢測 子程序 anjian: mov p0,0ffH //p0 口復(fù)位 mov a,p0 //取 p0 口值 cjne a,0ffH,loop1 //判斷是否有按鍵按下有按鍵按下跳轉(zhuǎn) ret //無按鍵返回 23 loo