程序附帶無線遙控功能,想要附加功能可以自己改程序。本方案非原創(chuàng),僅供大家學(xué)習(xí)。
0.png (42.69 KB, 下載次數(shù): 41)
下載附件
2018-11-19 15:51 上傳
0.png (8.13 KB, 下載次數(shù): 50)
下載附件
2018-11-19 15:52 上傳
上升沿光立方主板焊接
選擇DIY套件說明你是一位喜歡自己親自動手的實(shí)踐者,(即使是剛剛接觸電子這一行的人也不用太擔(dān)心,還有我們?yōu)槟闾峁┘夹g(shù)支持哦。,只要你具備基本的識圖及調(diào)試能力,基本都是一次成功。
但在焊接前請閱讀此說明,可以有助于你更好更快的完成我們的光立方板 DIY工作。 以下是光立方主板焊接過程中需要注意的幾點(diǎn),要仔細(xì)看哦! 電烙鐵一把(功率最好在 40W),焊錫絲一卷(直徑最好在 0.8左右),焊錫膏或松香若干,剪腳鉗一把。
準(zhǔn)備一個小盒子,把所有的元器放入盒子里備用。(都是小東東,不一小心掉了一個都很麻煩哦)
2、原理圖的準(zhǔn)備
將資料中光立方原理圖打開,焊接時要對著原理圖哦!
3、焊接元件清單,拿到套件的時候先清點(diǎn)元件數(shù)量,焊接的時候?qū)φ赵韴D和元件清單進(jìn)行焊接
4、散件底板:是指沒有焊接的底板,單片機(jī)程序已經(jīng)下載,
都是散件,需要自己焊接;不會焊接貼片芯片的可參考本視頻 (板子不同,芯片的焊接技巧一樣)
http://v.youku.com/v_show/id_XMTM4Nzk5MDAwMA==.html
復(fù)制到瀏覽器打開
0.png (370.09 KB, 下載次數(shù): 40)
下載附件
2018-11-19 16:07 上傳
第二步-LED燈制作8個面教程使用模板焊接不用看這步)
8X8X8 光立方 LED 燈焊接說明
這一篇將介紹光立方的主體 LED 燈的焊接制作,需要根據(jù)教程 以及說明,進(jìn)行焊接制作,本店的方案采用層共陽,LED 需要 將長引腳的正極折彎,網(wǎng)絡(luò)方案均為共陰,特別需要注意,必 須查看本教程折燈,否則造成的后果將不堪設(shè)想。
第 1 步:拿出一個 LED 將最長的那個引腳,也就是正極,如果這里不能區(qū)分正負(fù)極 的,請將 LED 用 3.3V 紐扣電池點(diǎn)亮,確保后面的折燈引腳不會錯。確定引腳是正 極后,拿出 512 個 LED,全部將其折好正極,如圖所示,正極折彎 90 度。注意: 燈腳的長度不用剪短。

第 2 步:拿出光立方的主板,也就是所說的自帶模板,將主板墊高后就可以直接做 為 led 焊接模塊了,因?yàn)榫W(wǎng)絡(luò)流行的方法都需要自制帶孔的木板或者萬能板模板, 需要浪費(fèi)一些材料和時間,本店采用節(jié)約就地取材,直接使用主板進(jìn)行焊接制作
LED 燈珠。間距約等于 2CM。標(biāo)準(zhǔn)模板

第 3 步:拿出全部折好的 512 個 LED 中的 8 個,將負(fù)極插入如圖所示正方形的小 孔,正極為橫向的朝右邊。一次只能插入 8 個,千萬別偷懶哦一排排的插入焊接。

第 4 步:插入好了 8 個 LED 確認(rèn)無誤后,將其橫向的正極引腳焊接好,焊接好 8
個的效果如圖。

第 5 步:焊接好了 8 個 LED,也就是一排,將其拔出來,繼續(xù)插入第二組,焊接 好,拔出來,這個步驟一共需要將 512 個 LED 全部焊接完,變成 8 個 8 個一排的。


第 6 步:拿出焊接好的 8 組,根據(jù)下圖擺好位置,放入平整的桌面上,將后面 7 排
led 的負(fù)極管腳尾折彎一點(diǎn),這個步驟需要將每個 LED 的負(fù)極焊接好。


第 7 步:全部焊接完的效果,即組成了 8 個層共陽的 LED 框架,一共 8 個面, 每一層的正極連接一起,負(fù)極連接一起。焊接的過程需要自己把握,LED 不能長時 間焊接,會導(dǎo)致?lián)p壞。正負(fù)極焊接的時候也需要仔細(xì)檢查,沒有錯誤才進(jìn)行操作。



祝各位 DIY 焊接制作成功,并且體會到教程的相關(guān)焊接知識,在 DIY
制作中學(xué)習(xí),學(xué)習(xí)中完成 DIY 制作,一步一步,步步高升。 再次感謝您的支持!Do It Yourself soeasy.
8X8X8 光立方測試組裝教程
前面的制作過程已經(jīng)完成的差不多了,接下來就將最后的一個 過程測試組裝完成好,這個步驟至關(guān)重要,需要認(rèn)真調(diào)試好每 一個環(huán)節(jié),把遇到的各種問題都解決了,就會呈現(xiàn)出一個完美 的光立方。
第 1 步:拿出多余剩下的 LED,數(shù)量為 8 個,焊接成一條正極連接在一起的,如 圖多試,功能是用于測試主板的好壞。

第 2 步:根據(jù)圖片的位置和連接方法,給主板下載好對應(yīng)的程序,接入好一組 LED 進(jìn)行測試主板。主板單片機(jī)默認(rèn)含測試程序直接可以測試(測試程序?yàn)樽笥疑舷聮?/font> 描 led,像流水燈那樣有規(guī)律的亮)。正極接入 H1 端子,負(fù)極插入主板的正方形小 孔端子,通電即可進(jìn)入測試模式依次點(diǎn)亮測試主板。


通電后進(jìn)入測試階段,即可完成測試主板焊接芯片的好壞。如果發(fā)現(xiàn)測試的這一排 有問題或者有 LED 不亮,表面焊接有問題,共 8 排正極分別接入 H1-H8 測試主板的過程必須完成好,如果主板沒有測試好,后面的制作過程將無法進(jìn)行。 主板焊接出現(xiàn)的問題,導(dǎo)致這個過程不能順利的進(jìn)行,如果發(fā)現(xiàn)測試不行必須將主 板維修后,才能安裝 LED。焊接的過程是一個有風(fēng)險的過程,焊接技術(shù)自己掌握。
第 3 步.把 40P 圓排母用水口鉗或者斜口鉗剪成單針:

接下來再用水口鉗或者斜口鉗把針座旁邊的塑料剪去,這個用水口鉗是比較好剪的,
當(dāng)然不剪也是可以,只是比較不美觀
第 4 步:主板已經(jīng)測試通過,并且能將每一個端口的 LED 點(diǎn)亮和熄滅,我們將剩 下的圓孔小柱子,即上一步剪出來的單針,焊接在主板的方孔位置,一共 8 排


第 5 步:將 8 個面的 LED 正極全部折彎 90 度,圖片所示,方便組裝焊接每層的正 極用,負(fù)極最下面那個 led 燈管腳剪短 3mm 左右



第 6 步:拿出一個面,將負(fù)極插入主板的正方形小孔。這個步驟需要將面的 LED 測 試好,并且一定要保證一個面的 LED 完好后,才能組裝下一個面的 LED。
從 H1 的端子引出一根線,接入面的每一層正極一共測試 8 次保證 LED 完好。



第 7 步:如果第一個面成功安裝,并且測試 LED 都是好的,恭喜你離成功還差 7 步。繼續(xù)拿出第二個面,第三個面,第四個面根據(jù)測試好后安裝的辦法,依次安裝 測試好。這個過程需要將每層的正極焊接在一起,到第八面的正極剪掉就可以了

第 8 步: 將 8 個面全部測試組裝好后, 效果就大概出來了

第 9 步:將 LED 的每一層正極通過黑色連接線,連接到 H1H2H3H4H5H6H7H8 的 端子,最底下為第一層,如果焊接反了顯示將也是反的,需要注意最下面為第一層

第 10 步:成品展示


單片機(jī)源程序如下:
- /*---------------------------------------------------------------------------------------------------
- * 上升沿電子科技
- * 時間2015.8.1
- -----------------------------------------------------------------------------------------------------*/
- //Build target 'Target 1'
- //compiling stc8x8x8.c...
- //linking...
- //Program Size: data=17.1 xdata=355 code=53475
- //creating hex file from "stc8x8x8"...
- //"stc8x8x8" - 0 Error(s), 0 Warning(s).
- //沒有關(guān)閉本店字樣的顯示函數(shù) FLASH_12 FLASH_14 FLASH_18 如果需要自己關(guān)閉函數(shù)即可
- #include "STC12C5A.H" //包含單片機(jī)的頭文件使用KEIL必須添加進(jìn)來否則編譯不了
- #include "intrins.h" //包含NOP延時頭文件
- #define uchar unsigned char
- #define uint unsigned int
- #define nop() _nop_();_nop_();
- #define NOP() _nop_() /* 定義空指令 */
- void key_baihei_scan();
- void key_shangwiej_scan();
- void key_donghua_scan();
- void key_yinyue_scan();
- void box(unsigned char x1,unsigned char z1,unsigned char y1,unsigned char x2,unsigned char z2,unsigned char y2,unsigned char fill,unsigned char le);
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- sbit AD=P1^0; //定義音頻輸入接口
- sbit GM=P1^1; //定義光敏輸入接口
- sbit K1=P0^0; //定義功能按鍵接口
- sbit K2=P0^1; //定義功能按鍵接口
- sbit K3=P0^2; //定義功能按鍵接口
- sbit K4=P0^3; //定義功能按鍵接口
- sbit PWM_POW=P4^4; //定義PWM呼吸小夜燈和主板電源指示燈功能接口 低電平
- sbit IRIN=P3^2; //紅外線信號接口
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- sbit M_HR_DS0=P1^4; //模擬數(shù)據(jù)發(fā)送端口
- sbit M_LR_DS0=P1^5; //模擬數(shù)據(jù)發(fā)送端口
- sbit M_HG_DS0=P1^6; //模擬數(shù)據(jù)發(fā)送端口
- sbit M_LG_DS0=P0^7; //模擬數(shù)據(jù)發(fā)送端口
- sbit CLK=P1^3; //模擬時鐘控制端口
- sbit SUO=P1^2; //模擬鎖存信號端口
- /*$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$*/
- sbit M_A=P3^4; //行數(shù)據(jù)掃描信號
- sbit M_B=P3^5; //行數(shù)據(jù)掃描信號
- sbit M_C=P3^6; //行數(shù)據(jù)掃描信號
- sbit M_D=P3^7; //行數(shù)據(jù)掃描信號
- sbit M_EN=P1^7; //行數(shù)據(jù)掃描信號
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- unsigned char displayck[]=
- {
- 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, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
- unsigned char shuzu8X8[]=
- {
- 0XBD,0X85,0X85,0XBD,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,
- 0XA1,0XA1,0XA1,0XBD,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,
- };
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- uchar xdata display[8][8];
- uchar xdata msd=4;
- uint ld=500;
- uchar test=0,key1=0,key2=0,key3=0,key4=0;
- bit pu;
- uchar xsdsq=0;
- uchar cd=0,cnt=0,errd_flag=0,read_flag=0,layerr=0,saom=0;
- unsigned char IRCOM[7];
- unsigned int CYCLE=100,PWM_LOW=1110,shan=0,shuzi1=0,shuzi2=0,shuzi3=0,shuzi4=0,m=0;//定義周期并賦值
- void delay(unsigned int i); //函數(shù)聲名
- void IRInit();
- void IRdelay(char x);
- /*rank:A,1,2,3,4,I,心,U*/
- uchar code table_cha[8][8]=
- {
- 0x51,0x51,0x51,0x4a,0x4a,0x4a,0x44,0x44,
- 0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x3c,
- 0x3c,0x66,0x66,0x30,0x18,0x0c,0x06,0x7e,
- 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,0x3c,
- };
- /*the "ideasoft"*/
- /*rank:A,1,2,3,4,I,心,U*////開機(jī)的LOGO顯示字符字模提取PLC2002
- uchar code table_cha_sj[8][8]=
- {
- 0x08,0x08,0x78,0x08,0x08,0x08,0x08,0xFF,/*"上",0*/
- 0x18,0x04,0x22,0x24,0xFF,0x24,0x24,0x24,/*"升",0*/
- 0x78,0x49,0xCE,0x00,0xFF,0x84,0x86,0xFD,/*"沿",0*/
- 0x3C,0x42,0xA5,0xDB,0x81,0x99,0x42,0x3C,/*"笑臉",0*/
- 0x3C,0x42,0xA5,0xDB,0x81,0x99,0x42,0x3C,/*"笑臉",0*/
- 0x08,0x2A,0x2A,0xFF,0x14,0x14,0x96,0x71,/*"光",0*/
- 0x08,0x7F,0x22,0x22,0x24,0x14,0x14,0xFF,/*"立",0*/
- 0x08,0xFF,0x04,0x7C,0x44,0x44,0x42,0x31,/*"方",0*/
- };
- /*rank:3,D,C,L,U,E,F,F,T*///開機(jī)的LOGO顯示字符字模提取PLC2002
- uchar code table_cha_cu[9][8]=
- {
- 0x7E,0x40,0x40,0x7C,0x7C,0x40,0x40,0x7E,/*"3",0*/
- 0x00,0x3C,0x44,0x44,0x44,0x44,0x44,0x3C,/*"D",0*/
- 0x00,0x3C,0x02,0x02,0x02,0x02,0x02,0x3C,/*"C",0*/
- 0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x7C,/*"L",0*/
- 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,/*"U",0*/
- 0x00,0x7E,0x02,0x02,0x7E,0x02,0x02,0x7E,/*"E",0*/
- 0x78,0x04,0x04,0x04,0x7C,0x04,0x04,0x04,/*"F",0*/
- 0x78,0x04,0x04,0x04,0x7C,0x04,0x04,0x04,/*"F",0*/
- 0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,/*"T",0*/
- };
- uchar code table_id[40]=
- {
- 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,0x00,0x01,0x01,0xff,0x01,0x01,0x00,
- };
- /*the "ideasoft"*///側(cè)面移動顯示字符取摸plc2002
- uchar code table_yd[120]={
- 0x08,0x08,0x78,0x08,0x08,0x08,0x08,0xFF,/*"上",0*/
- 0x18,0x04,0x22,0x24,0xFF,0x24,0x24,0x24,/*"升",0*/
- 0x78,0x49,0xCE,0x00,0xFF,0x84,0x86,0xFD,/*"沿",0*/
- 0x7E,0x2A,0x2A,0xFF,0xAA,0xAA,0xBE,0x40,/*"電",0*/
- 0x09,0x49,0x89,0xFD,0x0B,0x0B,0x09,0x08,/*"子",0*/
- 0x00,0x7C,0x92,0x92,0x92,0x92,0x7C,0x00,/*"8",0*/
- 0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00,/*"x",0*/
- 0x00,0x7C,0x92,0x92,0x92,0x92,0x7C,0x00,/*"8",0*/
- 0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00,/*"x",0*/
- 0x00,0x7C,0x92,0x92,0x92,0x92,0x7C,0x00,/*"8",0*/
- 0x88,0x4E,0x78,0x0F,0xF8,0x8E,0x88,0x48,/*"光",0*/
- 0x82,0x8E,0xF2,0x83,0xE2,0x9E,0x82,0x80,/*"立",0*/
- 0x82,0x42,0x3E,0x0B,0x8A,0x8A,0x7A,0x02,/*"方",0*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- /*railway*/
- uchar code dat[128]=
- {
- 0x00,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,
- …………
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
- 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,//滿屏
- };
- /******************************************************************************************
- **********************************紅外功能部分*********************************************
- *******************************************************************************************/
- void IRInit()
- {
- IE |= 0x81; //允許總中斷中斷,使能 INT0 外部中斷
- TCON |= 0x01; //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
- IRIN=1; //I/O口初始化
- P4SW=0xff; //定義P4口為I/O口
- P4M1=0x00;
- P4M0=0xff; //定義P4為強(qiáng)上拉輸出.
- }
- void IRdelay(unsigned char x) //延時子程序
- {
- unsigned char a,b;
- while(x--)
- {
- for(b=6;b>0;b--)
- for(a=127;a>0;a--);
- }
- }
- void IDelay(unsigned int t)
- {
- while(--t);
- }
- /*##########################################################################################*/
- //************************************上升沿電子科技************************************
- //函數(shù)名稱:void IRsendbyte(unsigned int byte);
- //功 能:根據(jù)byte值的大小,取出對應(yīng)tab數(shù)組中的值,模擬SPI發(fā)送出去一個字節(jié)
- //入口參數(shù):byte值,范圍0-65535
- //出口參數(shù):無
- //編 寫 人:上升沿電子科技
- //編寫日期:2015-08-02
- //修改歷史:V1.0
- //************************************上升沿電子科技************************************
- void IRsendbyte(unsigned int byte)
- {
- unsigned char num; //定義需要發(fā)送的數(shù)據(jù)
- unsigned char c; //定義發(fā)送一個字節(jié)的變量
- num=~tab[byte]; //根據(jù)byte值取出tab數(shù)組中的數(shù)據(jù),存入發(fā)送數(shù)據(jù)變量中
- for(c=0;c<8;c++) //循環(huán)發(fā)送一個字節(jié)
- {
- CLK=0; //時鐘置低電平啟動
- M_LR_DS0=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位
- CLK=1; //時鐘置高電平結(jié)束數(shù)據(jù)發(fā)送
- num<<=1; //將需要發(fā)送的數(shù)據(jù)左移一位
- }
- }
- /*##########################################################################################*/
- //************************************上升沿電子科技************************************
- //函數(shù)名稱:void delayus(unsigned int yanshi);
- //功 能:根據(jù)yanshi值的大小進(jìn)行延時等待操作,1默認(rèn)為2uS
- //入口參數(shù):yanshi的值,范圍0-65535
- //出口參數(shù):無
- //編 寫 人:上升沿電子科技
- //編寫日期:2015-08-1
- //修改歷史:V1.0
- //************************************上升沿電子科技************************************
- void delayus(unsigned int yanshi)
- {
- unsigned int wmys; //定義延時循環(huán)控制變量
- for(wmys=0;wmys<=yanshi;wmys++); //根據(jù)延時參數(shù)進(jìn)行空循環(huán)操作,達(dá)到延時功能
- }
- /*##########################################################################################*/
- //************************************上升沿電子科技************************************
- //函數(shù)名稱:void hansao(unsigned char hs);
- //功 能:根據(jù)入口參數(shù)hs的值,進(jìn)行判斷選擇哪一行,選通1-8行的選通
- //入口參數(shù):hs的值,范圍0-7
- //出口參數(shù):無
- //編 寫 人:上升沿電子科技
- //************************************上升沿電子科技************************************
- void hansao(unsigned char hs)
- {
- if(hs<8) //判斷hs的值是否在行掃描的值范圍內(nèi),不在范圍內(nèi)不執(zhí)行任何操作
- {
- if(hs==7) //選通第1行
- {
- M_A=0;M_B=0;M_C=0;M_D=0; return;
- }
- if(hs==6) //選通第2行
- {
- M_A=1;M_B=0;M_C=0;M_D=0; return;
- }
- if(hs==5) //選通第3行
- {
- M_A=0;M_B=1;M_C=0;M_D=0; return;
- }
- if(hs==4) //選通第4行
- {
- M_A=1;M_B=1;M_C=0;M_D=0; return;
- }
- if(hs==3) //選通第5行
- {
- M_A=0;M_B=0;M_C=1;M_D=0; return;
- }
- if(hs==2) //選通第6行
- {
- M_A=1;M_B=0;M_C=1;M_D=0; return;
- }
- if(hs==1) //選通第7行
- {
- M_A=0;M_B=1;M_C=1;M_D=0; return;
- }
- if(hs==0) //選通第8行
- {
- M_A=1;M_B=1;M_C=1;M_D=0; return;
- }
- }
- }
- void ADC0_Init (void)
- {
- P1ASF = 0x01; //Open 8 channels ADC function
- ADC_RES = 0; //Clear previous result 清零ADC的8位數(shù)據(jù)
- AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0 (10位A/D轉(zhuǎn)換結(jié)果的高8位放在ADC_RES寄存器, 低2位放在ADC_RESL寄存器)
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//配置ADC寄存器
- _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- }
- void init()
- {
- P4SW=0xff; //定義P4口為I/O口
- P0M1=0x00;
- P0M0=0xff; //定義P0為強(qiáng)上拉輸出.
- P1M1=0x01;
- P1M0=0xfe; //定義P1為強(qiáng)上拉輸出. P1.0作為AD此時不能作為強(qiáng)上蠟
- P2M1=0x00;
- P2M0=0xff; //定義P2為強(qiáng)上拉輸出.
- P3M1=0x00;
- P3M0=0xf8; //定義P2為強(qiáng)上拉輸出.
- P4M1=0x00;
- P4M0=0xff; //定義P4為強(qiáng)上拉輸出.
-
- }
-
- void sinter()
- {
- IE=0x82;
- TCON=0x01;
- TH0=0x10;
- TL0=0x00;
- init();
- PWM_POW=1;
- ADC0_Init();
- }
- void delay10us(void) //誤差 -0.026765046296us STC 1T 22.1184Mhz
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=2;a>0;a--); //默認(rèn)的速度為5,變速1-5-25-125
- }
- void delay5us(void) //誤差 -0.026765046296us STC 1T 22.1184Mhz
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=5;a>0;a--); //默認(rèn)的速度為5,變速1-5-25-125
- }
- void delay(uint ihk)
- {
- if(key3==2){return;}
- else
- {
- while(ihk--)
- {
- delay5us(); //12t的mcu 注釋這個延時即可
- }
- }
- }
- /*判斷一個數(shù)值的第n位,是1還是0,并返回相應(yīng)數(shù)值*/
- uchar judgebit(uchar num,uchar b)
- {
- char n;
- num=num&(1<<b);
- if (num)
- n=1;
- else
- n=0;
- return n;
- }
- /*To figure out the round number*/
- uchar abs(uchar a)
- {
- uchar b;
- b=a/10;
- a=a-b*10;
- if (a>=5)
- b++;
- return b;
- }
- /*To figure out the absolute value*/
- uchar abss(char a)
- {
- if (a<0)
- a=-a;
- return a;
- }
- /*The function can comparat the character.
- And remove the big one to the back.*/
- void max(uchar *a,uchar *b)
- {
- uchar t;
- 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 (a<b)
- a=b;
- if (a<c)
- a=c;
- return a;
- }
- void clear(char le)
- {
- uchar i,j;
- for (j=0;j<8;j++)
- {
- for (i=0;i<8;i++)
- display[j][i]=le;
- }
- }void Vol_watch_1(unsigned char kxg1)
- {
- unsigned int xdata result=0,l=0,n=500,saa,sad;
- unsigned char code disxin[8][8]={
- 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x99,
- 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xA5,
- 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0xC3,
- 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81,
- 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x99,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xE7,
- 0xFF, 0xC3, 0xA5, 0x81, 0x81, 0xA5, 0xC3, 0xFF,
- };
- while(n)
- {
- if ((result>>5)>l)
- l=result>>5;
- else
- if (l>0)
- l--;
- if (l>7)
- l=7;
- if(kxg1==1)
- {
- box(3,3,0,4,4,l,1,1);
- if (l<7)
- box(3,3,7,4,4,l+1,1,0);
- result=voivol(16);
- }
- if(kxg1==2)
- {
- box(2,2,0,5,5,l,1,1);
- if (l<7)
- box(2,2,7,5,5,l+1,1,0);
- result=voivol(16);
- }
- if(kxg1==3)
- {
- box(1,1,0,6,6,l,1,1);
- if (l<7)
- box(1,1,7,6,6,l+1,1,0);
- result=voivol(16);
- }
- if(kxg1==4)
- {
- box(0,0,0,7,7,l,1,1);
- if (l<7)
- box(0,0,7,7,7,l+1,1,0);
- result=voivol(16);
- }
- if(kxg1==5)
- {
- for(saa=0;saa<8;saa++)
- {
- for(sad=0;sad<8;sad++)
- {
- display[saa][sad]= disxin[saa][sad];
- }
- }
- box(3,3,0,4,4,l,1,1);
- if (l<7)
- box(3,3,7,4,4,l+1,1,0);
- result=voivol(16);
- }n--;
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}
- }
- }
- void serial (void) interrupt 4 using 1
- {
- uchar tempbuff;ES=0;
- if(RI){
- RI=0;tempbuff=SBUF;
- switch(cnt){
- case 0:if(tempbuff==0xf2)cnt=1;else {cnt=0;}break;
- case 1:shuzu8X8[cd++]=tempbuff;
- if(cd==64){cnt=0;cd=0;read_flag=1;}
- else{break;}
- default:break;} }
- ES=1;
- }
- void trailler(uint speed)
- {
- char i,j;
- for (i=6;i>=-3;i--)
- {
- if (i>=0)
- {
- for (j=0;j<8;j++)
- display[j][i]=display[j][i+1];
- }
- if (i<4)
- {
- for (j=0;j<8;j++)
- display[j][i+4]=0;
- }
- delay(speed);
- }
- }
- void point(uchar x,uchar y,uchar z,uchar le)
- {
- uchar ch1,ch0;
- ch1=1<<x;
- ch0=~ch1;
- if (le)
- display[z][y]=display[z][y]|ch1;
- else
- display[z][y]=display[z][y]&ch0;
- }
- void type(uchar cha,uchar y)
- {
- uchar xx;
- for (xx=0;xx<8;xx++)
- {
- display[xx][y]=table_cha[cha][xx];
- }
- }
- void type_sj(uchar cha,uchar y)
- {
- uchar xx;
- for (xx=0;xx<8;xx++)
- {
- display[xx][y]=table_cha_sj[cha][xx];
- }
- }
- /*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.*/
- void cirp(char cpp,uchar dir,uchar le)
- {
- uchar a,b,c,cp;
- if ((cpp<128)&(cpp>=0))
- {
- if (dir)
- cp=127-cpp;
- else
- cp=cpp;
- a=(dat[cp]>>5)&0x07;
- b=(dat[cp]>>2)&0x07;
- c=dat[cp]&0x03;
- if (cpp>63)
- 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-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;i<t;i++)
- {
- point(abs(a),abs(b),abs(c),le);
- a+=a1;
- b+=b1;
- c+=c1;
- }
- point(x2,y2,z2,le);
- }
- void box(unsigned char x1,unsigned char z1,unsigned char y1,unsigned char x2,unsigned char z2,unsigned char y2,unsigned char fill,unsigned char le)
- {
- uchar i,j,t=0;
- max(&x1,&x2);
- max(&y1,&y2);
- max(&z1,&z2);
- for (i=x1;i<=x2;i++)
- t|=1<<i;
- if (!le)
- t=~t;
- if (fill)
- {
- if (le)
- {
- for (i=z1;i<=z2;i++)
- {
- for (j=y1;j<=y2;j++)
- display[j][i]|=t;
- }
- }
- else
- {
- for (i=z1;i<=z2;i++)
- {
- for (j=y1;j<=y2;j++)
- display[j][i]&=t;
- }
- }
- }
- else
- {
- if (le)
- {
- display[y1][z1]|=t;
- display[y2][z1]|=t;
- display[y1][z2]|=t;
- display[y2][z2]|=t;
- }
- else
- {
- display[y1][z1]&=t;
- display[y2][z1]&=t;
- display[y1][z2]&=t;
- display[y2][z2]&=t;
- }
- t=(0x01<<x1)|(0x01<<x2);
- if (!le)
- t=~t;
- if (le)
- {
- for (j=z1;j<=z2;j+=(z2-z1))
- {
- for (i=y1;i<=y2;i++)
- display[i][j]|=t;
- }
- for (j=y1;j<=y2;j+=(y2-y1))
- {
- for (i=z1;i<=z2;i++)
- display[j][i]|=t;
- }
- }
- else
- {
- for (j=z1;j<=z2;j+=(z2-z1))
- {
- for (i=y1;i<=y2;i++)
- {
- display[i][j]&=t;
- }
- }
- for (j=y1;j<=y2;j+=(y2-y1))
- {
- for (i=z1;i<=z2;i++)
- {
- display[j][i]&=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);
- }
- }
- else
- {
- line (x1,y1,z1,x2,y2,z1,le);
- line (x1,y1,z2,x2,y2,z2,le);
- line (x2,y2,z1,x2,y2,z2,le);
- line (x1,y1,z1,x1,y1,z2,le);
- }
- }
-
- void poke(uchar n,uchar x,uchar y)
- {
- uchar i;
- for (i=0;i<8;i++)
- {
- point(x,y,i,judgebit(n,i));
- }
- }
- void boxtola(char i,uchar n)
- {
- if ((i>=0)&(i<8))
- {
- poke(n,0,7-i);
- }
- if ((i>=8)&(i<16))
- {
- poke(n,i-8,0);
- }
- if ((i>=16)&(i<24))
- {
- poke(n,7,i-16);
- }
- }
- void rolldisplay_yd(uint speed)
- {
- uchar j;
- char i,a;
- for (i=23;i>-112;i--)
- {
- for (j=0;j<112;j++)
- {
- a=i+j;
- if ((a>=0)&(a<24))
- boxtola(a,table_yd[j]);
- }
- delay(speed);
- }
- }
- void rolldisplay(uint speed)
- {
- uchar xdata j;
- char xdata i,a;
- for (i=23;i>-40;i--)
- {
- for (j=0;j<40;j++)
- {
- a=i+j;
- if ((a>=0)&(a<24))
- boxtola(a,table_id[j]);
- }
- delay(speed);
- }
- }
- void roll_apeak_yz(uchar n,uint speed)
- {
- uchar xdata i;
- switch(n)
- {
- case 1:
- for (i=0;i<7;i++)
- {
- display[i][7]=0;
- display[7][6-i]=255;
- delay(speed);
- };
- break;
- case 2:
- for (i=0;i<7;i++)
- {
- display[7][7-i]=0;
- display[6-i][0]=255;
- delay(speed);
- };
- break;
- case 3:
- for (i=0;i<7;i++)
- {
- display[7-i][0]=0;
- display[0][i+1]=255;
- delay(speed);
- };
- break;
- case 0:
- for (i=0;i<7;i++)
- {
- display[0][i]=0;
- display[i+1][7]=255;
- delay(speed);
- };
- }
- }
- void roll_apeak_xy(uchar n,uint speed)
- {
- uchar xdata i;
- switch(n)
- {
- case 1:
- for (i=0;i<7;i++)
- {
- line(0,i,0,0,i,7,0);
- line(i+1,7,0,i+1,7,7,1);
- delay(speed);
- };
- break;
- case 2:
- for (i=0;i<7;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;i<7;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;i<7;i++)
- {
- line(7-i,0,0,7-i,0,7,0);
- line(0,i+1,0,0,i+1,7,1);
- delay(speed);
- };
- }
- }
- void roll_3_xy(uchar n,uint speed)
- {
- uchar xdata i;
- switch(n)
- {
- case 1:
- for (i=0;i<8;i++)
- {
- box_apeak_xy (0,i,0,7,7-i,7,1,1);
- delay(speed);
- if (i<7)
- box_apeak_xy (3,3,0,0,i,7,1,0);
- };
- break;
- case 2:
- for (i=0;i<8;i++)
- {
- box_apeak_xy (7-i,0,0,i,7,7,1,1);
- delay(speed);
- if (i<7)
- box_apeak_xy (3,4,0,i,7,7,1,0);
- };
- break;
- case 3:
- for (i=0;i<8;i++)
- {
- box_apeak_xy (0,i,0,7,7-i,7,1,1);
- delay(speed);
- if (i<7)
- box_apeak_xy (4,4,0,7,7-i,7,1,0);
- };
- break;
- case 0:
- for (i=0;i<8;i++)
- {
- box_apeak_xy (7-i,0,0,i,7,7,1,1);
- delay(speed);
- if (i<7)
- box_apeak_xy (4,3,0,7-i,0,7,1,0);
- };
- }
- }
- void trans(uchar z,uint speed)
- {
- uchar i,j;
- for (j=0;j<8;j++)
- {
- for (i=0;i<8;i++)
- {
- display[z][i]>>=1;
- }
- delay(speed);
- }
- }
- void tranoutchar(uchar c,uint speed)
- {
- uchar i,j,k,a,i2=0;
- for (i=0;i<8;i++)
- {
- if (i<7)
- box_apeak_xy (i+1,0,0,i+1,7,7,1,1);
- box_apeak_xy (i2,0,0,i2,7,7,1,0);
- a=0;
- i2=i+1;
- for (j=0;j<=i;j++)
- {
- a=a|(1<<j);
- }
- for (k=0;k<8;k++)
- {
- display[k][3]|=table_cha[c][k]&a;
- display[k][4]|=table_cha[c][k]&a;
- }
- delay(speed);
- }
- }
- void tranoutchar_cu(uchar c,uint speed)
- {
- uchar i,j,k,a,i2=0;
- for (i=0;i<8;i++)
- {
- if (i<7)
- box_apeak_xy (i+1,0,0,i+1,7,7,1,1);
- box_apeak_xy (i2,0,0,i2,7,7,1,0);
- a=0;
- i2=i+1;
- for (j=0;j<=i;j++)
- {
- a=a|(1<<j);
- }
- for (k=0;k<8;k++)
- {
- display[k][3]|=table_cha_cu[c][k]&a;
- display[k][4]|=table_cha_cu[c][k]&a;
- }
- delay(speed);
- }
- }
- void transss()
- {
- uchar i,j;
- for (i=0;i<8;i++)
- {
- for (j=0;j<8;j++)
- display[i][j]<<=1;
- }
- }
- /*From now on,the function below is to display the flash.*/
- void flash_1()
- {
- clear(0);
- type(4,0);
- delay(60000);
- type(3,0);
- delay(60000);
- type(2,0);
- delay(60000);
- type(1,0);
- delay(60000);
- delay(60000);
- }
- void flash_16()
- {
- clear(0);
- rolldisplay(30000);
- }
- void flash_17()
- {
- clear(0);
- type(0,7);
- delay(60000);
- trailler(6000);
- delay(60000);
- }
- void flash_12()
- {
- clear(0);
- rolldisplay_yd(30000);
- }
- void flash_13()
- {
- clear(0);
- type(0,7);
- trailler(9000);
- delay(60000);
- clear(0);
- type(1,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(2,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(3,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(4,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(5,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(6,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- clear(0);
- type(7,7);
- delay(60000);
- trailler(9000);
- delay(60000);
- }
- void flash_2()
- {
- uchar i;
- clear(0);
- for (i=129;i>0;i--)
- {
- cirp(i-2,0,1);
- delay(8000);
- cirp(i-1,0,0);
- }
- delay(8000);
- for (i=0;i<136;i++)
- {
- cirp(i,1,1);
- delay(8000);
- cirp(i-8,1,0);
- }
- delay(8000);
- for (i=129;i>0;i--)
- {
- cirp(i-2,0,1);
- delay(8000);
- }
- delay(60000);delay(60000);delay(60000);delay(60000);
- delay(60000);delay(60000);delay(60000);delay(60000);
- delay(60000);delay(60000);delay(60000);delay(60000);
- delay(60000);delay(60000);delay(60000);delay(60000);
- for (i=0;i<128;i++)
- {
- cirp(i-8,1,0);
- delay(8000);
- }
- delay(60000);
- }
- void flash_3()
- {
- char i;
- for (i=0;i<8;i++)
- {
- box_apeak_xy(0,i,0,7,i,7,1,1);
- delay(20000);
- if (i<7)
- box_apeak_xy(0,i,0,7,i,7,1,0);
- }
- for (i=7;i>=0;i--)
- {
- box_apeak_xy(0,i,0,7,i,7,1,1);
- delay(20000);
- if (i>0)
- box_apeak_xy(0,i,0,7,i,7,1,0);
- }
- for (i=0;i<8;i++)
- {
- box_apeak_xy(0,i,0,7,i,7,1,1);
- delay(20000);
- if (i<7)
- box_apeak_xy(0,i,0,7,i,7,1,0);
- }
- }
- void flash_4()
- {
- char i,j,an[8];
- for (j=7;j<15;j++)
- an[j-7]=j;
- for (i=0;i<=16;i++)
- {
- for (j=0;j<8;j++)
- {
- if ((an[j]<8)&(an[j]>=0))
- line(0,an[j],j,7,an[j],j,1);
- }
- for (j=0;j<8;j++)
- {
- if (((an[j]+1)<8)&(an[j]>=0))
- line(0,an[j]+1,j,7,an[j]+1,j,0);
- }
- for (j=0;j<8;j++)
- {
- if (an[j]>0)
- an[j]--;
- }
- delay(15000);
- }
- for (j=0;j<8;j++)
- an[j]=1-j;
- for (i=0;i<=16;i++)
- {
- for (j=0;j<8;j++)
- {
- if ((an[j]<8)&(an[j]>=0))
- line(0,an[j],j,7,an[j],j,1);
- }
- for (j=0;j<8;j++)
- {
- if (((an[j]-1)<7)&(an[j]>0))
- line(0,an[j]-1,j,7,an[j]-1,j,0);
- }
- for (j=0;j<8;j++)
- {
- if (an[j]<7)
- an[j]++;
- }
- delay(15000);
- }
- }void key_donghua_scan()
- {
- if(!K3) //如果檢測到低電平,說明按鍵按下
- {
- if(msd==1||msd==2){TR0=0;}
- delay10us(); //延時去抖,一般10-20ms
- if(!K3) //再次確認(rèn)按鍵是否按下,沒有按下則退出
- {
- while(!K3)//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出
- {
- if(test==1){key1=2;}
- if(test==2){key2=2;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- }
- }
- }
- if(msd==1||msd==2){TR0=1;}
- }
- void key_yinyue_scan()
- {
- if(!K4) //如果檢測到低電平,說明按鍵按下
- {
- if(msd==1||msd==2){TR0=0;}
- delay10us(); //延時去抖,一般10-20ms
- if(!K4) //再次確認(rèn)按鍵是否按下,沒有按下則退出
- {
- while(!K4)//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出
- {
- if(test==1){key1=3;}
- if(test==2){key2=1;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- }
- }
- }
- if(msd==1||msd==2){TR0=1;}
- }
- void flash_5()
- {
- uint a=15000;
- char i=8,j,an[4];
- for (j=7;j<11;j++)
- an[j-7]=j;
- while(i--)
- {
- for (j=0;j<4;j++)
- {
- if (an[j]<8)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]<7)
- box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (an[j]>3)
- an[j]--;
- }
- delay(a);
- }
- i=3;
- for (j=0;j<4;j++)
- an[j]=5-j;
- while(i--)
- {
- for (j=1;j<4;j++)
- {
- if (an[j]<4)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]<3)
- box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (an[j]>0)
- an[j]--;
- }
- delay(a);
- }
- i=3;
- for (j=1;j<4;j++)
- an[j]=4-j;
- while(i--)
- {
- for (j=1;j<4;j++)
- {
- if (an[j]>=0)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]>0)
- box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
- }
- for (j=1;j<4;j++)
- {
- if (an[j]<3)
- an[j]++;
- }
- delay(a);
- }
- i=3;
- for (j=0;j<4;j++)
- an[j]=j+1;
- while(i--)
- {
- for (j=1;j<4;j++)
- {
- if (an[j]>3)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]>3)
- box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- an[j]++;
- delay(a);
- }
- i=3;
- for (j=3;j<6;j++)
- an[j-2]=j;
- while(i--)
- {
- for (j=1;j<4;j++)
- {
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (an[j]>3)
- an[j]--;
- }
- delay(a);
- }
- i=3;
- for (j=0;j<4;j++)
- an[j]=5-j;
- while(i--)
- {
- for (j=1;j<4;j++)
- {
- if (an[j]<4)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]<3)
- box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (an[j]>0)
- an[j]--;
- }
- delay(a);
- }
- i=3;
- for (j=0;j<4;j++)
- an[j]=3-j;
- an[0]=2;
- while(i--)
- {
- for (j=0;j<3;j++)
- {
- if (an[j]>=0)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]>=0)
- box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (j<5-i)
- an[j]--;
- }
- delay(a);
- }
- i=10;
- for (j=0;j<4;j++)
- an[j]=j-2;
- while(i--)
- {
- for (j=0;j<4;j++)
- {
- if (an[j]>=0)
- box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
- if (an[j]>=0)
- box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
- }
- for (j=0;j<4;j++)
- {
- if (an[j]<7)
- an[j]++;
- }
- delay(a);
- }
- }
- void flash_6()
- {
- uchar i,j,k,z;
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_yz(3,10000);
- roll_apeak_yz(0,10000);
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_yz(3,10000);
- for (i=0;i<3;i++)
- {
- for (j=0;j<8;j++)
- {
- for (k=0;k<8;k++)
- {
- if ((table_3p[i][j]>>k)&1)
- {
- for (z=1;z<8;z++)
- {
- point (j,7-k,z,1);
- if (z-1)
- point (j,7-k,z-1,0);
- delay(5000);
- }
- }
- }
- }
- delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);
- trans(7,15000);
- }
- }
- void flash_7()
- {
- uchar i;
- uint a=3000;
- roll_apeak_yz(0,10000);
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_yz(3,10000);
- roll_apeak_yz(0,10000);
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_yz(3,10000);
- roll_apeak_yz(0,10000);
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_xy(0,10000);
- roll_apeak_xy(1,10000);
- roll_apeak_xy(2,10000);
- roll_apeak_xy(3,10000);
- roll_apeak_xy(0,10000);
- roll_apeak_xy(1,10000);
- roll_apeak_xy(2,10000);
- roll_apeak_xy(3,10000);
- for (i=0;i<8;i++)
- {
- box_apeak_xy (0,i,0,7-i,i,7,1,1);
- delay(a);
- }
- delay(30000);
- roll_3_xy(0,a);
- delay(30000);
- roll_3_xy(1,a);
- delay(30000);
- roll_3_xy(2,a);
- delay(30000);
- roll_3_xy(3,a);
- delay(30000);
- roll_3_xy(0,a);
- delay(30000);
- roll_3_xy(1,a);
- delay(30000);
- roll_3_xy(2,a);
- delay(30000);
- roll_3_xy(3,a);
- for (i=7;i>0;i--)
- {
- box_apeak_xy(i,0,0,i,7,7,1,0);
- delay(a);
- }
- }
- void flash_8()
- {
- uchar i;
- for (i=5;i<8;i++)
- {
- tranoutchar(i,10000);
- delay(60000);
- delay(60000);
- }
- }void fvb()
- {
- if(read_flag)
- {
- read_flag=0;
- for(saom=0;saom<8;saom++)
- {
- displayck[saom+0]=((shuzu8X8[saom*8]>>7)&0x01)+(((shuzu8X8[saom*8+1]>>7)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>7)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>7)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>7)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>7)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>7)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>7)&0x01)<<7);
- displayck[saom+8]=((shuzu8X8[saom*8]>>6)&0x01)+(((shuzu8X8[saom*8+1]>>6)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>6)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>6)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>6)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>6)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>6)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>6)&0x01)<<7);
- displayck[saom+16]=((shuzu8X8[saom*8]>>5)&0x01)+(((shuzu8X8[saom*8+1]>>5)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>5)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>5)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>5)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>5)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>5)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>5)&0x01)<<7);
- displayck[saom+24]=((shuzu8X8[saom*8]>>4)&0x01)+(((shuzu8X8[saom*8+1]>>4)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>4)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>4)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>4)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>4)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>4)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>4)&0x01)<<7);
- displayck[saom+32]=((shuzu8X8[saom*8]>>3)&0x01)+(((shuzu8X8[saom*8+1]>>3)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>3)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>3)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>3)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>3)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>3)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>3)&0x01)<<7);
- displayck[saom+40]=((shuzu8X8[saom*8]>>2)&0x01)+(((shuzu8X8[saom*8+1]>>2)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>2)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>2)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>2)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>2)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>2)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>2)&0x01)<<7);
- displayck[saom+48]=((shuzu8X8[saom*8]>>1)&0x01)+(((shuzu8X8[saom*8+1]>>1)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>1)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>1)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>1)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>1)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>1)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>1)&0x01)<<7);
- displayck[saom+56]=((shuzu8X8[saom*8]>>0)&0x01)+(((shuzu8X8[saom*8+1]>>0)&0x01)<<1)+(((shuzu8X8[saom*8+2]>>0)&0x01)<<2)+(((shuzu8X8[saom*8+3]>>0)&0x01)<<3)+(((shuzu8X8[saom*8+4]>>0)&0x01)<<4)+(((shuzu8X8[saom*8+5]>>0)&0x01)<<5)+(((shuzu8X8[saom*8+6]>>0)&0x01)<<6)+(((shuzu8X8[saom*8+7]>>0)&0x01)<<7);
- }
- }
- for(layerr=0;layerr<8;layerr++)
- {
- key_baihei_scan(); key_shangwiej_scan(); key_donghua_scan(); key_yinyue_scan();
- hansao(layerr);
- sendbyteck(~displayck[layerr*8+0],~displayck[layerr*8+2],~displayck[layerr*8+4],~displayck[layerr*8+7]);
- sendbyteck(~displayck[layerr*8+3],~displayck[layerr*8+1],~displayck[layerr*8+6],~displayck[layerr*8+5]);
- SUO=0;
- _nop_();
- SUO=1;
- M_EN=0;
- delayus(ld);
- M_EN=1;
- if(key2==1||key2==2)
- {
- break;
- }
- }
- }
- void flash_9()
- {
- char i;
- uchar j,an[8],x,y,t,x1,y1;
- for (i=0;i<8;i++)
- {
- box_apeak_xy (i,0,0,i,7,7,1,1);
- if (i)
- box_apeak_xy (i-1,0,0,i-1,7,7,1,0);
- delay(10000);
- }
- roll_apeak_xy(3,10000);
- roll_apeak_xy(0,10000);
- roll_apeak_xy(1,10000);
- for (i=0;i<7;i++)
- {
- line(6-i,6-i,0,6-i,6-i,7,1);
- line(i,7,0,i,7,7,0);
- delay(10000);
- }
- for (i=0;i<8;i++)
- an[i]=14;
- for (i=0;i<85;i++)
- {
- clear(0);
- for (j=0;j<8;j++)
- {
- t=an[j]%28;
- x=dat2[t]>>5;
- y=(dat2[t]>>2)&0x07;
- t=(an[j]-14)%28;
- x1=dat2[t]>>5;
- y1=(dat2[t]>>2)&0x07;
- line(x,y,j,x1,y1,j,1);
- }
- for (j=0;j<8;j++)
- {
- if ((i>j)&(j>i-71))
- an[j]++;
- }
- delay(5000);
- }
- for (i=0;i<85;i++)
- {
- clear(0);
- for (j=0;j<8;j++)
- {
- t=an[j]%28;
- x=dat2[t]>>5;
- y=(dat2[t]>>2)&0x07;
- t=(an[j]-14)%28;
- x1=dat2[t]>>5;
- y1=(dat2[t]>>2)&0x07;
- line(x,y,j,x1,y1,j,1);
- }
- for (j=0;j<8;j++)
- {
- if ((i>j)&(j>i-71))
- an[j]--;
- }
- delay(5000);
- }
- for (i=0;i<29;i++)
- {
- clear(0);
- t=an[0]%28;
- x=dat2[t]>>5;
- y=(dat2[t]>>2)&0x07;
- t=(an[0]-14)%28;
- x1=dat2[t]>>5;
- y1=(dat2[t]>>2)&0x07;
- box_apeak_xy(x,y,0,x1,y1,7,0,1);
- box_apeak_xy(x,y,1,x1,y1,6,0,1);
- an[0]++;
- delay(5000);
- }
- for (i=0;i<16;i++)
- {
- clear(0);
- t=an[0]%28;
- x=dat2[t]>>5;
- y=(dat2[t]>>2)&0x07;
- t=(an[0]-14)%28;
- x1=dat2[t]>>5;
- y1=(dat2[t]>>2)&0x07;
- box_apeak_xy(x,y,0,x1,y1,7,1,1);
- an[0]--;
- delay(5000);
- }
- for (i=0;i<8;i++)
- {
- line(i,i,0,0,0,i,0);
- delay(5000);
- }
- for (i=1;i<7;i++)
- {
- line(i,i,7,7,7,i,0);
- delay(5000);
- }
- for (i=1;i<8;i++)
- {
- clear(0);
- box(7,7,7,7-i,7-i,7-i,0,1);
- delay(10000);
- }
- for (i=1;i<7;i++)
- {
- clear(0);
- box(0,0,0,7-i,7-i,7-i,0,1);
- delay(10000);
- }
- for (i=1;i<8;i++)
- {
- clear(0);
- box(0,0,0,i,i,i,0,1);
- delay(10000);
- }
- for (i=1;i<7;i++)
- {
- clear(0);
- box(7,0,0,i,7-i,7-i,0,1);
- delay(10000);
- }
- for (i=1;i<8;i++)
- {
- box(7,0,0,7-i,i,i,1,1);
- delay(10000);
- }
- for (i=1;i<7;i++)
- {
- clear(0);
- box(0,7,7,7-i,i,i,1,1);
- delay(10000);
- }
- }
- void flash_10()
- {
- uchar i,j,an[4],x,y,t;
- for (i=1;i<7;i++)
- {
- clear(0);
- box(0,6,6,1,7,7,1,1);
- box(i,6,6-i,i+1,7,7-i,1,1);
- box(i,6,6,i+1,7,7,1,1);
- box(0,6,6-i,1,7,7-i,1,1);
- box(0,6-i,6,1,7-i,7,1,1);
- box(i,6-i,6-i,i+1,7-i,7-i,1,1);
- box(i,6-i,6,i+1,7-i,7,1,1);
- box(0,6-i,6-i,1,7-i,7-i,1,1);
- delay(30000);
- }
- for (i=0;i<4;i++)
- {
- an[i]=6*i;
- }
- for (i=0;i<35;i++)
- {
- clear(0);
- for(j=0;j<4;j++)
- {
- t=an[j]%24;
- x=dat3[t]>>4;
- y=dat3[t]&0x0f;
- box(x,y,0,x+1,y+1,1,1,1);
- box(x,y,6,x+1,y+1,7,1,1);
- }
- for (j=0;j<4;j++)
- an[j]++;
- delay(10000);
- }
- for (i=0;i<35;i++)
- {
- clear(0);
- for(j=0;j<4;j++)
- {
- t=an[j]%24;
- x=dat3[t]>>4;
- y=dat3[t]&0x0f;
- box(x,y,0,x+1,y+1,1,1,1);
- box(x,y,6,x+1,y+1,7,1,1);
- }
- for (j=0;j<4;j++)
- an[j]--;
- delay(10000);
- }
- for (i=0;i<35;i++)
- {
- clear(0);
- for(j=0;j<4;j++)
- {
- t=an[j]%24;
- x=dat3[t]>>4;
- y=dat3[t]&0x0f;
- box(x,0,y,x+1,1,y+1,1,1);
- box(x,6,y,x+1,7,y+1,1,1);
- }
- for (j=0;j<4;j++)
- an[j]++;
- delay(10000);
- }
- for (i=0;i<36;i++)
- {
- clear(0);
- for(j=0;j<4;j++)
- {
- t=an[j]%24;
- x=dat3[t]>>4;
- y=dat3[t]&0x0f;
- box(x,0,y,x+1,1,y+1,1,1);
- box(x,6,y,x+1,7,y+1,1,1);
- }
- for (j=0;j<4;j++)
- an[j]--;
- delay(10000);
- }
- for (i=6;i>0;i--)
- {
- clear(0);
- box(0,6,6,1,7,7,1,1);
- box(i,6,6-i,i+1,7,7-i,1,1);
- box(i,6,6,i+1,7,7,1,1);
- box(0,6,6-i,1,7,7-i,1,1);
- box(0,6-i,6,1,7-i,7,1,1);
- box(i,6-i,6-i,i+1,7-i,7-i,1,1);
- box(i,6-i,6,i+1,7-i,7,1,1);
- box(0,6-i,6-i,1,7-i,7-i,1,1);
- delay(30000);
- }
- }
- void flash_11()
- {
- uchar i,j,t,x,y;
- uchar code daa[13]={0,1,2,0x23,5,6,7,6,5,0x23,2,1,0};
- clear(0);
- for (j=0;j<5;j++)
- {
- for (i=0;i<13;i++)
- {
- if (daa[i]>>4)
- {
- t=daa[i]&0x0f;
- line (0,0,t+1,0,7,t+1,1);
- }
- else
- t=daa[i];
- line (0,0,t,0,7,t,1);
- transss();
- delay(10000);
- }
- }
- for (j=1;j<8;j++)
- {
- if (j>3)
- t=4;
- else
- t=j;
- for (i=0;i<24;i+=j)
- {
- x=dat3[i]>>4;
- y=dat3[i]&0x0f;
- box_apeak_xy(0,x,y,0,x+1,y+1,1,1);
- transss();
- delay(10000);
- }
- }
- for (j=1;j<8;j++)
- {
- if (j>3)
- t=4;
- else
- t=j;
- for (i=0;i<24;i+=j)
- {
- x=dat3[i]>>4;
- y=dat3[i]&0x0f;
- point (0,x,y,1);
- transss();
- delay(10000);
- }
- }
- }void print1() interrupt 1
- {
- static uchar layert=0;
- TR0 = 0;
- ET0= 0;
- //EA=0;
- IRInit();
- if(msd==1)
- { PWM_POW=0;
- hansao(7-layert);
- sendbyte(~display[layert][0],~display[layert][2],~display[layert][4],~display[layert][7]);
- sendbyte(~display[layert][3],~display[layert][1],~display[layert][6],~display[layert][5]);
- SUO=0;_nop_();SUO=1;
- M_EN=0;delayus(ld);M_EN=1;
- if (layert<7)
- layert++;
- else
- layert=0;
- key_baihei_scan(); key_shangwiej_scan(); key_donghua_scan(); key_yinyue_scan();
- if(msd==1)
- if(key2==2||key2==3){key3=2; return;
- }
- TH0=0xef;
- TL0=0x00;
- }
- if(msd==2)
- {
- hansao(layert);
- sendbyte(~display[layert][0],~display[layert][2],~display[layert][4],~display[layert][7]);
- sendbyte(~display[layert][3],~display[layert][1],~display[layert][6],~display[layert][5]);
- SUO=0;_nop_();SUO=1;
- M_EN=0;delayus(ld);M_EN=1;
- if (layert<7)
- layert++;
- else
- layert=0;
- key_baihei_scan(); key_shangwiej_scan(); key_donghua_scan(); key_yinyue_scan();
- if(msd==2)
- if(key2==1||key2==3){key3=2; return;
- }
- TH0=0xef;
- TL0=0x00;
- }
- TR0 = 1;
- ET0 = 1;
- //EA=1;
- }
- void flash_14()
- {
- clear(0);
- type_sj(0,0);
- delay(60000);
- clear(0);
- type_sj(1,1);
- delay(60000);
- clear(0);
- type_sj(2,2);
- delay(60000);
- clear(0);
- type_sj(3,3);
- delay(60000);
- clear(0);
- type_sj(4,4);
- delay(60000);
- clear(0);
- type_sj(5,5);
- delay(60000);
- clear(0);
- type_sj(6,6);
- delay(60000);
- clear(0);
- type_sj(7,7);
- delay(60000);
- clear(0);
- delay(60000);
- clear(0);
- type_sj(0,7);
- delay(40000);
- clear(0);
- type_sj(1,6);
- delay(40000);
- clear(0);
- type_sj(2,5);
- delay(40000);
- clear(0);
- type_sj(3,4);
- delay(40000);
- clear(0);
- type_sj(4,3);
- delay(40000);
- clear(0);
- type_sj(5,2);
- delay(40000);
- clear(0);
- type_sj(6,1);
- delay(40000);
- clear(0);
- type_sj(7,0);
- delay(40000);
- clear(0);
- }
- void flash_18()
- {
- uchar i,j,k,z;
- roll_apeak_yz(1,10000);
- roll_apeak_yz(2,10000);
- roll_apeak_yz(3,10000);
- delay(60000);delay(60000);
- for (i=0;i<11;i++)
- {
- for (j=0;j<8;j++)
- {
- for (k=0;k<8;k++)
- {
- if ((table_3p_zf[i][j]>>k)&1)
- {
- for (z=1;z<8;z++)
- {
- point (j,7-k,z,1);
- if (z-1)
- point (j,7-k,z-1,0);
- delay(1500);
- }
- }
- }
- }
- delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);
- trans(7,15000);
- }
- }
- void flash_19()
- {
- uchar i;
- for (i=0;i<9;i++)
- {
- tranoutchar_cu(i,10000);
- delay(60000);
- delay(60000);
- }
- }
- void sendbyte1(unsigned int num1,unsigned int num2,unsigned int num3,unsigned int num4)
- {
- unsigned char c;
- for(c=0;c<8;c++)
- {
- CLK=0;
- M_LR_DS0=num1&0x01;
- M_LG_DS0=num2&0x01;
- M_HR_DS0=num3&0x01;
- M_HG_DS0=num4&0x01;
- CLK=1;
- num1>>=1;
- num2>>=1;
- num3>>=1;
- num4>>=1;
- }
- }
- void delays(int t)
- {
- int i;
- while(t--)
- for(i=0;i<700;i++);
- }
- void zhen(uchar *a,uchar v)
- {
- char layer,smsd=2,smsx=0,sudu=5;
- uint cckk;
- while(v--)
- {
- if(sudu==25){cckk=700;}
- else {
- cckk=ld;
- }
- if(ld==1){cckk=ld;}
- if(ld==1000){cckk=500;}
- ld=cckk;
- for(layer=0;layer<8;layer++)
- {
- if(xsdsq==1){;}
- else{key_baihei_scan(); key_shangwiej_scan(); key_donghua_scan(); key_yinyue_scan();}
- hansao(7-layer);
- sendbyte1(~a[layer*8+7],~a[layer*8+5],~a[layer*8+3],~a[layer*8+0]);
- sendbyte1(~a[layer*8+4],~a[layer*8+6],~a[layer*8+1],~a[layer*8+2]);
- SUO=0;
- _nop_();
- SUO=1;
- M_EN=0;
- delayus(ld);
- M_EN=1;
- if(msd==2||msd==6)
- if(key2==1||key2==3)
- {
- key3=1; M_EN=1;
- break;
- }
- }
- if(sudu==1){smsd=1;}
- if(sudu==5){smsd=5;}
- if(sudu==25){smsd=26;}
- else {smsd=6;}
- if(sudu==5&&ld==20){smsx=7;}
- delays(smsd+smsx);
- }
- }
- void flash_20()
- {
- uchar a[64]={0};
- char i;
- for(i=0;i<4;i++)
- {
- a[i*8+7]=0xff;
- a[(7-i)*8+7]=0xff;
- if(key3==1){break;}
- else{zhen(a,8);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,30);}
- for(i=3;i>=0;i--)
- {
- a[i*8+7]=0;
- a[(7-i)*8+7]=0;
- if(key3==1){break;}
- else{zhen(a,8);}
- delay(50);
- }
- }
- void hy(uchar *tab,char v)
- {
- uchar a[64]={0};
- char i,j;
- for(i=0;i<8;i++)
- a[i*8]=tab[i];
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=1;i<8;i++)
- {
- for(j=0;j<8;j++)
- a[i+j*8]=a[i-1+j*8];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- for(j=0;j<8;j++)
- a[i+j*8]=0;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,23);}
- delay(50);
- }
- void flash_21()
- {
- char i;
- for(i=0;i<10;i++)
- hy(number+27*8+i*8,3);
- }
- uchar daoxu(uchar x)
- {
- uchar k=0;
- char i;
- for(i=0;i<8;i++)
- {
- if((x>>(7-i))&0x01)
- k|=0x01<<i;
- }
- return k;
- }
- void fun1(uchar *a,uchar d,uchar b,uchar c,uchar e)//滾動字幕數(shù)據(jù)處理
- {
- char i;
- for(i=0;i<8;i++)
- {
- a[i]=e&0x01;
- e>>=1;
- }
- a[7]|=(c<<1);
- a[6]|=(c&0x80);
- for(i=0;i<6;i++)
- {
- a[5-i]|=((b<<(7-i))&0x80);
- }
- d=daoxu(d);
- a[0]|=((d>>1)&0x7e);
- }
- void zimu(uchar *x,char n,char v,int num)//滾動字幕,num表示循環(huán)次數(shù),v表示滾動速度,n字符個數(shù)
- {
- char i,j,k;
- uchar xdata a[64]={0},temp0[8],temp1[8],temp2[8],temp3[8],temp[8];
- for(i=0;i<8;i++)
- {
- temp0[i]=0;
- temp1[i]=0;
- temp2[i]=0;
- temp3[i]=0;
- }
- while(num--)
- for(j=0;j<n;j++)//滾動
- {
- for(k=7;k>=0;k--)//讀取數(shù)據(jù)
- temp[7-k]=x[j*8+k];
- for(k=0;k<8;k++)//移動8位
- {
- for(i=0;i<8;i++)
- {
- temp0[i]=(temp0[i]<<1)|(temp1[i]>>7);
- temp1[i]=(temp1[i]<<1)|(temp2[i]>>7);
- temp2[i]=(temp2[i]<<1)|(temp3[i]>>7);
- temp3[i]=(temp3[i]<<1)|(temp[i]>>7);
- temp[i]<<=1;
- fun1(a+i*8,temp0[i],temp1[i],temp2[i],temp3[i]);
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- }
- void key_baihei_scan()
- {
- if(!K1) //如果檢測到低電平,說明按鍵按下
- {
- if(msd==1||msd==2){TR0=0;}
- delay10us(); //延時去抖,一般10-20ms
- if(!K1) //再次確認(rèn)按鍵是否按下,沒有按下則退出
- {
- while(!K1)//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出
- {
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- }
- if(test==1){key1=4;}
- if(test==2){pu=~pu;if(pu==1){key2=4;ld=500;}if(pu==0){key2=5;ld=20;}}
- }
- }
- if(msd==1||msd==2){TR0=1;}
- }
- void flash_22()
- {
- zimu(number,19,12,1);
- }
- void move(uchar *a,char kind,char direction,char length)//length不能為8
- //kind=0 x軸,1 x軸,2 z軸;direction=0,負(fù)向,1正向
- {
- char i,j;
- if(kind==0)
- {
- if(direction==1)
- for(i=0;i<64;i++)
- a[i]<<=length;
- else
- for(i=0;i<64;i++)
- a[i]>>=length;
- }
- else if(kind==1)
- {
- if(direction==1)
- for(j=0;j<8;j++)
- {
- for(i=7;i>=length;i--)
- a[i+j*8]=a[i-length+j*8];
- for(i=0;i<length;i++)
- a[i+j*8]=0;
- }
- else
- for(j=0;j<8;j++)
- {
- for(i=0;i<length;i++)
- a[i+j*8]=a[i+length+j*8];
- for(i=(8-length);i<8;i++)
- a[i+j*8]=0;
- }
- }
- else
- {
- if(direction==1)
- for(j=0;j<8;j++)
- {
- for(i=7;i>=length;i--)
- a[j+i*8]=a[j+(i-length)*8];
- for(i=0;i<length;i++)
- a[j+i*8]=0;
- }
- else
- for(j=0;j<8;j++)
- {
- for(i=0;i<(8-length);i++)
- a[j+i*8]=a[j+(i+length)*8];
- for(i=(8-length);i<8;i++)
- a[j+i*8]=0;
- }
- }
- }
- void flash_23()//條狀升降
- {
- char i,j,k,v=2;
- uchar a[64]={0};
- for(i=7;i>=0;i--)
- {
- a[i]=0x01<<i;
- if(key3==1){break;}
- else{zhen(a,v+5);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- for(j=0;j<8;j++)
- a[j]=flash0__tab[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v+5);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- move(a,2,1,1);
- if(key3==1){break;}
- else{zhen(a,v+5);}
- delay(50);
- }
- for(i=0;i<64;i++)
- {
- if(i>55)
- a[i]=0xff;
- else
- a[i]=0;
- }
- if(key3==1){return;}
- else{zhen(a,20);}
- delay(50);
- for(i=7;i>=0;i--)//1
- for(j=6;j>=0;j--)
- {
- a[i+j*8]=0xff;
- a[i+(j+1)*8]=0;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,27);}
- for(i=7;i>=0;i--)//2
- for(j=1;j<8;j++)
- {
- a[i+j*8]=0xff;
- a[i+(j-1)*8]=0;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,27);}
- delay(50);
- for(i=7;i>=0;i--)//3
- for(k=6;k>=0;k--)
- {
- for(j=0;j<8;j++)
- {
- if(k==0)
- a[j+k*8]|=(0x80>>(7-i));
- else
- a[j+k*8]=(0x80>>(7-i));
- a[j+(k+1)*8]^=(0x80>>(7-i));
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,27);}
- delay(50);
- for(i=7;i>=0;i--)//4
- for(k=1;k<8;k++)
- {
- for(j=0;j<8;j++)
- {
- if(k==7)
- a[j+k*8]|=(0x80>>(7-i));
- else
- a[j+k*8]=(0x80>>(7-i));
- a[j+(k-1)*8]^=(0x80>>(7-i));
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,27);}
- delay(50);
- }
- void sendbyte(unsigned int num1,unsigned int num2,unsigned int num3,unsigned int num4)
- {
- unsigned char c;
- for(c=0;c<8;c++)
- {
- CLK=0;
- M_LR_DS0=num1&0x80;
- M_LG_DS0=num2&0x80;
- M_HR_DS0=num3&0x80;
- M_HG_DS0=num4&0x80;
- CLK=1;
- num1<<=1;
- num2<<=1;
- num3<<=1;
- num4<<=1;
- }
- }
- void Delaypwm(unsigned int tpwm)
- {
- while(--tpwm);
- }
- void PWM_LED()
- {
- unsigned int CYCLE=100,PWM_LOW=1110,xhs=60000;
- PWM_POW=0;
- if (xhs>1)
- {
- CYCLE=1950,PWM_LOW=201;
- PWM_POW=1;
- Delaypwm(60000);
- for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){
- PWM_POW=0;
- Delaypwm(PWM_LOW);
- PWM_POW=1;
- Delaypwm(CYCLE-PWM_LOW);
- }
- for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){
- PWM_POW=0;
- Delaypwm(PWM_LOW);
- PWM_POW=1;
- Delaypwm(CYCLE-PWM_LOW);
- }
- xhs--;
- }
- }
- void turn_on(uchar v)
- {
- uchar a[64]={0};
- char i,j;
- a[7]=0x80;
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=1;i<8;i++)
- {
- a[i*8+7]=0x80;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=6;i>=0;i--)
- {
- for(j=0;j<8;j++)
- a[j*8+i]=0x80;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<64;i++)
- a[i]=0;
- }
- void H_scan(uchar v)
- {
- uchar b[64]={0};
- char i,j;
-
- for(i=0;i<64;i++)
- b[i]=0x80;
- for(i=0;i<8;i++)
- {
- for(j=0;j<8;j++)
- b[j*8+i]=0x80;
- if(key3==1){break;}
- else{zhen(b,1);}
- }
- for(i=0;i<8;i++)
- {
- for(j=0;j<64;j++)
- b[j]>>=1;
- if(key3==1){break;}
- else{zhen(b,v);}
- delay(50);
- }
- }
- void V_scan(uchar v)
- {
- uchar a[64]={0};
- char i,j;
- for(i=0;i<8;i++)
- a[i]=0xff;
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=1;i<8;i++)
- {
- for(j=0;j<8;j++)
- {
- a[i*8+j]=0xff;
- a[(i-1)*8+j]=0;
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void W_scan(uchar v)
- {
- uchar a[64]={0};
- char i,j;
- for(i=0;i<8;i++)
- a[i*8+7]=0xff;
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=6;i>=0;i--)
- {
- for(j=0;j<8;j++)
- {
- a[j*8+i]=0xff;
- a[j*8+i+1]=0;
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- M_EN=0;
- }
- void W_side(uchar *tab,char num,char v)
- {
- uchar a[64]={0};
- int i,j;
- for(j=0;j<num;j++)
- {
- for(i=0;i<8;i++)
- a[i*8+7]=tab[j*8+i];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_24()
- {
- uchar i,v=10,a[64]={0};
- for(i=0;i<7;i++)
- a[7*8+i]=0xff;
- for(i=0;i<8;i++)
- {
- move(a,2,0,1);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_25()
- {
- uchar a[64]={0};
- char i,j,num=5,v=3;
- while(num--)
- {
- for(i=1;i<8;i++)
- a[i]=0xff;
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- for(i=1;i<8;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=0xff;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<8;i++)
- {
- if(num==0&&i==7)
- continue;
- move(a,2,1,1);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- for(i=0;i<7;i++)
- {
- move(a,2,0,1);
- if(key3==1){break;}
- else{zhen(a,v+5);}
- delay(50);
- }
- }
- void leitu(uchar *b,char num,char v)
- {
- uchar a[64]={0},p;
- char i,j,k,m;
- for(m=0;m<num;m++)
- {
- for(i=0;i<8;i++)
- for(k=0;k<8;k++)
- for(j=0;j<8;j++)
- {
- p=b[m*64+i*8+k]&(0x01<<j);
- if(p)
- {
- a[i*8+k]|=p;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- if(key3==1){break;}
- else{zhen(a,60);}
- delay(50);
- for(j=0;j<64;j++)
- {
- if(!a[j])
- continue;
- a[j]=0;
- if(key3==1){break;}
- else{zhen(a,v-1);}
- delay(50);
- }
- delays(30);
- }
- }
- void flash_26()
- {
- leitu(yc_table,5,2);
- }
- void flash_27()
- {
- uchar a[64];
- char i,j,k,v=3;
- for(k=0;k<8;k++)
- for(i=0;i<8;i++)
- for(j=0;j<8;j++)
- {
- a[tab_mian[i]*8+tab_xian[j]]|=(0x01<<tab_dian[(i+j)*8+k]);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- if(key3==1){return;}
- else{zhen(a,90);}
- delay(50);
- for(k=0;k<8;k++)
- for(i=0;i<8;i++)
- for(j=0;j<8;j++)
- {
- a[tab_mian[i]*8+tab_xian[j]]^=(0x01<<tab_dian[(i+j)*8+k]);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void water1(char x,char y,char v)
- {
- uchar a[64]={0};
- char i,r;
- a[7*8+y]=0x01<<x;
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=6;i>=0;i--)
- {
- a[i*8+y]=a[(i+1)*8+y];
- a[(i+1)*8+y]=0;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(25);
- }//下落
- for(r=0;r<7;r++)
- {
- for(i=0;i<8;i++)
- a[i]=tab_water[r*16+7-y+i]>>(7-x);
- if(key3==1){break;}
- else{zhen(a,v+1);}
- delay(25);
- }//擴(kuò)散
- }
- void water2(char x1,char y1,char x2,char y2,char v)
- {
- uchar a[64]={0};
- char i,r;
- a[7*8+y1]=0x01<<x1;
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=6;i>=0;i--)
- {
- move(a,2,0,1);
- if(i==5)
- {
- a[7*8+y2]=0x01<<x2;
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(25);
- }
- for(r=0;r<9;r++)
- {
- if(r<2)
- move(a,2,0,1);
- else
- for(i=0;i<8;i++)
- a[i]=tab_water[(r-2)*16+7-y2+i]>>(7-x2);
- if(r<7)
- for(i=0;i<8;i++)
- a[i]|=(tab_water[r*16+7-y1+i]>>(7-x1));
- if(r==1)
- a[y2]|=0x01<<x2;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(25);
- }
- }
- void water3(char x1,char y1,char x2,char y2,char x3,char y3,char v)
- {//3水滴
- uchar a[64]={0};
- char i,r;
- a[7*8+y1]=0x01<<x1;
- if(key3==1){return;}
- else{zhen(a,v); }
- delay(25);
- for(i=6;i>=0;i--)
- {
- move(a,2,0,1);
- if(i==5)//第二點(diǎn)
- a[7*8+y2]=0x01<<x2;
- if(i==3)
- a[7*8+y3]=0x01<<x3; //第三點(diǎn)
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(25);
- }
- for(r=0;r<11;r++)
- {
- if(r<4)
- move(a,2,0,1);
- if(r<11&&r>=4)
- for(i=0;i<8;i++)
- a[i]=tab_water[(r-4)*16+7-y3+i]>>(7-x3);
- if(r<9&&r>=2)
- for(i=0;i<8;i++)
- a[i]|=tab_water[(r-2)*16+7-y2+i]>>(7-x2);
- if(r<7)
- for(i=0;i<8;i++)
- a[i]|=(tab_water[r*16+7-y1+i]>>(7-x1));
- if(r==1)
- a[y2]|=0x01<<x2;
- if(r==3)
- a[y3]|=0x01<<x3;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(25);
- }
- }
- void flash_28()
- {
- water1(1,2,10);water1(2,4,10);
- water1(4,3,10);water1(7,1,10);
- water1(5,6,10);
- water2(0,2,7,1,9);
- water2(2,4,7,7,9);
- water2(4,7,7,1,9);
- water2(3,6,7,7,9);
- water2(4,1,6,6,9);
- water2(7,3,1,2,9);
- water3(0,4,7,4,5,1,9);
- water3(7,7,0,0,0,7,9);
- water3(0,6,6,6,5,1,9);
- water3(6,7,0,0,2,2,9);
- water3(3,3,6,6,2,2,9);
- }
- void link_pingmian1(char v)
- {
- uchar a[64]={0};
- char i,j;
- for(i=0;i<8;i++)
- for(j=0;j<8;j++)
- {
- a[7*8+j]|=(0x01<<i);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void pingmian1(char num,char v)
- {
- char i,k;
- uchar a[64]={0};
- for(i=0;i<8;i++)
- a[7*8+i]=0xff;
- if(key3==1){return;}
- else{zhen(a,v); }
- delay(50);
- while(num--)
- for(i=0;i<28;i++)
- {
- if(i<7)
- for(k=0;k<8;k++)
- {
- a[(6-i)*8+k]=0x01;
- a[7*8+k]>>=1;
- }
- else if(i<14)
- for(k=0;k<8;k++)
- {
- a[k]|=0x01<<(i-6);
- a[(14-i)*8+k]=0;
- }
- else if(i<21)
- for(k=0;k<8;k++)
- {
- a[(i-13)*8+k]=0x80;
- a[k]<<=1;
- }
- else
- for(k=0;k<8;k++)
- {
- a[7*8+k]|=0x80>>(i-20);
- a[(i-21)*8+k]=0;
- }
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- M_EN=0;
- }
- void flash_29()
- {
- link_pingmian1(1);
- pingmian1(8,3);
- }
- void print(uchar *a,char m)//m=0中空顯示,m=1實(shí)心顯示
- {
- uchar p;
- char i,j,k;
- uchar b[64]={0};
- for(i=0;i<8;i++)
- {
- b[7*8+i]=0xff;
- }
- for(i=0;i<8;i++)//行切換
- {
- for(j=0;j<8;j++)//點(diǎn)移動
- {
- p=a[i]&(0x01<<j);
- if(p)
- {
- for(k=6;k>0;k--)
- {
- if(m==1&&k==6)
- {;}
- else
- b[(k+1)*8+7-i]&=(~p);
- b[k*8+7-i]|=(0x01<<j);
- if(key3==1){break;}
- else{zhen(b,1);}
- delay(50);
- }
- b[1*8+7-i]=0;
- b[7-i]|=p;
- if(key3==1){break;}
- else{zhen(b,1); }
- delay(50);
- }
- b[7-i]|=p;
- }
- }
- if(key3==1){return;}
- else{zhen(b,40); }
- delay(50);
- b[0]=0;
- for(j=7;j>0;j--)
- {
- for(i=7;i>0;i--)
- {
- b[i]=b[i-1];
- }
- if(key3==1){break;}
- else{zhen(b,5); }
- delay(50);
- }
- M_EN=0;
- }
- void flash_30()
- {
- char i;
- for(i=0;i<4;i++)
- print(tab_print+i*8,0);
- }
- void link_jb0(char v)
- {
- uchar a[64]={0};
- char i;
- for(i=0;i<64;i++)
- {
- a[i]=0x80;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void jb0(char num,char v)///////////////////////////////
- {
- char i,k;
- uchar c[64]={0};
- for(i=0;i<64;i++)
- c[i]=0x80;
- if(key3==1){return;}
- else{zhen(c,v);}
- delay(50);
- while(num--)
- for(i=0;i<28;i++)
- {
- if(i<7)
- for(k=0;k<8;k++)
- {
- c[k*8]|=(0x80>>(i+1));
- c[k*8+7-i]=0;
- }
- else if(i<14)
- for(k=0;k<8;k++)
- {
- c[k*8+i-6]=0x01;
- c[k*8]>>=0x01;
- }
- else if(i<21)
- for(k=0;k<8;k++)
- {
- c[k*8+i-14]=0;
- c[k*8+7]|=(0x01<<(i-13));
- }
- else if(i<28)
- for(k=0;k<8;k++)
- {
- c[k*8+27-i]=0x80;
- c[k*8+7]<<=1;
- }
- if(key3==1){break;}
- else{zhen(c,v);}
- delay(50);
- }
- M_EN=0;
- }
- void yinchu(uchar *table,char n,char v)
- {
- /****************************
- n為幀數(shù)
- ******************************/
- char i,j,k;
- uchar a[64]={0},p;
- for(k=0;k<n;k++)
- {
- for(i=0;i<8;i++)
- {
- p=0xff;
- for(j=0;j<64;j++)
- {
- a[j]=(table[j+k*64]|(0x80>>i))&(p<<(7-i));
- }
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- if(key3==1){break;}
- else{zhen(table+k*64,50);}
- delay(50);
- }
- }
- void flash_31()
- {
- link_jb0(1);
- jb0(4,3);
- yinchu(yc_table,5,9);
- link_jb0(1);
- jb0(4,3);
- }
- void link(char v)
- {
- /****************************
- 旋轉(zhuǎn)銜接
- ******************************/
- char i,j,k;
- uchar a[64]={0};
- for(i=0;i<64;i++)
- a[i]=0x80;
- if(key3==1){return;}
- else{zhen(a,3); }
- delay(50);
- for(i=0;i<8;i++)
- {
- for(j=0;j<8;j++)
- {
- if(i<7)
- a[j*8+7-i]&=0x7f;
- a[j*8+i]|=(0x80>>i);
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<6;i++)
- {
- for(j=0;j<8;j++)
- for(k=0;k<8;k++)
- a[j*8+k]=tab_xuanzhuantiao[(i+8)*8+k];
- if(key3==1){break;}
- else{zhen(a,3);}
- delay(50);
- }
- }
- void xuanzhuantiao(char kind,char num,char v)//空心旋轉(zhuǎn),kind=1實(shí)心,否則空心
- {
- uchar a[64]={0};
- char i,j,k;
- while(num--)
- {
- for(i=0;i<14;i++)
- {
- for(j=0;j<8;j++)
- {
- for(k=0;k<8;k++)
- {
- if(k>1&&k<6&&j>1&&j<6&&kind!=1)
- a[k+j*8]=tab_xuanzhuantiao[i*8+k]&0xc3;
- else
- a[k+j*8]=tab_xuanzhuantiao[i*8+k];
- }
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- }
- void flash_32()
- {
- link(9); //從左邊開始進(jìn)入連接選擇條的開端
- xuanzhuantiao(1,8,4);//實(shí)心旋轉(zhuǎn)顯示選擇一個面
- xuanzhuantiao(0,8,4);//空心旋轉(zhuǎn)顯示選擇一個面
- }
- void xuanzhuantiao2(char num,char v)//空心旋轉(zhuǎn),kind=1實(shí)心,否則空心
- {
- uchar a[64]={0};
- char i,j,k;
- while(num--)
- for(i=0;i<56;i++)
- {
- for(j=0;j<8;j++)
- for(k=0;k<8;k++)
- a[j*8+k]=tab_xuanzhuantiao2[i*8+k];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_33()
- {
- xuanzhuantiao2(3,3);
- }
- void qumianxuanzhuan(char kind,char num,char v)//曲面旋轉(zhuǎn)
- {
- uchar a[64]={0};
- char i,j,k;
- for(j=0;j<8;j++)
- for(i=0;i<8;i++)
- a[i+j*8]=tab_xuanzhuantiao[i];
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- if(kind==1)
- {
- for(j=1;j<8;j++)//順時針初形變換
- {
- for(i=0;i<j;i++)
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[(j-i)*8+k];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=8;i<14;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_xuanzhuantiao[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- else
- {
- for(j=1;j<8;j++)//逆時針初形變換
- {
- for(i=0;i<j;i++)
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[(14-j+i)*8+k];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=7;i>=0;i--)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_xuanzhuantiao[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- }
- while(num--)//主循環(huán)
- {
- if(kind==1)
- for(i=0;i<14;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_xuanzhuantiao[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- else
- for(i=13;i>=0;i--)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_xuanzhuantiao[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- if(kind==1)
- for(j=0;j<7;j++)
- {
- for(i=7;i>=j;i--)
- {
- if(i>j)
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[(14-i+j)*8+k];
- else
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[k];
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- else
- for(j=1;j<7;j++)
- {
- for(i=7;i>=j;i--)
- {
- if(i>j)
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[(i-j)*8+k];
- else
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[k];
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_34()
- {
- qumianxuanzhuan(1,10,4);
- qumianxuanzhuan(0,10,4);
- }
- void qumianxuanzhuan2(char num,char v)//曲面旋轉(zhuǎn)
- {
- uchar a[64]={0};
- char i,j,k;
- for(j=0;j<8;j++)
- for(i=0;i<8;i++)
- a[i+j*8]=tab_xuanzhuantiao[i];
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(j=1;j<8;j++)
- {
- for(i=0;i<j;i++)
- for(k=0;k<8;k++)
- a[k+i*8]=tab_xuanzhuantiao[(14-j+i)*8+k];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- while(num--)
- {
- for(j=1;j<8;j++)
- {
- move(a,2,1,1);
- for(i=0;i<j;i++)
- {
- for(k=0;k<8;k++)
- {
- if(j!=7|i!=0)
- a[i*8+k]=tab_xuanzhuantiao[k+(j+7-i)*8];
- else
- a[k]=tab_xuanzhuantiao[k];
- }
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(j=1;j<8;j++)
- {
- move(a,2,1,1);
- for(i=0;i<j;i++)
- {
- for(k=0;k<8;k++)
- a[i*8+k]=tab_xuanzhuantiao[k+(14-j+i)*8];
- }
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- }
- void flash_35()
- {
- qumianxuanzhuan2(13,4);
- }
- void donghua(uchar *tab,uchar num,uchar n,char v)
- {
- char i;
- while(n--)
- {
- for(i=0;i<num;i++)//清空
- {
- if(key3==1){break;}
- else{zhen(tab+i*64,v);}
- delay(50);
- }
- }
- }
- void xzcube()
- {
- char i;
- donghua(y_table,6,8,8);
- for(i=0;i<26;i++)
- {
- if(i==12||i==13||i==14)
- { if(key3==1){break;}
- else{zhen(yx_table+i*64,30);}
- delay(50);}
- else {
- if(key3==1){break;}
- else{zhen(yx_table+i*64,14);}
- delay(50); }
- }
- donghua(x_table,6,8,8);
- for(i=0;i<26;i++)
- {
- if(i==12||i==13||i==14)
- { if(key3==1){break;}
- else{zhen(xz_table+i*64,30);}
- delay(50);}
- else{
- if(key3==1){break;}
- else{zhen(xz_table+i*64,14);}
- delay(50);}
- }
- donghua(z_table,6,8,8);
- }
- void flash_36()
- {
- donghua(bianxing_table,11,1,24);
- xzcube();
- donghua(y_table,6,5,5);
- donghua(x_table,6,5,5);
- donghua(z_table,6,5,5);
- }
- void produce_cube(uchar *a,char n)
- {
- char i,j;
- for(i=0;i<8;i++)
- for(j=0;j<8;j++)
- {
- if(j<n&&i<n)
- a[j+i*8]=0xff>>(8-n);
- else
- a[j+i*8]=0;
- }
- }
- void link00()
- {
- uchar a[64]={0};
- char i;
- for(i=10;i>7;i--)
- {
- if(key3==1){break;}
- else{zhen(bianxing_table+i*64,70);}
- delay(50);
- }
- produce_cube(a,6);
- move(a,1,1,1);
- move(a,0,1,1);
- if(key3==1){return;}
- else{zhen(a,110);}
- delay(50);
- produce_cube(a,8);
- if(key3==1){return;}
- else{zhen(a,110);}
- delay(50);
- }
- void flash_37()
- {
- link00();
- }
- void shensuo(uchar v)
- {
- char i,j;
- uchar a[64]={0};
- for(i=0;i<64;i++)
- a[i]=0xff;
- for(i=0;i<7;i++)
- {
- move(a,0,0,1);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- move(a,0,1,1);
- for(j=0;j<64;j++)
- a[j]|=0x01;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- move(a,2,0,1);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=0;i<7;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]|=0xff;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- for(i=7;i>0;i--)
- {
- for(j=0;j<8;j++)
- a[j*8+i]=0;
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- for(i=1;i<8;i++)
- {
- for(j=0;j<8;j++)
- a[j*8+i]|=0xff;
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_38()
- {
- shensuo(5);
- }
- void produce_empty(uchar *a,char n)//0<n<=8,注意n不能為0
- {
- char j;
- uchar p;
- for(j=0;j<64;j++)
- a[j]=0;
- p=0xff>>(8-n);
- /************X4列*************/
- a[(n-1)*8+n-1]=p;
- a[(n-1)*8]=p;
- a[0]=p;
- a[n-1]=p;
- for(j=0;j<n;j++)
- {
- p=(0x01|(0x01<<(n-1)));
- /************豎直4列*************/
- a[j*8]|=p;
- a[j*8+n-1]|=p;
- /************Y4列*************/
- a[j]|=p;
- a[(n-1)*8+j]|=p;
- }
- }
- void cube(char empty,char kind,char v)
- {
- uchar a[64]={0};
- char i;
- for(i=1;i<=8;i++)//生成
- {
- if(empty==0)
- produce_cube(a,i);
- else
- produce_empty(a,i);
- if(kind==0)
- {;}
- else if(kind==1)
- move(a,1,1,8-i);
- else if(kind==2)
- {
- move(a,1,1,8-i);
- move(a,0,1,8-i);
- }
- else
- move(a,0,1,8-i);
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- for(i=7;i>0;i--)//退出
- {
- if(empty==0)
- produce_cube(a,i);
- else
- produce_empty(a,i);
- if(kind==0)
- {
- move(a,1,1,8-i);
- move(a,0,1,8-i);
- }
- else if(kind==1)
- move(a,0,1,8-i);
- else if(kind==2)
- {;}
- else
- move(a,1,1,8-i);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_39()
- {
- char i,j;
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- cube(0,j,6);
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- cube(1,j,6);
- }
-
- void flash_40()
- {
- donghua(hart_table,2,10,32);
- }
- void shandian(char v)
- {
- char i,j;
- uchar a[64];
- for(i=0;i<64;i++)
- a[i]=tab_shandian[64*21+i];
- for(i=0;i<22;i++)
- if(key3==1){break;}
- else{zhen(tab_shandian+64*i,v);}
- delay(50);
- for(i=0;i<22;i++)
- {
- for(j=0;j<64;j++)
- a[j]=a[j]&(~tab_shandian[64*i+j]);
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- void flash_41()
- {
- char i;
- for(i=2;i>0;i--)
- shandian(i);
- }
- void szfc0(char v)//數(shù)字上浮
- {
- char i,j;
- uchar a[64];
- for(i=0;i<64;i++)
- {
- a[i]=0;
- }
- for(j=124;j>=0;j--)
- {
- for(i=7;i>=0;i--)
- {
- a[i*8+3]=szfc_table[j+i];
- a[i*8+4]=szfc_table[j+i];
- }
- if(key3==1){break;}
- else{zhen(a,v); }
- delay(50);
- }
- }
- void flash_42()
- {
- szfc0(10);
- }
- void rain(char menu,char num,char v)
- {//menu=0,up;menu=1,down
- uchar a[64]={0};
- char i,j;
- if(menu==0)
- {
- for(i=0;i<8;i++)
- a[i]=tab_rain[i];
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=1;i<8;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_rain[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- while(num--)
- {
- for(i=0;i<8;i++)
- {
- move(a,2,1,1);
- for(j=0;j<8;j++)
- a[j]=tab_rain[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- }
- else
- {
- for(i=0;i<8;i++)
- a[7*8+i]=tab_rain[i];
- if(key3==1){return;}
- else{zhen(a,v);}
- delay(50);
- for(i=1;i<8;i++)
- {
- move(a,2,0,1);
- for(j=0;j<8;j++)
- a[7*8+j]=tab_rain[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- while(num--)
- {
- for(i=0;i<8;i++)
- {
- move(a,2,0,1);
- for(j=0;j<8;j++)
- a[j+7*8]=tab_rain[i*8+j];
- if(key3==1){break;}
- else{zhen(a,v);}
- delay(50);
- }
- }
- }
- }
- void flash_15()
- {
- rain(1,10,9);
- rain(0,10,9);
- }
- void delayyp(unsigned int n1)
- {
- unsigned int xdata i;
- while(n1--)
- for (i=0;i<200;i++);
- }
- unsigned int Read_ADC0()
- {
- ADC_CONTR|=0x08;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- while(!(ADC_CONTR&0x10));
- ADC_CONTR&=~0x10;
- return ((ADC_RES<<2)|(ADC_RESL));
- }
- unsigned int voivol(unsigned int n)
- {
- unsigned int xdata val,result,rel=0;
- while(n)
- {
- val=Read_ADC0();
- delayyp(2);
- result=val;
- rel=rel+result;
- n--;
- }
- return rel;
- }
- void Vol_watch_0(unsigned char kxg)
- {
- unsigned int xdata result=0,l=1,n=500;
- while(n)
- {
- if ((result>>5)>l)
- l=result>>5;
- else
- if (l>1)
- l--;
- if (l>7)
- l=7;
- if(kxg==1)
- {
- box(0,0,0,l,l,l,0,1);
- result=voivol(16);
- box(0,0,0,7,7,7,1,0);
- }
- if(kxg==2)
- {
- box(7,7,7,7-l,7-l,7-l,0,1);
- result=voivol(16);
- box(7,7,7,7-l,7-l,7-l,1,0);
- }
- if(kxg==3)
- { box(7,0,7,0,l,0,0,1);
- result=voivol(16);
- box(l,0,l,0,7,0,1,0);
- }
- if(kxg==4)
- {
- box(l,l,l,7-l,7-l,7-l,0,1);
- result=voivol(16);
- box(7-l,7-l,7-l,l,l,l,1,0);
- }
- if(kxg==5)
- {
- box(0,7,7,l,7-l,0,0,1);
- result=voivol(16);
- box(0,7,7,l,7-l,0,1,0);
- }
- if(kxg==6)
- {
- box(l,l,l,7-l,7-l,7-l,0,1);
- result=voivol(16);
- box(7-l,7-l,7-l,7,7,7,1,0);
- }
- if(kxg==7)
- {
- box(l,0,7,0,7,0,0,1);
- result=voivol(16);
- box(7,0,l,0,l,0,1,0);
- }
- n--;
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}
- }
- }
- void Vol_watch_2()
- {
- unsigned int xdata result=0,l=0,n=500;
- while(n)
- {
- if ((result>>5)>l)
- l=result>>5;
- else
- if (l>0)
- l--;
- if (l>7)
- l=7;
- clear(0);
- switch(l)
- {
- case 0:point(4,4,4,1);break;
- case 1:box(3,3,3,4,4,4,1,1);break;
- case 2:box(2,2,2,4,4,4,1,1);break;
- case 3:box(2,2,2,5,5,5,1,1);break;
- case 4:box(1,1,1,5,5,5,1,1);break;
- case 5:box(1,1,1,6,6,6,1,1);break;
- case 6:box(0,0,0,6,6,6,1,1);break;
- default:box(0,0,0,7,7,7,1,1);
- }
- result=voivol(16);
- n--;
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}
- }
- }
- void Vol_watch_3()
- {
- unsigned int result,l,n=500;
- while(n)
- {
- result=voivol(3);
- l=result>>3;
- if (l>7)
- l=7;
- transss();
- box_apeak_xy(0,0,0,0,7,l,1,1);
- delayyp(60);
- n--;
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}
- }
- }
- void init_uart(void)
- {
- PCON |= 0x80;
- SCON = 0x50;
- AUXR |= 0x40;
- AUXR &= 0xFE;
- TMOD &= 0x0F;
- TMOD |= 0x20;
- TL1 = 0xE8;
- TH1 = 0xE8;
- ET1 = 0;
- TR1 = 1;
- ES=1;
- EA=1;
- }
- void sendbyteck(unsigned int num1,unsigned int num2,unsigned int num3,unsigned int num4)
- {
- unsigned char c;
- for(c=0;c<8;c++)
- {
- CLK=0;
- M_LR_DS0=num1&0x01;
- M_LG_DS0=num2&0x01;
- M_HR_DS0=num3&0x01;
- M_HG_DS0=num4&0x01;
- CLK=1;
- num1>>=1;
- num2>>=1;
- num3>>=1;
- num4>>=1;
- }
- }
- void key_shangwiej_scan()
- {
- if(!K2) //如果檢測到低電平,說明按鍵按下
- {
- if(msd==1||msd==2){TR0=0;}
- delay10us(); //延時去抖,一般10-20ms
- if(!K2) //再次確認(rèn)按鍵是否按下,沒有按下則退出
- {
- while(!K2)//如果確認(rèn)按下按鍵等待按鍵釋放,沒有則退出
- {
- if(test==1){key1=1;}
- if(test==2){key2=3;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- }
- }
- }
- if(msd==1||msd==2){TR0=1;}
- }
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- void main()
- {
- unsigned char p=0,k=0,l=0; //定義
- sinter();
- IDelay(100);
- IRInit(); //初始化紅外中斷
- clear(0);
- PWM_LED();//開啟PWM呼吸燈功能
- turn_on(10);
- H_scan(10);
- V_scan(10);
- W_scan(10);
- PWM_POW=0;//打開電源指示燈
- test=1;
- while(1)
- {
- ld=500;
- H_scan(40);
- if(key1==1||key1==2||key1==3||key1==4){ break;} V_scan(40);
- if(key1==1||key1==2||key1==3||key1==4) {break;}W_scan(40);
- if(key1==1||key1==2||key1==3||key1==4) {break;}}
- while(1)
- {
- if(key1==3) {H_scan(40); } if(key1==2){V_scan(40); }if(key1==1){W_scan(40); }if(key1==4){
- test=2;
- msd=2;
- ld=500;
- break; //退出測試功能
- }
- }
- delay(10); TR0=0;
- while(1) /*play list*/
- {
- if(msd==1)
- {
- key3=3;
- TR0=0;
-
- //EA=0;
- ET0=0;
- IRInit();
- xsdsq=1;
- hy(number+(36+1)*8,10);
- W_side(number+(36+1)*8,1,200);
- xsdsq=0;
- PWM_POW=0;
- TR0=1; //開啟定時器顯示掃描
- ET0=1;
- //EA=1;
- test=2;
- while(1)
- {
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(1);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(2);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(3); }
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(4); }
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(5);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(6);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_0(7);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_1(1);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_1(2);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_1(3); }
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_1(4);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_1(5);}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_2();}
- if(key2==3||key2==2){if(key2==3){msd=3;break;}
- else{if(key2==2){msd=2;break;}}}else{ clear(0); Vol_watch_3();}
- }
- }
- if(msd==2)
- {
- key3=3;
- xsdsq=1;
- hy(number+(36+2)*8,10);
- W_side(number+(36+2)*8,1,200);
- xsdsq=0;
- while(1)
- {
- msd=6;
- TR0=0; //關(guān)閉定時器顯示掃描
- TR1=0;
- // EA=0;
- ET0=0;
- IRInit();
- flash_20(); //第一個面屏幕上下拉開
- flash_21(); //從后面往前面顯示數(shù)組的數(shù)字9-0
- flash_22(); //圍繞著最外面的LED循環(huán)滾動顯示數(shù)組中內(nèi)容
- flash_23(); //分層升降左右上下前后以此打開升降測試
- flash_24(); //從最上面的一個面往下面的一層移動完
- flash_25(); //光立方全亮并且閃爍5次
- flash_26(); //從下面往上面依次顯示出數(shù)組中的內(nèi)容IXU
- flash_27(); //狼七八咋的顯示出LED的每一個燈展示燈火效果
- flash_28(); //顯示從上面往下面滴水的效果
- flash_29(); //將4個面圍城圈圈然后旋轉(zhuǎn)幾次
- flash_30(); //空心顯示將數(shù)組內(nèi)容打印出來可以打印4個數(shù)組內(nèi)容
- flash_31(); //將左右的四個面圍繞成圈圈轉(zhuǎn)起來4次之后從左邊往右邊顯示數(shù)組中一幅圖像64個的數(shù)據(jù)
- flash_32(); //從左邊顯示一個面然后旋轉(zhuǎn)出一個面的空心效果實(shí)心效果
- flash_33(); //旋轉(zhuǎn)單個面依次交換到買一個面
- flash_34(); //以中點(diǎn)位軸進(jìn)行選擇左右旋轉(zhuǎn)切換實(shí)現(xiàn)波紋的效果
- flash_35(); //旋轉(zhuǎn)左右為中心加快速度實(shí)現(xiàn)每個面的抖動效果
- flash_36(); //將數(shù)組中的內(nèi)容顯示出現(xiàn)進(jìn)行旋轉(zhuǎn)是一個正方形的
- flash_37(); //將方形變形縮小然后變成一個全亮的效果
- flash_38(); //前后左右上下伸縮全亮
- flash_39(); //實(shí)心和空心縮放和放大正方形全亮顯示
- flash_40(); //動畫顯示一個數(shù)組里面的心形數(shù)據(jù) 會動的心形
- flash_41(); //顯示一個電梯的圖形
- flash_42(); //顯示數(shù)字往上移動出來
- flash_15(); //顯示下雨的效果
- msd=2;
- TR0=1;
- TR1=1;
- //EA=1;
- ET0=1;
-
- //顯示中有些動畫包含本店的數(shù)據(jù)如果不需要請自己將動畫函數(shù)屏蔽
- //flash_14();flash_18();flash_12();
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_1();}//包含第一個面顯示4321倒計(jì)時的文字
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_17();}//顯示出一個VI的版本標(biāo)志然后從最里面往外面滾動出來
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_16();}//從邊邊的左右中滾動顯示默認(rèn)的英文字母ideasoft
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_14();}//一個一個的字變出來顯示上升沿電子光立方可以修改顯示數(shù)據(jù)
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_18();}//顯示出上升沿電子8X8X8光立方下雨效果飄出字移動出去
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_2();}//圖形圈圈顯示出來
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_3();}//從前一排顯示到后面一排兩次
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_4();}//從前一排斜桿到最后一排兩次
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_5();}//框框伸縮從中間到前面到后面
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_6();}//滾四邊的圈圈然后下雨效果飄出字移動出去
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_7();}//滾四邊包括前后左右滾然后出來半邊三角形
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_8();}//從左移動一排到右邊中間顯示文字圖形
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_9();}//從左到右邊滾出斜桿然后螺旋轉(zhuǎn)軸旋轉(zhuǎn)框框顯示方框伸縮孔空心和實(shí)心
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_10();}//從最左小腳伸縮出框框然后變輪子前后左右上下滾動然后收縮還原
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_11();}//象紅旗一樣被風(fēng)飄動象蛇一樣飄動走動
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_12();}//滾動上升沿電子的字模數(shù)據(jù)文字移動顯示出來
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_13();}//漸變出來文字VI1234IXU的圖案
- if(key2==1||key2==3){if(key2==1){msd=1;break;}
- else{if(key2==3){msd=3;break;}}}else{flash_19();}//平行滑動顯示出3D CULE FFT的字?
- TR0=0;
- TR1=0;
- //EA=0;
- ET0=0;
- IRInit();
- PWM_POW=0;
- }
- }
- if(msd==3)
- {
- key3=3;
- TR0=0;
- TR1=0;
- EA=0;
- IRInit();
- xsdsq=1;
- hy(number+(36+3)*8,10);
- W_side(number+(36+3)*8,1,200);
- xsdsq=0;
- PWM_POW=0;
- init_uart();
- test=2;
- while(1)
- {
- fvb();
- if(key2==1||key2==2){if(key2==1){msd=1;break;}
- else{if(key2==2){msd=2;break;}}}
- }
- }
- }
- }
- /*******************紅外***************************************/
- void IR_IN(void) interrupt 0
- {
-
- unsigned char j,k,N=0;
- EX0 = 0;
- IRdelay(15);
- if (IRIN==1)
- { EX0 =1;
- return;
- }
- //確認(rèn)IR信號出現(xiàn)
- while (!IRIN) //等IR變?yōu)楦唠娖,跳過9ms的前導(dǎo)低電平信號。
- {IRdelay(1);}
- for (j=0;j<4;j++) //收集四組數(shù)據(jù)
- {
- for (k=0;k<8;k++) //每組數(shù)據(jù)有8位
- {
- while (IRIN) //等 IR 變?yōu)榈碗娖,跳過4.5ms的前導(dǎo)高電平信號。
- {IRdelay(1);}
- while (!IRIN) //等 IR 變?yōu)楦唠娖?br />
- {IRdelay(1);}
- while (IRIN) //計(jì)算IR高電平時長
- {
- IRdelay(1);
- N++;
- if (N>=30)
- { EX0=1;
- return;} //0.14ms計(jì)數(shù)過長自動離開。
- } //高電平計(jì)數(shù)完畢
- IRCOM[j]=IRCOM[j] >> 1; //數(shù)據(jù)最高位補(bǔ)“0”
- if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //數(shù)據(jù)最高位補(bǔ)“1”
- N=0;
- }
- }
-
- if (IRCOM[2]!=~IRCOM[3])
- { EX0=1;
- return; }
- IRCOM[5]=IRCOM[2] & 0x0F; //取鍵碼的低四位
- IRCOM[6]=IRCOM[2] >> 4; //右移4次,高四位變?yōu)榈退奈?br />
- if(IRCOM[5]>9)
- { IRCOM[5]=IRCOM[5]+0x37;}
- else
- IRCOM[5]=IRCOM[5]+0x30;
- if(IRCOM[6]>9)
- { IRCOM[6]=IRCOM[6]+0x37;}
- else
- IRCOM[6]=IRCOM[6]+0x30;
- if(IRCOM[2]==0x45)
- {
- m=1; //判斷顯示
- if(msd==1||msd==2){TR0=0;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- if(test==1){key1=4;}
- if(test==2){pu=~pu;if(pu==1){key2=4;ld=500;}if(pu==0){key2=5;ld=20;}}
- if(msd==1||msd==2){TR0=1;}
- }
-
- if(IRCOM[2]==0x46)
- {
- m=2; //判斷顯示
-
- }
- if(IRCOM[2]==0x47)
- {
- if(msd==1||msd==2){TR0=0;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- if(test==1){key1=1;}
- if(test==2){key2=3;}
-
- if(msd==1||msd==2){TR0=1;}
- }
- if(IRCOM[2]==0x44)
- {
- m=3; //判斷顯示
- if(msd==1||msd==2){TR0=0;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- if(test==1){key1=2;}
- if(test==2){key2=2;}
-
- if(msd==1||msd==2){TR0=1;}
- }
-
- if(IRCOM[2]==0x40)
- {
- m=5; //判斷顯示
- if(msd==1||msd==2){TR0=0;}
- PWM_POW=1;
- delay10us(); delay10us();delay10us();delay10us(); delay10us();delay10us();
- PWM_POW=0;
- if(test==1){key1=3;}
- if(test==2){key2=1;}
- if(msd==1||msd==2){TR0=1;}
- }
-
- if(IRCOM[2]==0x43) m=6; //判斷顯示
- if(IRCOM[2]==0x07) m=7; //判斷顯示
- if(IRCOM[2]==0x15) m=8; //判斷顯示
- if(IRCOM[2]==0x09) m=9; //判斷顯示
- if(IRCOM[2]==0x16) shuzi1++; //判斷顯示
- if(IRCOM[2]==0x19) shuzi1++; //判斷顯示
- if(IRCOM[2]==0x0d) m=10; //判斷顯示
- if(IRCOM[2]==0x0c) m=11; //判斷顯示
- if(IRCOM[2]==0x18) m=12; //判斷顯示
- if(IRCOM[2]==0x5e) m=13; //判斷顯示
- if(IRCOM[2]==0x08) m=14; //判斷顯示
- if(IRCOM[2]==0x1c) m=15; //判斷顯示
- if(IRCOM[2]==0x5a) m=16; //判斷顯示
- if(IRCOM[2]==0x42) m=17; //判斷顯示
- if(IRCOM[2]==0x52) m=18; //判斷顯示
- if(IRCOM[2]==0x4a) m=19; //判斷顯示
- EX0 = 1;
- }
復(fù)制代碼
所有資料51hei提供下載:
光立方.zip
(4.36 MB, 下載次數(shù): 79)
2018-11-19 09:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|