91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-19
  • 語言: 其他
  • 標簽: 51單片機??

資源簡介

基于52單片機的萬年歷電子時鐘, 親測好用 大家下載

資源截圖

代碼片段和文件信息

#include?	?????????//調用單片機頭文件
#define?uchar?unsigned?char??//無符號字符型?宏定義 變量范圍0~255
#define?uint??unsigned?int ?//無符號整型?宏定義 變量范圍0~65535
#include?“eeprom52.h“
#include?“nongli.h“
#include?“intrins.h“

bit?flag_200ms?;
bit?flag_100ms?;
sbit?beep?=?P2^3; ??//蜂鳴器定義
bit?flag_beep_en;
uint?clock_value;?????//用作鬧鐘用的

sbit?dq???=?P2^2; ??//18b20?IO口的定義


uint?temperature?;????//溫度變量
uchar?flag_nl;????????//農歷?陽歷顯示標志位


uchar?menu_1menu_2;



uchar?key_timeflag_value;??????//用做連加的中間變量
bit?key_500ms??;
uchar?n_niann_yuen_ri; //農歷顯示的函數



#include?“ds1302.h“
#include?“lcd1602.h“



/******************把數據保存到單片機內部eeprom中******************/
void?write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000?fen1);
byte_write(0x2001?shi1);
byte_write(0x2002?open1);
byte_write(0x2058?a_a);
}

/******************把數據從單片機內部eeprom中讀出來*****************/
void?read_eeprom()
{
fen1??=?byte_read(0x2000);
shi1??=?byte_read(0x2001);
open1??=?byte_read(0x2002);
a_a??????=?byte_read(0x2058);
}

/**************開機自檢eeprom初始化*****************/
void?init_eeprom()
{
read_eeprom(); //先讀
if(a_a?!=?1) //新的單片機初始單片機內問eeprom
{
fen1??=?3;
shi1??=?8;
open1??=?1;
a_a?=?1;
write_eeprom(); ???//保存數據
}
}

/***********************18b20初始化函數*****************************/
void?init_18b20()
{
bit?q;
dq?=?1; //把總線拿高
delay_uint(1); ????//15us
dq?=?0; //給復位脈沖
delay_uint(80); //750us
dq?=?1; //把總線拿高?等待
delay_uint(10); //110us
q?=?dq; //讀取18b20初始化信號
delay_uint(20); //200us
dq?=?1; //把總線拿高?釋放總線
}

/*************寫18b20內的數據***************/
void?write_18b20(uchar?dat)
{
uchar?i;
for(i=0;i<8;i++)
{ ?//寫數據是低位開始
dq?=?0; ?//把總線拿低寫時間隙開始?
dq?=?dat?&?0x01;?//向18b20總線寫數據了
delay_uint(5); ?//?60us
dq?=?1; ?//釋放總線
dat?>>=?1;
}
}

/*************讀取18b20內的數據***************/
uchar?read_18b20()
{
uchar?ivalue;
for(i=0;i<8;i++)
{
dq?=?0; ?//把總線拿低讀時間隙開始?
value?>>=?1; ?//讀數據是低位開始
dq?=?1; ?//釋放總線
if(dq?==?1) ?//開始讀寫數據?
value?|=?0x80;
delay_uint(5); ?//60us 讀一個時間隙最少要保持60us的時間
}
return?value; ?//返回數據
}

/*************讀取溫度的值?讀出來的是小數***************/
uint?read_temp()
{
uint?value;
uchar?low; ???//在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序
init_18b20(); ???//初始化18b20
write_18b20(0xcc); ???//跳過64位ROM
write_18b20(0x44); ???//啟動一次溫度轉換命令
delay_uint(50); ???//500us

init_18b20(); ???//初始化18b20

write_18b20(0xcc); ???//跳過64位ROM
write_18b20(0xbe); ???//發出讀取暫存器命令

EA?=?0;
low?=?read_18b20(); ???//讀溫度低字節
value?=?read_18b20();??//讀溫度高字節
EA?=?1;
value?<<=?8; ???//把溫度的高位左移8位
value?|=?low; ???//把讀出的溫度低位放到value的低八位中
value?*=?0.625; ???????//轉換到溫度值?小數
return?value; ???//返回讀出的溫度?帶小數
}



/******************1ms?延時函數*******************/
void?delay_1ms(uint?q)
{
uint?ij;
for(i=0;i for(j=0;j<120;j++);
}

/******************寫星期函數*******************/
void?w

評論

共有 條評論