DÙNG PIC 16F877A KẾT HỢP VỚI DS1307 ĐỂ ĐIỀU KHIỂN ĐÈN GIAO THÔNG HỆ THỐNG NHÚNG( BAO GỒM CODE PIC+ MÔ PHỎNG PROTEUS)DÙNG PIC 16F877A KẾT HỢP VỚI DS1307 ĐỂ ĐIỀU KHIỂN ĐÈN GIAO THÔNG HỆ THỐNG NHÚNG( BAO GỒM CODE PIC+ MÔ PHỎNG PROTEUS)
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TỬ BÁO CÁO TIỂU LUẬN Môn học: HỆ THỐNG NHÚNG Đề tài: DÙNG PIC 16F877A KẾT HỢP VỚI DS1307 ĐỂ ĐIỀU KHIỂN ĐÈN GIAO THƠNG GVHD: Tăng Cẩm Nhung SVTH: Hồng Văn Thực MSSV: K175520114054(NT) Đinh Thế Thơ MSSV: K155520114053 Lớp: 53CĐT01 Thái Nguyên, ngày tháng năm 2021 LỜI MỞ ĐẦU Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ yếu tố cần thiết góp phần cho hoạt động người đạt hiệu Điện tử trở thành ngành khoa học đa nhiệm vụ Nó đáp ứng nhu cầu cần thiết hoạt động đời sống ngày công nghiệp Một ứng dụng quen thuộc đèn tín hiệu giao thông Vậy để điều khiển nó, có nhiều cách nhiên chúng em định sử dụng ic thời gian thực DS 1307 để điều khiển Sau thời gian học tập rèn luyện, với bảo tận tình thầy giáo Tăng Thị Cẩm Nhung trợ giúp bạn nhóm tài liệu có liên quan, chúng em hoàn thành xong đề tài Tiểu luận hồn thành xong, khơng thể tránh nhiều thiếu sót mong thầy giáo thơng cảm bảo thêm để đề tài ứng dụng rộng rãi thực tế Chúng em xin chân thành cảm ơn thầy cô! Thái nguyên, ngày…tháng…năm 2011 Sinh viên thực Hoàng Văn Thực Đinh Thế Thơ Lời Cảm Ơn Đầu tiên, em xin gửi lời cảm ơn chân thành đến Trường Đại học Kỹ thuật Công Nghiệp đưa mơn Hệ thống Nhúng vào trương trình giảng dạy Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên môn - Cô Tăng T Cẩm Nhung Nhung dạy dỗ, truyền đạt kiến thức quý báu cho em suốt thời gian học tập vừa qua Trong thời gian tham gia lớp học cơ, em có thêm cho nhiều kiến thức bổ ích, tinh thần học tập hiệu quả, nghiêm túc Đây chắn kiến thức quý báu, hành trang để em vững bước sau Bộ môn Hệ thống Nhúng mơn học thú vị, vơ bổ ích có tính thực tế cao Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn sinh viên Tuy nhiên, vốn kiến thức nhiều hạn chế khả tiếp thu thực tế nhiều bỡ ngỡ Mặc dù chúng em cố gắng chắn tiểu luận khó tránh khỏi thiếu sót nhiều chỗ cịn chưa xác, kính mong xem xét góp ý để tiểu luận em hoàn thiện Chúng Em xin chân thành cảm ơn!” MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG I: GIỚI THIỆU YÊU CẦU-GIỚI HẠN CỦA ĐỀ TÀI 1.1 Giới thiệu đề tài 1.2 Mục đích đề tài 1.3 Phạm vi nghiên cứu CHƯƠNG II: THIẾT KẾ MẠCH VÀ ĐIỀU KHIỂN 10 2.1 Giới thiệu 2.2 Thiết kế sơ đồ khối 2.2.1 khối LCD 2.2.2 Khối DS 1307 10 2.2.3 khối nguồn 13 2.2.4 khối nút nhấn 13 2.2.5 khối điều khiển 14 2.2.6khối đầu 16 2.3 Sơ đồ ngun lý tồn mạch 17 2.4 Chương trình điều khiển 19 CHƯƠNG III: KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN 33 3.1 Kết luận 3.2 Tài liệu tham khảo 33 34 CHƯƠNG 1: GIỚI THIỆU YÊU CẦU –GIỚI HẠN ĐỀ TÀI 1.1 Giới thiệu đề tài Ngày toàn nhân loại gần khung đường có cột đèn tín hiệu giao thơng đèn giao thơng ứng dụng dối với đời sống nào? Đèn giao thơng (cịn gọi tên khác đèn tín hiệu giao thông, đèn điều khiển giao thông, hay đèn xanh đèn đỏ) thiết bị dùng để điều khiển giao thơng giao lộ có lượng phương tiện lưu thông lớn (thường ngã ba, ngã tư đông xe qua lại) Đây thiết bị quan trọng khơng an tồn cho phương tiện mà cịn giúp giảm ùn tắc giao thơng vào cao điểm Nó lắp tâm giao lộ vỉa hè Đèn tín hiệu giao thơng hoạt động tự động hay cảnh sát giao thông điều khiển Trong năm gần đây, hệ thống điều khiển theo thời gian thực lĩnh vực thu hút nhiều ý giới khoa học nghiên cứu khoa học máy tính Trong đó, vấn đề điều hành thời gian thực vấn đề lập giới hạn thời gian đặc biệt quan trọng Một ứng dụng quan trọng hệ thống thời gian thực (RTS) đƣợc ứng dụng rộng rãi dây truyền sản xuất tự động, robot, điều khiển thí nghiệm tự động, thiết kế đồng hồ hiển thị thời gian thực…và đặc biệt sử dụng đề tài đèn giao thông chúng em 1.2 Mục đích đề tài Có thể thiết kế đèn giao thông ,sử dụng ds 1307 để đặt chế độ cao điểm thấp điểm cho đèn tín hiệu ,có nút nhấn điều chỉnh số ,có chế độ ưu tiên danh cho việc khẩn cấp 1.3 Phạm vi nghiên cứu Đề tài tập chung nghiên cứu đèn giao thông,sử dụng ds 1307 để diều chỉnh đèn theo giai đoạn *Phần cứng : Hệ thống thiết kế em dèn giao thơng hồn tồn hình lcd,ngồi có linh kiện nút ấn ,đèn led,ds 1307 sử dụng nguồn 5v.Nguồn cấp cho vi điều khiển dùng adapter để chuyển điện áp từ 220v điện áp 9v để cấp nguồn cho vi điều khiển hệ thống em có nút nhấn để điều chỉnh thời gian tăng dần, giảm dần ,có nút nhấn chế dộ ưu tiên để phục vụ cho trường hợp khẩn cấp *Phần mềm : phần mềm ta tìn hiểu bên phần lập trình đèn tín hiệu hoạt động phần lập trình em cài đặt thời gian sáng tắt đèn tín hiệu (đèn đỏ sáng khoảng giây,đèn vàng ,đèn xanh ) chế độ sáng đèn khoảng thời gian cao điểm ,giờ thấp điểm thời gian người lại CHƯƠNG II: THIẾT KẾ MẠCH VÀ ĐIỀU KHIỂN 2.1 Giới thiệu đề tài Tổng quan ý tưởng thiết kế hệ thống đèn giao thông sử dụng ds 1307 Trước tiên ý tưởng thiết kế giao Ban đầu phải xác định công việc cho hệ thống làm việc Yếu tố thành phần điều khiển hệ thống chẳng hạn: nút nhấn, keypad, cảm biến… Cuối biến đầu Khi điều khiển đầu vào thực việc thành phần hoạt động Vậy nên việc lên ý tưởng trước thiết kế hệ thống vơ quan trọng, tiền đề để phát triển từ tư toán cụ thể Hướng thực thiết kế: 2.2 Thiết kế sơ dồ khối Hình 1: Sơ đồ khối mạch tự động điều chỉnh tốc độ động theo nhệt độ a) Giải thích chức khối Khối nguồn: Có chức cấp nguồn cho toàn mạch để hoạt động Khối hiển thị LCD: Có chức hiển thị thơng số cài cặt thời gian Khối nút bấm: có chức cài đặt thời gian báo chuông Khối thời gian thực: Có chức tạo thời gian thực hiển thị lên led matrix Khối điều khiển(vi xử lý): Có nhiệm vụ nhận biến đổi tín hiệu đầu vào thực chuyển đổi để đưa kết đầu Khối ngõ ra(6 dèn) Có nhiệm vụ hiển thị chế độ sáng đèn tín hiệu 2.2.1) Khối hiển thị LCD: LCD sử dụng hệ thống loại LCD 16x2 có hàng 16 cột Hình2: LCD 16x2 Màn hình LCD sử dụng vô rộng rãi công nghiệp lĩnh vực đời sống Nó có chức hiển thị chữ, số Dưới hình ảnh thể chân hình LCD Hình3 Định nghĩa chân LCD Một số lệnh LCD dùng pic 16f877a: Định nghĩa chân LCD: #define LCD_RS_PIN PIN_A0 #define LCD_RW_PIN PIN_C7 #define LCD_ENABLE_PIN PIN_C6 #define LCD_DATA4 PIN_C5 #define LCD_DATA5 PIN_C2 #define LCD_DATA6 PIN_C1 #define LCD_DATA7 PIN_C0 Khai báo thư viện LCD: #include Khởi tạo LCD: LCD_init(); Hiển thị kí tự lên LCD: lcd_gotoxy(2,1);// đưa trỏ chuột tới cột 2, dòng lcd_putc("sy_viet");// hiển thị dòng chữ sy_viet cột 2, dòng 2.2.2) Khối DS1307 Khái niệm: DS1307 chip thời gian thực hay RTC (Read time clock), thời gian thực tính xác thời gian tuyệt đối cho thời gian mà người sử dụng: Thứ, ngày, tháng, năm, giờ, phút, giây Thời gian lưu trữ DS1307 năm 2100 DS1307 chế tạo Dallas Semiconductor, chip có cấu tạo bên ngoại đơn giản Chip DS1307 có chân hay dùng dạng Dip thứ tự chân mơ tả hình đây: Chức chân: X1,X2: nối với thạch anh 32,768 kHz Vbat: đầu vào pin khoảng 3V SDA: chuối DATA SCL: dãy xung clock SQW/OUT: xung vuông/ đầu driver GND: nối đất VCC nối nguồn Cấu tạo bên DS1307: Cấu tạo bên DS1307 bao gồm số thành phần mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao điện I2C, trỏ địa ghi (hay RAM) Do đa số thành phần bên DS1307 thành phần “cứng” nên khơng có q nhiều việc sử dụng DS1307 Sử dụng DS1307 chủ yếu ghi đọc ghi chip Vì cần hiểu rõ vấn đề cấu trúc ghi cách truy xuất ghi thơng qua giao diện I2C Hìn 10 #define xanh2 RD5 //BIEN DEM CHO MOC THOI GIAN int d1=30,d2=30,v1=3,v2=3,x1=27,x2=27,td1 = 30,td2=30,tv1=3,tv2=3,tx1=27,tx2=27,t1=12,t2=13,tt=1; int d11=30,d21=30,v11=3,v21=3,x11=27,x21=27,td11 = 30,td21=30,tv11=3,tv21=3,tx11=27,tx21=27; int d12=30,d22=30,v12=3,v22=3,x12=27,x22=27,td12 = 30,td22=30,tv12=3,tv22=3,tx12=27,tx22=27; unsigned int trangthai = 1; //int8 chuc,dvi; int low,high,c_g,dv_g,c_p,dv_p,c_h,dv_h,thu,c_d,dv_d,c_t,dv_t,c_n,dv_n; const unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//MA LED DOAN unsigned char RTC_ARR[7]; // Buffer for second,minute, ,year int gio,giay=0,count=0; void convert_bcd_lcd(int8 g,int8 p, int8 h); void convert_so_lcd(int8 x); void ReadRTC(unsigned char * buff); void WriteRTC(unsigned char * buff); void chinh_gio(); // //hien thi tren led doan void hienthi7doan() { int16 i; PORTB = (t1/10)|0xe0; for (i = 0;i4; //chia lay phan du, so hang don vi dv_d=d&15; //tach hang tram va hang chuc c_t=(t%240)>>4; //chia lay phan du, so hang don vi dv_t=t&15; //tach hang tram va hang chuc c_n=(n&240)>>4; //chia lay phan du, so hang don vi dv_n=n&15; //tach hang tram va hang chuc */ } void convert_so_lcd(int8 x) { low=x%10; //chia lay phan du, so hang don vi 27 high=x/10; //tach hang tram va hang chuc low = low + 0x30; high = high + 0x30; } void chinh_gio()//CHINH CAI DAT GIO CHO 1307 { t1= t2 = 0; int mode=1,i=0,t; LCD_putcmd(0xC0); printf(LCD_putchar," Chinh dong ho "); ReadRTC(&RTC_ARR[0]); convert_bcd_lcd(RTC_ARR[0],RTC_ARR[1],RTC_ARR[2]); while(true) { if(i20) i = 0; if(k2==0)//TANG GIO { while(k2==0) {} switch(mode) { case 1: { t = c_h*10+dv_h; if(t0) t ; else t = 99; c_n = t/10; dv_n = t%10; break;} } } if(k1==0) { while(k1==0){} mode++; if(mode>3) break;}//MODE CAI DAT //if(k4==0) { while(k4==0){} break;} } // // luu lai thoi gian chinh // ReadRTC(&RTC_ARR[0]); RTC_ARR[0] = (c_g