MỤC LỤC
DANH MỤC HÌNH ẢNH
Hình 2.1. Sơ đồ chân 89c51
Hình 2.2. IC thời gian thực DS1307
Hình 2.3. LCD 16x2
Hình 2.3. Thạch anh
Hình 3.1. Sơ đồ nguyên lý
Hình 3.2.Mạch vẽ trên orcad
Hình 3.3. Mạch mô phỏng
Hình 3.4. Mạch thực tế
DANH MỤC BẢNG BIỂU
Bảng 2.1. Chức năng port 3
Bảng 2.2. Chức năng các chân LCD
1
LỜI MỞ ĐẦU
Ngày nay, các thiết bị điện tử trở nên phổ biến và đóng vai trò quan trọng trong
đời sống con người. Ví dụ quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi
cơm điện, điều hòa, điện thoại di động, ô tô, máy bay, tàu thủy, các đầu đo, cơ cấu
chấp hành thông minh, robot v.v ta có thể thấy hiện nay thiết bị điện tử có mặt ở mọi
lúc mọi nơi trong cuộc sống của chúng ta.
Qua những môn học đã được học tai trường giúp em hiểu nhiều hơn về những
thiết bị điện tử mà em đã được tiếp xúc nhưng không biết cấu tạo và làm gì để tạo ra
chúng, nhưng thông qua việc bắt tay vào làm Đồ án chuyên ngành , tìm hiểu và thực
hiện đề tài “Mạch đồng hồ hiển thị trên LCD”, đã giúp em hiểu kĩ hơn những gì mình
đã được học và nâng cao hiểu biết của bản than.
Do thời gian thực hiện và kiến thức còn hạn chế nên còn nhiều sai sót trong quá
trình thực hiện đề tài, rất mong được sự bổ sung đóng góp của các thầy cô và các bạn.
Em xin chân thành cảm ơn các thầy cô trong khoa Điện tử - Viễn thông ,cảm
ơn thầy Dương Tấn Quốc đã tận tình hướng dẫn và giúp đỡ chúng em thực hoàn thành
đề tài này.
Trân trọng và chân thành cám ơn!
kế đồng hồ sử dụng các mạch điện tương tự và các IC số thông thường, chúng ta sẽ xét
tới việc sử dụng IC thời gian thực, vi điều khiển, cách thức hiển thị thời gian thực.
• IC thời gian thực:
Hiện nay trên thị trường có 2 loại IC thời gian thực phồ biến là DS1307 và
DS12887.
Các IC này đều có chức năng chạy thời gian thực và lưu giờ khi mất điện, với
DS1307 cần có thêm nguồn nuôi là một pin cmos 3V, với DS12887 có sẵn pin
tích hợp ở bên trong.
Thực hiện giao tiếp với vi điều khiển để hiện thị thời gian và cài đặt giờ…
Trên cơ sở đó thì chúng ta có thể sử dụng cả 2 loại IC này, nhưng với nhóm
em thì việc lựa chọn sẽ là DS1307 vì nó cũng thực hiện được yêu cầu mà giá
thành thì rẻ hơn.
• Vi điều khiển:
Có rất nhiều loại vi điều khiển khác nhau có thể sử dụng trong mạch đồng hồ
này như vi điều khiển pic, avr, 8051…
Các loại vi điều khiển pic hay avr có nhiều ưu điểm hơn so với 8051 như hỗ
trợ kết nối ngoại vi tốt hơn, tốc độ xử lý nhanh hơn, lập trình đơn giản hơn.
Nhưng giá thành thì lại cao hơn nhiều so với 8051 mà trong mạch này chúng
em sử dụng AT89C51. Việc sử dụng quá tốn kém cho 1 mạch là không cần
thiết trong khi đó một chip cũng có thể làm được điều này mà giá thành rẻ hơn
thì đó là lựa chọn tối ưu hơn.
• Hiển thị:
Chúng ta có 2 cách hiển thị đó là : sử dụng led 7 thanh và sử dụng lcd.
Led 7 thanh :
4
• Ưu điểm: hiển thị rõ ràng và thu hút được sự chú ý vì có thể nhìn ở xa.
• Nhược điểm: mạch điện phức tạp cần thêm các IC chốt.
LCD 16x2:
• Ưu điểm: hiển thị dễ dàng, có thể linh động hơn trong việc hiển thị thời
gian,kết nối đơn giản mạch điện không phức tạp…
• Khả năng thực thi:Thời gian đáp ứng, độ chính xác…
• Đảm bảo về kích thước và trọng lượng cho phép.
• Độ an toàn, khả năng chống lại sự phá hoại hay xâm nhập…
1.2.4.Giới hạn cho hệ thống
• Sử dụng nguồn điện 5V.
• Làm việc liên tục.
• Kích thước phù hợp với người sử dụng.
• Hệ thống nhỏ gọn.
• Hệ thống lưu được thời gian khi mất nguồn cấp (có nguồn dự trữ).
• Nguồn nuôi (pin CMOS) cho IC thời gian thực đảm bảo.
• Làm việc trong điều kiện môi trường bình thường.
6
Khối Xử lý
Khối giao ếp phím bấm
Khối hiển thị
Khối thời gian thực
Khối nguồn
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
2.1. SƠ ĐỒ TỔNG QUÁT
• Khối Nguồn: cung cấp nguồn cho hệ thống.
• Khối Thời gian thực: lưu trữ thời gian thực, thời gian cài đặt.
• Khối Xử lý: Dùng vi điều khiển AT89C51 để lấy dữ liệu từ khối thời gian thực,
lưu trữ và đưa ra khối hiển thị và nhận tín hiệu từ khối giao tiếp.
• Khối Hiển thị: lấy tín hiệu ra từ vi điều khiển, thực hiện giao tiếp với vi điều
khiển để hiển thị giờ và ngày.
• Khối giao tiếp: là khối bàn phím, thực hiện cài đặt giờ để vi điều khiển lưu dữ
liệu vào trong khối thời gian thực.
7
2.2. SƠ ĐỒ THUẬT TOÁN
8
chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các
địa chỉ 16-bit.
• Port 3 (10-17) :
Port 3 là Port xuất nhập 8-bit hai chiều. Port 3 cũng còn làm các chức năng khác
của AT89C51. Các chức năng này được liệt kê như sau:
Chân Tên Chức năng
3.0 RxD Ngõ vào Port nối tiếp
3.1 TxD Ngõ ra Port nối tiếp
3.2 Ngõ vào ngắt ngoài 0
3.3 Ngõ vào ngắt ngoài 1
3.4 T0 Ngõ vào bên ngoài của bộ định thời 1
3.5 T1 Ngõ vào bên ngoài của bộ định thời 0
3.6 Điều khiển ghi bộ nhớ dữ liệu ngoài
3.7 Điều khiển đọc bộ nhớ dữ liệu ngoài
Bảng 2.1. Chức năng port 3
Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và kiểm tra
chương trình.
• RST (9):
Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao động
đang hoat động sẽ reset AT89C51.
11
• ALE/ (30):
ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy xuất bộ nhớ
ngoài. Chân này cũng làm ngõ vào xung lập trình ( ) trong thời gian lập
trình cho Flash.
• (29):
(Program Store Enable) là xung điều khiển truy xuất bộ nhớ chương
trình ngoài. Khi AT89C52 đang thực thi chương trình từ bộ nhớ chương trình ngoài,
được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động sẽ bị bỏ
Chế
độ
LB1 LB2 LB3
1 U U U Không có đặc trưng khóa chương trình
2 P U U Các lệnh MOVC được thực thi từ bộ nhớ
chương trình ngoài không được phép tìm nạp
lệnh từ bộ nhớ nội, được lấy mẫu và
được chốt khi reset, hơn nữa việc lập trình
trên Flash bị cấm
13
3 P P U Như chế độ 2, cấm thêm việc kiểm tra
chương trình
4 P P P Như chế độ 3, cấm thêm việc thực thi
chương trình ngoài
2.3.2.IC thời gian thực DS1307
2.3.2.1.Giới thiệu chung về DS1307:
IC thời gian thực là họ vi điều khiển của hãng dalat. DS1307 có một số đặc trưng
cơ bản sau:
DS1307 là IC thời gian thực với nguồn cung cấp nhỏ dùng để cập nhật thời gian
và ngày tháng .
- SRAM : 56 bytes.
- Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều.
- DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động
đóng ngắt với nguồn pin cung cấp 3V:
Hình 2.2. IC thời gian thực DS1307
2.3.2.2.Cơ chế hoạt động và chức năng của DS1307:
14
Vcc: nối với nguồn , GND: đất
X1,X2: nối với thạch anh 32,768 kHz
thiết lập 1 chân SQW/OUT phát đi 1 trong 4 tần số (1Hz, 4kHz, 8kHz, 32kHz).
Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một
điện trở kéo trong. Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp.
X1,X2: được nối với một thạch anh tần số 32,768kHz. Là một mạch tạo dao
động ngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF .
Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hình này
thì chân X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở.
2.3.3.LCD 16x2
Giống như led 7 thanh, LCD là một thiết bị ngoại vi dùng để giao tiếp với người
dùng, so với led 7 thanh thì LCD có ưu điểm là hiển thị được tất cả các kí tự
trong bảng mã ascci, trong khi đó led 7 thanh chỉ hiển thị được một số kí tự,
nhưng LCD lại có nhược điểm là giá thành cao và khoảng cách nhìn gần.
Hình 2.3. LCD 16x2
16
Châ
n
Kí Hiệu Mức Logic I/O Chức Năng
1 Vss - - Nguồn (GND)
2 Vcc - - Nguồn (+5V)
3 Vee - - Chỉnh độ tương phản
4 RS 0/1 I 0=Nhập lệnh
1=Nhập dữ liệu
5 R/W 0/1 I 0=Ghi dữ liệu
1=Đọc dữ liệu
6 E 1,1 0 I Tín hiệu cho phép
7 DB0 0/1 I/O Bít dữ liệu 0
8 DB1 0/1 I/O Bít dữ liệu 1
9 DB2 0/1 I/O Bít dữ liệu 2
10 DB3 0/1 I/O Bít dữ liệu 3
11 DB4 0/1 I/O Bít dữ liệu 4
cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta sẽ
truyền nửa cao của byte trước, sau đó mới truyền nửa thấp của byte.
Trước khi truyền các kí tự ra màn hình LCD ta cần thiết lập cho LCD như chọn
chế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,bật/tắt con trỏ.
18
2.3.5. Tụ điện
Tụ điện là linh kiện điện tử thụ động được sử dụng rất rộng rãi trong các mạch
điện tử, chúng được sử dụng trong các mạch lọc nguồn, lọc nhiễu, mạch truyền tín
hiệu xoay chiều, mạch tạo dao động.
2.3.6.Điện trở
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.
2.3.7.Nút bấm button
Trong mạch này ta sử dụng 3 nút bấm để điều khiển menu, tăng , giảm cho việc
cài đặt giờ, ngày, tháng, năm.
2.3.8.Biến trở
Trong mạch ta sẽ sử dụng một biến trở 10k để điểu chỉnh độ tương phản của
LCD.
2.3.9.Thạch anh
Trong mạch ta sẽ sử dụng hai thạch anh, một loại 12Mhz để tạo dao động cho
AT89C51, một loại 32,768 Mhz để tạo dao động cho DS1307.
Hình 2.3. Thạch anh
2.3.10.Pin CMOS 3V
Ta sẽ sử dụng một đế và pin CMOS 3V để làm nguồn nuôi cho DS1307 để nó
có thể lưu được giờ khi mất điện nguồn cung cấp cho mạch.
19
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG
3.1.THIẾT KẾ PHẦN CỨNG
Hình 3.1. Sơ đồ nguyên lý
}
void ghilenhLCD(unsigned char x)
{ busy();
congLCD=x; // gia tri x
rs=0; // chon thanh ghi lenh
rw=0; // ghi len lcd
en=1; // cho phep muc cao
en=0; //xung cao xuong thap
}
22
void khoitaoLCD(void)
{ ghilenhLCD(0X38); // hai dong va ma tran 5x7
ghilenhLCD(0X0C); //bat man hinh , bat con tro
ghilenhLCD(0X01); //xoa man hinh
ghilenhLCD(0X06);//dich hien thi sang phai(tang con tro sang phai)
}
void ghi_kytu(unsigned char value)
{ busy();
congLCD=value;
rs=1; rw=0;
en=1; en=0; }
void ghi_chuoi(unsigned char *string)
{ unsigned char i;
for(i=0;string[i]!='\0';i++)
ghi_kytu(string[i]); }
void ghiso(unsigned char a)
{ unsigned char i;
i=a/10; ghi_chuoi(rtc[i]);
i=a%10; ghi_chuoi(rtc[i]); }
void hienthi_dulieu_rtc(unsigned char x)
scl=0; }
unsigned char nhan_rtc(void)
{ unsigned char Data,i;
for(i=0;i<8;i++) // nhan vao 8 bit
{ scl=1;
Data<<=1;
Data=Data|sda;
24
scl=0; }
sda=1;
scl=1; //master nhan/gui bit du lieu(sda) khi scl o muc cao
_nop_();
scl=0;
_nop_(); //du lieu(sda) thay doi khi scl muc thap
return Data; //tra gia tri cho ham
}
unsigned char docdulieu(unsigned char diachi)
{ unsigned char Data;
start_rtc();
gui_rtc(0xd0);
gui_rtc(diachi); //bat dau doc du lieu tu thanh ghi co dia chi 0x00
start_rtc();
gui_rtc(0xd1);
Data=nhan_rtc();
stop_rtc();//Stop I2C
return Data; }
void ghidulieu(void)
{ unsigned char t;
for(t=0;t<9;t++){start_rtc();
gui_rtc(0xd0);