|
光立方的顯示來一波
單片機(jī)源程序如下:
- #include <STC12C5A60S2.H>
- #include "STC12C5A.H"
- #define uint unsigned int
- #define uchar unsigned char
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- sbit L1602_RS_POW=P4^4; //定義電源功能接口 低電平
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
- 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; //模擬時(shí)鐘控制端口
- sbit SUO=P1^2; //模擬鎖存信號(hào)端口
- /*$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$-_-$_-_$*/
- sbit a=P3^4; //行數(shù)據(jù)掃描信號(hào)
- sbit b=P3^5; //行數(shù)據(jù)掃
- sbit c=P3^6; //行數(shù)
- sbit d=P3^7; //行數(shù)據(jù)
- sbit en=P1^7; //行數(shù)據(jù)
- /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
- unsigned int CYCLE=100,PWM_LOW=1110,shan=0,saom=0,shuzi1=0,shuzi2=0,shuzi3=0,shuzi4=0;//定義周期并賦值
- unsigned int code tab[]= //在此顯示一個(gè)字,根據(jù)取字模軟件進(jìn)行提取 。將取模軟件最后一行八個(gè)字節(jié)復(fù)制過來,
- //再將每個(gè)字節(jié)復(fù)制在其后面,形成16個(gè)字節(jié),最后將這一行復(fù)制8行。
- //
- {
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
- 0xDF, 0xDF,0xDF,0xDF, 0xDF, 0xDF,0xD8, 0xD8,0x02, 0x02,0xD8, 0xD8,0xDF,0xDF, 0xDF, 0xDF,
-
- };
- void Delay(unsigned int t)
- {
- while(--t);
- }
- void init()
- {
- P4SW=0xff; //定義P4口為I/O口
- P0M1=0x00; //I/O口0模式控制器0
- P0M0=0xff; //定義P0為強(qiáng)上拉輸出.
- P2M1=0x00;
- P2M0=0xff; //定義P2為強(qiáng)上拉輸出.
- P4M1=0x00;
- P4M0=0xff; //定義P4為強(qiáng)上拉輸出.
- }
- /*##########################################################################################*/
- //************************************偉澤電子科技************************************
- //函數(shù)名稱:void sendbyte(unsigned int byte);
- //功 能:根據(jù)byte值的大小,取出對(duì)應(yīng)tab數(shù)組中的值,模擬SPI發(fā)送出去一個(gè)字節(jié)
- //入口參數(shù):byte值,范圍0-65535
- //出口參數(shù):無
- //編 寫 人:偉澤電子科技
- //編寫日期:2015-08-02
- //修改歷史:V1.0
- //************************************偉澤電子科技************************************
- void sendbyte(unsigned int byte)
- {
- unsigned char num; //定義需要發(fā)送的數(shù)據(jù)
- unsigned char c; //定義發(fā)送一個(gè)字節(jié)的變量
- num=tab[byte]; //根據(jù)byte值取出tab數(shù)組中的數(shù)據(jù),存入發(fā)送數(shù)據(jù)變量中
- for(c=0;c<8;c++) //循環(huán)發(fā)送一個(gè)字節(jié)
- {
- CLK=0; //時(shí)鐘置低電平啟動(dòng)
- M_LR_DS0=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位
- M_LG_DS0=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位
- M_HR_DS0=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位
- M_HG_DS0=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位
- CLK=1; //時(shí)鐘置高電平結(jié)束數(shù)據(jù)發(fā)送
- num<<=1; //將需要發(fā)送的數(shù)據(jù)左移一位
- }
- }
- /*##########################################################################################*/
- //************************************偉澤電子科技************************************
- //函數(shù)名稱:void hansao(unsigned char hs);
- //功 能:根據(jù)入口參數(shù)hs的值,進(jìn)行判斷選擇哪一行,選通1-16行的選通
- //入口參數(shù):hs的值,范圍0-15
- //出口參數(shù):無
- //編 寫 人:上升沿電子科技
- //編寫日期:2015-08-02
- //修改歷史:V1.0
- //************************************上升沿電子科技************************************
- void hansao(unsigned char hs)
- {
- if(hs<16) //判斷hs的值是否在行掃描的值范圍內(nèi),不在范圍內(nèi)不執(zhí)行任何操作
- {
- if(hs==0) //選通第1行
- {
- a=0;b=0;c=0;d=0; return;
- }
- if(hs==1) //選通第2行
- {
- a=1;b=0;c=0;d=0; return;
- }
- if(hs==2) //選通第3行
- {
- a=0;b=1;c=0;d=0; return;
- }
- if(hs==3) //選通第4行
- {
- a=1;b=1;c=0;d=0; return;
- }
- if(hs==4) //選通第5行
- {
- a=0;b=0;c=1;d=0; return;
- }
- if(hs==5) //選通第6行
- {
- a=1;b=0;c=1;d=0; return;
- }
- if(hs==6) //選通第7行
- {
- a=0;b=1;c=1;d=0; return;
- }
- if(hs==7) //選通第8行
- {
- a=1;b=1;c=1;d=0; return;
- }
- }
- }
- //ps:(a=1,b=2,c=4)
- /*##########################################################################################*/
- void main()
- {
- unsigned char p=0,k=0,l=1,m=1; //定義
- L1602_RS_POW=0; //開機(jī)打開電源指示燈
- init();
- Delay(100);
- while (1)
- {
- for(p=0;p<100;p++)
- {
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
實(shí)例靜態(tài)顯示一個(gè)字.rar
(48.47 KB, 下載次數(shù): 14)
2017-6-20 10:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|