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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3128|回復: 2
打印 上一主題 下一主題
收起左側

DS1302最簡單的一個小程序 是哪塊不對呢???

[復制鏈接]
跳轉到指定樓層
樓主
ID:56673 發表于 2013-11-24 14:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前面的讀寫字節 讀寫程序的都對     應該是主函數的問題  查了很多資料 對BCD轉化還是不懂  是都要轉換嗎?

#include<reg52.h>
#define uchar unsigned char
uchar key,key1;
sbit CLK=P2^7;
sbit IO=P2^6;
sbit RES=P2^5;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,
                       0x99,0x92,0x82,0xf8,
                       0x80,0x90};                                                     //0--9代碼
void write_byte(uchar byte)                                                       //寫一個字節
{
uchar i;
RES=1;
CLK=0;
for(i=8;i>0;i--)
  {
   CLK=0;
   IO=byte&0x01;
   CLK=1;
   byte=byte>>1;
  }

}
uchar read_byte()                                                       //讀一個字節

{
uchar i,dat;
RES=1;
for(i=0;i<8;i++)
  {
   CLK=1;
   CLK=0;
      if(IO)
    dat=(dat|(0x01<<i));
  }
return( dat);
}
void  write_1302(uchar add,uchar dat)                                     //寫入數據
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
    write_byte(dat);
RES=0;
   
}
read_1302(uchar add)                                                                 //讀出數據
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
key=read_byte();
RES=0;
return (key);
   
}
   
void main()
{

P1=0x08;                                                     //數碼管位選
RES=0;
    CLK=0;
    write_1302(0x8e,0x00);                          //允許寫入
write_1302(0x80,0x80);                             //秒寫入0
write_1302(0x8e,0x80);                               //寫保護
while(1)
  {
      read_1302(0x81);                                    //讀出
                                                  
   P0=table[key1];                                             //段選
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:56673 發表于 2013-11-24 14:10 | 只看該作者
如果向秒寄存器 0x80里寫數據 0 的話   00H BCD轉化完還是00   可秒寄存器第一位如果是0不就停止計時了嗎
回復

使用道具 舉報

板凳
ID:18297 發表于 2013-12-5 20:05 | 只看該作者
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit timesclk=P2^7;
sbit timeio=P2^6;
sbit timerst=P2^5;
uchar set_time_data[];
void delay(uint z);
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    DS1302寫數據子程序
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
void timewrite(uchar dat)
{
uchar i,temp;
delay(1);
temp=dat;
for(i=0;i<8;i++)
{
  timeio=temp&0x01;
  delay(1);
  timesclk=1;
  delay(1);
  timesclk=0;
  temp=temp>>1;
}
}  
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    DS1302讀取延時
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
       for(y=110;y>0;y--);
}
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    DS1302讀數據子程序
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
uchar timeread()
{
uchar i,temp;
delay(1);
temp=0;
for(i=0;i<8;i++)
{
  temp=temp>>1;
  if(timeio==1)temp=temp+0x80;
  delay(1);
  timesclk=1;
  delay(1);
  timesclk=0;
}
return temp;
}
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    DS1302向某地址寫數據子程序
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
void timedata(uchar add,uchar dat)
{
timerst=0;
timesclk=0;
timerst=1;
timewrite(add);                 // 地址,命令
timewrite(dat);                 // 寫1Byte數據
    timesclk=1;
    timerst=0;
    timeio=0;
}
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    DS1302初始化子程序
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
void timeinit()
{
uchar i;
for(i=0;i<5;i++)
{
  timedata(0x80+i*2,set_time_data[i]);  //初始化秒,時,分,日,月
}
timedata(0x80+6*2,set_time_data[5]);
}
/****************************************************
Copyright:      2013-2014
File name:      電子時鐘
Description:    主函數程序
Author:         aking   
Version:      1.0
Date:           2013-12-6
History
****************************************************/
void main()
{
uchar i;
timedata(0x8e,0x00);            
timeinit();      //時間初始化
timedata(0x8e,0x80);
timerst=0;
timesclk=0;
while(1)
{
  timerst=1;
  timewrite(0x81);       //先寫地址(秒為0x81,分為0x83等等)
  i=timeread();              //再讀數據(i為秒)
  timerst=0;
  delay(1);                 //延時
  P1=i/16;                // P1輸出位秒的高位
  P3=i%16;              //P3輸出位秒的低位
}
}

//以上為完整的程序,經過仿真。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美一区二区三区在线播放 | 国产一区二区欧美 | 欧美99 | 精品亚洲永久免费精品 | 国产免费一区二区三区免费视频 | 婷婷丁香在线视频 | 午夜小影院 | 国产视频久久 | 美女国产精品 | 亚洲成人一区二区三区 | 欧美在线观看一区 | www.狠狠干| 99视频入口 | 欧美一区二区大片 | 欧美精品影院 | 欧美色性| 中文字幕第二十页 | 亚洲 日本 欧美 中文幕 | 午夜欧美一区二区三区在线播放 | 狠狠操婷婷| 日本中文字幕日韩精品免费 | 91色在线 | 国产精品一区一区三区 | 国产乱码一二三区精品 | 免费一级欧美在线观看视频 | 欧美日韩亚洲三区 | 精品欧美乱码久久久久久 | 国产区久久 | 99欧美精品 | 成人免费观看网站 | 三区四区在线观看 | 密桃av | 久久机热 | 欧美日韩一区二区三区四区五区 | 国产精品久久久久久久久久东京 | 久久久99国产精品免费 | 欧美电影网 | 亚洲一区二区在线 | 欧美黄色网 | 91一区二区| 一级毛片视频 |