Chip thấy nhiều bạn rất thích làm một mạch đồng hồ thời gian thực GIỜ - PHÚT - GIÂY nhỏ nhắn để ở bàn học, nên hôm nay chip sẽ hướng dẫn chi tiết cho các bạn nào biết hoặc chưa biết tí gì cũng có thế làm cho mình một mạch để chơi cho vui.
Qua bài này.bạn nào làm tốt sẽ có thêm mạch chạy Ngày Tháng Năm - Giờ Phút Giây cho các bạn làm.
P/S:Mạch này là của 1 bạn Đức Hệ ..Chip down về nhưng họ giữ bí mật không chia sẻ code đọc nên chip tiện thể lấy file mạch in làm rồi Test luôn code của chip vào chạy lại ngon...Nên sẽ Source Open cho tất cả các bạn ^^"
Xem video Mô phỏng
Xem video mạch làm thật
Bước 1: Chuẩn bị mua linh kiện
-Chip AT89C52
-IC DS1307
- 2 tụ hóa 10uF
- 1 tu hóa 470uF
-4 tụ gốm 33pF
-1 thạch anh 12Mhz
-1 thạch anh 32Mhz
-1 Đế Chip 40 chân
- 1 đế ic 8 chân
-1 đế pin 3v
- 1 pin 3v
-4 nút bấm nhỏ
-10 điện trở 1k
-4 điện trở 10k
- 5 trở 100R
- 5 trở 330R
-4 led báo nút bấm + Hz
- 1 LM7805
- 1 trở băng 103
-6 tranzitor C1815
- 6 led 7 đoạn Anode chung loại bé có 10 chân 2 hàng..riêng từng con..
Đế chip 40 chân |
Led 7 đoạn anode chung |
Chip At89C52 |
DS1307 |
Thach anh 12Mhz |
Thach anh 32Mhz |
Đế Pin 3V |
Pin 3V |
Led báo nguồn và trạng thái nút bấm |
Kết cấu led |
Tụ hóa 10uF - 100uF |
LM7805 |
Tụ gốm 33pF |
Trở băng 103 |
Bước 2: Làm mạch in - Sẽ có 2 loại mạch in :
- Loại 1: Chip sẽ dùng mạch của người khác designed để hướng dẫn các bạn làm, vì chip làm thử chạy ổn.Nhưng không có chức năng báo thức.
- Loại 2: Mạch Chip designed sẽ có thêm chức năng hẹn giờ.( Chip vẽ xong rồi nhưng đang thêm phần hẹn giờ)
Giờ chip sẽ tạm thời hướng dẫn các bạn làm mạch Loại 1.Đây là hình ảnh mạch sau khi làm xong và test thử
♥ Cách làm mạch in cho Member mới Tại Đây:
Sau khi làm xong mạch in là công đoạn gắn linh kiện lên không như các mạch Trái Tim hay Cube không phải câu dây..Bài này sẽ phải câu dây..Các bạn học dần rồi sau này làm những mạch khác của chip..Chip khỏi hướng dẫn...^^"
Mach Nguyên mẫu |
Đối với mạch in này: Muốn làm thành công nhanh thì lắp khối led hiển thị trước ( Chú ý câu hết các đương dây, sau đó khoan mé led 7 thanh rồi hàn, hàn cực cẩn thận bằng hàn mũi nhỏ càng tốt sẽ không bị dính )
Sau khi hàn xong..bắt đầu kiểm tra tín hiệu led bằng cách dùng đồng hồ vạn năng mở thang đo x10 chấn chân đen vào chân ra chung nguồn của led 7 thanh( tra google) chân đỏ đồng hồ quẹt qua các tín hiệu a,b,c,d,e,f kiểm tra xem chập không? như vậy là gần thành công rồi..sau đó lắp các linh kiện đúng chiều..Lắp nút bấm hết sức cẩn thận, lắp phải đúng chiều led báo nút bấm ko sáng..khi đã ok hết nạp ic gắn vào mạch. Đó là kinh nghiệm làm mạch thật của chip.
Bước 3: Nạp IC 89C52 - Có 2 loại code nạp vào Chip 89c52
- Loại 1: Code này chỉ có file Hex - Nghĩa là nạo xong rồi vứt đấy chẳng phát triển thêm VD như hẹn giờ hay là cho bạn nào làm Đồ Ăn phát triển
-Loại 2: Code chip thiết kế lại chạy ổn định ngon lành hơn..và Chip sẽ nâng cấp lên thêm hẹn giờ cho nó hay ho.Code này mở các bạn down về đọc thoải mái.
Sau khi xong mạch..Tìm cách nạp IC các bạn ra quan Quảng cáo led nhờ họ nạp hộ hoặc là mang Lên TP Nam Định Chip Nạp Free ^^
Khi nào có thêm Hẹn giờ Chip sẽ Up lên.
Bước 4:Nối nguồn - chạy mạch
Chúc các bạn thành công.
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút hiện ra ở góc phải phía trên, nhấn vào để đến trang download
//DONG HO SU DUNG TIMER BLOG DIEN TU - TIN HOC EDIT By ChipKool.net//PHAN CUNG: 89c51; THACH ANH: 12MHZ ;//SU DUNG 6 LED 7 DOAN GIO : PHUT : GIAY/************KHAI BAO THU VIEN, DINH NGHIA********************************************* ***********/#include #define Set_key P3_4#define Up_key P3_5#define Dw_key P3_6#define SDA P1_1#define SCL P1_0#define DS1307_ID 0xD0#define SEC 0x00#define MIN 0x01#define HOUR 0x02//#define DATE 0x04//#define MONTH 0x05//#define YEAR 0x06/************KHAI BAO BIEN, MANG...******************************************* ********************/unsigned char led7_data[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; //Decimal to Led7segunsigned char t_view,time,index,F_set,B_nhay,get_t ;unsigned char hour,sec,min;/************KHAI BAO HAM, CHUONG TRINH CON*********************************************** ********/void set_main(void); // Chuong trinh khoi tao mainvoid setup_timer(void); // Chuong trinh cai dat timer 1 va 0void delay(unsigned int time); // Delayvoid Fix_time(void); // Kiem tra va hieu chinh gia tri cua gio,phut,giayvoid Keypad(void); // Kiem tra xu ly phim nhan.void T1_ISR(void); //ngat timer 1 phuc vu nhay ledvoid T0_ISR(void); // Dung ngat timer 0 de quet led/************CAC CHUONG TRINH CON*********************************************** ******************/// FOR I2C/************************************************** *********************/void I2C_start(void){SCL = 1; SCL = 0;SDA = 1; SCL = 1;delay(2);SDA = 0; delay(2);SCL = 0; delay(2);}void I2C_stop(void){SCL = 1; SCL = 0;SDA = 0; delay(2);SCL = 1; delay(2);SDA = 1;}bit I2C_write(unsigned char dat){unsigned char i;for (i=0;i<8 -1="" 0-="" 0="" 0x0f="" 0x80="" 1:0="" 1="" 7seg="" acknowledge="" addr="" address="" amp="" ang="" bcd="" bien="" bit="" bus="" byte="" char="" che="" check="" chinh="" chuong="" clear="" co="" connect="" cua="" dat="" data="" delay="" do="" ds1307="" ds1307_get="" ds1307_write="" duoc="" ea="1;" et0="1;" et1="1;" et_key="" f_set="" fix_time="" for="" gia="" giay="" gio="" hex="" hieu="" hour="23;" i2c="" i2c_read="" i2c_start="" i2c_stop="" i2c_write="" i="0;i<8;i++)" iam="" if="" in="" int="" keep="" keypad="" khoi="" kiem="" led="" loop="" main="" min="59;hour--" nhan.="" nhan="" on="" p0="0x00;" p1="0xFF;" p2="0x00;" p3="0xFF;" phim="" phut="" ram="" rd_bit="" read="" receive="" request="" ret="" return="" scl="" sda="(dat" sec="59;min--;}" set="" set_main="" setup="" setup_timer="" start="" tao="" temp="dat" tf0="0;" tf1="0;" th0="-1000/256;" th1="0x3C;" time--="" time="" timer0="" timer1="" timer="" tl0="-1000%256;" tl1="0xAF;" tmod="0x11;" to="" tr0="1;" tr1="1;" tra="" tri="" trinh="" tu="" unsigned="" va="" void="" while="">28><8 -1="" 0-="" 0="" 0x0f="" 0x80="" 1:0="" 1="" 7seg="" acknowledge="" addr="" address="" amp="" ang="" bcd="" bien="" bit="" bus="" byte="" char="" che="" check="" chinh="" chuong="" clear="" co="" connect="" cua="" dat="" data="" delay="" do="" ds1307="" ds1307_get="" ds1307_write="" duoc="" ea="1;" et0="1;" et1="1;" et_key="" f_set="" fix_time="" for="" gia="" giay="" gio="" hex="" hieu="" hour="23;" i2c="" i2c_read="" i2c_start="" i2c_stop="" i2c_write="" i="0;i<8;i++)" iam="" if="" in="" int="" keep="" keypad="" khoi="" kiem="" led="" loop="" main="" min="59;hour--" nhan.="" nhan="" on="" p0="0x00;" p1="0xFF;" p2="0x00;" p3="0xFF;" phim="" phut="" ram="" rd_bit="" read="" receive="" request="" ret="" return="" scl="" sda="(dat" sec="59;min--;}" set="" set_main="" setup="" setup_timer="" start="" tao="" temp="dat" tf0="0;" tf1="0;" th0="-1000/256;" th1="0x3C;" time--="" time="" timer0="" timer1="" timer="" tl0="-1000%256;" tl1="0xAF;" tmod="0x11;" to="" tr0="1;" tr1="1;" tra="" tri="" trinh="" tu="" unsigned="" va="" void="" while="">if(F_set==4) {F_set=0;DS1307_Write(0x02,hour);DS1307_Write(0x01,min); }}if(F_set==1){ //Tang hoac giam phut neu F_set = 1if(!Up_key) hour++;if(!Dw_key) hour--;}if(F_set==2){ //Tang hoac giam gio neu F_set = 2if(!Up_key) min++;if(!Dw_key) min--;}if(F_set==3){ //Tang hoac giam gio neu F_set = 2if(!Up_key) sec++;if(!Dw_key) sec--;}Fix_time(); //kiem tra tran sodelay(20000);}void T1_ISR(void) interrupt 3 //ngat timer 1 chay dong ho{TR1=0;TF1=0;TH1=0x3C; // nap lai gia tri cho thanh ghiTL1=0xAF;time++;if(time==10){time=0; B_nhay++; get_t=1;if(B_nhay==2)B_nhay=0;}TR1=1;}/*************************************/void T0_ISR(void) interrupt 1 // Dung ngat timer 0 de quet led{TR0=0;TF0=0;TH0=0xfc;//-1000/256; // Nap lai gia tri cho thanh ghiTL0=0x18;//-1000%256;index++;//giayif(index==1){if(F_set==3 && B_nhay==1){index++; index++;}else{t_view=sec; //sec;P2=0xff;P0=0x20;//00100000P2=led7_data[t_view%10]; }} //lay so du sau khi chia 10if(index==2){P2=0xff;P0=0x10;//00010000P2=led7_data[t_view/10]; } //xuat gia tri hang chuc//phutif(index==3){if(F_set==2 && B_nhay==1){index++; index++;}else{ t_view=min;P2=0xff;P0=0x08;//00001000P2=led7_data[t_view%10]; }}if(index==4){ P2=0xff;P0=0x04;//00000100P2=led7_data[t_view/10]; }//gioif(index==5) {if(F_set==1 && B_nhay==1){index=0;}else{ t_view=hour;P2=0xff;P0=0x02;//00000010P2=led7_data[t_view%10]; } }if(index==6){ P2=0xff;P0=0x01;//00000001P2=led7_data[t_view/10];index=0; }TR0=1;}/************CHUONG TRINH CHINH********************************************* **********************/void main(){set_main();time=index=0;hour=0;min=0;sec=0;F_set=0;get_t=0;setup_timer();while(1){Keypad();if(F_set==0){if(get_t == 1){get_t = 0;sec = DS1307_get(SEC);min = DS1307_get(MIN);hour = DS1307_get(HOUR);}}}}8>
Blog Điện Tử | Tin Học - Chia sẻ kiến thức - Kết nối đam mê điện tử