-hôm qua mới code cái đồng hồ bằng con atmega 8,chỉ cần có giờ và phút thôi(làm bằng led đơn ghép lại),nhưng mô phỏng chỉ có số 8585 mà chưa biết chỉnh sửa sao,bác nào từng làm chỉ em với
-với lại em định làm bằng led đơn ghép lại thì nên nối song song hay nối tiếp nhẩy(1 đoạn là 5 con,mạch em đang vẽ song song) và nối kiểu anot hay catot chung thì sáng tốt nhất, có cần tran để đưa mã led hay đưa thẳng giống led 7 thường thôi
-các bác cho em ý kiến với
code:
sao mà cái file .rar đính kem không được nhẩy
em đính tạm cái hình
-với lại em định làm bằng led đơn ghép lại thì nên nối song song hay nối tiếp nhẩy(1 đoạn là 5 con,mạch em đang vẽ song song) và nối kiểu anot hay catot chung thì sáng tốt nhất, có cần tran để đưa mã led hay đưa thẳng giống led 7 thường thôi
-các bác cho em ý kiến với
code:
PHP Code:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Professional
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com
Project :
Version :
Date : 10/27/2012
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega8L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <ds1307.h>
#include <i2c.h>
// portc.4.5 la chan sda va scl
#define led PORTD // port d de xuat ma led
// port c de quet cac led
#define led1 PORTC.0
#define led2 PORTC.1
#define led3 PORTC.2
#define led4 PORTC.3
// cac chan pin b de nhan cac phim bam
#define set PINB.0
#define up PINB.1
#define down PINB.2
//Cac bit de quan ly trang thai cac phim
bit set0=1,set1=1,up0=1,up1=1,down0=1,down1=1;
unsigned char led7[]={0b00000011,
0b10011111,
0b00100101,
0b00001101,
0b01001001,
0b01000001,
0b00011111,
0b00000001,
0b00010001
} ;
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
unsigned char h=10,m=00,s=00;//Bien gio phut giay
unsigned char kt=0,a=0,x=0;
//Ham con
void kt_phim(); // ham kiem tra phim
void read_ds1307(); // ham doc chip ds1307
void hien_thi(); // ham hien thi led
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=P State2=P State1=P State0=P
PORTB=0x0F;
DDRB=0x00;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0x0F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTD=0xFF;
DDRD=0xFF;
// I2C Bus initialization
i2c_init();// khoi tao i2c
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);// khoi tao rtc
while (1)
{
x++;//Bien chay quan ly nhap nhay cac so tuong ung voi che do cai dat
kt_phim();
read_ds1307();
hien_thi();
if(x==100)
{
x=0;
}
};
}
// ham kiem tra va cai dat cho ds1307
void read_ds1307()
{
if(kt==0)
{
if(a==1) //Kiem tra truoc do co cai dat lai gio,phut,giay khong
{ //Neu co thi cai dat lai du lieu dau vao cho DS1307
rtc_set_time(h,m,s);a=0;
delay_us(300);
}
rtc_get_time(&h,&m,&m); //Doc du lieu tu DS1307
}
}
void hien_thi()
{
if((kt==0)||(kt!=1)||((kt==1)&&(x<50)))
{
led = led7[h/10];led1=1;delay_us(2000);led1=0;
led = led7[h%10];led2=1;delay_us(2000);led2=0;
}
if((kt==0)||(kt!=2)||((kt==2)&&(x<50))) //Tuong tu nhu KT gio
{
led = led7[m/10];led3=1;delay_us(2000);led3=0;
led = led7[m%10];led4=1;delay_us(2000);led4=0;
}
}
void kt_phim()
{
set0=set1;
set1=set; //Kiem tra trang thai ban dau cua phim
if((set0==1)&&(set1==0)) //Kiem tra xem phim co dc nhan nha hay khong
{ //Neu dc nhan nha thi tang kt++,neu khong thi
kt++; //doi toi khi nao phim dc nha moi tang bien kt
if(kt>3)
kt=0;
}
switch(kt) //Lua chon che do ung voi gia tri cua bien kt
{
case 0:break; //Tro lai che do chay binh thuong
case 1: //Che do cai dat gio
{
up0=up1;up1=up;a=1;
if((up0==1)&&(up1==0))
{
h++;
if(h>23)h=0;
}
down0=down1;down1=down;
if((down0==1)&&(down1==0))
{
h--;
if(h>23)h=23;
}
case 2: //Che do cai dat phut
{
up0=up1;up1=up;a=1;
if((up0==1)&&(up1==0))
{
m++;
if(m>59)m=0;
}
down0=down1;down1=down;
if((down0==1)&&(down1==0))
{
m--;
if(m>59)m=59;
}
break;
}
}
}
}
sao mà cái file .rar đính kem không được nhẩy
em đính tạm cái hình
Comment