找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2527|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

可調(diào)時(shí)鐘+溫度顯示(ds1302+1602+18b20)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:242950 發(fā)表于 2017-11-11 20:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 17805591357 于 2017-11-11 20:07 編輯

//可調(diào)時(shí)鐘+溫度顯示(ds1302+1602+18b20),還可以拓展成串口通信模式

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
#include<stdio.h>
#include<intrins.h>
#include "18b20.h"
#include "1602.h"
#include "delay.h"
#include"ds1302.h"
#define KeyPort P3 //定義按鍵端口
bit ReadTimeFlag;//定義讀時(shí)間標(biāo)志 時(shí)間
unsigned char KeyScan(void);//鍵盤(pán)掃描
void Init_Timer0(void);//定時(shí)器初始化
/*------------------------------------------------
              串口通訊初始化
------------------------------------------------*/
void UART_Init(void)
{
    SCON  = 0x50;          // SCON: 模式 1, 8-bit UART, 使能接收  
    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
    TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz  
    TR1   = 1;                  // TR1:  timer 1 打開(kāi)                        
    //EA    = 1;                  //打開(kāi)總中斷
    //ES    = 1;                  //打開(kāi)串口中斷
TI=1;
}
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{  
unsigned char num;                  
unsigned char temp[16];//定義顯示區(qū)域臨時(shí)存儲(chǔ)數(shù)組               
int temp1;
float temperature;
char displaytemp[16];//定義顯示區(qū)域臨時(shí)存儲(chǔ)數(shù)組
LCD_Init();           //初始化液晶
DelayMs(20);          //延時(shí)有助于穩(wěn)定
LCD_Clear();          //清屏
Init_Timer0();
UART_Init();
Init_DS18B20();
Ds1302_Init();        //ds1302初始化
Ds1302_Read_Time();   //首次讀取時(shí)間
if((time_buf1[1]+time_buf1[6])==0) //如果所有參數(shù)都為0,寫(xiě)入一個(gè)初始值
   Ds1302_Write_Time();

while (1)         //主循環(huán)
{ temp1=ReadTemperature();
  temperature=(float)temp1*0.0625;
  sprintf(displaytemp,"%0.1f",temperature);//打印溫度值
  LCD_Write_String(12,1,displaytemp);//顯示第二行
   
   
   
if(ReadTimeFlag==1)
{
   ReadTimeFlag=0;  //標(biāo)志位清零
   Ds1302_Read_Time();//讀取時(shí)間參數(shù)
   sprintf(temp,"%02d-%02d-%02d",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3]);//年月日周
  LCD_Write_String(0,0,temp);//顯示第一行
  sprintf(temp,"%02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//時(shí)分秒
  LCD_Write_String(0,1,temp);//顯示第二行
  
}     

    num=KeyScan();
  switch(num)
       {
     case 1:time_buf1[4]++;if(time_buf1[4]==24)time_buf1[4]=0;   
              Ds1302_Write_Time();break; //正常時(shí)間 小時(shí) 加1
  
  case 2:time_buf1[4]--;if(time_buf1[4]==255)time_buf1[4]=23;  
           Ds1302_Write_Time();break; //正常時(shí)間 小時(shí)減1
  
  case 3:time_buf1[5]++;if(time_buf1[5]==60)time_buf1[5]=0;     
           Ds1302_Write_Time();break;//分加1
  
  case 4:time_buf1[5]--;if(time_buf1[5]==255)time_buf1[5]=59;
  
  case 5:time_buf1[1]++;//if(time_buf1[0]==60)time_buf1[4]=0; //年   
           Ds1302_Write_Time();break;
  
  case 6:time_buf1[1]--;//if(time_buf1[0]==255)time_buf1[4]=59;//年
           Ds1302_Write_Time();break;
     
  case 7:time_buf1[2]++;if(time_buf1[2]==13)time_buf1[2]=0;  //月   
           Ds1302_Write_Time();break;
  
  case 8:time_buf1[3]--;if(time_buf1[3]==31)time_buf1[3]=0; //日
  default:break;
    }
}
}


可調(diào)時(shí)鐘.rar

39.45 KB, 下載次數(shù): 21, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
小小卋界 + 5 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:47652 發(fā)表于 2017-11-12 09:38 | 只看該作者
沙發(fā),配個(gè)圖就好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表