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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

時鐘芯片DS1302-MAX7219不成功。

[復制鏈接]
跳轉到指定樓層
樓主
ID:9990 發表于 2009-5-10 19:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

初始只有秒位可以顯示。分,時的初始化都不正確,秒計滿分位也沒有變化。奇怪,秒分時的寫入不都是同樣的函數嗎。怎么就初始化不行。秒位從00到59可以顯示,那能說明DS1302正常工作了嗎。
還有個問題,我看有的書上,DS1302與單片機接口的RST腳接了非門,我的沒接,這樣可以不。

//DS1302 RTC drive program
//for 51 mcu with max7219 display
//designed by zhaoliang
//2005-6-16 18:27
#i nclude <reg51.h>
#i nclude <intrins.h>

// common PreDefinition
#define  HIGH     1
#define  LOW      0
#define  TRUE      1
#define  ZERO      0
#define  MSB       0x80
#define  LSB       0x01
// max7219 PreDefinitiont
#define  DECODE_MODE   0x09
#define  INTENSITY     0x0A
#define  SCAN_LIMIT    0x0B
#define  SHUT_DOWN     0x0C
#define  DISPLAY_TEST  0x0F
// ds1302 PreDefinition
#define  DS1302_WP    0x8E
#define  DS1302_RESET   RST=LOW;SCL=LOW;RST=HIGH
#define  DS1302_WP_ENABLE  Write_Ds1302(DS1302_WP,0X00)
#define  DS1302_WP_DISENABLE  Write_Ds1302(DS1302_WP,0x80)

//pin defined
/***********************************************************************/
//change this part at different board
sbit LOAD=P1^2; //MAX7219    Load-Data Input:    rising edge  pin 12
sbit DIN=P1^1; //MAX7219    Serial-Data Input:   rising edge  pin 1
sbit CLK=P1^0; //MAX7219   Serial-Clock Input:  maximum 10MHz  pin 13

sbit SCL = P1^6;// DS1302 Serial-Clock Input  pin 7
sbit SDA = P1^7;// DS1302 Serial-Data  Input  pin 6
sbit RST = P1^4;// DS1302 Chip-Seclet  Input  pin 5

//function define
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp);//write max7219 a byte
void Write_Max7219(unsigned char address,unsigned char dat);//write max7219 command and data
void Init_Max7219(void);//Initize max7219

void Write_Ds1302_byte(unsigned char temp);
void Write_Ds1302( unsigned char address,unsigned char dat );
unsigned char Read_Ds1302 ( unsigned char address );

void Read_RTC(void);//read RTC
void Set_RTC(void);//set RTC

void Display(void);
void Initial(void);

code unsigned char set_rtc_code[3]={0x00,0x23,0x07};
code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
unsigned char read_rtc_code[3];
/****************************************************************************/
/****************************************************************************/
void main (void)
{
 Initial ();
 while (1)
 {
  Read_RTC();
  Display (); 
 }
}
/****************************************************************************/
/****************************************************************************/
void Initial(void)      //MAX7219初始化
{
 Init_Max7219();
 DS1302_WP_ENABLE;
 Set_RTC();
 DS1302_WP_DISENABLE;
}
/****************************************************************************/
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp)
{
 unsigned char i;
 for (i=0;i<8;i++)    
  {
   CLK=LOW;
     DIN=temp&MSB;     
     temp<<=1; 
     CLK=HIGH;
   }
}
/***********************************************************************/
void Write_Max7219(unsigned char address,unsigned char dat)
{
 LOAD=LOW;
   Write_Max7219_byte(address);
   Write_Max7219_byte(dat);
  LOAD=HIGH;                
}
/***********************************************************************/
void Init_Max7219(void)     
{
 Write_Max7219(SHUT_DOWN, 0x01);     //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
 Write_Max7219(DISPLAY_TEST, 0x00);     //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
 Write_Max7219(DECODE_MODE, 0xdb);     //Decode Mode Select D7~D0 1 B decode 0 No decode
 Write_Max7219(SCAN_LIMIT, 0x07);     //SCAN LIMIT 0~7 0xX0~0xX7
 Write_Max7219(INTENSITY, 0x04);     //Set Intensity   0xX0~0xXf
}
/****************************************************************************/
/****************************************************************************/
void Write_Ds1302_Byte(unsigned  char temp)
{
 unsigned char i;
 for (i=0;i<8;i++)    
  {
   SCL=LOW;
     SDA=temp&LSB;     
     temp>>=1; 
     SCL=HIGH;
   }
}  
/****************************************************************************/
void Write_Ds1302( unsigned char address,unsigned char dat )    
{
 DS1302_RESET;
 Write_Ds1302_Byte(address);
 Write_Ds1302_Byte(dat);
 RST=LOW; 
}
/****************************************************************************/
unsigned char Read_Ds1302 ( unsigned char address )
{
 unsigned char i,temp=0x00,temp_temp;
 DS1302_RESET;
 Write_Ds1302_Byte(address);
 for (i=0;i<8;i++)
 {
  if(SDA)
   temp|=0x80;
  SCL=LOW;
   temp>>=1;
  SCL=HIGH;
 }
 RST=LOW;
 temp_temp=temp/16;
 temp=temp%16;
 temp=temp+temp_temp*10;
 return (temp);
}
/****************************************************************************/
void Read_RTC(void)
{
 unsigned char i,*p;
 p=read_rtc_address;
 for(i=0;i<3;i++)
 {
  read_rtc_code=Read_Ds1302(*p);
  p++;
 }
}
/***********************************************************************/
void Set_RTC(void)
{
 unsigned char i,*p;
 p=write_rtc_address;
 for(i=0;i<3;i++)
 {
  Write_Ds1302(*p,set_rtc_code);
  p++; 
 }

/****************************************************************************/
void Display(void)     
{
 Write_Max7219(1,read_rtc_code[2]/10); 
 Write_Max7219(2,read_rtc_code[2]%10);  
 Write_Max7219(4,read_rtc_code[1]/10);
 Write_Max7219(5,read_rtc_code[1]%10);    
 Write_Max7219(7,read_rtc_code[0]/10);
 Write_Max7219(8,read_rtc_code[0]%10);   
 Write_Max7219(3,0x01);//no decode mode
 Write_Max7219(6,0x01);//display '-    
 
}

 

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区在线观看 | 91原创视频在线观看 | 日本一区二区视频 | 国产精品久久久久久吹潮 | 欧美男人亚洲天堂 | 久久精品网 | 亚洲精品一区二区三区中文字幕 | 射久久| 91久久网站 | 久久国产高清 | 热久久免费视频 | 精品久久久久久亚洲精品 | 国产一区二区三区在线免费 | 97精品国产97久久久久久免费 | 亚洲一区欧美 | 日本三级做a全过程在线观看 | 欧美日韩视频在线第一区 | 亚洲区一区二 | 一区2区 | 中文字幕日韩欧美 | 久久久免费毛片 | 色综合久久久 | 国产精品高潮呻吟久久久久 | 九九综合| 久久久久久久久久久久久久久久久久久久 | 久久精品久久久久久 | 亚洲一区二区中文字幕 | 性天堂网 | 久久久精品综合 | 黑人巨大精品欧美一区二区免费 | 99久久久久 | 久久网日本| 毛片1 | 四色永久 | 亚洲精品一区中文字幕乱码 | 国产欧美精品区一区二区三区 | 国产精品视频一二三区 | 国产999精品久久久久久 | 欧美日韩综合精品 | 91高清视频 | 国产精品一区一区三区 |