Tải bản đầy đủ (.doc) (21 trang)

thiết kế bộ hẹn giờ cho một thiết bị hiện thị trên 8 led 7 đoạn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (335.77 KB, 21 trang )

Trng HCN H Ni Khoa in t

Bộ CÔNG THƯƠNg
Trờng đại học công nghiệp hà nội
Khoa điện tử

đồ án môn:
Vi điều khiển
Đề tài: Thiết kế bộ hẹn giờ cho một thiết bị
Sinh viên thực hiên: Cao Xuân Đức
Trơng Quang Huy
Phạm Thị Lan Hơng


Giáo viên hớng dẫn: Nguyễn Anh Dũng
File ớnh kốm mụ phng 003.rar
Hà nội -11/2009
Mục lục
Chơng i: Giới thiệu chung về bộ vi điều khiển3
I. Giới thiệu chung về bộ vi điều khiển.4
1
Trng HCN H Ni Khoa in t

II. Khảo sát bộ vi điều khiển 8051(89S52) 4
1. Kiến trúc phần cứng 5
2. Chức năng các chân 6
3. Các thanh ghi 9
4. Hoạt động của bộ định thời 10
5. Hoạt động của port nối tiếp 11
6. Hoạt động ngắt 12
Chơng ii: bộ hẹn giờ dùng 89s52


1. các linh kiện
2. lu đồ thuật toán
3. mạch nguyên lý
4. phần mềm và file nguồn
LờI NóI ĐầU
Với công nghệ ngày càng hiện đại, các thiết bị điện tử ngày càng đi sâu vào cuộc
sống của con ngời. Và một bớc tiến vợt bậc của nghành điện tử, đó là sự ra đời của
các IC số và các bộ vi xử lý, cho phép con ngời có thể lập trình cho chúng đợc, các
thiết bị điện tử càng ngày càng linh hoạt và từ một linh kiện, chúng ta có thể tạo ra
rất nhiều chức năng khác nhau cho chúng. Và một đại diện cho mảng này, đó là họ
IC khả trình 8051, cho phép chúng ta có thể lập trình cho chúng làm những công việc
khác nhau đa công nghệ điện tủ ngày một hiện đại hơn với công nghệ tự đọng hóa.
Trong quá trình học tập trong trờng ĐHCN Hà Nội, chúng em đã đợc tiếp xúc với
một đại diện của nghành này,bộ môn vi điều khiển với sự hớng dẫn và giảng dạy của
các thày giáo chúng em xin trình bày sản phẩm của nhóm chúng em dựa trên những
kiến thức mà đã đợc học : Thiết kế bộ hẹn giờ cho một thiết bị.
Sẽ không thể tránh khỏi thiếu sót và điều cha đợc về sản phẩm của mình. Rất mong
nhận đợc sự chỉ bảo của các thày,cô.
Nhóm chúng em xin chân thành cảm ơn sự hớng dẫn của thày Dũng, thày Chiến,
thày Tùng và các bạn xung quanh đã giúp đỡ chúng em trong quá trình làm đồ án
môn này.
Sinh viên thực hiện: Cao Xuân Đức
Trơng Quang Huy
2
Trng HCN H Ni Khoa in t

Phạm Thị Lan Hơng
Chơng I
Giới thiệu chung về bộ vi điều khiển
I.Giới thiệu chung về bộ vi điều khiển:

Bộ vi điều khiển viết tắt là Micro-contronller, là mạch tích hợp trên một chíp có thể lập
trình đợc, dùng để điều khiển hoạt động của hệ thống. Theo các tập lệnh của ngời lập trình,
bộ vi điều khiển tiến hành đọc, lu trữ thông tin, xử lý thông tin, đo lờng thời gian và tiến
hành đọc mở một cơ cấu nào đó.
Trong các thiết bị điện và điện tử dân dụng, thiết bị tự động hoá các bộ vi điều khiển,
điều khiển hoạt đọng của các thiết bị này Trong hệ thống sản xuất tự động, bộ vi điều
khiển đợc sử dụng trong điều khiển robot, dây chuyền tự động Các hệ thống càng thông
minh thì vai trò của vi điều khiển càng quan trọng
II. Khảo sát bộ vi điều khiển 8051(89S52)
Họ vi điều khiển 8051 (còn gọi là họ C51) là một trong những họ vi điều khiển thông dụng
nhất. Đây là các bộ vi điều khiển 8bits, có kiến trúc theo kiểusản xuất theo công nghệ
CMOS, Một số loại vi điều khiển thuộc họ 8051 thông dụng có thể kể ra : AT89C2051(20
chân), AT89C4051(20 chân), AT89C51(40 chân), AT89C52(40 chân), AT89S51(40 chân),
AT89S52(40 chân), AT89S53(40 chân)
Trong chơng trình môn học này chúng ta tập trung nghiên cứu về bộ vi điều khiển 89S52.
Đây là một bộ vi điều khiển thông dụng, giá rẻ có khá nhiều chức năng hay đặc
biệt là có tích hợp sẵn bộ nạp trên chip giúp sinh viên có thể dễ dàng tự thực hiện các bài thí
nghiệm với chi phí rất thấp.
Cũng trong chơng trình môn học này, ngôn ngữ đợc sử dụng để trình bày các ví dụ ứng
dụng sẽ là ngôn ngữ C.
3
Trng HCN H Ni Khoa in t

Cụ thể họ vi điều khiển 8051 có các đặc điểm sau :
-8 kbyte ROM (đợc lập trình bởi nhà sản xuất chỉ có ở 8051 )
-256 byte RAM
-4 port I/0 8 bit
-3 bộ định thời 16 bit
-Giao tiếp nối tiếp
-64 KB khônh gian bộ nhớ dũ liệu mở rộng

-một bộ vi xử lí(thao tác trên các bit đơn)
-210 bit đợc địa chỉ hoá
-bộ nhân/chia 4us
a).Kiến trúc phần cứng của 8051
Phần chính của vi điều khiển 8051 là bộ vi xử lý trung tâm(CPU: central processing
unit) bao gồm:
- Thanh ghi tích luỹ A
- Thanh ghi tích luỹ phụ B, dùng cho phép nhân và phép chia
- Đơn vị logic học (ALU: arithmetic logical unit)
- tủ trạng thái chơng trình (PSW: program status word)
- bốn băng thanh ghi
- con trỏ ngăn xếp
- ngoài ra còn có bộ nhớ chơng trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic
4
Trng HCN H Ni Khoa in t

Hình 1.1 : Sơ đồ khối 89s52
Đơn vị xử lý trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn có khả năng đa
một tín hiệu giữ nhịp từ bên ngoài.
Chơng trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở bên trong. Các
nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn của bộ đếm định thời hoặc cũng có
thể là giao diện nối tiếp.
ba bộ định thời 16 Bit hoạt động nh một bộ đếm.
Các cổng(Port 0, Port 1 Port 2 Port 3). Sử dụng vào mục đích điều khiển.
ở cổng 3 có thêm các đờng dẫn điều khiển dùng để trao đổi với bộ nhớ ở bên ngoài, hoặc để
đầu nối giao diện nối tiếp, cũng nh các đờng ngắt dẫn ở bên ngoài.
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập
với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt trong vảy rộng và đợc ấn định bằng
một bộ định thời.
Trong vi điều khiển 8051 có hai thành phần quan trọng khác đó là bộ nhớ và các thanh ghi:

Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lu trữ dữ liệu và mã lệnh
Các thanh ghi sử dụng để lu trữ thông tin trong quá trình xử lý. Khi CPU làm việc nó thay
đổi nội dung các thanh ghi.
b). Chức năng các chân của vi điều khiển 8051
1. Port 0.
5
Trng HCN H Ni Khoa in t

Port 0 gồm 8 chân, ngoài chức năng xuất nhập ra, Port 0 còn là Bus đa hợp dữ liệu và
địa chỉ (AD0-AD7), chức năng này sẽ đợc sử dụng khi 89S52 giao tiếp với các thiết bị
ngoài có kiến trúc Bus.
Hình 2.4. Cấu trúc của các chân trên port 0
2. Port 1.
Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập, cũng nh các Port
khác, Port 1 có thể xuất nhập theo bit và theo byte.
Hình 2.5. Cấu trúc của các chân trên port 1 và port 3.
Riêng dòng 89Sxx, 4 chân P1.4, P1.5, P1.6, P1.7 đợc dùng để nạp ROM theo chuẩn
ISP, 2 chân P1.0 và P1.1 đợc dùng cho bộ Timer 2. Trên hình 2.3 là một sơ đồ kết nối 89S52
với cổng song song để nạp chơng trình (file mã - *.hex) từ máy tính.
Trên sơ đồ này các đờng dẫn DO, DI, SCK, RTS lần lợt là các đờng dẫn dữ liệu lên
máy tính, xuống nối tiếp từ máy tính, đờng dẫn xung Clock và đờng dẫn xung Reset từ máy
tính xuống sau khi nạp xong chơng trình.
3. Port 2.
Port 2 có hai tác dụng, hoặc làm nhiệm vụ là cổng xuất nhập, hoặc là phần byte
cao của bus địa chỉ 16-bit cho các thiết kế hệ thống cần nhiều hơn 256 byte bộ nhớ ngoài.
6
Trng HCN H Ni Khoa in t

Hình 2.7. Cấu trúc của các chân trên port 2
4. Port 3

Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể nh
sau:
Bit Chân chức năng
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu phát cho port nối tiếp
P3.2 INTO Ngắt bên ngoài 0
P3.3 INT1 Ngắt bên ngoài 1
P3.4 TO Ngõ vào timer/counter 0
P3.5 T1 Ngõ vào của timer/counter 1
P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài.
5. PSEN (Program Store Enable ).
Chân này thờng đợc nối với chân cho phép xuất /OE (Output Entable) của
EPRROM (hoặc của ROM) để cho phép đọc các byte lệnh. Tín hiệu /PSEN ở lôgic 0
trong suốt thời gian tìm nạp lệnh. Các mã nhị phân của chơng trình (opcode) đợc
đọc từ EPROM, qua bus dữ liệu và đợc chốt với thanh ghi lệnh IR của 8051 để đợc
giải mã. Khi thực thi một chơng trình trong ROM nội, /PSEN đợc duy trì ở lôgic
không tích cực (logic 1).
6. ALE (Address Latch Enable ).
Là tín hiệu xuất ra để giải đa hợp bus địa chỉ v bus dữ liệu. Trong 1/2 chu kỳ đầu
bộ nhớ, chân ALE xuất tín hiệu để chốt địa chỉ (byte thấp của bus địa chỉ 16 bit) và
thanh ghi ngoài khi ta sử dụng port 0 làm byte thấp địa chỉ. Trong 1/2 chu kỳ bộ nhớ
còn lại port 0 sẽ xuất/nhập dữ liệu. Tín hiệu ALE có tần số bằng 1/6 tần số của mạch
dao động bên trong chip vi điều khiển v có thể lm xung clock cho các phần còn lại
của hệ thống (trờng hợp ngoại lệ khi thực hiện lệnh MOVX, một xung ALE (vàs cả
/PSEN) sẽ bị bỏ qua). Chân ALE còn đợc dùng để nhập xung ngõ vo lập trình cho
EPROM hoặc Flash ROM trên chip đối với chip có loại ROM này.
7. EA (External Access) .
Chân này đợc nối lên 5V khi thực thi chơng trình trong ROM nội và đợc nối
đất khi thực thi chơng trình bộ nhớ ngoài. Chú ý đối với các chip không có ROM nội

7
Trng HCN H Ni Khoa in t

/EA phải đợc nối đất. Các chip họ 8051 có EPROM còn nhận chân /ALE làm chân
nhận điện áp cấp điện 12V cho việc lập trình (nạp) cho EPROM nội.
8. RST (Reset).
Dùng để thiết lập lại trạng thái ban đầu của hệ thống hay gọi tắt là reset hệ thống
khi đợc treo ở mức logic là ít nhất 2 chu kỳ máy. Các thanh ghi bên trong của 8051
đợc nạp các giá trị thích hợp cho việc khởi động lại hệ thống.
9. XTAL1, XTAL2.
Mạch dao động bên trong chip 8051 đợc ghép với thạch anh bên ngoài ở 2 chân
XTAL1 v XTAL2. Thờng tần số l 12MHz v các tụ ổn định có giá trị trong khoảng
30pF 33 pF.
10 Vcc,GND:
89S52 nối với dơng nguồn một chiều điện áp đầu vào 4V đến 5.5V qua chân 40 còn âm
nguồn nối với mát(GND) qua chân 20.
c). Các thanh ghi:
1. Các thanh ghi Port xuất nhập:
Các Port cua 8051 bao gồm port 0 ỏ địa chỉ 80H.port1 ỏ dịa chỉ 90H,port2 ỏ địa chỉ
A0H và port 3 ỏ địa chỉ B0H.Tất cả các port dều đợc địa chỉ hoá tùng bit .Điều đó cung cấp
một khả năng giao tiếp thuận lợi.
2.Các thanh ghi TIMER:
8051 chứa 2 bộ định thời đếm 16bit đợc dùng trong việc định thời hoạc đém sự
kiện.Timer0 ở địa chỉ 8AH(TLO:byte thấp) và 8CH (THO:byte cao)Timer1 ở địa chỉ 8BH
(TL1 byte thấp)và 8DH(TH1:byte cao).Việc vận hành của Timer đợc set bởi thanh ghi
Timer MODE(TMOD)ở địa chỉ 89H cà thanh ghi điều khiển timer(TCON)ở địa chỉ
88H.Chỉ có TCON đợc địa chỉ hoá từng bit.
3.Các thanh ghi Port nối tiếp:
8051 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối
tiếp nh máy tính, Modern hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (có

bộ chuyển đổi A/D,các thanh ghi dịch ). Một thanh ghi gọi la bộ đệm dữ liệu nối tiếp
(SBUF) ở địa chỉ 99H sẽ dữ cả hai vai trò truyền và nhận dữ liệu.Khi truyền dữ liệu thì ghi
lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các MODE vận hành khác nhau đợc lập trình qua
thanh ghi diều khiển Port nối tiếp (SCON) đợc dịa chỉ hoá từng bit ở địa chỉ 98H.
4.Các thanh ghi ngắt :
8051 có cấu trúc 5 nguồn ngắt , 2 mức u tiên.Các ngắt bị cấm sau khi reset hệ thống và sẽ
đợc cho phép bằng việc thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH. Cả hai thanh ghi đợc
địa chỉ hoá từng bit.
5.Hoạt động của bộ định thời(timer)
8051 có 3 timer 16 bit, mỗi timer có 4 cách làm việc. Ngời ta sử dụng các timer để :
.Định khoảng thời gian
.Đếm sự kiện
.Tạo tốc độ BAUD cho Port nối tiếp trong 8051
8
Trng HCN H Ni Khoa in t

A :Thanh ghi chế độ timer(TMOD)
Thanh ghi TMOD chứa 2 nhóm 4bit dùng để đặt chế dộ làm việc cho timer0 và timer1.
B Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 và timer 1.
Bit Ký hiệu địa chỉ Mô tả
TCON.7 TF1 8FH Cở báo tràn TIMER 1. Đợc đặt bởi phần cứng, khi
tràn đợc xóa bằng phần mềm, hay phần cững khi bộ
xử lý chỉ đến chơng trình phục vụ ngắt
TCON.6 TR1 8EH Bit điều khiển timer 1 chạy, đặt và xóa bằng phần
mềm.
TCON.5 TF0 8DH Cờ báo tràn Timer 0, tơng tự nh Timer 1.
TCON.4 TR0 8CH Bit điều khiển chạy cho Timer 0. đặt xóa bằng phần
mềm.
TCON.3 IE1 8BH Cờ báo ngắt 1 bên ngoài.

TCON.2 IT1 8AH Cờ ngắt do Timer 1
TCON.1 IE0 89H Cờ báo ngắt do Timer 0
TCON.0 IT0 88h Cờ ngắt do Timer 0
9
Trng HCN H Ni Khoa in t

C. Các chế độ timer.
.Chế độ 0,chế độ timer 13bit
Để tơng thích với 8048(có trớc 8051), ba bit cao của TLX(TL0 /hoặc TL1) không dùng

Xung nhịp timer
Cờ báo tràn
chế độ 1-chế độ timer 16bit.
Hoạt động nh timer 16 bit đầy đủ.Cờ báo tràn la bit TFx trong TCON có thế đọc hoạc ghi
bằng phần mềm .
MSB của giá trị trong các thanh ghi timer là bit7 của THx và LBS là bit 0 của TLx .Các
thanh ghi timer (TLx/THx)có thể đọc hoặc ghi bắt cứ lúc nào bằng phần mềm.

Xung nhịp
timer

Cờ báo tràn
.Chế độ 2 chế độ 8 bit tự nạp lại
TLx hoạt động nh một timer 8 bit,trong khi đó THx vẫn giữ nguyên giá trị đợc nạp .Khi số
đếm tràn từ ffH đến 00H,không những cờ timer đợc set mà giá trị trong THx động thời đợc
nạp vào TLx .Việc đếm tiếp tục từ giá trị naỳ đến ffH xuống 00Hvà nạp lại CHế độ này rất
thông dụng vì sự tràn timer sảy ra trong khoảng thời gian nhất định và tuần hoàn khi đã
khởi động TMOD và THx.



.Chế độ 3 chế độ tách timer
Timer 0 tách làm 2 timer 8 bit (TL0&TH0) ,TL0 có cờ báo tràn là TF0 và TH0 có cờ báo
tràn là TF1 .
Timer 1 ngng ở chế độ 3 , nhng có thể đợc khởi động bằng cách chuyển sang chế độ khác
Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác động khi timer 1 bị tràn vì nó đẫ đợc
nối tới TH0.
Khi timer 0 ở chế độ 3 có thể cho timer 1 chạy và ngng bằng cách chuyển nó ra ngoài và
vào chế độ 3 . Nó vẫn có thể đợc sử dụng bằng port nối tiếp nh bộ tạo tốc độ baund hoặc nó
có thể đợc sử dụng bằng bất cứ cách nào không cần ngắt (vì nó không còn đợc nối với
TF1).
10
TFxTLx THx
(5 bit) (8 bit)
TFxTLx THx
(8 bit) (8 bit)
Trường ĐHCN Hà Nội Khoa điện tử

6. Ho¹t ®éng port nèi tiÕp.
Bit ký hiÖu ®Þa chØ M« t¶
11
Trng HCN H Ni Khoa in t

SCON.7 SM0 9FH
SCON.6 SM1 9EH
SCON.5 SM2 9DH
SCON.4 REN 9CH
SCON.3 TB8 9BH
SCON.2 RB8 9AH
SCON.1 TI 99H
SCON.0 RI 98H

-Bit 0 của chế độ port nối tiếp
-Bit 1 của chế độ port nối tiếp
-Bit 2 của chế độ 2 nối tiếp
Cho phép truyền thông đa xử lý trong các chế
độ 2 và 3 ,RI sẽ không bị tác động
Nếu bit thứ 9 thu đợc bằng 0
-cho phép thu (đặt bằng 1)
-bit 8 phát bit thứ 9 đợc phát các chế độ 2 và 3
-bit 8 thu bit thứ 9
-cờ ngắt phát ,đặt lên 1 khi kết thúc phát
-cờ ngắt thu ,đặt lên 1 khi kết thúc nhận
Bảng 2.7:Tóm tắt thanh ghi chế độ port nối tiếp SCON.
Các chế độ hoạt động của PORT nối tiếp
Port nối tiếp có 4 chế độ hoạt động :
1) Chế độ 0 :
2) Chế độ 1 : -
3) Chế độ 2 :
4) Chế độ 3 :
7. Các ngắt của 8051:
Các ngắt Timer.
Các ngắt cổng nối tiếp.
Các ngắt ngoài.
Chơng II
Bộ hen giờ cho rơle hiển thị bằng led 7 đoạn
I. Các thiết bị sử dụng trong mạch:
Rơle: sử dụng rơle 12 vôn DC. để kích mở cho rơle này, cần một transistor mở
cho rơle này, sử dụng C828 để kích mở Role này.
Led 7 thanh: dùng để hiển thị thời gian còn lại của thời gian còn lại. Chúng ta sử
dụng led 7 thanh kép gồm 4 led đơn gắn trên cùng một con led . gọi là MPX4-CA
12

Trng HCN H Ni Khoa in t

để hiển thị led 7 thanh. Nguyên lý hiển thị quét led: để điều khiển cho n led 7 đoạn,
ta sử dụng n đờng dây điều khiển việc cấp nguồn cho các led và 8 đờng dây dữ liệu
chung cho tất cả các led( 7 đờng nếu không cần dấu chấm). Việc hiển thị đợc thực
hiện bằng cách lần lợt cấp nguồn cho từng led và đa số liệu tơng ứng của led đó ra 8
đờng dây dữ liệu. Nh vậy thực chất thì tại 1 thời điểm chỉ có 1 led hoạt động, còn các
led khác không hoạt động vì không đợc cấp nguồn. Tuy nhiên do đặc tính lu ảnh
trên võng mạc của mắt ngời mà ta nhìn thấy tất cả các led đang hoạt động.
Ngoài các linh kiện trên, ta còn dùng tới 3 nút nhấn, các điện trở, các transistor .
Sử dụng tran A1015 để kích cho tran sang ( cấp nguồn gián tiếp qua tran).

13
Trường ĐHCN Hà Nội Khoa điện tử

14
Kiểm tra
trạng thái
nút menu
Cấm ngắt bằng
timer 1
Tăng biến vị trí
(VT)
VT=1-Chỉnh giờ
VT=2-Chỉnh phút
Không bấm
Có bấm
Kiểm tra
giờ, phút,
giây, 1/10

giây=0?
sai
Cấp nguồn cho cuộn hút
Rơle, đồng thời bật đèn báo
đã hết giờ.
đún
g
Trng HCN H Ni Khoa in t

Nguyên lý hoạt động: dựa vào một trong ba nội dung cơ bản của Vi điều khiển là
Timer-bộ định thời. Dựa vào tần số xung nhịp của thạch anh là 12Mhz, qua các bộ
chia tần chúng ta có tần số xung nhịp của một chu kỳ máy là 1/1000ms.
Nạp hệ số chia của timer 1 là -1000, chúng ta có hàm trễ 1ms. để làm hàm hiển thị
cho 8 led 7 đoạn.
Cộng với tốc độ tràn của timer 0 ta có bộ đếm lùi thời gian với chu kỳ là 1/10s.
Trên hệ thống có nút chỉnh thời gian tăng hoặc giảm giờ, phút, giây. Kết thúc việc
chỉnh thời gian là bắt đầu đếm lùi thời gian cho tới khi về 0. Khi đó, Rơle sẽ đợc bật
và ta sử dụng các tiếp điểm NC và NO của rơle để điều khiển thiết bị điện.
Đồng hồ chạy liên tục cho tới khi phím MENU có sự thay đổi trạng thái, tức là có sự
tác động.
Chơng trình điều khiển của mạch viết bằng phần mềm Kiel C.
II- LƯU Đồ THUậT TOáN:
15
Khởi tạo timer 1 cho hàm đếm số lần tràn, phục vụ hàm trừ thời gian.
Timer 0 cho hàm trễ.
VT=4-chỉnh 1/10
giây
Tăn
g
giả

m
Trng HCN H Ni Khoa in t

Phần mềm:
#include<reg52.h>
#include<stdio.h>
sbit role = P1^4;
sbit menu =P1^5;
sbit tang = P1^6;
sbit giam = P1^7;
unsigned int vi_tri;
unsigned long k;
unsigned char
so[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned int gio,phut,giay,giay1;
void set_time (void);
void delay_ms (unsigned int time);
void clear (void);
void quet_gio (void);
void quet_phut (void);
void quet_giay (void);
void gio_phut_giay (void);
void set_gio (void);
void set_phut (void);
void set_giay(void);
void set_giay1(void);
void scan_vitri (void);
void down_time (void);
//====================================
void main (void)

{ role=0;
set_time();
while (1)
{
16
VT=3-chỉnh giây
VT=5: bắt đầu cho phép ngắt = timer 1. bắt đầu
( tiếp tục) đếm lùi thời gian
Trường ĐHCN Hà Nội Khoa điện tử

if (menu ==0)
{
while (menu ==0);
EA=0;TR1=0;
vi_tri =vi_tri+1;
if (vi_tri ==5)
{vi_tri=0;
IE=0X88;
EA=1;
TF1 =0;TR1=1;
}
}
scan_vitri();
}
}
void set_time (void) // dat gia tri ban dau cho cac led 7 thanh
{
gio = 1; giay1=5;
phut = 1;
giay = 10;

k = 0 ; vi_tri = 0 ;
IE = 0X88; //CHO PHEP NGAT BANG TIMER 1
TMOD = 0X10;
//EA = 1 ;
TH1 = -1000/256;
TL1 = -1000%256;
TR1 = 1 ;
TF1 = 1 ;
}
void delay_ms (unsigned int time) //ham tre cho quet led
{
unsigned int i;

for (i=time;i>0;i )
{TMOD=0X01;
TH0=-1000/256; //tao tre 1ms
TL0=-1000%256;
TR0=1;
while (!TF0);
TR0=0;
TF0=0;
}}
void clear (void)
{
P0=0XFF;
P2=0XFF;
delay_ms (3);
}
void quet_gio (void)
{

clear();
P2=0X7F; //1
P0=so[gio/10]; delay_ms(2);
clear();
P2=0XBF; //2
17
Trường ĐHCN Hà Nội Khoa điện tử

P0=so[gio%10]; delay_ms(2);
}
void quet_phut (void)
{
clear();
P2=0XDF; //3
P0=so[phut/10];delay_ms(2);
clear();
P2=0XEF; //4
P0=so[phut%10];delay_ms(2);
}
void quet_giay (void)
{
clear();
P2=0XF7; //5
P0=so[giay/10];delay_ms(2);
clear();
P2=0XFB; //6
P0=so[giay%10];delay_ms(2);
}
void quet_giay1(void)
{

clear();
P2=0XFD;
P0=so[giay1/10];delay_ms(2); //7
clear();
P2=0XFE;
P0=so[giay1%10];delay_ms(2);//8
}
void gio_phut_giay (void)
{
quet_gio();
quet_phut();
quet_giay();
quet_giay1();
}
//=====================================
void set_gio (void)
{if (tang ==0)
{while (tang==0);
gio = gio+1;
if (gio>=24) gio = 0;
}
if (giam==0)
{while (giam ==0);
gio = gio -1;
if (gio==-1) gio=23;
}
}
void set_phut (void)
{if (tang ==0)
{while (tang==0);

phut = phut +1;
if (phut>=60) phut=0 ;
}
if (giam ==0)
18
Trường ĐHCN Hà Nội Khoa điện tử

{while (giam ==0 );
phut = phut-1;
if (phut==-1) phut=59 ;
}
}
void set_giay (void)
{if (tang==0)
{while (tang==0);
giay=giay+1;
if(giay>=60) giay=0 ;
}
if (giam==0)
{while (giam==0) ;
giay=giay-1 ;
if(giay==-1) giay=59 ;
}
}
void set_giay1 (void)
{ if(tang==0)
{while(tang==0);
giay1=giay1+1;
if (giay1==10) giay1=0;
}

if (giam==0)
{while (giam==0);
giay1=giay1-1;
if (giay1==-1) giay1=9;
}
}
void scan_vitri (void)
{

if (vi_tri==1)
{set_gio();quet_gio();

}
if (vi_tri==2)
{set_phut();quet_phut();

}
if (vi_tri==3)
{set_giay(); quet_giay();}
if (vi_tri==4)
{ set_giay1(); quet_giay1();}

}
void down_time (void) //chay giam gio_phut_giay
{giay1 = giay1-1;
if (giay1==-1)
{ giay1=9; giay=giay -1;
if (giay ==-1)
{ giay=59; phut = phut-1;
if (phut==-1)

{ phut=59;gio=gio-1;
if (gio==-1)
{gio=phut=giay=giay1=0;
19
Trường ĐHCN Hà Nội Khoa điện tử

role=1; // dong relay
}
}
}
}
}
//======================================================
void ngatT1 (void) interrupt 3 //ham ngat do timer 1
{
TR1=0; TF1=0;
k=k+2;
if(k>=3) // 1/10 S (chinh tan so tang giay1)
{
down_time();
k=0;
}
gio_phut_giay ();
TR1 =1;
}
20
Trng HCN H Ni Khoa in t

Chơng III
Kết luận

Với sản phẩm bộ hẹn giờ này, u điểm là có thể lập trình đợc đơn giản cho chip.
Nhng nhợc điểm của sản phẩm này vẫn còn:
1- thời gian chạy cha chính xác.
2- bộ hiển thị vẫn còn nháy 1 chút và sáng mờ.
Dựa vào những nhợc điểm này, ta có thể cảI tiến bằng cách: dùng hệ điều hành thời
gian thực, đa nhiệm thì sẽ giải quyết đợc vấn đề độ chính xác của thời gian.

21

×