久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)電子時鐘程序 IAP15F4K-HC595-Test(完整)
[打印本頁]
作者:
LUOTAIXING
時間:
2019-5-25 16:01
標(biāo)題:
51單片機(jī)電子時鐘程序 IAP15F4K-HC595-Test(完整)
51單片機(jī)電子時鐘程序
單片機(jī)源程序如下:
#include "intrins.h"
#include "string.h"
#include "STC15Fxxxx.H"
#include "main.h"
#include "HC595.H"
#include "ds1302.h"
//秒分時日月周年
int Set_Time[3];
unsigned char TIMES[7] = {0x30,0x30,0x10,0x30,0x11,0x05,0x18};
sbit SPEAKER = P1^3;
sbit SingleKey = P0^7;////把P0.7接地,設(shè)置P0.0~P0.3為4個獨立按鍵
sbit KEY1 = P0^0;////P0.0為KEY1
sbit KEY2 = P0^1;////P0.1為KEY2
sbit KEY3 = P0^2;////P0.2為KEY3
sbit KEY4 = P0^3;////P0.3為KEY4
bit flag = 0,flag_ = 0;
bit set_flag;
unsigned char index = 0;
unsigned char scan_con[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //列掃描控制字
unsigned char displayDat[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //顯示單元數(shù)據(jù),共8個數(shù)據(jù)和一個運算暫用
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
//蜂鳴器函數(shù)
//////////////////////////////////////
void Beep(unsigned int dd)
{
SPEAKER=1;
Delaylong(dd);
SPEAKER=0;
}
////////////////////////////////////////////////////
void Delaylong(unsigned int t)//
{
unsigned int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<10;j++);
}
}
///////////////////////////////////////////////////////////////////////
// 串口初始化函數(shù)
///////////////////////////////////////////////////////////////////////
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x40; //定時器1時鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
TMOD &= 0x0F; //設(shè)定定時器1為16位自動重裝方式
TL1 = 0xE0; //設(shè)定定時初值
TH1 = 0xFE; //設(shè)定定時初值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
// ES = 1; //使能串口1中斷
REN =1;
}
////////////////////////////
void PortInit()
{
P0M1 =0X00;
P0M0 =0X00;
P1M1 =0X00;
P1M0 =0X0C;////P1.2、P1.3強(qiáng)驅(qū)動模式,P1.2繼電器,P1.3蜂鳴器
P2M1 =0X00;
P2M0 =0X00;
P3M1 =0X00;
P3M0 =0X00;
P4M1 =0X00;
P4M0 =0X00;
P5M1 =0X00;
P5M0 =0X00;
SingleKey = 0;////把P0.7接地,設(shè)置P0.0~P0.3為4個獨立按鍵
KEY1 =1;
KEY2 =1;
KEY3 =1;
KEY4 =1;
}
void Timer0Init(void) //10毫秒@11.0592MHz
{
AUXR &= 0x7F; //定時器時鐘12T模式
TMOD &= 0xF0; //設(shè)置定時器模式
TL0 = 0x00; //設(shè)置定時初值
TH0 = 0xDC; //設(shè)置定時初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時器0開始計時
ET0 = 1;
EA = 1;
}
void data_abs()
{
displayDat[0] = TIMES[6]/10;
displayDat[1] = TIMES[6]%10;
displayDat[2] = TIMES[4]/10;
displayDat[3] = TIMES[4]%10;
displayDat[4] = TIMES[3]/10;
displayDat[5] = TIMES[3]%10;
displayDat[6] = TIMES[5]/10;
displayDat[7] = TIMES[5]%10;
}
//時分秒處理數(shù)據(jù)處理
void data_bas()
{
displayDat[0] = TIMES[2]/10;
displayDat[1] = TIMES[2]%10;
displayDat[2] = 18;
displayDat[3] = TIMES[1]/10;
displayDat[4] = TIMES[1]%10;
displayDat[5] = 18;
displayDat[6] = TIMES[0]/10;
displayDat[7] = TIMES[0]%10;
}
//設(shè)置時間
void sit_Time()
{
if(set_flag == 0&&index == 0||index != 0)
{
displayDat[0] = Set_Time[0]/10;
displayDat[1] = Set_Time[0]%10;
}
if(set_flag == 1&&index == 0)
{
displayDat[0] = 16;
displayDat[1] = 16;
}
displayDat[2] = 18;
if(set_flag == 0&&index == 1||index != 1)
{
displayDat[3] = Set_Time[1]/10;
displayDat[4] = Set_Time[1]%10;
}
if(set_flag == 1&&index == 1)
{
displayDat[3] = 16;
displayDat[4] = 16;
}
displayDat[5] = 18;
if(set_flag == 0&&index == 2||index != 2)
{
displayDat[6] = Set_Time[2]/10;
displayDat[7] = Set_Time[2]%10;
}
if(set_flag == 1&&index == 2)
{
displayDat[6] = 16;
displayDat[7] = 16;
}
}
/**************************************************************************
*函數(shù)名稱:main()
*功能 :主函數(shù)
**************************************************************************/
void main()
{
unsigned int i;
AUXR =0x00;
PortInit();
UartInit(); // 串口1//注意,下載程序選擇晶振:11.0592MHz,波特率9600bps
Delaylong(500);
Beep(5000);
//P6=0XFF;
Ds1302Init();
Timer0Init();
while(1)
{
Ds1302ReadTime();//讀取時鐘信息
if(KEY1 == 0)//切換界面
{
Delay10ms();
if(KEY1 == 0)
flag = !flag;
while(!KEY1);
}
if(KEY2 == 0)//設(shè)置時鐘
{
Delay10ms();
if(KEY2 == 0)
{
flag_ = 1;
}
while(!KEY2);
}
if(flag_)//設(shè)置時鐘界面
{
if(flag == 0)
{
Set_Time[0] = TIMES[2];
Set_Time[1] = TIMES[1];
Set_Time[2] = TIMES[0];
Ds1302Write(0x8E,0X00);//打開寫保護(hù)
while(1)
{
if(index == 3)
{
index = 0;
flag_ = 0;
break;
}
if(KEY2 == 0)
{
Delay10ms();
if(KEY2 == 0)
{
index++;
}
while(!KEY2);
}
if(KEY3 == 0)//加
{
Delay10ms();
if(KEY3 == 0)
Set_Time[index] += 1;
while(!KEY3);
}
if(KEY4 == 0)//減
{
Delay10ms();
if(KEY4 == 0)
Set_Time[index] -= 1;
while(!KEY4);
}
if(Set_Time[0] > 23)Set_Time[0] = 0;
if(Set_Time[1] > 59)Set_Time[1] = 0;
if(Set_Time[2] > 59)Set_Time[2] = 0;
if(Set_Time[0] < 0) Set_Time[0] = 23;
if(Set_Time[1] < 0) Set_Time[1] = 59;
if(Set_Time[2] < 0) Set_Time[2] = 59;
Ds1302Write(0x80,Set_Time[2]/10*16 + Set_Time[2]%10);
Ds1302Write(0x82,Set_Time[1]/10*16 + Set_Time[1]%10);
Ds1302Write(0x84,Set_Time[0]/10*16 + Set_Time[0]%10);
for(i=0;i<8;i++) //8位LED掃描控制
{
sit_Time();
display(i,displayDat[i]);
}
}
Ds1302Write(0x8E,0x80);//禁止寫保護(hù)
}
}
if(flag_ == 0)//顯示時鐘界面
{
for(i=0;i<8;i++) //8位LED掃描控制
{
if(flag == 0)//顯示時分秒
data_bas();//數(shù)據(jù)處理
else //顯示年月日
data_abs();
display(i,displayDat[i]);
}
}
}
}
void Timer0()interrupt 1
{
static int i = 0;
TL0 = 0x00; //設(shè)置定時初值
TH0 = 0xDC; //設(shè)置定時初值
i++;
if(i == 100)//1s時間到了
{
i = 0;
set_flag = !set_flag;
}
}
復(fù)制代碼
所有資料51hei提供下載:
IAP15F4K-HC595-Test(完整)2.0板子.zip
(113.19 KB, 下載次數(shù): 13)
2019-5-25 16:00 上傳
點擊文件名下載附件
51單片機(jī)電子時鐘
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品毛片无码
|
亚洲精品视频在线
|
97超碰免费
|
日韩在线一区二区三区
|
羞羞在线视频
|
91在线看
|
久久久久久亚洲国产精品
|
欧美99久久精品乱码影视
|
亚洲国产精品美女
|
欧美精品一区二区三区在线
|
日韩在线精品强乱中文字幕
|
日韩亚洲视频
|
久草成人
|
亚洲精品国产一区
|
亚洲精品在线视频
|
精品视频一区二区三区四区
|
久久精品一区
|
99热国产在线播放
|
成人午夜网站
|
久久综合一区二区
|
99国产精品久久久久
|
中文字幕久久精品
|
在线视频 亚洲
|
国产 欧美 日韩 一区
|
免费黄色片视频
|
黄色av免费网站
|
精品久久久久久久久久久久久久
|
久久精品亚洲欧美日韩久久
|
国产亚洲精品美女久久久久久久久久
|
欧美日高清
|
亚洲国产成人精品女人
|
国产精品亚洲欧美日韩一区在线
|
精品欧美一区二区三区免费观看
|
精品一区二区三区在线观看
|
欧美日韩国产一区二区
|
成人在线免费视频
|
av影音资源
|
天天操夜夜操
|
精品欧美乱码久久久久久
|
午夜影院在线观看免费
|
国产一级毛片视频
|