目录
main.c
#include "STC15F2K60S2.h"
#include "init.h"
#include "led.h"
#include "time.h"
#include "seg.h"
#include "key.h"
#include "onewire.h"
#include <ds1302.h>
#include "iic.h"
#include "STDIO.h"
//函数声明-----------------
void Key_Pro (void);
void Seg_Pro (void);
void Led_Pro (void);
//LEd ---------------
unsigned char ucled ;
//数码管 ------
unsigned char seg_sss[10];
unsigned char seg_buf[8];
unsigned char pos=0;
//按键------
unsigned char key_hig,key_low;
unsigned char key_i;
//减速 --------
unsigned char Key_Mm;
unsigned char Seg_Mm;
unsigned char Led_Mm;
//============-----------------------------=-----
unsigned long Tit; //===================================这部分是主要有关
unsigned int SJ_bl555; //===================================这部分是主要有关
///================================================================这部分是主要有关
void Timer0Init(void) //计数模式 // ||
{ // ||
// ||
TMOD &=0xf0; //设置定时器模式 // ||
TMOD |=0x05; //设置定时器模式 // ||
TL0 = 0x00; //设置定时初值 低位 // ||
TH0 = 0x00; //设置定时初值 高位 // ||
// ||
TR0 = 1; //定时器0开始计时 // ||
} // ||
// ||
//------------------------------------------------------------------
void main()
{
Off_init(); //
Timer1Init();
EA =1 ;
Timer0Init();
while(1)
{
Key_Pro ();
Seg_Pro ();
Led_Pro ();
}
}
void tm1_isr() interrupt 3
{
if(++Key_Mm == 10) Key_Mm=0;
if(++Seg_Mm == 2) Seg_Mm=0;
if(++Led_Mm == 300) Led_Mm=0;
Tit++; //定时加加
//============================================================= 这部分是主要有关
if((Tit % 1000) == 0) //每一秒钟 所做了多少次叫 【频率】 ||
{ // ||
SJ_bl555 = (( (TH0)<<8) | TL0); // ||
TL0 = 0x00; //清零定时初值 低位 // ||
TH0 = 0x00; //清零定时初值 高位// ||
} // ||
//=====================================================================
Seg_Vip(seg_buf,pos);
if(++pos==8) pos= 0;
}
//--------------------------------------------------------------
void Key_Pro (void)
{
if(Key_Mm) return;Key_Mm=1;
key_i = Key_Read_INB();
key_low = key_i & ( key_low ^ key_i);
key_hig = key_i;
}
void Seg_Pro (void)
{
if(Seg_Mm) return;Seg_Mm=1;
sprintf(seg_sss, "%08d",(unsigned int ) SJ_bl555);
Seg_Ring ( seg_sss,seg_buf );
}
void Led_Pro (void)
{
if(Led_Mm) return;Led_Mm=1;
}
有关原理图:
设计图 ![](https://i-blog.csdnimg.cn/blog_migrate/e248aaa7a167d0efbde6963582cba363.png)