|
按鍵控制芯片時(shí)鐘
單片機(jī)源程序如下:
- #include "STC15F2K60S2.H"
- #include "INTRINS.H"
- #include "DS1302.H"
- #define uchar unsigned char
- #define uint unsigned int
- #define wela 0xcf
- #define dula 0xef
- #define wendul 0xa7 //c
- uchar gang=0xbf; //-
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段選共陰數(shù)碼管
- uchar code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位選
- uchar shi,fen,miao;
- uchar temp,num;
- uchar f,ff;
- bit key4_flag=1;
- bit bb=1;
- void key();
- void Delay1ms(uint m) //@11.0592MHz
- {
- unsigned char i, j;
- uint z;
- for(z=m;z>0;z--)
- {
- _nop_();
- _nop_();
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- void show_1()//界面一 時(shí)鐘界面
- {
- P2 = ((P2&0x1f)|dula);
- P0 = table[shi%100/10];
- P2 &= 0x1f; //shi
- P2 = ((P2&0x1f)|wela);
- P0 = table1[0];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = table[shi%10];
- P2 &= 0x1f; //shi
- P2 = ((P2&0x1f)|wela);
- P0 = table1[1];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = gang;
- P2 &= 0x1f;
- P2 = ((P2&0x1f)|wela); //-
- P0 = table1[2];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = table[fen%100/10];
- P2 &= 0x1f; //fen
- P2 = ((P2&0x1f)|wela);
- P0 = table1[3];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = table[fen%10];
- P2 &= 0x1f;
- P2 = ((P2&0x1f)|wela); //fen
- P0 = table1[4];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = gang;
- P2 &= 0x1f;
- P2 = ((P2&0x1f)|wela); //-
- P0 = table1[5];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = table[miao%100/10]; //miao
- P2 &= 0x1f;
- P2 = ((P2&0x1f)|wela);
- P0 = table1[6];
- P2 &= 0x1f;
- Delay1ms(1);
- P2 = ((P2&0x1f)|dula);
- P0 = table[miao%10];
- P2 &= 0x1f;
- P2 = ((P2&0x1f)|wela); //miao
- P0 = table1[7];
- P2 &= 0x1f;
- Delay1ms(1);
- }
- void show()
- {
- P2 &=0x1f;
- P2 = ((P2&0x1f)|0x80);
- P0 = 0xff;
- P2 &= 0x1f;
- Delay1ms(1000);
- }
- void init()
- {
- TMOD = 0X01;//模式
- TL0 = 0X00;
- TH0 = 0X4C;
- ET0 = 1; //中斷允許位
- TR0 = 1;//開始計(jì)數(shù)
- EA = 1; //打開總中斷
- }
- void main()
- {
- init();
- show();
- Initial();
- while(1)
- {
- show_1();
- key();
- if(bb==1)
- {
- shi = read_1302(0x85);
- fen = read_1302(0x83);
- miao = read_1302(0x81);
- }
-
- }
- }
- void time() interrupt 1 //
- {
- TL0 = 0X00;
- TH0 = 0X4C;
- temp++;
- if(temp==20)
- {
- temp=0;
- num++;
- gang = (num<<6)|0xbf;
- // 11_flag = 1;
- if(num==10)
- {
- num=0;
- }
- }
- }
- void key()
- {
-
- if(P30==0&&key4_flag==1)
- {
- Delay1ms(20);
- if(P30==0)
- {
- while(!P30);
- f++;
- switch(f)
- {
- case 1: bb=0;
- Write1302 (0x8E,0X00); //允許寫,禁止寫保護(hù)
- Write1302 (0x80,0x00|(miao)/10*16+(miao)%10); //向DS1302內(nèi)寫秒寄存器80H寫入初始秒數(shù)據(jù)00
- Write1302 (0x8E,0x80); //打開寫保護(hù)
- if(P31==0)
- {
- EA=0;
- Delay1ms(20);
- if(P31==0)
- {
- while(!P31);
-
- miao++;
- if(miao==60)
- {
- miao=0;
- }
-
-
- }
- }
-
- break;
- case 2:bb=0;
- Write1302 (0x8E,0X00); //允許寫,禁止寫保護(hù)
- Write1302 (0x80,0x00|(fen)/10*16+(fen)%10); //向DS1302內(nèi)寫秒寄存器80H寫入初始秒數(shù)據(jù)00
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
按鍵控制芯片時(shí)鐘.rar
(36.12 KB, 下載次數(shù): 15)
2018-1-24 22:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|