標題:
單片機按鍵控制DS1302芯片時鐘
[打印本頁]
作者:
shengwuben
時間:
2018-1-24 22:14
標題:
單片機按鍵控制DS1302芯片時鐘
按鍵控制芯片時鐘
單片機源程序如下:
#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()//界面一 時鐘界面
{
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;//開始計數(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); //允許寫,禁止寫保護
Write1302 (0x80,0x00|(miao)/10*16+(miao)%10); //向DS1302內(nèi)寫秒寄存器80H寫入初始秒數(shù)據(jù)00
Write1302 (0x8E,0x80); //打開寫保護
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); //允許寫,禁止寫保護
Write1302 (0x80,0x00|(fen)/10*16+(fen)%10); //向DS1302內(nèi)寫秒寄存器80H寫入初始秒數(shù)據(jù)00
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
按鍵控制芯片時鐘.rar
(36.12 KB, 下載次數(shù): 15)
2018-1-24 22:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-1-25 00:34
有電路圖嗎?
作者:
天才第一代
時間:
2018-11-11 20:09
為什么我的按鍵不頂用呢
作者:
橙七
時間:
2021-5-15 23:29
只有程序嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1