Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 1
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
********** ĐỒ ÁN MÔN
VI ĐIỀU KHIỂN
Đề Tài : Thiết kế đồng hồ điện tử hiển thị bằng 8 led 7 thanh
Hệ thống có hiển thị thời gian thực ở 2 chế độ tùy theo lựa chọn
của người sử dụng .
Chế độ 1 hiển thị giờ ,phút ,giây
Chế độ 2 hiển thị ngày , tháng ,năm .
Sai số tối đa 5 giây/ngày .
Trên hệ thống có nguồn dự
phòng để đảm bảo khi mất điện vẫn
hoạt động được .
Trên hệ thống có phím chỉnh thời gian.
ịch vạn
niện dựa trên tính toán thiên văn học .
Nhưng tới ngày nay công nghệ điện tử phát triển, đồng hồ số thay cho lịch
vạn niện rất nhiều bởi những ưu điểm của nó. Sử dụng đồng hồ điện tử
chúng ta có thể điều chỉnh được thời gian tùy theo ý muốn của con người
Tiện lợi khi mang đi theo.
Sau một thờ
i gian học tập tại trường, học tập môn vi điều khiển cùng với sự
giúp đỡ của thầy giáo Nguyễn Anh Dũng và bạn bè. Chúng em đã cố gắng
áp dụng những gì đã nắm được qua môn học vào thực hành 1 mạch thực tế
đó là làm mạch đồng hồ số hiển thị LED 7 thanh.
Để điều khiển thời gian trong mạch đồng hồ điện tử có r
ất nhiều phương
pháp. Trong đồ án này em xin trình bày thiết kế đồng hồ điện tử dùng họ vi
điều khiển 8051 cụ thể là vi mạch 89S52 giao tiếp với IC thời gian thực
DS1307. IC DS1307 hoạt động ở tần số 32768kHZ được nuôi bằng nguồn
dự phòng 3V có thể hoạt động trong thời gian khá dài khoảng vài năm khi
không có nguồn điện.
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 3 PHẦN I
8051
8571
8951
8032
8052
8752
8952
0K
4K ROM
4k EPROM
4K FLASH
0K
8K ROM
8K EPROM
8K FLASH
128 byte
1.1 Chức năng các chân của họ 8051
1.1.1 Port 0(P0.0_P0.7)
Port 0 gồm 8 chân với chức năng xuất nhập dữ liệu . ngoài ra Port 0 còn là
bus đa hợp dữ liệu và địa chỉ (AD0- AD7) .Port 0 cũng nhận các byte mã khi
lập trình FLASH và xuất các byte mã khi kiểm tra chương trình.
Chú ý trong trường hợp này cần có them điện trở trước khi nối vào chân
Port 0.
1.1.2 Port 1( P1.0_P1.7)
Cũng như Port 0 ,Port 1 cũng có 8 chân .Chức năng của Port 1 chỉ là xuất
nhập dữ liệu .Port 1 cũng có thể nhập xuất theo bit và theo byte.
1.1.3 Port 2 (P2.0_P2.7)
Port 2 là port 8 bit có chức nă
ng xuất nhập dữ liệu như 2 port trên .Khi làm
nhiệm vụ là port nhập các chân của Port 2 đang được kéo xuống mức thấp
do tác động của bên ngoài sẽ cấp dòng cho các điện trở kéo lên từ bên trong
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 5
Port 2 tạo ra 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ỉ 16bit .
Port 2 cũng nhận các bit địa chỉ cao và tín hiệu điều khiển trong thời gian lập
1.4 Chân ALE
ALE (Addrees latch enable ) là một xung ngõ ra để chốt byte thấp của địa
chỉ trong truy nhập bộ nhở ngoài. Đây cũng là chân truy nhập xung lập trình
khi lập trình Flash . Bình thường khi hoạt động chân ALE sẽ được phát với 1
tỷ lệ không đổi 1/6 lần số dao động của vi điều khiển. Tuy nhiên chân này
cũng sẽ bỏ qua mỗi khi truy nhập bộ nhớ ngoài.
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 6 1.5 XTAL1 và XTAL2
Đây là ngõ vào và ra của 1 bộ khếch đại dao động ngịch được cấu hình để
dùng như 1 bộ dao động trên chip. Nó thường được nối với bộ dao động
thạch anh có dải tần thường là 12MHZ ÷33MHZ.
1.6 VCC và GND
Đây là 2 chân dùng để cấp nguồn cho IC. Dải điện áp thích hợp là 4-5V. Với
VCC nối với dương nguồn, GND nối với âm nguồn.
1.7 Chân EA
EA (external access ) là chân cho phép chọn bộ nhớ trong hay ngoài của vi
điề
u khiển. Khi EA ở mức cao thì vi điều khiển thi hành chương trình ROM
nội .Ngược lại vi điều khiển thi hành bộ nhớ ngoài.
2. Sơ lược về 89S52
Bộ vi điều khiển AT89S52 gồm có các khối và chức năng sau đây:
• CPU (Centralprocessing unit ) bao gồm :
- Thanh ghi tích lũy A.
- Thanh ghi tích lũy phụ B ,dùng cho phép nhân và phép chia.
- Đơn vị logic học ALU.
- Thanh ghi từ trạng thái chương trình PSW.
- Bốn băng thanh ghi.
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 8
- Con trỏ ngăn sếp.
• Bộ nhớ chương trình (bộ nhớ ROM ) gồm 8 byte Flash .
• Bộ nhớ dữ liệu (bộ nhớ RAM ) gồm 256 byte .
• Bộ UART :có chức năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp
với các cổng nối tiếp của máy tính thông qua bộ UART.
• Ba bộ timer/counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
• WDM: Dùng để phục hồi lại hoạt độ
ng của CPU khi nó bị treo bởi nguyên
nhân nào đó.
• Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 ngắt trong.
• Bộ lập trình : Cho phép người sử dụng có thể nạp chương trình cho chip.
• Bộ chia tần với hệ số chia là 12.
• 4 cổng xuất nhập với 32 chân vào cũng được ra cũng được.
II, IC DS1307
DS1307 là một chip đồng hồ thời gian thực (RTC :Read _time clock ), khái
niệm thời gian thực ở đây
Cấu tạo bên trong DS1307 gồm 1 số thành phần như
• Mạch nguồn .
• Mạch giao động.
• Mạch điều khiển logic.
• Mạch giao diện I2C.
• Con trỏ địa chỉ và 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.
DS1307 có tất cả 64 thanh ghi 8 bit nhưng thực chất dùng cho chứ
c năng
đồng hồ chỉ có 8 thanh ghi đầu còn lại có thể bỏ trống.
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 10 Tổ chức thanh ghi trong DS1307.
Trong 8 thanh ghi đầu thì 7 thanh ghi đầu chứa thông tin về thời gian của
đồng hồ bao gồm giây, phút , giờ, thứ , ngày , tháng và năm.
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 đồng hồ .
Việc đọc giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra.
Thanh ghi thứ 8 là thanh ghi điều khiển xung ngõ ra SQW/OUT(chân 6).
Tuy nhiên do ta không dùng chân này có thể bỏ qua thanh ghi thứ 8 này.
Tổ chức từng bit trong mỗi thanh ghi
1->7 tương ứng từ chủ nhật đến thứ 7 trong tuần vì thế chỉ có 3bit
thấp trong thanh ghi này có nghĩa.
• Thanh ghi ngày : chứa ngày trong tháng từ 1÷31.
• Thanh ghi tháng : chứa các tháng trong năm từ 1÷12.
• Thanh ghi năm : chứa các năm từ 00÷99.
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 12
PHẦN II : CƠ SƠ LÝ THUYẾT
I) Thuật toán giao tiếp I2C với vi điều khiển 89S52 Giản đồ xung giao tiếp với DS1307.
Điều kiện START and STOP START và STOP là những điều kiện bắt buộc
khi một thiết bị chủ muốn thiết lập giao tiếp với thiết bị nào đó trong mạng
I2C.
START là điều kiện khởi đầu báo hiệu bắt đầu giao tiếp.
STOP là kết thúc một giao tiếp.
Chế độ hoạt động của I2C DS1307 ở 2 chế độ sau :
• Chế độ DS1307 ghi : Chuỗi dữ liệu và chuỗi xung clock sẽ được nhận
thông qua SDA và SCL sau mỗi byte được nhận thì 1 bit ACK sẽ
được truyền . Các điều kiện START và STOP sẽ nhận dạng bắt đầu và
kết thúc .
• Chế độ DS1307 đọc : byte đầu tiên trong chế độ đọc tương tự như chế
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 14
• START I2C
• Ghi địa chỉ DS1307.
• Thao tác đọc vào DS1307 quyết định bởi bit 1 tiếp theo như trên hình
(cả địa chỉ và bit 1 để ghi thì ghi địa chỉ có giá trị 0xD1).
• Xác định địa chỉ đầu tiên cần đọc (có thể là giây, phút , giờ …lần lượt
là 0, 1, 2, …)
• Địa chỉ tiếp theo sẽ tự dịch chuyển (X+1byte+x)
• X là địa chỉ đầu tiên cần ghi.
• 1byte là giá trị cần ghi vào thanh ghi.
• Acknowledge là bit thông báo cho master là đã thực hiện
xong ghi 1 byte thành công.
• Not Acknowledge thông báo là đã đọc hết địa chỉ của
DS1307. II, Hiển thị trên 8 led 7 thanh
Để hiển thị bằng LED 7 đoạn thì cần 8 đường điều khiển khi điều khiển trực
tiếp hoặc cần 4 đường dây điều khiển khi dùng vi mạch giải mã BCD_7
đoạn.
LED 7 thanh sáng hơn và ổn định hơn. Trên đây là 2 phần lý thuyết quan trọng nhất trong việc thiết kế, lập trình để
thực hiện làm mạch và hiển thị đồng hồ DS1307.
III) Nguồn
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 16
Gồm 2 nguồn nuôi cho mạch hoạt động
+ Nguồn chính là nguồn 5V ổn định qua IC7805 dùng để nuôi cho
mạch hoạt động (cả hiển thị và giao tiếp với IC DS1307),
+ Nguồn Pin 3V dùng để nuôi cho DS1307 lúc mà nguồn chính mất vì
một lý do nào đấy để DS1307 tiếp tục hoạt động tránh tình trạng bị
mất dữ liệu và nguồn này không thể giao tiếp với 89S52 và hiển thị
LED 7 thanh.
IV) Công tắc
Công tác dùng để điề
u chỉnh thời gian và lựa chọn chế độ ngày tháng
năm.
Hoạt động của công tắc là làm nhiện vụ chuyển mức trạng thái của
chân IC.
2) Sơ đồ nguyên lí:
4) Mạch in
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 20
Lớp Top layer
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 21 Lớp Bottom layer
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
sbit sw1=P3^0;
sbit sw2=P3^1;
sbit sw3=P3^2;
sbit sw4=P3^3;
sbit sw5=P3^4;
sbit scl=P1^0;
sbit sda=P1^1; unsigned char
maso[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,191,255}
;
unsigned char chedo,mode,tang,giam,exit;
int gio,phut,giay,thu,ngay,thang,nam;
unsigned int dem=0,run;
char m[16];
unsigned char so[8];
void delay(unsigned int time)
{
int i;
for(i=0;i<time;i++);
}
void freei2c()
{
sda=1;
scl=1;
}
void starti2c()
{
sda=0;
scl=0;
}
void stopi2c()
{
sda=0;
scl=1;
sda=1;
}
Trường : ĐHCN HÀ NỘI GVHD: Nguyễn Anh Dũng
Khoa : ĐIỆN TỬ
Đề tài: Thiết kế đồng hồ hiển thị 8 LED 7 thanh Page 25
void xung()
{
scl=1;
scl=0;
} void writebit(unsigned char d)
{
xung();