<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于PIC16F877A單片機設計的萬(wàn)年歷程序

基于PIC16F877A單片機設計的萬(wàn)年歷程序

作者: 時(shí)間:2012-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏

//-------------------------------------------------
//啟動(dòng)溫度轉換函數
void get_temp()
{
int i;
DQ_HIGH();
reset(); //復位等待從機應答
write_byte(0XCC); //忽略ROM匹配
write_byte(0X44); //發(fā)送溫度轉化命令
for(i=10;i>0;i--)
{
delay(201,132); //調用多次延遲函數,確保溫度轉換完成所需要的時(shí)間
}
reset(); //再次復位,等待從機應答
write_byte(0XCC); //忽略ROM匹配
write_byte(0XBE); //發(fā)送讀溫度命令
TLV=read_byte(); //讀出溫度低8
THV=read_byte(); //讀出溫度高8位
DQ_HIGH(); //釋放總線(xiàn)
TZ=(TLV>>4)|(THV4);
}

3.日歷顯示程序
/***************************************************
* 標題:DS1302讀寫(xiě) *
* 作者:Wujieflash *
* 日期:2008年1月14日 *
* 說(shuō)明:日歷顯示范圍:2000年--2099年 *
***************************************************/
#define RST RC0
#define SCLK RC1
#define IO RC2
uch flag=0;
uch second=1,minute=1,hour=1,year=1,month=1,date=1,day=1;
uch clock[]={0};
uch DisCash[]={0x00,0x30,0x09,0x16,0x01,0x03,0x09};
/////往1302寫(xiě)入1Byte數據////////////////////////
void RTInputByte(uch d)
{
uch i;
TRISC=0x00;
for(i=8; i>0; i--)
{
IO = d0x01; //取最低位
SCLK = 1; //上升沿發(fā)送
SCLK = 0; //恢復
d = d >> 1;
}
}
///////從1302讀取1Byte數據////////////////////////
uch RTOutputByte(void)
{
uch i,val=0;
TRISC2=1; //設置為輸入
for(i=8; i>0; i--)
{
val = val >>1;
if(IO)val=val|0x80;// 從最低位開(kāi)始接收
SCLK = 1; //下降沿接收
SCLK = 0;
}
return(val);
}
///////先寫(xiě)地址,后寫(xiě)命令/數據//////////////////////////
void W1302(uch ucAddr, uch ucDa)
{
RST = 0;
SCLK = 0;
RST = 1; //打開(kāi)DS1302
RTInputByte(ucAddr); // /* 地址,命令 */
RTInputByte(ucDa); // /* 寫(xiě)1Byte數據*/
SCLK = 1;
RST = 0; //關(guān)閉DS1302
}
///////先寫(xiě)地址,后讀命令/數據////////////////////////
uch R1302(uch ucAddr)
{
uch ucData;
RST = 0;
SCLK = 0;
RST = 1;
RTInputByte(ucAddr); // /* 地址,命令 */
ucData = RTOutputByte(); // /* 讀1Byte數據 */
SCLK = 1;
RST = 0;
return(ucData);
}
/////////向1302寫(xiě)入 秒 分 時(shí) 日 月 星期 年 */////////////
void Set1302(uch *pClock)
{
uch i;
uch ucAddr = 0x80; //起使地址
W1302(0x8e,0x00); ///* 控制命令,WP=0,允許寫(xiě)操作*/
for(i =7; i>0; i--)
{
W1302(ucAddr,*pClock); ///* 秒 分 時(shí) 日 月 星期 年 */
pClock++;
ucAddr +=2; //寫(xiě)地址加2
}
W1302(0x8e,0x80); // /* 控制命令,WP=1,寫(xiě)保護*/
}
////////從1302讀出 秒 分 時(shí) 日 月 星期 年 *//////////////////
void v_Get1302(unsigned char ucCurtime[])
{
unsigned char i;
unsigned char ucAddr = 0x81;
for(i=0;i
/////////與LCD的顯示接口//////////////////////
void display()
{
uch i;
for(i=0;i

4.按鍵掃描與服務(wù)程序
/***************************************************
* 標題:按鍵掃描和服務(wù) *
* 作者:Wujieflash *
* 日期:2008年1月17日 *
* 說(shuō)明:當按鍵按下,選中的單元就會(huì )閃爍 *
***************************************************/
uch k=0;
//鍵盤(pán)初始化子程序
void keyinit()
{
TRISD0=1;
TRISD0=1;
TRISD0=1;
}
/*----------------------------------------------------------*/
//鍵盤(pán)掃描子程序
void KeyScan()
{
int d;
if(RD0==0) //設置鍵按下
{
k++; //選定入口值
k=k%8;
}
while(1)
{
if(RD0==1)break;//等待按鍵松開(kāi)
}
switch(k)//鍵盤(pán)服務(wù)入口
{
case 1://設置秒
{
d=R1302(0x81);//讀取秒
d=d/16*10+d%16;//轉換為16進(jìn)制
second=flag; //設置秒的閃爍標志
minute=1; //其余變量不閃爍
hour=1;
year=1;
month=1;
date=1;
day=1;
if(second==0) //閃爍
{
Show8X16_2(0,111,noshu);
Show8X16_2(0,119,noshu);
}
if(RD1==0) //秒數值加1
{
d++;
if(d>0x3b)d=0;//大于59就為0
d=d/10*16+d%10;
W1302(0x80,d);//寫(xiě)入DS1302
while(1)
{
if(RD1==1)break;//等待鍵松開(kāi)
}
}
if(RD2==0)//數值減1
{
d--;
if(d0x3b)d=0;
d=d/10*16+d%10;
W1302(0x82,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
d--;
if(d0x17)d=0;
d=d/10*16+d%10;
W1302(0x84,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
d--;
if(d0x1f)d=1;
d=d/10*16+d%10;
W1302(0x86,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
d--;
if(d0x0c)d=1;
d=d/10*16+d%10;
W1302(0x88,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
d--;
if(d0x07)d=1;
d=d/10*16+d%10;
W1302(0x8a,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
d--;
if(d0x63)d=0;
d=d/10*16+d%10;
W1302(0x8c,d);
while(1)
{
if(RD1==1)break;
}
}
if(RD2==0)
{
……

5.液晶顯示程序
/***************************************************
* 標題:LCD操作 *
* 作者:Wujieflash *
* 日期:2008年1月12日 *
* 說(shuō)明:液晶不帶字庫 *
***************************************************/
#include
#define E RA0 //液晶使能端
#define RW RA1 //讀寫(xiě)控制端
#define DI RA2 //數據/指令通道
#define CSA RA5 //片選
#define CSB RA3 //片選
#define nop() asm("nop")
////////////////////////基本子函數///////////////////////
//延時(shí)
void delay(char x,char y)
{
char z;
do{
z=y;
do{;}while(--z);
}while(--x);
}
//其指令時(shí)間為:7+(3*(Y-1)+7)*(X-1)如果再加上函數調用的call 指令、頁(yè)面設定、傳遞參數花掉的7 個(gè)指令。
//則是:14+(3*(Y-1)+7)*(X-1)。
//--------------------------------------------------
void LCDdelay()
{
unsigned int i=500;
while(i--)
{;}
}
/*----------------------------------------------------*/
//狀態(tài)檢查
void CheckState()
{
unsigned int dat;
RW=1; //讀狀態(tài)
DI=0;
TRISB=0xff; //設置口為輸入
while(1)
{
E=1; //高電平讀數據
dat=PORTB0x90; //當4、7位為0時(shí)為正常狀態(tài)
E=0;
if(dat==0x00)break;
}
TRISB=0x00; //恢復口為輸出
}



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>