?? ds1302.c
字號:
/************************************/
/*ds1302+ds18b20溫度時鐘 */
/*目標器件:AT89S51 */
/*晶振:11.0592MHZ */
/*編譯環境:Keil 7.50A */
/*串口修改時間的格式為:以a開頭加年 */
/*加月加日加星期加時加分加秒加b結束 */
/*如a0807281163812b. */
/************************************/
/*********************************包含頭文件********************************/
#include <at89x52.h>
#include <intrins.h>
/*********************************端口定義**********************************/
sbit DS1302_CLK = P1^0;
sbit DS1302_IO = P1^1;
sbit DS1302_RST = P1^2;
sbit K1 = P3^2;
sbit K2 = P3^3;
sbit DQ=P3^3;
/*******************************共陽LED段碼表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6,0x7f};
/******************************定義全局變量*********************************/
unsigned char second,minute,hour,week,day,month,year; //秒、分、時、星期、日、月、年
//unsigned char minute1,hour1;
unsigned char second1,minute1,hour1,week1,day1,month1,year1;
unsigned char t1,t2,i;
unsigned char secondchar,minutechar,hourchar,weekchar,daychar,monthchar,yearchar;
unsigned char keysum ;
unsigned char key_s, key_v, tmp;
unsigned char key_s1, key_v1;
unsigned char tab1[10];
unsigned char dat; //定義全局變量
unsigned long dat1;
unsigned char ii,jj;
unsigned char RxdFlag;
//char code str[] = "www.jiundingantong.com ";
/*********************************定義全局變量******************************/
unsigned char tempL=0; //臨時變量低位
unsigned char tempH=0; //臨時變量高位
float temperature; //溫度值
//串行口初始化程序
void Init_Com(void)
{
TMOD = 0x20; // 定時器1工作于8位自動重載模式, 用于產生波特率
PCON = 0x00; // 波特率不倍增//
SCON = 0x50; // 串口工作方式1//
TH1 = 0xFd; // 9600Kbps//
TL1 = 0xFd;
TR1 = 1; // 啟動定時器1,開啟中斷//
}
void send_char(unsigned char txd) // 傳送一個字符
{
SBUF = txd; // 傳送數據
while(!TI); // 等特數據傳送
TI = 0; // 清除數據傳送標志
}
/****************************************************************************
函數功能:延時子程序(溫度顯示部分用)
入口參數:k
出口參數:
****************************************************************************/
void delayy(unsigned int k)
{
unsigned int n;
n=0;
while(n < k)
{n++;}
return;
}
/****************************************************************************
函數功能:延時子程序(時間顯示部分用)
入口參數:
出口參數:
****************************************************************************/
void delay1(void)
{
int k;
for(k=0;k<400;k++);
}
/****************************************************************************
函數功能:數碼管顯示子程序(正常顯示溫度)
入口參數:k
出口參數:
****************************************************************************/
void displayy(int k)
{
/*P2=0xfe;
P0=tab[k/1000];
delay1();
P2=0xfd;
P0=tab[k%1000/100];
delay1();*/
P2=0xff; //關閉P2口//
P2=0xfb; //溫度顯示的十位的位選//
P0=tab[k%100/10]; //溫度顯示的十位//
delay1();
P2=0xf7; //溫度顯示的個位的位選//
P0=tab[k%10]; //溫度顯示的個位//
delay1();
P2=0xdf; //字符C的位選//
P0=0xc6; //從DP段開始倒數:DP、G、F、E、D、C、B、A/11000110即16進制C6,顯示字符
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -