Articles by "đồng hồ thời gian thực"

10 4.104 8051 9 Acquy adc pic All datasheet ALTIUM Altium Designer AM-FM Arduino ARM ARM là gì Ấn Tượng Bản tin công nghệ Bản tin Thiết Bị Số Barobo bất động sản biến Binary Bit board lpc2378 Bộ chuyển đổi ADC Bộ Đếm Bộ điều khiển cửa cuốn Bộ Định Thời Buy Khóa Số Điện Tử Buy Mạch đếm sản phẩm Buy Mạch giao thông Buy Mạch nạp Buy Matrix Byte C cho AVR các hàm vào ra các loại lõi arm các mạch DAC cơ bản các ngắt trong pic Cách đọc điện trở Cách Đọc Giá Trị Điện Trở Cách đọc giá trị tụ điện Cách hàn linh kiện dán cách làm mạch khóa số cách tạo linh kiện dán cad/cam Cài Đặt cài đặt proteus 8 cảm biến Cấu Kiện Logic Khả Trình cấu tạo cấu trúc arm cấu trúc lệnh CCS Chân chân Transistor Chip Khả Trình chuyển đổi Chuyển đổi số tương tự Chuyển Đổi Tương Tự/Số - ADC Chuyển động số chương trình City Clip Điện Tử Code 8051 - ASM Code 8051 - C Code 8051-C code ASM code ASM mẫu 8086 Code AVR - C code C Code Lập Trình Code led sao băng code maupic code mẫu 8051 Code Mẫu 8086 Code Mẫu cho ARM - LPC1343 code mẫu pic Code PIC - C codemaupic Counter Cổng Vào Ra Cơ Bản Cuộn Cảm Cửa cuốn DA DAC Debug Decimal Delay8051 Dev-C++ Diode DIY Dò đường Do It Yourself doanh nghiệp Download DTMF Mobile đảo chiều động cơ Điện Trở Điện Tử Điện Tử Cơ Bản điều chế độ rộng xung điều chế xung PWM điều khiển bằng điện thoại Điều khiển cửa cuốn Điều khiển cửa cuốn bằng điện thoại điều khiển động cơ đo điện áp đo nhiệt độ đo nhiệt độ hiển thị lên lcd trên 8051 Đo Nhiệt Độ LM35 + LCD Đo Nhiệt Độ LM35 + Led 7 thanh đọc màu điện trở đồ chơi động cơ chân không Động cơ nhiên liệu Động cơ robo đồng hồ thời gian thực Ebook Đại Học ebook điện tử Ebook đồ án Ebook Tin Học Encoder Encoder là gì Full Giải Thuật Giải thuật PID Giáo Dục giao tiếp i2c pic 16f877a giao tiếp i2c pic16f877a với ic ds1307 giao tiếp máy tính qua rs232 Giao Tiếp Máy Tính VB6 giao tiếp rs232 giao tiếp spi giữa 2 pic giao tiếp spi trong pic Giáo Trình Điện Tử Giới thiệu 8051 Giới thiệu cơ bản GPIO Graphic Design hàm Hàn linh kiện dán Hexadecimal Hệ Hexa Hệ Nhị Phân Hệ Thập Lục Phân Hệ Thập Phân hiển thị lên lcd 16x2 Hoạt Động Học Học 8051 qua các ví dụ đơn giản Học ALtium Designer học AVR Học Corel Draw X3 Học Eagle HỌC LẬP TRÌNH 16F877A Học Lập Trình 8051 Học Lập Trình C Học Orcad Học Protues hoc-lam-robot-do-duong-qua-video Hồng ngoại hướng dẫn hướng dẫn Altium Designer hướng dẫn đo đồng hồ VOM hướng dẫn keil - C lập trình 8051 hướng dẫn làm led sao băng hướng dẫn làm led trái tim hướng dẫn lập trình ARM Hướng Dẫn Lập Trình ARM - LPC1343 hướng dẫn lập trình ARM-LPC2378 hướng dẫn lập trình CCS hướng dẫn lập trình PIC Hướng Dẫn Led Trái Tim hướng dẫn module sim548c hướng dẫn sử dụng keil hướng dẫn sử dụng proteus 8 Hyper Terminal hercules 3.2.4 I/O IC 555 IC 7447 IC 74HC151 IC 74HC154 IC 74HC245 IC 74HC595 IC 74LS138 IC DS1307 IC đồng hồ thời gian thực IC LM324 IC LM342 IC LM7805 IC số IC số opamp LM324 IC Thông Dụng IC555 Interrupt Keil 4 Full keil arm Keil C Keil uVision3 kế toán kiểm toán khái niệm Khái Niệm Cơ Bản Kho Vật Liệu khóa điện tử khóa số dùng 8051 khóa số dùng 89s52 Khóa Số Điện Tử khuếch đại kiểm tra Kinh doanh maketing kinh tế quản lí Kỹ Thuật Kỹ Thuật Vi Xử Lý làm mạch điện lý thú Làm quen AVR Lap Trinh Dieu Khien Robot Lập Trình lập trình 8051 Lập Trình AVR Lập Trình C lập trình c++ Lập Trình Led Quảng Cáo Lập Trình Nhúng Lập trình pic Lập trình Robot Lập Trình Vi Điều Khiển Lập Trình Với AVR Studio LCD 16x2 Lcd16x2 Led Clock Led Quay led sao băng led trai tim Led Trái Tim Lịch sử ra đời Linh Kiện Cơ Bản linh kiện điện tử Loa LPC 2378 LSB lý thú Mã AVR - C Mạch 7seg Mạch Amply.Mạch Loa Mạch Autorobo Mạch bảo vệ Mạch Cảm Biến mạch cảm ứng sờ tay Mạch Cầu H Mạch cube Mạch Đếm Sản Phẩm Mạch điện cơ bản Mạch điện hay Mạch Điện Ứng Dụng Mạch Điều khiển động cơ Mạch Động Cơ Mạch đồng hồ Mạch đồng hồ 4 led Mạch giao thông Mạch IC số Mạch in mạch khóa số mạch khuếch đại thuật toán mạch led chúc mừng năm mới mạch led đẹp Mạch Led đơn Mạch Led Quảng Cáo mach led trai tim mạch led trái tim Mạch Led Vumeter mạch lý thú Mạch Ma trận Phím Mạch Matrix Mạch nạp Mạch nguồn Mạch Nút Bấm mạch sóng rf mạch tăng áp Mạch thu phát Mạch tổ hợp MSI Mạch trái tim Mạch Vi điều khiển Microbicho module module GSM/GPS Module Sim548 Module Sim548 giao tiếp với vi điều khiển PIC Module Sim548C Mosfet Motor Mô Phỏng Phần Cứng Mô Tả Phần Cứng MSB mua led sao băng News Ngắt Ngắt Trong LPC23xx ngân hàng Ngôn Ngữ Ngôn Ngữ C Ngôn Ngữ Tự Học Lập Trình C Ngôn Ngữ VHDL Nguyên Lý nguyên lý ic 555 Nguyên Tắc nháy led Nhập môn C Nhỏ Gọn Nibble opamp People Phần Mềm phần mềm altium Designer Phần mềm điện tử Phần Mềm Điện Tử Phần Mềm Điện Tử Hay Phần Mềm Hay Phần Mềm Led Quảng Cáo phần mềm proteus 8 Phần mềm vi tính Phần Mền Phương pháp hàn linh kiện dán PIC pic16f877a Print Design Proteus Proteus 7.8 SP2 FULL PWM quà tặng bạn gái quà tặng độc đáo quản trị doanh nghiệp quản trị kinh doanh quét led 7 đoạn Relay robocon Robot ROBOT DÒ ĐƯỜNG rút gọn mạch logic tổ hợp Sach Dien Tu Sản Phẩm Thú Vị Sản Phẩm Thương Mại Sáng tạo Short Smart Home SMD sơ đồ nguyên lý spi Sports Sử Dụng Sử Dụng Đồng Hồ sử dụng đồng hồ VOM sử dụng ngắt trong pic sự khác nhau Sức mạnh số Tải tài chính tài chính doanh nghiệp tài chính ngân hàng Tài Khoản Chia Sẻ Tài Liệu Tài Liệu 8051 tài liệu avr Tài liệu Điện Tử Tài Liệu Pic Tài liệu robocon tài liệu về ngân hàng Tài Liệu Vi Điều Khiển tailieuvn Tạo cổng Com ảo Tạo cổng nối tiếp ảo tạo dự án trong keil arm Tạo Project trong Vi Xử Lý ARM tạo thư viện altium designer tạo xung vuông Tạp chí Tạp Chí Hay tăng áp Tập lệnh AT Team Support TEAMPLATE PROTEUS Test thị trường tài chính Thiết Bị Thú Vị Thiết kế robot Thiết lập Fuse Bits Thiết Lập Pin Thuật Toán Thuật Toán Điều Khiển PID Thuật Toán Quine MCCluskey Thư viện Protues Thực Hành Thyristor Timer Timer/Counter Tin Học Chia Sẻ Tổ Chức Bộ Nhớ tổng quan về proteus 8 Transistor Tranzito Tranzitor Trao đổi học tập Travel Trình Biên Dịch Trình Dịch Trong Suốt Truyền Thông Nối Tiếp Không Đồng Bộ- UART truyền thông nối tiếp RS232 Tụ điện TUT - 8051 - ASM TUT - 8051 - KeilC tự hành Tự Học C Tự Học Lập Trình C Tý hon UART Update USB Ứng Dụng Led Quảng Cáo ứng dụng mạch khuếch đại thuật toán vẽ mạch in vẽ mạch nguyên lý VHDL Vi Điều Khiển Vi điều khiển - Ứng dụng vi điều khiển PIC Vi mạch số Vi Xử Lý Vi Xử Lý 8051 Vi Xử Lý 8086 Vi Xử Lý ARM Vi Xử Lý PIC Video Video Mach Điện Virtual Serial Port Driver VOM vxl Web Design xác định góc quay động cơ xử lý chuỗi
Hiển thị các bài đăng có nhãn đồng hồ thời gian thực. Hiển thị tất cả bài đăng

Dientuchiase 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 dientuchiase 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ệ ..dientuchiase down về nhưng họ giữ bí mật không chia sẻ code đọc nên dientuchiase tiện thể lấy file mạch in làm rồi Test luôn code của dientuchiase 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

-dientuchiase 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 Đế dientuchiase 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..

Đế dientuchiase 40 chân
Led 7 đoạn anode chung
dientuchiase 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: dientuchiase sẽ dùng mạch của người khác designed để hướng dẫn các bạn làm, vì dientuchiase làm thử chạy ổn.Nhưng không có chức năng báo thức.
- Loại 2: Mạch dientuchiase designed sẽ có thêm chức năng hẹn giờ.( dientuchiase vẽ xong rồi nhưng đang thêm phần hẹn giờ)











Giờ dientuchiase 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ác bạn download mạch in sau về đem in ở quán..Chú ý in lên giấy thủ công cho dễ là mạch..(Mạch in)


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 dientuchiase..dientuchiase khỏi hướng dẫn...^^"

Mach Nguyên mẫu

Mach dientuchiase chú thích cho các bạn hiểu người người biết lắp..nhà nhà biết lắp..^^

1- là nguồn cấp sạc điện thoại hoặc Pin 9V Bạn nào muốn dùng biếp áp mà đầu ra 5v 1 chiều đảm bảo bị nháy..nên lắp thêm con tụ như hình cuối cùng.
2- pin 3V 
3-Lm7805
4-Thạch anh 32Mhz
5-tụ gốm 33pF
6- nút bấm - Các bạn chú ý..Nút bấm 4 chân..kiếm cái led và cục pin con thở nối nó vào 2 đầu..2 đầu nào bấm mới sáng là 2 đầu hở và nối nó chúi xuống.
7- led báo nút bấm..nếu bạn nào lắp sai nút bấm//cắm nguồn led sáng luôn.nên rút nút bấm ra cắm lại
8- trở 1k cho nút bấm
9-2 chân nút bấm reset mạch lúc bị đơ
10-thạch anh 12Mhz
11-tụ gốm 33pF
12-trở 330R cho led nháy
13-- led
14- trở 100 R
15-Trở băng 103
16-trở 1k
17-trở 10k
18- DS1307
19- tranzitor C1815

Chú ý: Những đường màu xanh tím chính là vị trí những dây câu câu có nghĩa là móc nó trên..dùng chân con trở cắt đứt ấy nối nó như hình sau:

Đặc biệt nên câu hết các dây mới được lắp linh kiện.Nhìn hình sau cho chuẩn nhé các tình yêu.


Đối với những bạn mới làm quen câu dây..không nên gắn trực tiếp led 7 đoạn lên mạch..mà mua thêm Jump cắm cái sau đó cắm nó vào chân mạch..còn led 7 đoạn gắn lên.con led nào die thì rút ra cho nhanh..Nói chung vài chục năm mới chết led.













Đố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 dientuchiase.


Bước 3: Nạp IC 89C52 - Có 2 loại code nạp vào dientuchiase 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
(Hex)
-Loại 2: Code dientuchiase thiết kế lại chạy ổn định ngon lành hơn..và  dientuchiase 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.
( Full Source Open)
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ộ
Khi nào có thêm Hẹn giờ dientuchiase 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.
( Full Tất Cả)
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
ĐIỆN TỬ CHIA SẺ
Phạm Văn Ngọc Anh- 01644326695


Dientuchiase chia sẻ code và mạch đồng hồ Giờ - Phút - Nhiệt độ 2 IN 1, nhiều bạn hỏi để làm..Nên Post  lên các bạn xem nhé..


Code mã nguồn C:

#include <REGX52.H>
#include <MATH.H>
//Dinh nghia cac chan phim dieu chinh
#define Mode_Menu P3_2   //phim Mode de chon doi tuong dieu chinh
#define Mode_Up     P3_1   //phim Up de tang doi tuong
#define Mode_Down   P3_3   //phim Down de giam doi tuong

//dinh nghia cac chan dieu khien Anode Led
#define Led_ampm_Sang P1_0=0; //Led chi thi am_pm, sang la pm.
#define Led_ampm_Tat P1_0=1; 
#define GioHangChuc_Sang P1_1=0;
#define GioHangDonVi_Sang P1_2=0;
#define PhutHangChuc_Sang P1_4=0;
#define PhutHangDonVi_Sang P1_3=0;
#define Led_C_Sang P1_5=0; //Led phan cach gio va phut 
#define Led_C_Tat P1_5=1;
#define OffLed   P1=0xFF;

#define DQ P0_0

#define SCL         P0_6
#define SDA         P0_5
//dinh nghia cac chan dieu khien 7 doan
#define CLK         P2_0
#define STR         P2_1
#define SDI P2_2
//dinh nghia dia chi cac thanh ghi trong DS1307
#define SEC     0x00
#define MIN     0x01
#define HOUR   0x02

//cac ham dung cho DS1307
void I2C_Start();   //khoi dong cho DS1307
void I2C_stop();   
unsigned char I2C_write(unsigned char dat);   //ham ghi 1 byte du kieu vao DS1307
unsigned char I2C_read(); //ham doc 1 byte du kieu vao DS1307
unsigned char DS1307_read(unsigned char addr); //ham doc du lieu tu 1 thanh ghi bat ky
void DS1307_write(unsigned char addr,unsigned char dat); //ham ghi du lieu tu 1 thanh ghi bat ky 
void Init_DS1307();
void Write_DS1307();  //ham cai dat thoi gian vao DS1307
void Read_DS1307();  //ham doc thoi gian vao DS1307
void Convert_Number(); //ham chuyen doi tach so de hien thi tren led 7 thanh
void GHI_7DOAN(unsigned char addr);
void Display_Gio_Phut_Giay(); //ham hien thi gio phut giay tren led 7 thanh
void Display_Gio();
void Display_Phut();
void Display_Temp();
void ScanKey();      //ham quet phim nhan

//khai bao bien    //0   1    2    3    4    5    6    7    8    9  temp  C
unsigned char Display_Number[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x1C,0x46};//khai bao mang chua cac gia tri gom 10 phan tu
unsigned char SoGioHangChuc,SoGioHangDonVi,SoPhutHangChuc,SoPhutHangDonVi,SoGiayHangChuc,SoGiayHangDonVi;
unsigned int  dem_timer,Millisec,Millisec1; //bien dem ms
unsigned char sec,hour,min,min_temp,hour_temp;      //cac bien dem gio phut giay....
char sec2,count;
unsigned int Nhiet_Do,NhietDoHangChuc,NhietDoHangDonVi;
unsigned char kt_sec; //bien kiem tra xem RTC co hoat dong khong
unsigned char kt_sec2;
unsigned char ampm,Mode,Chop_Tat,Chop_Tat1; //bien vao cac che do chinh thoi gian
static bit presence;
//cac ham khai bao
void delay_us(unsigned int Time)
{
    unsigned int i,j;
    for(i=0;i<Time;i++)
        for(j=0;j<2;j++);
void delay_ms(unsigned int ms)   //ham delay
{
  unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<121;j++);
}
bit DS18B20_Init()
{
     DQ = 1 ;      
     Display_Temp();
//delay_us(8);   
     DQ = 0 ;     
     Display_Temp();
//delay_us(90) ;   
     DQ = 1 ;       
     Display_Temp();
//delay_us(8) ;
     presence = DQ ;    
     Display_Temp();
Display_Temp();
//delay_us(100) ;
     DQ = 1 ;
     return(presence) ; 
}

//-------------------------------------------------
// Ham doc 1 byte tu DS18b20 ra ngoai
//-------------------------------------------------
unsigned char ds18b20_readbyte(void)
{
unsigned char i = 0 ;
unsigned char Data = 0 ;
for (i = 8 ; i > 0 ; i--)
  {
    DQ = 0 ;
    Data >>= 1 ;
    DQ = 1 ; 
    if(DQ)
     Data |= 0x80 ;
Display_Temp();
    //delay_us(4) ;
  }
  return (Data) ;
}

//-------------------------------------------------
// Ham viet 1 byte vao DS18b20
//-------------------------------------------------
void ds18b20_writebyte(unsigned char Data)
{
  unsigned char i = 0 ;
  for (i = 8 ; i > 0 ; i--)
  {
    DQ = 0 ;
    DQ = Data&0x01 ;
    //Display_Temp();
delay_us(5) ;
    DQ = 1 ;
    Data>>=1 ;
  }
}

//-------------------------------------------------
// Ham chuyen doi va tra ve gia tri nhiet do do duoc
//-------------------------------------------------
float ds18b20_readtemp(void)
{
float temp;
unsigned char a,b;
DS18B20_Init(); // Khoi tao DS18b20
ds18b20_writebyte(0xCC) ;   // Cho phep VDK truy cap thang den cac lenh bo nho cua DS18b20
ds18b20_writebyte(0x44) ; // Khoi dong qua trinh do va chuyen doi nhiet do ra so nhi phan
Display_Temp();
DS18B20_Init() ;
ds18b20_writebyte(0xCC) ;  
ds18b20_writebyte(0xBE) ; // Cho phep doc du lieu tu bo nho DS18b20 ra ngoai
Display_Temp();
a = ds18b20_readbyte(); 
temp=((float)(a&0x0f))/16; // Lay phan thuc cua gia tri nhiet do
b = ds18b20_readbyte();
a =((a&0xf0)>>4)|((b&0x0f)<<4) ; // Lay phan nguyen cua gia tri nhiet do
temp=temp+a;
return temp; // Tra ve gia tri nhiet do
}
void timer0_ISR(void) interrupt 1 // ham ngat timer 0 :1ms
{
TF0 = 0;//xoa co tran
TH0 =0x00; // nap du lieu vao thanh ghi timer
TL0 =0x00;
TR0=1;
    Millisec++;
    if(Millisec==160)Millisec=0;
if (Millisec<100)
Chop_Tat=0;
else Chop_Tat=1;
}
void timer1_ISR(void) interrupt 3 // ham ngat timer 1 :1ms
{
    dem_timer++;
  if(dem_timer>=100)
{dem_timer=0;
Nhiet_Do=ds18b20_readtemp();}
TR1 = 0;
  TH1 = 0xc3;                // 50ms
  TL1 = 0x50;
  TR1 = 1;
}

//chuong trinh chinh

void main(void)
//khoi tao cho bo dem timer
TCON = 0x11; // che do 16 bit tu nap lai
TH0=0x00;
TL0=0x00; //nap gia tri dem cho thanh ghi timer 0
TH1 = 0xc3;                // 50ms
  TL1 = 0x50;
ET0 = 1;                   // Enable Timer 0 Interrupts
  TR0 = 1;                   // Start Timer 0 Running
EA=1;    //cho phep ngat
count=0;
sec=DS1307_read(0);
  if(sec&0x80==1) //kiem tra bit CH
    {DS1307_write(0,sec&0x7f); }
    while (1)
    {
if(Mode==3)
{//Nhiet_Do=ds18b20_readtemp();
ET1 = 1;                  // Enable Timer 1 Interrupts
  TR1 = 1;                   // Start Timer 1 Running
NhietDoHangChuc=Nhiet_Do/10;
NhietDoHangDonVi=Nhiet_Do%10;
EA=0;
Display_Temp();
EA=1;}
else
{ET1 = 0; 
TR1 = 0;
Read_DS1307();}
ScanKey();
    }
}
//******************************************************************************
// CAC CHUONG TRINH CON CHO I2C
//******************************************************************************
void I2C_start() //ham khoi dong I2C
{
SCL = 1;  
    SCL = 0;
SDA = 1; 
    SCL = 1;
SDA = 0;
SCL = 0; 

}
void I2C_stop()  
{
SCL = 1;   //keo chan SCL len 1
    SCL = 0;
SDA = 0; 

SCL = 1; 

SDA = 1;
}
unsigned char I2C_write(unsigned char dat)//ham ghi 1 byte du lieu vao DS1307
{
unsigned char i;
for (i=0;i<8;i++)
{
SDA = (dat & 0x80); ///? 1:0;
SCL=1;SCL=0;
dat<<=1;
}
SCL = 1; 
SCL = 0;
return dat;
}
unsigned char I2C_read(void)
{
bit rd_bit;
unsigned char i, dat;
dat = 0x00;
for(i=0;i<8;i++) /* For loop read data 1 byte */
{
SCL = 1;
rd_bit = SDA; /* Keep for check acknowledge */
dat = dat<<1;
dat = dat | rd_bit; /* Keep bit data in dat */
SCL = 0; /* Clear SCL */
}
return dat;
}
// CAC CHUONG TRINH CON CHO DS1307
//******************************************************************************
unsigned char DS1307_read(unsigned char addr)
{
unsigned int temp,ret;
I2C_start(); /* Start i2c bus */
I2C_write(0xD0); /* Connect to DS1307 */
I2C_write(addr); /* Request RAM address on DS1307 */
I2C_start(); /* Start i2c bus */
I2C_write(0XD1); /* Connect to DS1307 for Read */
ret = I2C_read(); /* Receive data */
I2C_stop();
//**********************************************************
temp = ret; /*BCD to HEX*/
ret = (((ret/16)*10)+ (temp & 0x0f)); /*for Led 7seg*/
//**********************************************************
return ret;
}

void DS1307_write(unsigned char addr,unsigned char dat)
{
unsigned int temp;
//********************************************** 
temp = dat ; /*HEX to BCD*/
dat = (((dat/10)*16)|(temp %10)); /*for Led 7seg*/
//**********************************************
I2C_start(); /* Start i2c bus */
I2C_write(0XD0); /* Connect to DS1307 */
I2C_write(addr); /* Request RAM address on DS1307 */
I2C_write(dat); /* Connect to DS1307 for Read */
I2C_stop();
}
void Init_DS1307()
{
sec   = 8;   //doc giay tu DS1307
min   = 5; //doc phut tu DS1307
//hour  = 7; //doc gio tu DS1307
}
void Read_DS1307()
{
sec   = DS1307_read(SEC);   //doc giay tu DS1307
min   = DS1307_read(MIN); //doc phut tu DS1307
hour  = DS1307_read(HOUR); //doc gio tu DS1307
}

void Write_DS1307()
{
DS1307_write(SEC,sec);    //ghi du lieu vao thanh ghi giay
DS1307_write(MIN,min);    //ghi du lieu vao thanh ghi phut
DS1307_write(HOUR,hour);    //ghi du lieu vao thanh ghi gio
}
//ham quet led hien thi gio phut giay
void Display_Gio_Phut_Giay()
{
switch (Mode)
{
case 0:
{Display_Gio();
Display_Phut();
break;}
case 1:
{if (Chop_Tat==0)Display_Gio();
Display_Phut();
break;}
case 2:
{Display_Gio();
if (Chop_Tat==0)Display_Phut();
break;}
}
OffLed;
if (ampm==1)Led_ampm_Sang
else Led_ampm_Tat;
delay_ms(1);
OffLed;
if (Chop_Tat==0)Led_C_Sang;
delay_ms(1);
}
void Display_Gio()
{   
unsigned int Data;

if (SoGioHangChuc!=0)
{OffLed;
Data=Display_Number[SoGioHangChuc];
GHI_7DOAN(Data);
GioHangChuc_Sang;
delay_ms(1);}
OffLed;
Data=Display_Number[SoGioHangDonVi];
GHI_7DOAN(Data);
GioHangDonVi_Sang;
delay_ms(1);
}
void Display_Phut()
{
unsigned int Data;

OffLed;
Data=Display_Number[SoPhutHangChuc];
GHI_7DOAN(Data);
PhutHangChuc_Sang;
delay_ms(1);
OffLed;
Data=Display_Number[SoPhutHangDonVi];
GHI_7DOAN(Data);
PhutHangDonVi_Sang;
delay_ms(1);
}
void Display_Temp()
{
unsigned int Data;
if (NhietDoHangChuc!=0)
{OffLed;
Data=Display_Number[NhietDoHangChuc];
GHI_7DOAN(Data);
GioHangChuc_Sang;
delay_ms(1);}
OffLed;
Data=Display_Number[NhietDoHangDonVi];
GHI_7DOAN(Data);
GioHangDonVi_Sang;
delay_ms(1);

OffLed;
Data=Display_Number[10];
GHI_7DOAN(Data);
PhutHangChuc_Sang;
delay_ms(1);
OffLed;
Data=Display_Number[11];
GHI_7DOAN(Data);
PhutHangDonVi_Sang;
delay_ms(1);
}
 
void Convert_Number()
{
if (hour>12)
{hour_temp=hour-12;
ampm=1;}
    if(hour==0)
{hour_temp=12;
ampm=1;}
  if ((hour>=1)&(hour<=12))
{hour_temp=hour;
ampm=0;}
SoGiayHangChuc=sec/10;
SoGiayHangDonVi=sec%10;
SoPhutHangChuc=min/10;
SoPhutHangDonVi=min%10;
SoGioHangChuc=hour_temp/10;
SoGioHangDonVi=hour_temp%10;
}
void GHI_7DOAN(unsigned char addr)
{
unsigned char temp,i;
temp=addr;
for(i=0;i<8;i++)
{
SDI=temp&0x01;
CLK=0;
CLK=1;
temp>>=1;
} // truyen duoc 1 byte
STR=0;
STR=1;
}
void ScanKey() //ham quet phim nhan
{
if(Mode_Menu==0)
{Convert_Number();
Display_Gio_Phut_Giay();
Mode++;
if(Mode==4)Mode=0;//Mode =0 la che do binh thuong, 1 la dieu chinh gio, 2 la dieu chinh phut, 3 la hien thi nhiet do
while(Mode_Menu==0)   
{Convert_Number();
Display_Gio_Phut_Giay();}
}
else if(Mode_Up==0)
{
switch (Mode)
{
case 0:
{Convert_Number();
Display_Gio_Phut_Giay();
break;}
case 1:
{Convert_Number();
Display_Gio_Phut_Giay();
hour++;;
if(hour>23)hour=0;
while(Mode_Up==0)
{Convert_Number();
Display_Gio_Phut_Giay();}
DS1307_write(2,hour);
break;}
case 2:
{Convert_Number();
Display_Gio_Phut_Giay();
min++;;
if(min>59)min=0;
while(Mode_Up==0)
{Convert_Number();
Display_Gio_Phut_Giay();}
DS1307_write(1,min);
break;}
}
}
else if(Mode_Down==0)
{
switch (Mode)
{
case 0:
{Convert_Number();
Display_Gio_Phut_Giay();
break;}
case 1:
{Convert_Number();
Display_Gio_Phut_Giay();
hour--;;
if(hour<0)hour=23;
while(Mode_Down==0)
{Convert_Number();
Display_Gio_Phut_Giay();}
DS1307_write(2,hour);
break;}
case 2:
{Convert_Number();
Display_Gio_Phut_Giay();
min--;;
if(min<0)min=59;
while(Mode_Down==0)
{Convert_Number();
Display_Gio_Phut_Giay();}
DS1307_write(1,min);
break;}
}
}
if (Mode!=3)
{Convert_Number();
Display_Gio_Phut_Giay();}
}

( Mạch + Code)
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
ĐIỆN TỬ CHIA SẺ
Phạm Văn Ngọc Anh- 01644326695

Author Name

{picture https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN0PUWA2genMqX3Sm26mBTX_30OJgDenoIi4K6BR-E1vl3nI7LALp0X759QZgzqrMcGBB7jEbdZnubJbp4n2ZZ22KT196CWCg9DLs3MfEivocdmkjZEPEn-A42hyphenhyphen9dmsca0VIDQr_LjqM/s512-Ic42/pham-van-ngoc-anh.jpg}

Tôi là Ngọc Anh. Tôi đến từ Nghệ An. Tôi tốt nghiệp một trường đại học tại Sài Gòn. Hiện tôi đang phát triển công ty riêng. Liên lạc với tôi qua:

{facebook https://www.facebook.com/phamvanngocanh}
{twitter https://twitter.com/nghiphong1993}
{google https://plus.google.com/+dientuchiase/posts}
{youtube https://www.youtube.com/channel/UCeJKhA_goBNFmDw6RKNtmYQ}

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.