1.1.3.Các loại chip ứng dụng trong thiết kế thời gian thực Do yêu cầu về thời gian thực nên chúng ta sẽ không xét tới các mạch điện thiết kế đồng hồ sử dụng các mạch điện tương tự và các
Trang 1MỤ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 DS1307Hình 2.3 LCD 16x2
Trang 2LỜ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ồicơ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ấuchấ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ọilú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ữngthiế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 rachú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ựchiệ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!
Sinh viên thực hiện
Nguyễn Văn Ngọ
Trang 3CHƯƠNG 1 PHÂN TÍCH BÀI TOÁN
1.1.KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
Đồng hồ là một công cụ để đo đạc những mốc thời gian nhỏ hơn một ngày; đốilập với lịch, là một công cụ để đo thời gian dài hơn một ngày Những loại đồng hồdùng trong kĩ thuật thường có độ chính xác rất cao và cấu tạo rất phức tạp Trong khi
đó, người ta có thể tạo ra những loại đồng hồ nhỏ để dễ dàng mang theo bên mình Những loại đồng hồ hiện đại (từ thế kỉ 14 trở đi) thường thể hiện ba thông tin: giờ,phút, giây
1.1.1.Cách hiển thị thời gian
• Đồng hồ cơ:
Đồng hồ cơ thể hiện thời gian sử dụng các góc Mặt đồng hồ có những con số
từ 1 đến 12 và sử dụng kim để chỉ giờ và cả phút Từ một số đến một con số
kế cận là 5 phút (đối với kim phút), 1 giờ (đối với kim giờ) hay 5 giây (đối vớikim giây)
có góc dưới màn hình hiển thị giờ
3
Trang 41.1.3.Các loại chip ứng dụng trong thiết kế thời gian thực
Do yêu cầu về thời gian thực nên chúng ta sẽ không xét tới các mạch điện thiết
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éttớ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
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
em sử dụng AT89C51 Việc sử dụng quá tốn kém cho 1 mạch là không cầnthiết trong khi đó một chip cũng có thể làm được điều này mà giá thành rẻ hơnthì đó 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 :
Trang 5• Ư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
1.2.2 Giải pháp thiết kế
Việc lựa chọn giải pháp thường được xem xét trên nhiều phương diện nhưngquan trọng là giải pháp có khả thi không? Có phù hợp với với thực tế và thỏa mãn yêucầu về kinh tế?
Đồng hồ thời gian thực với bộ não điều khiển là AT89C51 và các linh kiệnkhác: LCD hiển thị, IC ổn áp7805, IC thời gian thực DS1307
• AT89C51 có các ưu điểm: tính năng và tốc độ đáp ứng được yêu cầu kĩ thuậttrong ứng dụng không đòi hỏi cao;giá thành thấp hơn họ vi điều khiển khác; có
Trang 6Vì vậy giải pháp thiết kế đồng hồ thời gian thực dùng các linh kiện trên cónhiều ưu thế hơn so với những giải pháp khác Đồng thời đảm bảo được yêu cầu vềkinh tế.
1.2.3.Các yêu cầu
Với sản phẩm đồng hồ thời gian thực đòi hỏi các yêu cầu:
• Hiển thị đúng thời gian:ngày, tháng, năm, giờ, phút, giây
• Điều chỉnh và thay đổi được thời gian
• Đảm bảo đúng về thời gian sau khi mất điện
• 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…
• 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
Trang 7Khối Xử lý
Khối giao tiế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ềukhiể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
Trang 82.2 SƠ ĐỒ THUẬT TOÁN
Trang 102.3.LỰA CHỌN LINH KIỆN
2.3.1.Vi điều khiển AT89C51
• Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương tựnhư nhau Ở đây giới thiệu IC AT89C51 là một họ IC vi điều khiển do hãngIntel của Mỹ sản xuất Chúng có các đặc điểm chung như sau:
+ 4K Bytes Flash rom
+ 128 Bytes Ram
+ 4 port 8 bit
+ 2 bộ định thời 16 bit
+ Có port nối tiếp
+ Có thể mở rộng bộ nhớ chương trình ngoài 64 K Byte
Port 0 là port xuất nhập 8-bit hai chiều
Port 0 còn được cấu hình làm bus địa chỉ (byte thấp) và bus dữ liệu đa hợp trong
Trang 11khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài.
• Port 1(1-8) :
Port 1 là port xuất nhập 8-bit hai chiều Port 1 cũng nhận byte địa chỉ thấp trong
thời gian lập trình cho Flash
• Port 2 (21-28):
Port 2 là port xuất nhập 8-bit hai chiều.
Port 2 tạo ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ
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:
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
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
Trang 12• 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ậptrình cho Flash
= 0 cho phép truy xuất bộ nhớ chương trình ngoài, ngược lại =1 sẽ
thực thi chương trình bên trong chip.
Tuy nhiên, lưu ý rằng nếu bit khoá 1 (lock-bit 1) được lập trình, sẽ đượcchốt bên trong khi reset
• XTAL1 và XTAL2:
XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại đảo của mạchdao động, được cấu hình để dùng như một bộ dao động trên chip
Trang 132.3.1.2 Các chế độ đặc biệt
2.3.1.2.1.Chế độ nghỉ
• Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các ngoại vi bên
trong chip vẫn tích cực Chế độ này được điều khiển bởi phần mềm Nội dung của RAM trên chip và của tất cả các thanh ghi chức năng đặc biệt vẫn không đổi trong
khi thời gian tồn tại chế độ này Chế độ nghỉ có thể được kết thúc bởi một ngắt bất
kỳ nào được phép hoặc bằng cách reset cứng.
2.3.1.2.2 Chế độ nguồn giảm
• Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế độ nguồn
giảm là lệnh sau cùng được thực thi RAM trên chip và các thanh ghi chức năng
đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồn giảm kết thúc
Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng.
2.3.1.3 Các bít khoá bộ nhớ chương trình
• Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình hoặc cho
phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của AT89C51 như
sau.Khi bit khoá 1 LB1 được lập trình, mức logic ở chân được lấy mẫu và
được chốt trong khi reset
Các bit khóa chương trình Loại bảo vệ
Chế
độ
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ấm13
Trang 143 P P U Như chế độ 2, cấm thêm việc kiểm tra
chương trình
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:
Trang 15Vcc: nối với nguồn , GND: đất X1,X2: nối với thạch anh 32,768 kHz Vbat: đầu vào pin 3V
SDA: chuỗi data , SCL: dãy xung clock SQW/OUT: xung vuông/đầu ra driver
DS1307 là một 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 với 56 bytes SRAM Địa chỉ và dữ liệu được truyền nốitiếp qua 2 đường bus 2 chiều Nó 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ác tháng nhỏ hơn 31 ngày, bao gồm cả việc tự động nhảy năm 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
DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp Việc truy cập được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi
Mô tả hoạt động của các chân:
Vcc, GND: nguồn một chiều được cung cấp tới các chân này Vcc là đầu vào 5V.Khi 5V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu có thểđọc và viết Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thìquá trình đọc và viết không được thực thi, tuy nhiên chức năng timekeepingkhông bị ảnh hưởng bởi điện áp vào thấp Khi Vcc nhỏ hơn Vbat thì RAM vàtimekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V)
Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V Điện áp pin phải được giữ trongkhoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị
SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trênđường dây nối tiếp
15
Trang 16 SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp Chân SDAthiết kế theo kiểu cực máng hở, đòi hỏi phải có một điện trở kéo trong khi hoạtđộng
SQW/OUT(square wave/output driver) - khi được kích hoạt thì bit SQWE đượcthiế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àythì 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
Trang 18Khi ở mức thấp, chỉ thị được truyền đến LCD như xoá màn hình ,vị trí con trỏ
….Khi ở mức cao, kí tự được truyền đến LCD
Các chân D0 - D7:
Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nộidung của các thanh ghi trong LCD
LCD có 2 chế độ giao tiếp:
Chế độ 4 bit (chỉ dùng 4 chân D4 đến D7 để truyền dữ liệu) và chế độ 8 bit (dùng
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ọnchế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,bật/tắt con trỏ
Trang 192.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ínhiệ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ợpchấ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
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
Trang 20CHƯƠNG 3 XÂY DỰNG HỆ THỐNG3.1.THIẾT KẾ PHẦN CỨNG
Hình 3.1 Sơ đồ nguyên lý
Trang 21• Trên cơ sở sơ đồ nguyên lý, vẽ mạch in trên Orcad và có kết quả như sau:
Trang 22en=1; // cho phep muc cao en=0; //xung cao xuong thap
}
Trang 23void 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 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)
{ unsigned char temp;
temp = x/16; //chuyen luon so sang decima
ghi_chuoi(rtc[temp]);
temp = x%16;
ghi_chuoi(rtc[temp]); }
/***********************************************************
// CAC CHUONG TRINH CON GIAO TIEP VOI RTC
// ca 2 dk start va stop dc tao ra boi thiet bi chu
23
Trang 24void start_rtc(void) //dk start: 1 su cdoi tthai tu cao xuong thap tren duong sda
trong khi duong scl dang o muc cao
{scl=1; sda=1;
_nop_();_nop_();
sda=0; scl=0; }
void stop_rtc(void) //dk stop: 1 su cdoi trang thai tu muc thap len cao tren
duong sda trong khi duong slc dang o muc cao
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;
Trang 25scl=0; } sda=1;
scl=1; //master nhan/gui bit du lieu(sda) khi scl o muc cao
unsigned char docdulieu(unsigned char diachi)
{ unsigned char Data;
25
Trang 26void hienthi_rtc(void)
{ ghilenhLCD(0xca); // ep con tro den vi tri thu 11 dong thu 2
hienthi_dulieu_rtc(docdulieu(0)); //hien thi giay ghilenhLCD(0xc7); // ep con tro den vi tri thu 8 dong thu 2 hienthi_dulieu_rtc(docdulieu(1)); // hien thi phut
ghi_kytu('-'); hienthi_dulieu_rtc(docdulieu(5));//hien thi thang
ghi_chuoi("-20"); hienthi_dulieu_rtc(docdulieu(6)); //nam
}
/**************************************************************/
// TAO THOI GIAN TRE DUNG TIMER 0 //
void delay(long time)//tre time ms
Trang 27unsigned char bcd_dec(unsigned char bcd)
{ unsigned char giay,phut,gio,thu,ngay,thang,nam;
giay = bcd_dec(docdulieu(0)&0x7f); // de bit 7 (bit clock halt) cua
thanh ghi giay = 0 => ko bi treo)