标题:
单片机按键控制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};//段选共阴数码管
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;//开始计数
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内写秒寄存器80H写入初始秒数据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内写秒寄存器80H写入初始秒数据00
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
按键控制芯片时钟.rar
(36.12 KB, 下载次数: 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.51hei.com/bbs/)
Powered by Discuz! X3.1