Thông báo
Collapse
No announcement yet.
Đồng Hố số sủ dũng DS1307 cần giúp đỡ!
Collapse
X
-
dây là code của tui
#include <REGX51.H>
sbit SDA = P1^1;
sbit SCL = P1^0;
#define PortData P2
#define PortScan P3
#define Set P1_2
#define Back P1_3
#define Next P1_4
#define W 0xD0
#define R 0xD1
#define HOUR 0x02
#define MIN 0x01
#define SEC 0x00
unsigned char code Led7Seg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
char Data,Hour,Min,Sec;
char IncSet=0,Scanled=0,run=0,t=0;
void delay(int t)
{
while(t--) ;
}
void Start()
{
SCL = 1;
SCL = 0;
SDA = 1;
SCL = 1;
delay(2);
SDA = 0;
delay(2);
SCL = 0;
delay(2);
}
void Stop()
{
SCL = 1;
SCL = 0;
SDA = 0;
delay(2);
SCL = 1;
delay(2);
SDA = 1;
}
void Write(unsigned char Data)
{
unsigned char i;
for (i=0;i<8;i++)
{
SDA = (Data & 0x80) ? 1:0;
SCL=1;SCL=0;
Data<<=1;
}
SCL = 1; delay(2);
SCL = 0;
}
unsigned char Read()
{
bit rd_bit;
unsigned char i ;
Data=0x00;
for(i=0;i<8;i++)
{
delay(2);
SCL = 1;
delay(2);
rd_bit = SDA;
Data = Data<<1;
Data = Data | rd_bit;
SCL = 0;
}
return Data;
}
unsigned char Read_DS1307(unsigned char DataTime)
{
unsigned char Bcd_Hex;
Start();
Write(W);
Write(DataTime);
Start();
Write(R);
Bcd_Hex=Read();
Stop();
Bcd_Hex = (((Bcd_Hex/16)*10)+ (Bcd_Hex & 0x0f));
return Bcd_Hex;
}
void interrupt_Time() interrupt 3 //ngat timer 1 chay dong ho
{
TR1=0;
TF1=0;
TH1=0x3c;
TL1=0xaf;
TR1=1;
}
void interrupt_San_Led7Seg()interrupt 1
{
TH0=0xfc;
TL0=0x18;
TR0=0;
TF0=0;
Scanled++ ;
if(Scanled==1)
{
PortData=0xff;
PortData =Led7Seg[Hour/10];
PortScan = 0x01;
}
if(Scanled==2)
{
PortData=0xff;
PortData =Led7Seg[Hour%10];
PortScan = 0x02;
}
if(Scanled==3)
{
PortData=0xff;
PortData = Led7Seg[Min/10];
PortScan = 0x04;
}
if(Scanled==4)
{
PortData=0xff;
PortData = Led7Seg[Min%10];
PortScan = 0x08;
}
if(Scanled==5)
{
PortData=0xff;
PortData = Led7Seg[Sec/10];
PortScan = 0x10;
}
if(Scanled==6)
{
PortData=0xff;
PortData = Led7Seg[Sec%10];
PortScan = 0x20;
Scanled=0;
}
TR0=1;
}
void Setup_Timer()
{
TMOD=0x11;
TH1=0x3C;
TL1=0xAF;
TR1=1;
ET1=1;
TH0=0XFC;
TL0=0X18;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
Setup_Timer();
while(1)
{
if ((run==1)&&(IncSet==0))
{
run=0;
Hour=Read_DS1307(HOUR);
Min=Read_DS1307(MIN);
Sec=Read_DS1307(SEC);
}
}
}Last edited by sansuridan; 17-09-2012, 20:07.
Comment
-
vậy à cám ơn nhiều để tui nghiên cứu mạch thật xem sao
bạn đã làm rúi à nhấn nút luôn không thả củng khong sao à chắc 100% chứ huynhLast edited by sansuridan; 18-09-2012, 14:48.
Comment
Bài viết mới nhất
Collapse
-
bởi torasungChào anh em,
Mình đang tìm hiểu và cấu hình một con biến tần Delta model VFD037E43A dùng cho động cơ công suất nhỏ, ứng dụng băng tải và quạt. Trước đây mình chủ yếu làm với vài dòng khác của Delta nhưng chưa dùng nhiều model này, nên muốn...-
Channel: Điện tử công nghiệp
Hôm qua, 09:13 -
-
Trả lời cho Vấn đề về tốc độ quaybởi nguyendinhvanSử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
-
Channel: Điện tử truyền hình
14-12-2025, 19:50 -
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -

Comment