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

  • 大小: 44KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-10
  • 語言: 其他
  • 標簽: 1602??ds1302??ds18b20??

資源簡介

1602電子時鐘ds1302萬年歷isis仿真文件,程序源碼,有按鍵有溫度ds18b20,程序有詳細注釋。

資源截圖

代碼片段和文件信息

#include
#include“DS18B20_3.H“
#define?uint?unsigned?int
#define?uchar?unsigned?char
uchar?amiaoshifenriyuenianweekflagkey1ntemp;
//flag用于讀取頭文件中的溫度值,和顯示溫度值

#define?yh?0x80?//LCD第一行的初始位置因為LCD1602字符地址首位D7恒定為1(100000000=80)
#define?er?0x80+0x40?//LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)

//液晶屏的與C51之間的引腳連接定義(顯示數據線接C51的P0口)
sbit?rs=P2^0;
sbit?en=P2^2;
sbit?rw=P2^1;?//如果硬件上rw接地,就不用寫這句和后面的rw=0了
sbit?led=P2^6;?//LCD背光開關
sbit?d1=P3^0;

//DS1302時鐘芯片與C51之間的引腳連接定義
sbit?IO=P1^1;
sbit?SCLK=P1^0;
sbit?RST=P1^2;

sbit?ACC0=ACC^0;
sbit?ACC7=ACC^7;
/************************************************************
ACC累加器=A
ACC.0=E0H?

ACC.0就是ACC的第0位。Acc可以位尋址。

累加器ACC是一個8位的存儲單元,是用來放數據的。但是,這個存儲單元有其特殊的地位,
是單片機中一個非常關鍵的單元,很多運算都要通過ACC來進行。以后在學習指令時,
常用A來表示累加器。但有一些地方例外,比如在PUSH指令中,就必須用ACC這樣的名字。
一般的說法,A代表了累加器中的內容、而ACC代表的是累加器的地址。?
***************************************************************/

//校時按鍵與C51的引腳連接定義
sbit?key1=P1^5;??//設置鍵
sbit?key2=P1^6;??//加鍵
sbit?key3=P1^7;??//減鍵



/**************************************************************/

uchar?code?tab1[]={“20??-??-???“};?//年顯示的固定字符
uchar?code?tab2[]={“??:??:??“};//時間顯示的固定字符

//延時函數,后面經常調用
void?delay(uint?xms)//延時函數,有參函數
{
uint?xy;
for(x=xms;x>0;x--)
?for(y=110;y>0;y--);
}

/********液晶寫入指令函數與寫入數據函數,以后可調用**************/

/*在這個程序中,液晶寫入有關函數會在DS1302的函數中調用,所以液晶程序要放在前面*/

write_1602com(uchar?com)//****液晶寫入指令函數****
{
rs=0;//數據/指令選擇置為指令
rw=0;?//讀寫選擇置為寫
P0=com;//送入數據
delay(1);
en=1;//拉高使能端,為制造有效的下降沿做準備
delay(1);
en=0;//en由高變低,產生下降沿,液晶執行命令
}


write_1602dat(uchar?dat)//***液晶寫入數據函數****
{
rs=1;//數據/指令選擇置為數據
rw=0;?//讀寫選擇置為寫
P0=dat;//送入數據
delay(1);
en=1;?//en置高電平,為制造下降沿做準備
delay(1);
en=0;?//en由高變低,產生下降沿,液晶執行命令
}


lcd_init()//***液晶初始化函數****
{
write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
write_1602com(0x0c);//開顯示不顯示光標
write_1602com(0x06);//整屏不移動,光標自動右移
write_1602com(0x01);//清顯示

write_1602com(yh+1);//日歷顯示固定符號從第一行第1個位置之后開始顯示
for(a=0;a<14;a++)
{
write_1602dat(tab1[a]);//向液晶屏寫日歷顯示的固定符號部分
//delay(3);
}
write_1602com(er+2);//時間顯示固定符號寫入位置,從第2個位置后開始顯示
for(a=0;a<8;a++)
{
write_1602dat(tab2[a]);//寫顯示時間固定符號,兩個冒號
//delay(3);
}

}

/*********************over***********************/


/***************DS1302有關子函數********************/

void?write_byte(uchar?dat)//寫一個字節
{
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>>1;
}
}
uchar?read_byte()//讀一個字節
{
RST=1;
for(a=8;a>0;a--)
{
ACC7=IO;
SCLK=1;
SCLK=0;
ACC=ACC>>1;

}
return?(ACC);
}
//----------------------------------------
void?write_1302(uchar?adduchar?dat)//向1302芯片寫函數,指定寫入地址,數據
{

RST=0;
SCLK=0;
RST=1;
write_byte(add);
write_byte(dat);
SCLK=1;
RST=0;
}
uchar?read_1302(uchar?add)//從1302讀數據函數,指定讀取數據來源地址
{
uchar?temp;
RST=0;
SCLK=0;
RST=1;
write_byte(add);
temp=read_byte();
SCLK=1;
RST=0;
return(temp);
}
uchar?BCD_Decimal(uchar?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????100298??2014-05-20?10:45??lcd1602.DSN
?????文件???????17012??2014-05-20?10:48??lcd1602.c
?????文件????????5928??2014-05-20?10:47??lcd1602.hex
?????文件???????19123??2014-05-20?10:49??1602.png

評論

共有 條評論