|
用STC15F2K60S2單片機控制,帶矩陣按鍵,大字顯示倒計時,可實際用于比賽(為21日西門子邏輯控制比賽專做), 附所有項目代碼,供參考
11.png (746.06 KB, 下載次數(shù): 97)
下載附件
2021-7-18 20:39 上傳
22.png (534.54 KB, 下載次數(shù): 93)
下載附件
2021-7-18 20:39 上傳
33.jpg (121.68 KB, 下載次數(shù): 65)
下載附件
2021-7-18 20:39 上傳
單片機源程序如下:
- //LED屏控制程序 本程序驅(qū)動32*64LED彩色屏
- //每一個單元屏傳送2路數(shù)據(jù)
- #include <stc15f2k60s2.H>
- #include "common.h"
- #include "delay.h"
- #include "arkey.h" //行列按鍵
- #include "ledping.h" //LED屏
- #include "zk.h"
- bit djs_F=0; //倒計時標(biāo)志
- bit sec_F=0; //秒標(biāo)志
- bit shun_F=0; //閃爍標(biāo)志
- u8 timecount=0; //時間計數(shù)
- u8 data min,sec;
- u8 data djs[4]; //倒計時數(shù)組
- void Timer0Init(void) //2ms@22.1184MHz晶振
- {
- AUXR |= 0x80; //?????1T??
- TMOD &= 0xF0; //???????
- TL0 = 0x33; //??????
- TH0 = 0x53; //??????
- TF0 = 0; //??TF0??
- TR0 = 1; //???0????
- }
- void main()
- {
- u8 data key,status;
- u16 m;
- Timer0Init(); //2ms定時初始始化
- SP=0xf0;
- while(1)
- {
- if (status==0)
- {
- key=KeyScan();
- if (key!=0) //判斷是否有按鍵
- {
- // T_keyF=0;
- switch(key)
- {
- case 0x01: status=5; break;
- case 0x02: status=6; break;
- case 0x03: status=7; break;
- case 0x04: status=8; break; //查詢溫度 DS18B20
- case 0x05: status=9; break;
- case 0x06: status=10; break;
- case 0x07: status=11; break;
- case 0x08: status=12; break;
- case 0x09: status=13; break; //90分鐘倒計時
- case 0x0a: status=14; break; //倒計時開始
- // case 0x0b: status=15; break;
- // case 0x0c: status=16; break;
- // case 0x0d: status=17; break;
- // case 0x0e: status=18; break;
- // case 0x0f: status=19; break;
- // case 0x10: status=20; break;
- default: status=0;
- }
- key=0; //清空按鍵值
- }
- if (djs_F)
- {
- djsrun(); //顯示總時間
- min=90; //分鐘 (倒計時總時長)
- sec=0; //秒
- }
- }
- else
- if (status==5)
- {
- dzdisp32(dz11,dz12,0); //顯示8個漢字
- m++;
- if (m>=500)
- {
- m=0;
- status=6;
- }
- }
- else
- if (status==6)
- {
- dzdisp32(dz21,dz22,0);
- m++;
- if (m>=500)
- {
- m=0;
- status=7;
- }
- }
- else
- if (status==7)
- {
- dzdisp32(dz31,dz32,1);
- m++;
- if (m>=200)
- {
- m=0;
- status=8;
- }
- }
- else
- if (status==8)
- {
- dzdisp32(dz41,dz42,2);
- m++;
- if (m>=200)
- {
- m=0;
- status=9;
- }
- }
- else
- if (status==9)
- {
- dzdisp32(dz51,dz52,1);
- m++;
- if (m>=200)
- {
- m=0;
- status=5;
- }
- }
-
- else
- if (status==13) //90分鐘倒計時
- {
- djs_F=1; //倒計時功能設(shè)置
- xsinit(); //顯示內(nèi)容初始化
- status=0;
- }
- else
- if (status==14) //90分鐘倒計時開始
- {
- ET0=1;
- EA=1;
- status=15;
- }
- else
- if (status==15) //倒計時
- {
- if (sec_F) //秒標(biāo)志
- {
- sec_F=0; //清除秒標(biāo)志
- if (sec==0)
- {
- if(min!=0)
- {
- sec=59;
- min--;
- }
- if ((min==0)&&(sec==0)) //分鐘和秒鐘均走完
- {EA=0;ET0=0;}
- }
- else
- sec--;
- djs[0]=min/10;
- djs[1]=min%10;
- djs[2]=sec/10;
- djs[3]=sec%10;
- // xsgx1(); //更新顯示緩沖區(qū) 1個緩沖區(qū)
- xsgx2(); //更新顯示緩沖區(qū) 2個緩沖區(qū)
- }
- djsrun(); //倒計時運行
- }
- }
- }
- void time0() interrupt 1
- {
- timecount++;
- if (timecount==250) //500ms
- {
- timecount=0;
- shun_F=~shun_F; //閃爍標(biāo)志求反
- if (!shun_F)
- {
- sec_F=1; //產(chǎn)生1秒信號
- }
- }
- }
復(fù)制代碼
51hei.png (7.26 KB, 下載次數(shù): 81)
下載附件
2021-7-18 21:35 上傳
所有資料51hei提供下載:
64X128比賽用倒計時器.rar
(133.91 KB, 下載次數(shù): 33)
2021-7-18 20:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|