|
16x64 nokta vuruşlu program
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
- /***********************************************************
- 名稱: 16*64點(diǎn)陣
- MCU: 89C52
- 晶振: 12M
- 時(shí)間: 2008年12月06日
- 外部器件: 16*64點(diǎn)陣,ds1302
- 接線: 見ds1302.h和本主文件
- 版本: V1.0
- ------------------更新記錄---------------------------------
- 20081206 開始記錄編輯過程,養(yǎng)成良好習(xí)慣.添加了1302.h的頭文件.實(shí)現(xiàn)了實(shí)時(shí)時(shí)鐘的顯示.
- 因還未添加按鍵部分,故只能在proteus仿真.
- ***********************************************************/
- #include <REGX52.H>
- //#include <intins.h>
- #include "DS1302.h"
- #include "ascii.h"
- #define SPEED 5 //移動(dòng)速度,數(shù)字越大越慢
- sbit H_CLK = P1^3;
- sbit H_D = P1^2;
- sbit L_CLK = P3^1;
- sbit L_D = P3^0;
- sbit L_STB = P1^0;
- sbit L_OE = P1^1;
- SYSTEMTIME CurrentTime;
- unsigned char date[]=
- {
- ' ',' ',' ',' ',' ',' ',' ',' ', //開頭8個(gè)空格
- '2','0', //21世紀(jì)
- '0','8', //年數(shù)據(jù) No.10,11
- 'Y','Y', //“年”
- '1','2', //月數(shù)據(jù) No.14,15
- 'M','M', //“月”
- '0','6', //日數(shù)據(jù) No.18,19
- 'D','D', //“日”
-
- 0, //空格
-
- 'W','E','E','K', //“星期”
- '?','?', //星期幾 No.27,28
-
- 0, //空格
-
- '1','9', //小時(shí)數(shù)據(jù) No.30,31
- ':', //':' No.32
- '4','1', //分鐘數(shù)據(jù) No.33,34
- ':', //':' No.35
- '0','0', //秒數(shù)據(jù) No.36,37
-
- ' ',' ',' ',' ',' ',' ',' ',' ',
- ' ',' ',' ',' ',' ', //數(shù)組最大用到No.52
- ' ',' ',' ',' ',' ',' ',' ',' ', //末尾8個(gè)空格
- };
- void time_to_buff(void);
- void delay_nms(unsigned int count);
- void set_row(unsigned char row);
- void sendRbyte(unsigned char wdata); //模擬spi的方式往列4094傳送字模數(shù)據(jù)
- void sendR2byte(unsigned char wdata,unsigned char n); //模擬spi的方式往列4094傳送字模數(shù)據(jù)
- void time_to_buff(void);
- void main(void)
- {
- unsigned char i,offset=0,disrow=0,j,k=0;
- Initial_DS1302();
- L_OE=0; //列不輸出
- for(i=0;i<16;i++) //行驅(qū)動(dòng)的4094填16個(gè)1,使行不輸出,去掉大概也沒問題.反正就一會(huì)
- {
- H_CLK=0;
- H_D=1;
- H_CLK=0;
- }
- while(1)
- {
- for(j=0;j<SPEED;j++,offset++)
- {
- for(disrow=0;disrow<16;disrow++) //disrow,當(dāng)前掃描的行
- {
- set_row(disrow); //行4094的輸出.依次點(diǎn)亮1~16行.
- L_STB=0; //STB low
-
- for(i=0;i<8;i++) //送往8個(gè)4094的數(shù)據(jù).
- sendRbyte(~a[date[k+i]-32][disrow]); //acsii-32 就是實(shí)際的字模位置
- sendR2byte(~a[date[k+8]-32][disrow],offset);
- if(offset==8)
- {
- offset=0;k++;
- if(k>45) k=0;
- }
-
- L_STB=1; //STB high
- L_OE=1; //列4094輸出
- delay_nms(2); //此處延時(shí),請(qǐng)根據(jù)點(diǎn)陣閃爍狀況加以調(diào)整,仿真時(shí)候無法仿真閃爍.
- L_OE=0;
- }
- }
- time_to_buff();
- }
- }
- void delay_nms(unsigned int count)
- {
- unsigned int i,j;
- for(i=0;i<count;i++)
- for(j=0;j<120;j++);
- }
- void set_row(unsigned char row)
- {
- H_CLK=0; //行4094的輸出.依次點(diǎn)亮1~16行.
- if(row==0) H_D=0;
- else H_D=1;
- H_CLK=1;
- }
- void sendRbyte(unsigned char wdata) //模擬spi的方式往列4094傳送字模數(shù)據(jù)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- L_CLK=0; //時(shí)鐘拉低
- L_D=wdata&0x80;
- L_CLK=1; //時(shí)鐘拉高,產(chǎn)生上升沿
- wdata <<= 1; //左移一位
- }
- }
- void sendR2byte(unsigned char wdata,unsigned char n) //模擬spi的方式往列4094傳送字模數(shù)據(jù)
- {
- unsigned char i;
- for(i=0;i<n;i++)
- {
- L_CLK=0; //時(shí)鐘拉低
- L_D=wdata&0x80;
- L_CLK=1; //時(shí)鐘拉高,產(chǎn)生上升沿
- wdata <<= 1; //左移一位
- }
- }
- /*
- void send_0_pulse(unsigned char n) //送n個(gè)脈沖,
- {
- unsigned char i;
- L_D=1; //其實(shí)應(yīng)該是0,仿真時(shí)用1
- for(i=0;i<n;i++)
- {
- L_CLK=0; //時(shí)鐘拉低
- L_CLK=1; //時(shí)鐘拉高,產(chǎn)生上升沿
- }
- }
- */
- void time_to_buff(void)
- {
- DS1302_GetTime(&CurrentTime);
- DateToStr(&CurrentTime);
- TimeToStr(&CurrentTime);
- date[10]=CurrentTime.DateString[0];
- date[11]=CurrentTime.DateString[1];
- date[14]=CurrentTime.DateString[3];
- date[15]=CurrentTime.DateString[4];
- date[18]=CurrentTime.DateString[6];
- date[19]=CurrentTime.DateString[7];
- date[30]=CurrentTime.TimeString[0];
- date[31]=CurrentTime.TimeString[1];
- date[33]=CurrentTime.TimeString[3];
- date[34]=CurrentTime.TimeString[4];
- date[36]=CurrentTime.TimeString[6];
- date[37]=CurrentTime.TimeString[7];
- }
復(fù)制代碼
單片機(jī)源程序如下:
所有資料51hei提供下載:
16X64點(diǎn)陣左右移動(dòng)模式.7z
(1.41 MB, 下載次數(shù): 180)
2019-11-20 16:44 上傳
點(diǎn)擊文件名下載附件
16x64點(diǎn)陣程序
程序+fz.7z
(37.19 KB, 下載次數(shù): 106)
2019-11-20 16:48 上傳
點(diǎn)擊文件名下載附件
16x64點(diǎn)陣程序
|
評(píng)分
-
查看全部評(píng)分
|