Mạch đồng hồ thời gian thực

Kinh tế ngày càng quốc tế hóa, xã hội cũng ngày càng phát triển. Để đáp ứng nhu cầu bức thiết của cuộc sống và hội nhập tiến độ phát triển trên thế giới, đi hỏi các ngành khoa học kỹ thuật hiện nay ngày phải một nâng cao và phát triển về chất lượng và khả năng ứng dụng rộng rãi. Trong đó ngành công nghệ kỹ thuật điện tử cũng đóng một vai trò quang trọng trong sinh hoạt cũng như trong sản xuất của thế giới. Là một sinh viên đang còn ngồi trên ghế nhà trường,,em đã được trao dồi những kiến thức chuyên môn của ngành học.Tuy được học và thực hành nhiều trên lớp nhưng đó chỉ một phần nào đó nhỏ bé so với những kiến thức ngoài thực tế ngày nay và sau này khi ra trường chúng em sẽ gặp phải. vì thế, em rất muốn vận dụng nhũng kiến thức đã được học vào thực tiễn và học hỏi những gì còn thiếu. Trong những năm học tập, thực hiện nghiên cứu đồ án vừa qua, được sự giúp đỡ của các thầy cô giáo bộ môn,em đã học hỏi được rất nhiều điều trong thực tế, cũng như tìm hiểu nhung vấn đề, tài liệu lien quan giúp ích cho việc hoàn thành báo cáo đồ án này. Vì thế sau khi cân nhắc và được sự góp ý của các thầy cô em đã chọn đề tài “đồng hồ thời gian thực”

doc29 trang | Chia sẻ: lvbuiluyen | Lượt xem: 5399 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Mạch đồng hồ thời gian thực, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đồ án môn học 2 Mạch đồng hồ thời gian thực GVHD: Mạnh Thế Văn SVTH: Nguyễn Tân Mùi LỜI NÓI ĐẦU Kinh tế ngày càng quốc tế hóa, xã hội cũng ngày càng phát triển. Để đáp ứng nhu cầu bức thiết của cuộc sống và hội nhập tiến độ phát triển trên thế giới, đi hỏi các ngành khoa học kỹ thuật hiện nay ngày phải một nâng cao và phát triển về chất lượng và khả năng ứng dụng rộng rãi. Trong đó ngành công nghệ kỹ thuật điện tử cũng đóng một vai trò quang trọng trong sinh hoạt cũng như trong sản xuất của thế giới. Là một sinh viên đang còn ngồi trên ghế nhà trường,,em đã được trao dồi những kiến thức chuyên môn của ngành học.Tuy được học và thực hành nhiều trên lớp nhưng đó chỉ một phần nào đó nhỏ bé so với những kiến thức ngoài thực tế ngày nay và sau này khi ra trường chúng em sẽ gặp phải. vì thế, em rất muốn vận dụng nhũng kiến thức đã được học vào thực tiễn và học hỏi những gì còn thiếu. Trong những năm học tập, thực hiện nghiên cứu đồ án vừa qua, được sự giúp đỡ của các thầy cô giáo bộ môn,em đã học hỏi được rất nhiều điều trong thực tế, cũng như tìm hiểu nhung vấn đề, tài liệu lien quan giúp ích cho việc hoàn thành báo cáo đồ án này. Vì thế sau khi cân nhắc và được sự góp ý của các thầy cô em đã chọn đề tài “đồng hồ thời gian thực” Vì đây là lần đầu tiên viết báo cáo đồ án nên còn nhiều thiếu sót, rất mong thầy cô thông cảm. Em xin chân thành cảm ơn! Tuy Hòa,ngày….tháng….. năm 2012 Sinh viên thực hiện : Nguyễn Tân Mui LỜI CẢM ƠN Trong quá trình làm đồ án này cũng như có được kết quả ngày hôm nay em luôn được sự giúp đỡ cuẩ thầy cô hướng dẫn và nhà trường nhân đây em xin gửi lời cảm ơn đến: Trường cao đẳng công nghiệp tuy hòa đã giúp đỡ tạo điều kiện cho em trong suốt thời gian học tập tại trường. Cảm ơn thầy cô giáo trong khoa Điện_Điện Tử đã tận tình giảng dạy và truyền đạt những kiến thức quý báu cho em trong suốt quá trình học tập, nâng cao kiến thức, là hành trang cuộc sống ngày mai. Đặc biệt em xin chuyển lời cảm ơn trân trọng đến thầy Mạnh Thế Văn giáo viên hướng dẫn để em có thể hoàn thành đồ án này, thầy đã dưa ra những ý kiến thiết thực nhằm bổ xung và diều chỉnh những vấn đề còn hạn chế trong đồ án . Em xin chân thành cảm ơn thầy Mạnh Thế Văn nói riêng và các thầy cô khoa Điện_Điện Tử nói chung, đã tận tình giúp đỡ em và tạo điều kiện thuận lợi trong suốt thời gian làm đồ án. Một lần nữa em xin chân thành cảm ơn thầy Mạnh Thế Văn và các thầy cô khoa Điện_Điện Tử, em chúc các thầy cô sưc khỏe, hạnh phúc và thành công trong công việc. Em xin chân thành cảm ơn ! NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… Tuy Hòa,ngày…….tháng……năm2012 PHẦN 1: LÝ THUYẾT CƠ SỞ GIỚI THIỆU CÁC LINH KIỆN DÙNG TRONG MẠCH I >>TRANSISTOR : 1.Cấu tạo : Transistor được hình thành từ ba lớp bán dẫn ghép với nhau hình thành hai mối tiếp giáp P-N ,nếu ghép theo thứ tự PNP ta được transistor thuận, nếu ghép theo thứ tự NPN ta được transistor nguoc. Về phương diện cấu tạo transistor tương đương với hai Diode đấu ngouocwj chiều nhau. Cấu trúc này được gọi là Bipolar Junction Transistor (BJT) vì dòng điện chạy trong cấu trúc này bao gồm cả hai điện tích âm và dương (Bipolar nghĩa là hai cực tính). Ba lớp bán dẫn được nối ra thành ba cực, lóp giữa gọi là cực góc ký hiệu là B (Base), lớp bán dẫn B rấ mỏng và có nồng độ tạp chất thấp. Hai lớp bán dẫn bên ngoài được nối ra thành cực phát (Emitter) viết tắt là E, và cực thu hay cực góp (Collector) viết tắc là C, vùng bán dẫn C và E có cùng loại bán dẫn (loại N hay P) nhưng có kích thước và nòng độ khác nhau nên không hoán vị được cho nhau . . 2 Ký hiệu và hình dạng của Transistor : II>>TỤ ĐIỆN : 1 Cấu tạo : Cấu tạo của tụ điện gồm hai bản cực đặt song song, ở giữa có một lớp cách điện gọi là điện môi. Người ta thường dùng giấy, gốm , mica, giấy tẩm hoá chất làm chất điện môi và tụ điện cũng được phân loại theo tên gọi của các chất điện môi này như Tụ giấy, Tụ gốm, Tụ hoá. 2 Phân loại : a tụ không phân cực: Các loại tụ này không phân biệt âm dương và thường có điện dung nhỏ từ 0,47 µF trở xuống, các tụ này thường được sử dụng trong các mạch điện có tần số cao hoặc mạch lọc nhiễu b Tụ hoá là tụ có phân cực âm dương , tụ hoá có trị số lớn hơn và giá trị từ 0,47µF đến khoảng 4.700 µF , tụ hoá thường được sử dụng trong các mạch có tần số thấp hoặc dùng để lọc nguồn, tụ hoá luôn có dạng hình tròn. III>> ĐIỆN TRỞ : 1 khái niệm về điện trở : Điện trở là gì ?  Ta hiểu một cách đơn giản - Điện trở là sự cản trở dòng điện của một vật dẫn điện, nếu một vật dẫn điện tốt thì điện trở nhỏ, vật dẫn điện kém thì điện trở lớn, vật cách điện thì điện trở là vô cùng lớn. 2 Hình dáng và ký hiệu :  Trong thiết bị điện tử điện trở là một linh kiện quan trọng, chúng được làm từ hợp chất cacbon và kim loại tuỳ theo tỷ lệ pha trộn mà người ta tạo ra được các loại điện trở có trị số khác nhau. Hình dạng của điện trở trong thiết bị điện tử. Ký hiệu của điện trở trên các sơ đồ nguyên lý. 3 Cách đọc trị số điện trở : Quy ước các vòng màu. Màu Sắc Gía Trị Màu Sắc Gía Trị Đen 0 Xanh lá 5 Nâu 1 Xanh lơ 6 Đỏ 2 Tím 7 Cam 3 Xám 8 Vang 4 Trắng 9 Nhũ vàng -1 Nhũ bạc -2 Điện trở thường được ký hiệu bằng 4 vòng mầu , điện trở chính xác thì ký hiệu bằng 5 vòng mầu. PHẦN 2 : CƠ SỞ LÝ THUYẾT LIÊN QUAN Sơ lược về chip thời gian thực Ds1307 : DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử dụng, tình bằng giây, phút, giờ… DS1307 là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products). Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm. Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM. DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân Các chân của DS1307 được mô tả như sau: • X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip. • VBAT: cực dương của một nguồn pin 3V nuôi chip. • GND: chân mass chung cho cả pin 3V và Vcc. • Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển. Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được). • SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần số của xung được tạo có thể được lập trình. Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch. • SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C. Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ và các thanh ghi (hay RAM). Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi của chip này. Vì thế có 2 vấn đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thông qua giao diện I2C. Như đã trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63 (từ 00H đến 3FH theo hệ HexaDecimal). Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (RTC) còn lại 56 thanh ghi bỏ trống có thể được dùng chứa biến tạm như RAM nếu muốn. Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và năm (YEAR). Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thời gian khởi động cho RTC. Việc đọc giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra. II AT89S52 : SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN : 1 Cầu tạo : Vi điều khiển 8051 được Intel cho ra đời vào năm 1980 thuộc vi điều khiển đầu tiên của họ MCS-51. Hiện tại rất nhiều nhà sản xuất như Siemens, Advanced Micro Devices, Fusisu và Philips tập trung phát triển các sản phẩm trên cơ sở 8051.Atmel là hãng đã cho ra đời các chip 89C51, 52, 55 và sau đó cải tiến thêm, hãng cho ra đời 89S51, 89S52, 89S8252… Cấu hình 89S52: + 8KB bộ nhớ chương trình. + Dao động bên ngoài với thạch anh. CPU OSC TIMER 1 TIMER 0 ROM 0K_8031/32 4K_8051/8951 8K_8052/8952 20K_8955 INTERRUPT CONTROL OTHER REGISTER TIMER 2 UBS CONTROL I/O PORT SERIAL PORT 128 byte RAM INT1/ INT0/ SERIAL PORT TEREMO TEREM1 T2EX TXD RXD ALE/ PSEN/ EA RST XTAL T2 T1 T0 Về cơ bản thì các chip nêu trên giống nhau, chỉ có một số tính năng được cải tiến thêm. Các phiên bản về sau càng có nhiều khối tính năng đặc biệt hơn. Chúng ta xem bảng so sánh một số loại phổ biến như dưới đây. Về cơ bản thì các chip nêu trên giống nhau, chỉ có một số tính năng được cải tiến thêm. Các phiên bản về sau càng có nhiều khối tính năng đặc biệt hơn. Chúng ta xem bảng so sánh một số loại phổ biến như dưới đây Chức năng các chân 89S52 • P0,1,2,3 có chức năng cơ bản xuất/nhập. • Riêng P0, P2 còn có chức năng kết nối bộ nhớ mở rộng, sẽ được khảo sát trong phần mở rộng bộ nhớ. • P1: Chân T2 và T2EX dùng cho timer/ counter 2. Hai chức năng này sẽ khảo sát trong phần Timer. Chân SS\, MOSI, MISO, SCK truyền dữ liệu theo chuẫn SPI đồng thời có chức năng kết nối với mạch nạp chương trình. Xem hình Chân ALE, PSEN, WR\, RD\ dùng để kết nối bộ nhớ mở rộng. • Chân EA\ có chức năng chọn bộ nhớ chương trình: EA\=GND: Chọn bộ nhớ ngoại, EA\=VCC chọn bộ nhớ nội. • Chân Xtal1 và Xtal2 gắn với thạch anh . III SƠ ĐỒ KHỐI TỔNG QUÁT CỦA MẠCH ĐỒNG HỒ: SET MIN HOUR 00H 01H 02H 200 DS1307 MODE INC DEC BUI2C GIAO TIẾP I2C SET MIN HOUR RAM CỦA 89S52 20H 21H 22H XỬ LÝ PHÍM ĐỔI MÃ BCD SANG HEX HIỂN THI (QUÉT 6LED 7ĐOẠN) Dựa vào sơ đồ khối của giao tiếp trên, điều cơ bản là chúng ta phải viết một phần mềm khởi tạo DS1307, thực ra là chương trình giao tiếp I2C, đọc giá trị trong Ram của con DS1307 lưu tạm thời vào trong Ram của 89S52. Sau đó, viết thêm một phần mềm để đọc nội dung trong Ram này đưa ra hiển thị bằng phương pháp quét. Để đơn giản, việc đọc dữ liệu từ DS1307 lưu vào trong Ram của 89S52 và hiển thị giờ_phút_giây, được chia ra làm 2 chương trình con nhỏ, nếu có phím nhấn thì sẽ nhảy đến chương trình con xử lý phím nhấn riêng. PHẦN 3: THIẾT KẾ THI CÔNG MẠCH IV: Sơ Đồ Nguyên Lý: V: Sơ Đồ Mạch In; VI Chương Trình: #include sbit DATA1 = P3^0; sbit SCK1 = P3^1; sbit LACH1 = P3^2; sbit set=P3^4; sbit up=P3^5; sbit down=P3^6; unsigned char hour, minute, second,c; unsigned char ma []={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char kt=0,a=0,i,k,x=0; bit set0=1,set1=1,up1=1,up0=1,down0=1,down1=1; sbit SCL = P1^0; sbit SDA = P1^1; void delay(){ unsigned char i; for (i = 0; i < 4; i++){}; } //----------------------------------------- void SCL_high(){ SCL = 1; delay(); } //------------------------------------------ void SCL_low(){ SCL = 0; delay(); } //------------------------------------------- void I2C_Start(){ SDA = 1; SCL = 1; SDA = 0; delay(); SCL = 0; SDA = 1; //-------------------------------------------- void I2C_Stop(){ SDA = 0; SCL_high(); SDA = 1; } //---------------------------------------------- bit I2C_Write(unsigned char dat){ unsigned char i; bit outbit; for (i = 1; i <= 8; i++){ outbit=dat&0x80; SDA = outbit; dat = dat << 1; SCL_high(); SCL_low(); } SDA = 1; SCL_high(); outbit = SDA; SCL_low(); return(outbit); } //---------------------------------------------------- unsigned char I2C_Read(bit ack){ unsigned char i, dat; bit inbit; dat = 0; for(i=1;i<=8;i++) { SCL_high(); inbit = SDA; dat = dat << 1; dat = dat | inbit; SCL_low(); } if (ack) SDA = 0; else SDA = 1; SCL_high(); SCL = 0; SDA = 1; delay(); return(dat); } } //------------------------------------------------------------- void rtc_write(unsigned char add, unsigned char dat){ I2C_Start(); I2C_Write(0xd0); I2C_Write(add); I2C_Write(((dat/10)<<4)|(dat%10)); I2C_Stop(); } unsigned char rtc_read(unsigned char add){ unsigned char dat; I2C_Start(); I2C_Write(0xd0); I2C_Write(add); I2C_Start(); I2C_Write(0xd1); dat = I2C_Read(0); I2C_Stop(); dat = (dat & 0x0f) + (dat>>4)*10; return (dat); } void writeds(){ rtc_write(0x00, second); rtc_write(0x01, minute); rtc_write(0x02, hour); } void readds() { if(kt==0) { if(a==1) {writeds();a=0; } second = rtc_read(0x00); minute = rtc_read(0x01); hour = rtc_read(0x02); } } void hienthi(unsigned char x) { unsigned int i,temp; for(i=0;i<8;i++) temp=x; temp=temp&0x80; if(temp==0x80) DATA1=1; else DATA1=0; x*=2; SCK1=0; SCK1=1; } } void quetled() { if(kt==0) { hienthi(ma[second%10]); hienthi(ma[second/10]); hienthi(ma[minute%10]); hienthi(ma[minute/10]); hienthi(ma[hour%10]); hienthi(ma[hour/10]); LACH1=0; LACH1=1; } if(kt==1) { hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(ma[hour%10]); hienthi(ma[hour/10]); LACH1=0; LACH1=1; } if(kt==2) { hienthi(0xff); hienthi(0xff); hienthi(ma[minute%10]); hienthi(ma[minute/10]); hienthi(0xff); hienthi(0xff); LACH1=0; LACH1=1; { } if(kt==3) { hienthi(ma[second%10]); hienthi(ma[second/10]); hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(0xff); LACH1=0; LACH1=1; } } void ktphim() { set0=set1;set1=set; if((set0==1)&&(set1==0)) { kt++; if(kt>3)kt=0; } switch(kt) { case 0:break; case 1: { up0=up1;up1=up; a=1; if((up0==1)&&(up1==0)) { hour++; if(hour>23)hour=0; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { hour--; if(hour==-1) hour=23; } break; } case 2: up0=up1;up1=up; a=1; if((up0==1)&&(up1==0)) { minute++; if(minute>59) minute=0; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { minute--; if(minute==-1) minute=59; } break; } case 3: { up0=up1;up1=up;a=1; if((up0==1)&&(up1==0)) { second++; if(second>59) second++; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { second=0; } break; } } } void main() { I2C_Start(); I2C_Write(0xD0); I2C_Write(0x07); I2C_Write(0x10); I2C_Stop(); while(1) { ktphim(); readds(); quetled(); } } VII THIẾT KẾ PHẦN MÊM: Như đã trình bày trong phần thuật toán gaio tiếp và sơ đồ khối tổng quát, thì chương trình MAIN của chúng ta sẽ gồm 3 mục chính được mô tả cụ thể trong lưu đồ của chương trình MAIN ỏ hình. Giải thích lưu đồ chính này: Bắt đầu, chương trình sẽ gọi chương trình con đọc dữ liệu từ con DS1307 với chuẩn giao tiếp I2C bằng phương pháp đã được trình bày cụ thể ở mục 4 (thuật toán giao tiếp), sau đó, sẽ gọi chương trình con để quét Led 7 đoạn hiện thị 6 số: 2 số hiển thị giá trị của Giờ, 2 số hiển thị giá trị của Phút, 2 số hiển thị giá trị của Giây. Nếu phím MODE (chọn chế độ cài đặt) không được nhấn thì vòng lặp của chương trình này sẽ chạy vô tận. Nếu phím MODE được nhấn, nó sẽ nhảy tới chương trình con cài đặt giờ hay phút còn tùy thuộc vào số lần nhấn phím MODE. Sau đây ta đi vào chi tiết của tùng khối nhỏ:Đọc dữ liệu từ DS1307 lưu vào trong Ram của 89S52. Xem lưu đồ chương trình như hình dưới. Ở đây, các chương trình con nhỏ hơn, chẳng hạn như: CTC SEND_START, SEND_STOP, SEND_BYTE, v.v. đã được đề cập đến trong mục 4 (thuật toán giao tiếp đã được đề cập ở trên). VII HIỂN THỊ BẰNG PHƯƠNG PHÁP QUÉT LED 7 ĐOẠN : PHẦN 4 : HƯỚNG PHÁT TRIỂN ĐỀ TÀI , KẾT LUẬN Trong sự phát triển mạnh mẽ của công nghệ điện tử ngày nay và những ứng dụng của điện tử vào đời sống cũng như phục vụ cho giải trí ngày càng được chú trọng. Em đi đến đề tài này mong muốn và cũng là sự đam mê của em, muốn tạo ra những sản phẩm mạch điện ứng dụng trong thực tế. Do kiến thức còn hạn hẹp cho nên đề tài của em còn nhìều thiếu sót. Kết luận: Đồ án môn học là một bài tập mang tính chất thử thách sinh viên. Tạo điều kiện hoàn thiện cho sinh viên về mặt kiến thức ở trường và ngoài thực tế. Nâng cao sự tìm tòi nghiên cứu, học hỏi của bản thân. Và đây cũng là một bước ngoặc mới nên với đề tài này còn nhiều khó khăn và thiếu sót. Em rất mong sự góp ý và chỉ bảo của thầy cô. Em chân thành cảm ơn! Phần 5: Tài liệu tham khảo: Sách các linh kiện điện tử cơ bản. Kỹ thuật mạch điện tử. Kỹ thuật xung. Sách vi điều khiển.
Luận văn liên quan