欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機藍牙調節的時鐘源程序設計
[打印本頁]
作者:
xucan110
時間:
2018-1-31 15:29
標題:
51單片機藍牙調節的時鐘源程序設計
51單片機的時鐘設計,可以調節年月日 星期 和 時間。
內有源程序,在單片機板子上使用無誤。還加上了藍牙調節,可以通過藍牙直接調節時間。
單片機源程序如下:
#include<reg51.h>
#include"lcd.h"
#include"ds1302.h"
sbit K1=P3^2;
sbit K2=P3^3;
sbit K3=P3^4;
unsigned char i;
unsigned char buff;
unsigned char receivedata;
void keep();
void lanya();
void Int0Configuration();
void LcdDisplay();
unsigned char SetState,SetPlace;
void Delay10ms(void); //誤差 0us
void main()
{
Int0Configuration();
LcdInit();
Ds1302Init();
while(1)
{
if(SetState==0)
{
Ds1302ReadTime();
}
else
{
lanya();
keep();
}
LcdDisplay();
}
}
void LcdDisplay()//1602顯示
{
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //時
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //星期
}
void Int0Configuration()//定時器
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
//串口中斷
void Int0() interrupt 4
{
TH1=0xFD;
TL1=TH1;
Delay10ms();
if(receivedata==0x00)//進入時鐘模式
{
SetState=~SetState;
SetPlace=0;
Ds1302Init();
}
if(RI)//在返回發送數字到手機上
{
RI = 0;
}
receivedata=SBUF;
SBUF=receivedata;
while(!TI);
TI = 0;
Delay10ms();
if(K3==0)
{
SetState=~SetState;
SetPlace=0;
Ds1302Init();
}
}
/********************************************************************************
藍牙控制時間
*****************************************************************************/
void lanya()
{
if(receivedata==0x01)//選擇位置,可調節的數字位 從時間秒開始
{
SetPlace++;
if(SetPlace>=7)
SetPlace=0;
}
buff=receivedata;//不加會使得數字一直加
if(buff==0x02)//加一
{
receivedata++;
TIME[SetPlace]=TIME[SetPlace]+1;
if((TIME[SetPlace]&0x0f)>9) //換成BCD碼。
{
TIME[SetPlace]=TIME[SetPlace]+6;
}
if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) //分秒只能到59
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) //小時只能到23
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) //日只能到31
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) //月只能到12
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x07)&&(SetPlace==5)) //周只能到7
{
TIME[SetPlace]=1;
}
}
}
/****************************************************************************
按鍵控制時間
***************************************************************************/
void keep()
{
if(K1==0) //檢測按鍵K1是否按下
{
Delay10ms(); //消除抖動
if(K1==0)
{
SetPlace++;
if(SetPlace>=7)
SetPlace=0;
}
while((i<50)&&(K1==0)) //檢測按鍵是否松開
{
Delay10ms();
i++;
}
i=0;
}
if(K2==0) //檢測按鍵K2是否按下
{
Delay10ms(); //消除抖動
if(K2==0)
{
TIME[SetPlace]++;
if((TIME[SetPlace]&0x0f)>9) //換成BCD碼。
{
TIME[SetPlace]=TIME[SetPlace]+6;
}
if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) //分秒只能到59
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) //小時只能到23
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) //日只能到31
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) //月只能到12
{
TIME[SetPlace]=0;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
單片機實驗2.zip
(68.73 KB, 下載次數: 33)
2018-1-31 15:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
songxia8013
時間:
2018-3-1 10:10
內容太少,只有個程序,沒有電路圖,沒有藍牙部分介紹!做事情不夠認真!
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1