久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

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

用AT89C51與DS1302做的萬(wàn)年歷c語(yǔ)言編程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:366024 發(fā)表于 2018-7-6 08:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//寫(xiě)的時(shí)候,是低電平改變數(shù)據(jù),上升沿送入數(shù)據(jù)
//讀的時(shí)候,是低電平讀入數(shù)據(jù),下降沿使得從設(shè)備把數(shù)據(jù)放到總線上
//讀的時(shí)候,是低電平讀,但沒(méi)有讀出,提供下降沿使得從設(shè)備把數(shù)據(jù)放到總線上
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs="P2"^4;
sbit rw="P2"^5;
sbit en="P3"^6;
sbit reset="P3"^3;
sbit sclk="P3"^0;
sbit io="P3"^1;
uchar str1[]="date of today is:";
uchar init[]={0x00,0x00,0x21,0x21,0x10,0x01,0x04};//秒,分,時(shí),日,月,星期,年
//
void delay()
{uchar j;
for(j=250;j>0;j--);
}
//-------------------液晶模塊-----------------//
void en_toggle()
{
  en=0;
  //_nop_();
delay();
  en=1;
delay();
// _nop_();
  en=0;
}             //注意必須加延時(shí),否則會(huì)出問(wèn)題的
void is_ready()
{
   P2=0x00;//設(shè)置為輸入口 //注意:現(xiàn)實(shí)中應(yīng)該送0xff
   rs=0;
   rw=1;
   en=1;
   while(bflag);
   en=0;
}
void write_cmd(uchar cmd)
{
  is_ready();
  rs=0;
  rw=0;
  P2=cmd;
  en_toggle();
  _nop_();
}
void write_data(uchar indata)
{
  is_ready();
  rs=1;
  rw=0;
  P2=indata;
  en_toggle();
  _nop_();
}
void write_str(uchar addr,uchar *p)
{
uchar i;
write_cmd(addr);
while(p[i]!='\0')
{write_data(p[i]);
  i++;
}
}
void write_position(uchar row,uchar col)
{uchar p;
if(row==1)
{p=0x80+col-1;
  write_cmd(p);}
else
{p=0xc0+col-1;
  write_cmd(p);
   }
}
void init_lcd()
{
write_cmd(0x38);
write_cmd(0x0c);
write_cmd(0x06);
write_cmd(0x01);//清屏幕
}
//------------液晶模塊結(jié)束---------------------

//-----------ds1302模塊開(kāi)始-------------------
//注意點(diǎn):sclk的上升沿輸入數(shù)據(jù),sclk的下跳沿輸出數(shù)據(jù)
//讀寫(xiě)時(shí)都是從第0位開(kāi)始
void write_byte(uchar inbyte)
{
uchar i;
for(i=8;i>0;i--)
{
  sclk=0;   //寫(xiě)的時(shí)候低電平改變數(shù)據(jù)
  if(inbyte&0x01)
      io=1;
  else
      io=0;
  sclk=1;  //寫(xiě)的時(shí)候高電平,把數(shù)據(jù)寫(xiě)入ds1302
  _nop_();
  inbyte=inbyte>>1;
}
}
uchar read_byte() //sclk的下跳沿讀數(shù)據(jù)
{
uchar i,temp=0;
io=1;          //設(shè)置為輸入口
for(i=7;i>0;i--)
{
   sclk=0;
   if(io==1)
   temp=temp|0x80;
   else
   temp=temp&0x7f;
   sclk=1;       //產(chǎn)生下跳沿
   temp=temp>>1;
}
return (temp);
}
//----------往ds1302的某個(gè)地址寫(xiě)入數(shù)據(jù)-------------
void write_ds1302(uchar cmd,uchar indata)
{
  reset=1;
  write_byte(cmd);
  write_byte(indata);
  reset=0;
  sclk=0;
}
//----------讀ds1302某地址的的數(shù)據(jù)-----------------
uchar read_ds1302(uchar addr)
{
uchar backdata;
reset=1;
write_byte(addr);
backdata=read_byte();//先寫(xiě)地址,然后讀數(shù)據(jù)
reset=0;
sclk=0;
return (backdata);
}
//------------設(shè)置初始時(shí)間-------------------
void set_ds1302(uchar addr,uchar *p,uchar n)//寫(xiě)入n個(gè)數(shù)據(jù)
{
  write_ds1302(0x8e,0x00);//寫(xiě)控制字,允許寫(xiě)操作
  for(;n>0;n--)
  {write_ds1302(addr,*p);
   p++;
   addr=addr+2;
  }
  write_ds1302(0x8e,0x80);//寫(xiě)保護(hù),不允許寫(xiě)
}
//----------- 讀取當(dāng)前時(shí)間-------------------
void read_nowtime(uchar addr,uchar *p,uchar n)
{
for(;n>0;n--)
{
   *p=read_ds1302(addr);
   p++;
   addr=addr+2;
}      
}
void init_ds1302()
{
  reset=0;
  sclk=0;
  write_ds1302(0x80,0x00);//寫(xiě)控制字,允許寫(xiě)
  write_ds1302(0x90,0x00);//禁止渦流充電
}
//-----------ds1302模塊結(jié)束-------------------
void main()
{
  init_lcd();             //初始化LCD
  write_str(0x80,str1);   //液晶顯示提示信息
  init_ds1302();          //初始化ds1302
  set_ds1302(0x80,init,7);//設(shè)置初始時(shí)間,日期,年月
//如果不設(shè)置初始化時(shí)間的話,則默認(rèn)為系統(tǒng)時(shí)間
  while(1)
  {
   read_nowtime(0x81,init,7); //讀出當(dāng)前時(shí)間,讀出7個(gè)字節(jié)

    write_position(2,1);
   write_data('0'+((init[2]&0xf0)>>4));

    write_position(2,2);
   write_data('0'+(init[2]&0x0f)); //讀小時(shí)

    write_position(2,3);
   write_data(':');

    write_position(2,4);
   write_data('0'+((init[1]&0xf0)>>4));

  write_position(2,5);
   write_data('0'+(init[1]&0x0f));    //讀分鐘

   write_position(2,6);
   write_data(':');

    write_position(2,7);
   write_data('0'+((init[0]&0xf0)>>4));

   write_position(2,8);
   write_data('0'+(init[0]&0x0f)); //讀秒

    write_position(2,13);
   write_data('0'+((init[6]&0xf0)>>4));

    write_position(2,14);
   write_data('0'+(init[6]&0x0f)); //讀年

    write_position(2,15);
   write_data('/');

    write_position(2,16);
   write_data('0'+((init[4]&0xf0)>>4));

    write_position(2,17);
   write_data('0'+(init[4]&0x0f)); //讀月

    write_position(2,18);
   write_data('/');

    write_position(2,19);
   write_data('0'+((init[3]&0xf0)>>4));

    write_position(2,20);
   write_data('0'+(init[3]&0x0f)); //讀日


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美极品一区二区 | 国产电影精品久久 | 免费看黄视频网站 | 亚洲网址在线观看 | 日日日视频 | 国产一区二区视频在线观看 | 成年人视频在线免费观看 | 日韩1区| 日日操操操 | 午夜视频网站 | 青青草视频免费观看 | 欧美性高潮 | 久久精品亚洲精品 | 天天夜碰日日摸日日澡 | 91麻豆精品国产91久久久久久 | 国产精品性做久久久久久 | 91高清在线视频 | 成人国产精品免费观看 | 欧美一区二区在线 | 久久福利电影 | 97在线观看| 欧美久久久久久久久 | 久久午夜国产精品www忘忧草 | 欧美日韩不卡 | 日韩视频国产 | 日韩在线一区视频 | 久久久久国产精品 | 久久亚洲国产 | 免费一区二区三区 | www.色综合| 丁香一区二区 | 精品免费国产一区二区三区四区介绍 | 激情黄色在线观看 | 日韩精品在线观看一区二区 | 国产一区二区毛片 | 欧美日韩精品一区二区天天拍 | 91久久| 久久一起草 | 综合激情久久 | 久草中文在线 | 一级片网址 |