Chúng em xin chân thành cảm ơn các thầy cô bộ môn của khoa ĐIỆNTỬ-TIN HỌC trường CĐKT CAO THẮNG và sự hướng dẫn tận tình cùa thầyTỐNG THANH NHÂN đã giúp chúng em hoàn thàn
Trang 1LỜI C ẢM ƠN
Ngày nay thế giới đã bước sang kỷ nguyên mới, kỷ nguyên của kythuật công nghệ nói chung, ky thuật điều khiển nói riêng Hệ thống điều khiểnkhiển tự động có ứng dụng rộng rãi trong các lĩnh vực như: Ky thuật điện tử,Viễn thông, Điều khiển tự động… Trong xu thế phát triển hiện nay mọi hoạtđộng đều được tự động hóa bằng các thiết bị điện tử Các thiết bị điện tử đangdần thay thế mọi hoạt động của con người Theo dòng phát triển công nghệ,công nghệ bán dẫn đã và đang phát triển rất mạnh Thành tựu của nó là sự rađơì của các mạch diều khiển bằng vi xử lý Từ khi ra đời đến nay mạch vi xử
lý đóng góp vai trò hết sức quan trọng trong các hệ thống điều khiển
Sau gần 2 năm học tập và nghiên cứu ở trường, chúng em đã được làmquen với các môn học chuyên ngành.Với mục đích nhằm hiểu rõ, nắm bắt côngnghệ dòng vi xử lý vi điều khiển và khai thác các ứng dụng của nó trong cuộcsống, để gắn liền được lý thuyết với thực tế và để thấy được những tính năng ưu
việt của dòng vi xử lý vi điều khiển và chúng em đã chọn đề tài : “lịch vạn niên kết hợp quang báo” để rút kết lại kiến thức mình đã học tại trường trong hai
năm và chuẩn bị kiến thức cho công viêc sau này
Chúng em xin chân thành cảm ơn các thầy cô bộ môn của khoa ĐIỆNTỬ-TIN HỌC trường CĐKT CAO THẮNG và sự hướng dẫn tận tình cùa thầyTỐNG THANH NHÂN đã giúp chúng em hoàn thành đề tài này
Chúng em xin chân thành cảm ơn!
Trang 2CHƯƠNG I - MỤC ĐÍCH YÊU CẦU ĐỀ TÀI
1.Giới Thiệu :
1.1 Lịch Vạn Niên (đồng hồ thời gian thực) :
Trong lĩnh vực công nghệ thông tin, người ta nói về hệ thống thông tinthời gian thực khi hệ thống đó điều khiển một vật thể vật lý với một tốc độphù hợp với sự tiến triển của tiến trình chủ Một ví dụ dễ hiểu (hệ thống thôngtin điều khiển màn hình hiển thị giờ chính xác của các tàu điện ngầm sẽ đếnvà đi tại một gare nhất định) Hệ thống thông tin thời gian thực khác vớinhững hệ thống thông tin khác bởi sự gò bó về thời gian, do đó việc tuân thủcác nguyên tắc cũng quan trọng như độ chính xác của kết quả, nói một cáchkhác, hệ thống không chỉ đơn giản là đưa ra kết quả chính xác mà nó còn phảithực hiện một xử lý trong một thời gian rất ngắn Hệ thống thông tin thời gianthực ngày nay được ứng dụng trong rất nhiều lĩnh vực như: trong ngành côngnghiệp sản xuất, kiểm soát tiến trình (trong đời sống hàng ngày ,trong nhàmáy, hay trong viện hạt nhân, trong hệ thống hàng không, thông qua các hệthống dẫn đường tích hợp trên máy bay và vệ tinh) Sự phát triển của hệthống thông tin thời gian thực yêu cầu mỗi phần tử của hệ thống phải ở thờigian thực.Vì vậy nhóm chúng em đã chọn LỊCH VAN NIÊN (đồng hồ thờigian thực) hiển thị lên led 7 đoạn làm một phần trong đồ án tốt nghiệp củanhóm
1.2 Quang Báo :
Quang báo là hình thức thông báo trên bảng đèn Bảng đèn quang báogồm nhiều ma trận LED ghép lại, mỗi một ma trận biểu diễn một kí tự Tùychiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khácnhau.Với sự ra đời của máy tính điện tử đặc biệt là máy vi tính, chúng cónhững tính năng ưu việt như khả năng xử lý dữ liệu nhanh chóng, độ tin cậycao, lưu trữ lượng thông tin lớn và quan trọng hơn cả là máy tính có thể kếthợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việctrao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điềukhiển Dựa vào tính đa dạng và mềm dẻo của máy tính người ta tìm cách ứngdụng nó vào mục đích quảng cáo, chẳng hạn như dùng trong quang báo Nhờvậy, việc thiết kế phần cứng cho quang báo trở thành ít phức tạp hơn, nhưng
Trang 3độ tin cậy cao hơn Trong thực tế để hiển thị các văn bản, người ta dùng cáckiểu chữ là các Ma Trận LED 8x32, 8x12 hoặc 8x14 tuỳ thuộc vào mục đíchsử dụng và độ phân giải.
Các công nghệ thiết kế quang báo hiện nay gồm nhiều công nghệ ,songthường sủ dụng Led 7 thanh, Led ma trận, LCD, Led đơn.Nhóm chúng em đãchọn quang báo hiển thị lên led ma trận 8 x 32 làm một phần trong đồ án tốtnghiệp của nhóm
2.Mục Đích :
2.1.Lịch Vạn Niên (đồng hồ thời gian thực):
- Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cung cấp giờcho hệ thống,để cập nhật thời gian,ngày tháng năm
-Xử lý,điều khiển dùng viđiều khiển 16F877A.Lập trình viđiều khiểnđể xử lý đọc ghi giờ, tính toán hiển thị thời gian
-Để hiển thị dùng led 7 thanh: lấy tín hiệu ra từ vi điều khiển thôngbáo thời gian,ngày,tháng năm
-Điều chỉnh thời gian thông qua nút bấm: lựa chọn cài đặt giờ, tănggiảm thời gian
Để cấp đủ nguồn cho các LED và cho các LED sáng đều, chúng em sửdụng IC đệm dòng ULN2803
3.Yêu Cầu :
3.1.Lịch Vạn Niên (đồng hồ thời gian thực):
- Đồng hồ thời gian thực hiển thị lịch dương:
-Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cungcấp giờ cho hệ thống Đầu ra được hiển thị trên LED 7 thanh
Trang 4Khối xử lý Khối nguồn
Tạo thời gian thực
Khối hiển thị
Điều khiển Tạo xung dao động
Reset
khối đo nhiệt dộ
- Hiển thị chính xác thời gian thực, ngày tháng năm dương lịch
- Làm việc với điện áp cấp từ nguồn 5v Dc
- Làm việc được lâu dài và ổn định
- Quan sát dễ dàng,có thể quan sát được thời gian ở khoảng cách xa
Dòng chữ chạy từ phải qua trái
CH ƯƠNG II -PHÂN TÍCH VÀ THIẾT KẾ
Trang 5-Nguyên lý hoạt động :
Đây là module cấp nguồn cho hệ thống nhằm cung cấp điện áp chuẩn
+5V
-Yêu cầu đối với khối này:
+Có thể lấy nguồn từ điện áp xoay chiều (hoặc pin) để cấp nguồn chohệ thống
+Điện áp đầu ra của khối ( điện áp đầu vào của hệ thống) luôn
ổn định tại mọi thời điểm.Mạch ổn áp cần cho vi điều khiển vì nếu nguồn cho
vi điều khiển không ổn định thì sẽ treo VĐK, không chạy đúng hoặc resetliên tục thậm chí là chết chíp
Với yêu cầu như trên ta lựa chọn mạch biến đổi điện áp xoay chiều
thành 1 chiều qua máy biến thế.Sử dụng IC7805 để ổn áp Điện áp xoay
chiều qua biến áp hạ xuống theo yeu cầu khoảng 12V qua cầu diot nắng lọc
là :
V U
U U
U d
2 2 2
Trang 6Dòng điện trung bình chạy qua mỗi điot khi dẫn điện =1/2 dòng trung bình qua tải.
Qua IC ổn áp 7805 với V ngõ vào là 10.8V
Giá trị điện áp của I C 7805 là từ 8-35V và điện áp ra là 5
1.1.2 khối tạo xung dao động:
-Chức năng : có tác dụng tạo xung nhịp với tần số 12MHz cho VĐK hoạtđộng
-sơ đồ nguyên l ý :
-Nguyên lý hoạt động : Đây là bộ dao động thạch anh có tác dụng tạo xungnhịp với tần số 12MHz cho VĐK hoạt động Hai đầu này được nối vào 2chânOSC1 và OSC2 của VĐK
Trang 7-Nguyên lý hoạt động : Khối RESET có tác dụng đưa vi điều khiển vềtrạng thái ban đầu Khi nút Reset được ấn điện áp +5V từ nguồn được nối vàochân Reset của vi điều khiển được chạy thẳng xuống đất lúc này điện áp tạichân vi điều khiển thay đổi đột ngột về 0, VĐK nhận biết được sự thay đổinày và khởi động lại trạng thái ban đầu cho hệ thống.
1 U2
74HC245
1 2 3 4 5 6 7 8 J1
PIN-DUC-8
D0 D1 D2 D3 D4 D5
2 3 4 5 6 7 8 J3
C4
10MF
Trang 8-Nguyên lý hoạt động : Lấy tín hiệu ra từ chân IC để hiển thị thời gian, ngàythángnăm.Khối hiển thị yêu cầu:
+Sử dụng nguồn chung toàn hệ thống,hoặc có thể dùng nguồn riêngtùy người thiết kế
+Độ sáng đủ lớn để có thể quan sát được trong phạm vi trongphòng,góc nhìn rộng.màu sắc của số khi hiển thị dễ quan sát
Lựa chọn hiển thị qua led 7 thanh,màu đỏ
Mỗi thanh của led 7 đoạn để một led sang cần dòng 10mA , ta có thể xem led
7 đoạn như 7 led đơn:
Dòng qua led :
mA mA
I led =10 ×7=70
Giá trị trung bình dòng qua led :
chọn thời gian sang 0
T
là thời gian led sang , T là thời gian led tắt chọn thời gian sang một led là 100ms thời gian khong có dong qua led là 600ms
mA mA
I
V V V
V
R
led
outpic led
I led =10 ×7=70
Xét điều kiện BJT bão hoà chọn BJT A1015 có β
=70Thông số của vi điều khiển pic ta có
Trang 9R cc led
003 0
2 8 0 5 0
γ
1.1.5khối điều khiển :
-Chức năng : Gồm 4 nút ấn có tác dụng điều chỉnh thời gian, ngày thángtrong mạch
1.1.6khối tạo thời gian thực :
-Chức năng : cung cấp thông tin về giờ,phút,giây ,thứ,ngày,tháng, năm
Trang 10SDA SCL
KHOI DALAS 1307
VBAT 3
X1 1
X2 2
SCL 6 SDA 5
SOUT 7
-Nguyên lý hoạt động :
+IC thời gian thực cần hoạt động được với nguồn cung cấp nhỏ, dùngđể cập nhật thời gian và ngày tháng.Cung cấp thông tin về giờ,phút,giây,thứ,ngày ,tháng, năm.Ngày cuối tháng sẽ tự động được điều chỉnh với cáctháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy năm Đồng hồ có thểhoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM
+Khi mất nguồn IC thời gian thực vẫn duy trỳ hoạt động không cầnđiều chỉnh lại thời gian.IC có thêm nguồn riêng từ pin 3V
+Với điều kiện như trên ta lựa chọn IC thời gian thực là IC DS1307
1.1.7Khối Xử lý :
-Chức năng : Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xunggiao động, tạo thời gian thực… và đưa ra khối hiển thị
-sơ đồ nguyên l ý :
Trang 11RA1/AN1 3
RA2/AN2/VREF-/CVREF 4
RA4/T0CKI/C1OUT 6
RA5/AN4/SS/C2OUT 7
RE0/AN5/RD 8
RE1/AN6/WR 9
RE2/AN7/CS 10
OSC1/CLKIN 13
OSC2/CLKOUT 14
RC1/T1OSI/CCP2 16RC2/CCP1 17RC3/SCK/SCL 18
RD0/PSP0 19RD1/PSP1 20
RB7/PGD 40RB6/PGC 39RB5 38RB4 37RB3/PGM 36RB2 35RB1 34RB0/INT 33
RD7/PSP7 30RD6/PSP6 29RD5/PSP5 28RD4/PSP4 27RD3/PSP3 22RD2/PSP2 21
RC7/RX/DT 26RC6/TX/CK 25RC5/SDO 24RC4/SDI/SDA 23
RA3/AN3/VREF+
5
RC0/T1OSO/T1CKI 15
MCLR/Vpp/THV 1
VCC 11 VCC1 32
GND 12 GND1 31
U17
PIC16F877A
LA LB LC LD LE LF LG LP RST1302 SCLK1302 IO1302
RA0 RA1
D0 D1 D2 D3 D4 D5 D6 D7
-Nguyên lý hoạt động :
Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xung giao động, tạo
thời gian thực… và đưa ra khối hiển thị Yêu cầu
+ Tốc độ xử lý nhanh, chính xác
+ Bộ nhớ không cần lớn
Lựa chọn vi điều khiển 16f877a
- Đo và hiển thị nhiệt độ của môi trường một thời điểm bất kỳ trong
khoảng từ 0 đến 99 độ C
- Chịu được nhiệt độ thay đổi
Trang 12KHỐI NGUỒN
KHỐI
XỬ LÝ TRUNG
TÂM
KHỐI ĐIỀU KHIỂN LED
MA TRẬN
KHỐI HIỂN THỊ
- Sử dụng sensor cảm biến nhiệt
- Hiển thị trên led 7 thanh
1.2 Quang Báo :
1.2.1.khối điều khiển led ma trận:
-Chức năng : Nhận tín hiệu từ khối xử lý trung tâm, giải mã và cung cấp nguồn ổn định và đủ lớn để chuyển ra khối hiển thị
-Nguyên lý hoạt động :
Trang 13Khối điều khiển LED được kết nối như hình dưới đây Module sửdụng IC chốt dịch 74HC595 và IC đệm dòng ULN2803.
Các chân Clock và Latch của IC 74HC595 được mắc song song nhưhình vẽ Chân Data của IC 74HC595 đầu tiên được nối vào vi điều khiển Cácchân Data của 3 IC còn lại được mắc vào chân số 9 của IC 74HC595 trướcđó
Trang 14Các đầu ra của IC chốt dịch 74HC595 được mắc vào các cổng vào của
IC đệm dòng ULN2803, các đầu ra của ULN2803 sẽ được nối trực tiếp vớicác chân cho phép cột của các LED ma trận trong module hiển thị
1.2.2 kh ối hi ển thị:
Nhận tín hiệu từ khối xử lý trung tâm và khối điều khiển LED ma trậnđể hiển thị các ký tự theo chương trình đã trong khối xử lý trung tâm
Module hiển thị sử dụng 4 led ma trận 8x8 ghép nối lại với nhau thành một
ma trận 8x32 Các LED ma trận được nối chung các chân cho phép hàng với nhau(H1 đến H8) Các chân cho phép cột được tách riêng và nối vào Module điều khiển LED ma trận (C1 đến C32)
CH ƯƠNG III- LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TR ÌNH
1 Lịch Vạn Niên (đồng hồ thời gian thực):
Trang 15CT điều khiển chính
1.2.lưu đồ chi tiết
Trang 16#define set pin_c4
#define mod pin_c5
#define tang pin_c6
#define giam pin_c7
byte giay,phut,gio,ngay,thang,nam,ngtuan;
char
Trang 17displthang1_onlar,displthang1_birler,displthang2_onlar,displthang2_birler,displthang3_onlar,displthang3_birler;
const int
displthang_digit[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; // ortak anotlu için
int i;
int set_degeri=0; // 1=gio 2=ngay
int mod_degeri=0; // 1=gio,ngay 2=phut,thang 3=giay
unsigned long int sicaklik_bilgisi;
float sicaklik_degeri,sicaklik_voltaj;
int sicaklik_ekrani=0;
-Chỉnh giờ:
Trang 18Chỉnh giờ
Nhả phím giờ+1
10giờ=0Giờ=0
Nhả phím giờ-1
10 giờ =-1giờ =9
S S
10giờ=2giờ =4S
Quét LED hiển thị 10 giờ, giờ
Trang 19Chỉnh phút
Nhả phím phút+1
10phút=6phút=0
Nhả phímphút-1
10 phút = -1phút =9
S S
10phút=51phút =9S
Quét LED hiển thị 10 phút, phút
Trang 20void thangarlar()
{
if (input(set))
{
while(input(set))
{
if(sicaklik_ekrani==1){ sicaklik_tara(); }
else { displthang_tara(); }
output_low(pin_a1);output_low(pin_a2);
}
set_degeri=1;
} else { goto thangardan_cik; } while(set_degeri==1)
{ output_e(0b001); rtc_get_time(gio,phut,giay); displthang1_birler=gio%10;
displthang1_onlar=gio/10; displthang2_birler= phut%10; displthang2_onlar=phut/10; displthang3_birler=giay%10; displthang3_onlar=giay/10; set_konumunda_displthang_tara(); if(input(set)){ while(input(set)){displthang_tara();} set_degeri=2; goto set1_den_cik; }
if(input(mod)){ while(input(mod)){displthang_tara();} mod_degeri=1; }
while(mod_degeri==1) {
for(;;)
{
displthang1_birler=gio%10;
displthang1_onlar=gio/10;
displthang1_tara();
Trang 21if(input(tang)){gio++; while(input(tang)){displthang1_tara();} if(gio==24) {gio=0;} }
if(input(giam)){gio ; while(input(giam)){displthang1_tara();} if(gio==-1) {gio=23;} }
if(input(mod)){while(input(mod)){displthang1_tara();} mod_degeri=2; goto
mod1s_cik;}
write_ds1307(0x84,get_bcd(gio)); //lay gia tri gio 0-23 delay_ms(5); } //for smod1 } //trong khi mode = 1 mod1s_cik:
while(mod_degeri==2) {
for(;;)
{
displthang2_birler=phut%10;
displthang2_onlar=phut/10;
displthang2_tara(); if(input(tang)){phut++; while(input(tang)){displthang2_tara();} if(phut==60){phut=0;} } if(input(giam)){phut ; while(input(giam)){displthang2_tara();} if(phut==-1){phut=59;} } if(input(mod)){while(input(mod)){displthang2_tara();} mod_degeri=3; goto mod2s_cik;}
write_ds1307(0x82,get_bcd(phut)); //lay gia tri phut 00-59 delay_ms(5); } //for smod2 } //trong khi mod = 2 mod2s_cik: while(mod_degeri==3) {
for(;;) { displthang3_birler=giay%10;
displthang3_onlar=giay/10;
displthang3_tara();
Trang 22if(input(tang)){giay++; while(input(tang)){displthang3_tara();}if(giay==60){giay=0;} }
if(input(giam)){giay ; while(input(giam)){displthang3_tara();} 1){giay=59;} }
if(input(mod)){while(input(mod)){displthang3_tara();} mod_degeri=0; gotomod3s_cik;}
write_ds1307(0x80,get_bcd(giay)); //lay gia tri giay 00-59
Trang 2310 năm =9
-chỉnh ngày:
Trang 24Ngày =8 Nút =2
Nút =3
-chỉnh tháng:
Trang 25Đ
S S
Nhả phím tháng -1
10tháng =0 tháng=9 S
Đ
S S
tháng =10 10tháng =1
tháng =3 Nút 2=0
Nút 3=0
tháng =-1 10 tháng=0
Nút 1 =0
10 tháng =0 tháng =0
10 năm =1 tháng =0 S
*chương trình :
while(set_degeri==2) //dat ngay
{
output_e(0b010);
Trang 27if(input(giam)){ngay ; while(input(giam)){displthang1_tara();} if(ngay==0){ngay=31;} }
if(input(mod)){while(input(mod)){displthang1_tara();} mod_degeri=2; goto mod1t_cik;}
write_ds1307(0x86,get_bcd(ngay)); //lay gia tri ngay 1-31
Trang 29Begin
Lấy độ dài chuỗi ký tự Kiểm tra chuỗi ký tự
End Hiển thị
Trang 30Ký tự = 0
Cột > 5 Copy font ký tự vào bộ đệm
Ký tự ++
Hiển thị ra cột Cột = 0
Cột ++
Ký tự > Độ dài chuỗi
Đ
SĐ
2.2.Lưu đồ chi tiết:
2.2.1.Sơ đồ thuật toán khối hiển thị: