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

ĐỒ ÁN-Nghiên cứu và thiết kế mạch đo và điều khiển tốc độ động cơ 1 chiều

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 (753.84 KB, 20 trang )

LỜI NÓI ĐẦU
Trong quá trình sản xuất hiện đại, đo tốc độ động cơ là việc làm không thể thiếu,
nó giúp cho quá trình giám sát sản xuất nhah hơn, tốt hơn,cho ra những sản
phẩm như ý, chính xác. Nếu ta không đo được tốc độ của động cơ thì không thể
điều khiển tốc độ chính xác được. Với những máy móc hiện đại như ngày nay,
trong quá trình sản xuất luôn chạy với nhiều tốc độ khác nhau, tùy theo mỗi giai
đoạn làm việc của nó, chính vì thế mà ta cần phải biết tốc độ động cơ là bao
nhiêu để điều chỉnh cho phù hợp.Từ lâu con người đã nghiên cứu chế tạo ra
những máy đo tốc độ và được sử dụng rộng rãi. Trong các hệ truyền động kinh
điển người ta dùng
máy phát tốc đo tốc độ động cơ, máy phát tốc một chiều hay xoay chiều thực
chất cũng chỉ là máy phát điện công suất nhỏ, có suất điện động ra tỷ lệ với tốc
độ cần đo. Về sau nền sản xuất công nghiệp ngày càng phát triển hiện đại người
ta bắt đầu nghiên cứu và cho ra đời các máy đo tốc độ có độ chính xác cao hơn
như máy đo góc tuyệt đối, máy đo sử dụng cảm biến quang tốc độ với đĩa giải
mã …Trong quá trình ngồi trên ghế trường đại học em đã được trang bị một số
kiến thức về lĩnh vực này, thấy được tầm quan trọng của nó và để tìm hiểu kỹ
hơn thầy giáo đã giao cho em bài tập “ Thiết kế hệ thống đo tốc độ động cơ sử
dụng encoder hiển thị trên máy tính“ để làm cơ sở cho sự phát triển các môn
chuyên ngành. Đề tài này cũng không có gì mới mẻ nhưng em nghĩ tuy cũ mà
mình chưa nghiên cứu thì với mình
nó vẫn là mới như thường,với lại tầm quan trọng của nó là rất lớn, trong quá
trình làm việc sau này chắc chắn sẽ còn gặp thường xuyên nên phải nghiên cứu
để nắm vững.Máy đo tốc độ trên thị trường ngày nay rất đa dang và hiện đại có
độ chính xác cao, những chiếc máy này được ra đời và hoàn thiện dần trong
chuỗi thời gian rất lâu, các công ty sản xuât nó đã bỏ rất nhiều thời gian và tiền
bạc để nghiên cứu chế tạo. Với kiến thức của một sinh viên, và thời gian có hạn
em không thể nào đem sản phẩm của mình so sánh được. Tuy nhiên em sẽ dành
tất cả kiến thức và thời gian mà mình có được để hoàn thành đề bài mà thầy giáo
giao cho một cách tốt nhất, và xem đó như là một cơ hội để học tập và kiểm tra
lại kiến thức mà mình đã học, vì vậy bài làm của em vẫn còn nhiều sai sót mong


quý thầy cô thông cảm. Em xin chân thành cảm ơn sự giúp đỡ tận tình của các
thầy các cô trong khoa, đặc biệt là thầy PHẠM TUẤN ANH đã giúp em hoàn
thành bài tập này.
Em xin chân thành cám ơn !
PHẦN I: GIỚI THIỆU CHUNG
I.1. Giới thiệu về vi điều khiển AT89S52:
1.
Cấu trúc phần cứng .
 Nhóm chân điều khiển vào/ra:
+Port 0: Gồm 8 chân(từ 32 đến 39) có hai chức năng:
-Chức năng xuất/nhập: Các chân này được dùng để nhận tín hiệu bên ngoài vào
để xử lí hoặc dùng để xuất tín hiệu ra bên ngoài.


-Chức năng là bus dữ liệu hoặc bus địa chỉ (lấy dữ liệu từ ROM hoặc RAM
ngoại,còn được dùng để định địa chỉ của bộ nhớ ngoài.
+Port 1: Gồm 8 chân(từ chân 1 đến chân 8):Có chức năng làm các đường xuất
nhập,không có chức năng khác.
+Port 2: Gồm 8 chân(từ chân 21 đến chân 28): có hai chức năng:
-Chức năng xuất nhập.
-Chức năng là bus địa chỉ cao:Khi kết nối với bộ nhớ ngoài có dung lượng lớn,
cần 2 Byte để định địa chỉ của bộ nhớ.Byte thấp do P0 đảm nhận,byte cao do P2
đảm nhận.
+Port 3: Gồm 8 chân (từ chân 10 đến chân 17):
-Chức năng xuất nhập.
-Port 3còn dùng phục vụ các chức năng đặc biệt của CPU:
P3.0: RXD (serial input port)-Chân phát dữ liệu của port nối tiếp
P3.1: TXD (serial output port)-Chân thu dữ liệu của port nối tiếp
P3.2: INT0 (external interrupt 0)-Ngõ vào ngắt ngoài 0
P3.3: INT1 (external interrupt 1)-Ngõ vào ngắt ngoài 1

P3.4: T0 (timer 0 external input)-Ngõ vào bộ định thời đếm 0
P3.5: T1 (timer 1 external input)- Ngõ vào bộ định thời đếm 1
P3.6: WR (external data memory-write strobe)-Điều khiển ghi dữ liệu vào RAM
ngoài
P3.7: RD (external data memory-read strobe)- -Điều khiển đọc dữ liệu vào RAM
ngoài
 Nhóm chân nguồn:
-VCC:chân 40,điện áp cung cấp 5VDC.
-GND:chân 20, nối Mass.
 Nhóm chân dao động:
Gồm chân 18 và chân 19( XTAL1 và XTAL2 ),cho phép ghép nối thạch anh vào
mạch dao động bên trong vi điều khiển,được sử dụng để nhận nguồn xung clock
từ bên ngoài để hoạt động,thường được ghép nối với thạch anh và các tụ để tạo
nguồn xung clock ổn định.
XTAL1: Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo
xung clock bên trong.
XTAL2:Ngõ ra từ mạch khuếch đại dao động đảo.
 Nhóm chân chọn bộ nhớ chương trình:
Chân 31 (EA/VPP): Dùng để xác định chương trình thực hiện được lấy từ RAM
nội hay RAM ngoại.
-Chân 31 nối mass: Sử dụng bộ nhớ bên ngoài vi điều khiển.
-chân 31 nối VCC: Sử dụng bộ nhớ chương trình (4Kb) bên trong vi điều khiển
 RST(chân RESET): Ngõ vào RST ở chân 9 là ngõ vào reset dùng để thiết
lập trạng thái ban đầu cho vi điều khiển.Hệ thống sẽ được thiết lập lại các giá trị
ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kỳ máy.
 Chân cho phép bộ nhớ chương trình PSEN(program store enable):
Tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ ngoài.Chân này
thường được nối với chân OE của ROM ngoài.



 Chân ALE(Cho phép chốt địa chỉ -chân 30)
Khi vi điều khiển truy xuất bộ nhớ từ bên ngoài,P0 vừa có chức năng là bus địa
chỉ vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu và địa
chỉ.Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường
địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt.Các xung tín hiệu
ALE có tốc độ bằng 1/6 lần tốc độ dao động đưa vào vi điều khiển ,như vậy có
thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của
hệ thống
Sơ đồ chân AT89S52:

2.

Cấu trúc bên trong .


Phần chính của vi điều khiển AT89S52 là bộ xử lí trung tâm(CPU) 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à chia
-Đơn vị logic học(ALU)
-Từ trạng thái chương trình(PSW)
-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.
I.2. Giới thiệu về encoder:
+Khái niệm:
-Encoder là đo lường dịch chuyển thẳng hoặc góc.Đồng thời chuyển vị trí góc
hoặc vị trí thẳng thành tín hiệu nhị phân và nhờ tín hiệu này có thể xác định
được vị trí trục hoặc bàn máy.Tín hiệu ra của encoder cho dưới dạng tín hiệu
số.Encoder được sử dụng làm phần tử chuyển đổi tín hiệu phản hồi trong các



máy CNC và robot. Trong máy công cụ điều khiển số,chuyển động của bàn máy
được dẫn động từ một động cơ qua đai ốc tới bàn máy.Vị trí của bàn máy có thể
xác định được nhờ encoder lắp trong cụm truyền dẫn.
+Mục đích: Dùng để quản lí vị trí góc của một đĩa quay.Đĩa quay có thể là bánh
xe trục động cơ,hoặc bất kì thiết bị quay nào cần xác định vị trí góc.Trong các
bài toán đo tốc độ động cơ,trong các máy CNC dùng để xác định khoảng dịch
chuyển của một đối tượng thông qua đếm số vòng quay của trục.
+Phân loại:
-Encoder tuyệt đối : Sử dụng đĩa theo mã nhị phân hoặc mã Gray
-Encoder tương đối: Có tín hiệu tăng dần hoặc theo chu kì:
--Encoder tương đối kiểu thẳng
--Encoder tương đối kiểu quay
+Cấu tạo của encoder:
-Gồm một bộ phát sáng(led phát),một bộ thu ánh sáng nhạy từ ánh sáng của bộ
phát(bộ thu thường là photodiode hoặc phototransistor). Một hay hai đĩa quang
gắn trên trục quay đặt giữa bộ phát và thu,thông thường trục quay này sẽ được
gắn với trục quay của đối tượng cần đo tốc độ.

+Nguyên tắc hoạt động:
-Nguyên lí cơ bản của encoder đó là một đĩa tròn xuay,quay quanh trục.Trên đĩa
có các lỗ(rãnh).Người ta dùng một đèn led để chiếu lên mặt đĩa.Khi đĩa quay,chỗ
không có lỗ(rãnh) đèn led không chiếu xuyên qua được,chỗ có lỗ (rãnh) đèn led
sẽ chiếu xuyên qua.Khi đó,phía mặt bên kia của đĩa,người ta đặt một con mắt
thu.Với các tín hiệu có hoặc không có ánh sáng chiếu qua,người ta ghi nhận đèn
led có chiếu qua lỗ hay không.Số xung đếm được và tăng lên nó tính bằng số lần
ánh sáng bị cắt.Như vật encoder sẽ tạo ra tín hiệu xung vuông và các tín hiệu
xung vuông này được cắt từ ánh sáng xuyên qua lỗ.Tần số của xung đầu ra phụ
thuộc vào tốc độ quay của đĩa quay.

+Encoder tương đối kiểu quay :
-Ở encoder tương đối đĩa mã hóa gồm một dải băng tạo xung.Trên dải băng này
được chia ra thành nhiều lỗ bằng nhau và cách đều nhau.Khi đĩa quay qua một
lỗ thì led thu nhận được tín hiệu từ led phát thì encoder tăng lên một giá trị trong
biến đếm.Chẳng hạn như đĩa mã hóa gồm 360 lỗ,khi đĩa quay qua 90 lỗ thì led
thu nhận được 90 lần tín hiệu do đó biến đếm sẽ tăng lên 90.Từ đó ta biết được
đĩa đã quay được một góc là 90 độ. Tuy nhiên, một vấn đề là làm sao để biết được
encoder quay hết một vòng? Nếu cứ đếm vô hạn như thế này, thì chúng ta không thể biết được
khi nào nó quay hết một vòng. Nếu bây giờ các bạn đếm số lỗ encoder để biết nó đã quay một


vòng, thì nếu với encoder 1000 lỗ
Đĩa encoder tương đối kiểu quay

chắc các bạn sẽ đếm đến sáng
luôn.Chưa kể, mỗi lần có những rung
động nào đó mà ta không quản lý
được, encoder sẽ bị sai một xung.
Khi đó, nếu hoạt động lâu dài, sai số
này sẽ tích lũy, ngày hôm nay sai
một xung, ngày hôm sau sai một
xung. Đến cuối cùng, có thể động cơ
quay 2 vòng rồi các bạn mới đếm được 1
vòng.
-Để tránh điều tai hại này xảy ra, người
ta đưa vào thêm một lỗ định vị để đếm số vòng đã quay của encoder.
Như vậy, cho dù có lệch xung, mà chúng ta

Đĩa quay encoder có lỗ định vị


thấy rằng encoder đi ngang qua lỗ định vị này, thì chúng ta sẽ biết là encoder đã
bị đếm sai ở đâu đó. Nếu vì một rung động nào đó, mà chúng ta không thấy
encoder đi qua lỗ định vị, vậy thì từ số xung, và việc đi qua lỗ định vị, chúng ta
sẽ biết rõ hiện tượng sai của encoder.
I.3.Các linh kiện sử dụng trong mạch
1Điện trở:

-Điện trở là linh kiện thụ động có tác dụng cản trở cả dòng và áp.
-Điện trở được sử dụng rất nhiều trong các mạch điện tử.
R=.l/S
+Trong đó: là điện trở suất của vật liệu
-S là thiết diện của cuộn dây
-l là chiều dài của cuộn dây
-Điện trở là đại lượng vật lí đặc trưng cho khả năng cản trở dòng điện của một
vật thể dẫn điện.Nó được định nghĩa là tỉ số của hiệu điện thế giữa hai đầu vật
thể đó và cường độ dòng điện đi qua nó.

2-

Thạch anh 12Mhz:


3-

-Là nguồn tạo xung nhịp dao động
clock ổn định 12Mhz cho dao động của AT89S52.Thạch anh sẽ được gắn vào
chân XTAL1 và XTAL2.
Triết Áp Đơn.
-Là một điện trở thay đổi được có tác dụng thay đổi điện áp theo yêu cầu của
người sử dụng.


1- Tụ điện .

-Lọc nhiễu cho dao động thạch anh.Hai tụ gốm 33pF sẽ được nối một đầu với
chân thạch anh,đầu kia nối vào Mass.
-Tụ điện là một linh kiện thụ động,cấu tạo của tụ điện gồm hai bản cực kim loại
ghép cách nhau một khoảng d ở giữa hai bản tụ là dung dịch hay chất điện môi
cách điện có điện dung C.Đặc điểm của tụ là cho dòng điện xoay chiều đi
qua,ngăn cản dòng điện một chiều.
+Công thức tính điện dung của tụ: C=.S/d
-Trong đó: là hằng số điện môi


-S là diện tích bề mặt tụ
-D là bề dày chất điện môi
-Tụ điện phẳng gồm hai bàn phẳng kim loại diện tích đặt song song và cách
nhau một khoảng d.
-Cường độ điện trường bên trong tụ có trị số:
E=
-Trong đó: =8.86. /N.
- là hằng số điện môi tương đối của môi trường đối với chân không
2- Led đơn.

Led là một dạng diode phát quang,khi phân cực thuân thì led phát sáng,phân cực
ngược thì led không sáng.
3-

Led 7 đoạn 4 số.
1.Cấu tạo:



-LED 7 đoạn 4 số cấu tạo từ 4 led 7 đoạn đơn.
- Led 7 đoạn có cấu tạo bao gồm 7 led đơn xếp theo hình phía trên và có thêm
một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7
thanh.
- 8 led đơn trên led 7 thanh có Anode (cực +) hoặc Cathode (cực -) được nối
chung với nhau vào một điểm và được đưa chân ra ngoài để kết nối với mạch
điện. 7 cực còn lại trên mỗi led đơn của led 7 đoạn và 1 cực trên led đơn ở góc
dưới, bên phải của led 7 đoạn được đưa thành 8 chân riêng để điều khiển cho led
sáng tắt theo ý muốn.


- Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với +Vcc,
các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ
sáng khi tín hiệu đặt vào các chân này ở mức 0.
- Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối xuống
Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của
các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1.
2.Mã led 7 thanh
- Mã LED 7 đoạn có Anode chung, muốn thanh nào sáng ta xuất ra chân
Cathode của LED đơn đó mức 0. Từ đó ta có bảng giải mã LED 7 đoạn Anode
chung như sau:

- Mã LED 7 đoạn Cathode chung, muốn thanh nào sáng ta xuất ra chân Anode
của LED đơn đó mức 1. Từ đó ta có bảng giãi mã LED 7 đoạn Cathode chung
như sau:


-3.Phương pháp quét led:



+ Ở trên là sơ đồ xung của phương pháp quét led ( 2 led ).

+ Ở hình trên là sơ đồ xung của phương pháp quét 4 led.
- Như vậy so sánh 2 giản đồ ta nhận thấy bản chất của phương pháp quét led là
trong một thời điểm chỉ có 1 led 7seg sáng. Hay nói cách khác là trong một chu
kì T các led thay nhau lần lượt sáng. Điều đó sẻ làm cho việc đưa mã hiển thị ra
led 1 cách dể dàng, code ngắn gọn và đở tiêu tốn nhiều công suất và VDK sẻ
đảm nhận nhiệm vụ quét này thông qua ngôn ngử lập trình.
- Nếu quét 2 led thì 2 chân của VDK sẻ đảm nhận nhiệm vụ đống mở điện cấp
cho led còn 8 chân sẻ đưa data ra led.
- Nếu quét 4 led thì 4 chân của VDK sẻ đảm nhận nhiệm vụ đống mở điện cấp
cho led còn 8 chân sẻ đưa data ra led.
- Tương tự cho số led >4 nhưng phải đảm bảo đủ chân dùng VDK bằng cách này
và tần số quét phù hợp.
8-Ổn áp LM7805.
+Chức năng:
-LM78xx là loại dòng IC dùng để ổn định điện áp dương đầu ra, với điều kiện
đầu vào luôn luôn > đầu ra 3V.
-Tùy loại IC 78xx mà nó ổn áp đầu ra là bao nhiêu.


-Họ IC 78xx gồm có 3 chân :
--Chân 1 (Vin): Chân nguồn đầu vào
--Chân 2 (GND): Chân nối đất
--Chân 3 (Vout): Chân nguồn đầu ra.

LM7805

Cấu tạo trong


Sơ đồ chân

4- 7404
-7404 là loại IC cổng thuộc họ TTL, bên trong nó gồm 6 cổng đảo.
-Khi số lượng cổng được sử dụng ít hơn 6 thì ở các cổng không sử dụng ta nên
nối nó lên +VCC hay nối xuống mass qua một điện trở khoảng vài trăm Ω đến
1KΩ để các cổng không sử dụng này không gây nhiễu đến quá trình làm việc
của các cổng khác.
IC 7404 cần nguồn nuôi chuẩn 5V.
IC 7404 có sơ đồ chân như sau:

CHƯƠNG II: THIẾT KẾ VÀ THI CÔNG MẠCH
II.1.Thiết kế phần cứng.
1. Sơ đồ khối của sản phẩm .


1. Chức năng các khối .

Khối nguồn : Là hệ thống điện áp cung cấp cho mạch,giúp mạch luôn hoạt
động,điện áp cung cấp cho mạch là 5V.Ở mạch này sử dụng nguồn 5V từ sạc
điện thoại.
ĐC Encoder : Là động cơ cần đo tốc độ.Động cơ encoder sẽ phát ra tín hiệu
dạng xung đưa đến khối xử lí.Ở đây sử dụng động cơ 32 xung.
Khối xử lí : Là bộ phận gồm 2 chức năng:
+Phối ghép các khối khác nhau trong mạch,giúp cho các khối hoạt động theo
một chu trình nhất định.
+Nhận tín hiệu từ ĐC Encoder rồi xử lí đưa tín hiệu ra khối hiển thị.
Khối hiển thị: Bao gồm hệ thống LED 7 thanh 4 số và led báo hiệu
+Hệ thống led 7 thanh hiển thị tốc độ động cơ.

+Hệ thống led đơn báo hiệu mức độ quay của động cơ.
2. Sơ đồ nguyên lý của mạch .


3. Nguyên lí hoạt động:
-Khi nguồn được cấp vào mạch sẽ làm sáng led đơn báo có nguồn rồi đi qua ổn
áp lm7805 qua tụ lọc và cung cấp nguồn cho hệ thống.
-Động cơ Encoder được cấp nguồn qua triết áp 5K.Tốc độ động cơ encoder có
thể được thay đổi bằng triết áp.Khi động cơ quay xung tín hiệu được đưa đến
chấn 12 của vi điều khiển.
-Vi điều khiển sẽ xử lí tín hiệu nhận được từ chân 12 để hiển thị tốc độ động cơ
trên led 7 thanh qua Port1 và Port 2.
-Khi tốc độ động cơ <9 thì led báo sẽ sáng xanh, trong khoảng 9-99 thì sáng
them led xanh da trời.từ 99-999 sáng them led vàng.và từ 999-9999 sáng them
led đỏ.led xanh cuối sáng liên tục theo tần số xung động cơ.

II.2. Thiết kế phần mềm

/
**************************************************************
****************
Chip type
: STC89S52
Program type
: Application
Clock frequency
: 12 MHz
Project
: DO TOC DO DONG CO
Version

: V1.0


Comments: Chuong trinh viet do toc do dong co mot chieu
Dau ra Encorder duoc dua vao chan ngat INT0
Encoder su dung la Encoder 32 xung
**************************************************************
****************/
#include<regx52.h>
#define Outled P0
#define true 1
#define false 0
#define THx
15536/256
#define TLx 15536%256
sbit E0
= P1^0;
sbit E1
= P1^1;
sbit E2
= P1^2;
sbit E3
= P1^3;
sbit L0 = P2^0;
sbit L1 = P2^1;
sbit L2 = P2^2;
sbit L3 = P2^3;
sbit L4 = P2^1;
sbit L5 = P2^2;
sbit L6 = P2^3;

sbit L7 = P2^7;
sbit Sp = P1^5;
bit chuki=false;
unsigned char k;
unsigned int Soxung,Demxung,Vong,n;
unsigned char time=0;
unsigned char
CharCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9
0};//for number 0->9
void Sys_init();
void Display(unsigned int dem);
/
**************************************************************
****************
Chuong trinh ngat INT0
**************************************************************
****************/
void NGAT0(void) interrupt 0
{
Demxung++;
//L7=!L7;
}
/
**************************************************************
****************
Chuong trinh ngat timer1 thoi gian tran 0.05s
**************************************************************
****************/
void ngat_time1(void) interrupt 3
{



time++ ;//tang bien dem thoi gian
if(Demxung>0) L7=!L7;
else if(Demxung==0) {L7=1;chuki=true;}
if(time==80)//TIME = 4s chuan
{
TR1=0;
//dung bo dinh thoi
chuki=true; //bao het thoi gian dem xung
time=0;
}
TH1=THx;TL1=TLx;//dat cho lan sau
}
/
**************************************************************
****************
Chuong trinh tre
**************************************************************
****************/
void delay_us(unsigned long int d)
{
for(n=0;n}
/
**************************************************************
****************
Chuong trinh hien thi Led 7 doan
**************************************************************
****************/

void Display(unsigned int dem)
{
if(dem>=9999)//hien thi 4 so khi gia tri hien thi > 9999
{
dem=9999;
L0=L1=L2=L3=0;
E0=0;
Outled=CharCode[dem/1000];
delay_us(1);
E0=1;
P0=0XFF;
E1=0;
Outled=CharCode[(dem%1000)/100];
delay_us(1);
E1=1;
P0=0XFF;
E2=0;
Outled=CharCode[(dem%100)/10];
delay_us(1);
E2=1;
P0=0XFF;
E3=0;
Outled=CharCode[dem%10];


delay_us(1);
E3=1;
P0=0XFF;
}
else if((dem<=999)&&(dem>99)) //hien thi 3 so khi

gia tri hien thi <999
{
L0=L1=L2=0;L3=1;
E0=1;
E1=0;
Outled=CharCode[(dem%1000)/100];
delay_us(1);
E1=1;
P0=0XFF;
E2=0;
Outled=CharCode[(dem%100)/10];
delay_us(1);
E2=1;
P0=0XFF;
E3=0;
Outled=CharCode[dem%10];
delay_us(1);
E3=1;
P0=0XFF;
}
else if((dem<=99)&&(dem>9)) //hien thi 2 so khi gia
tri hien thi <99
{
L0=L1=0;L2=L3=1;
E1=E0=1;
E2=0;
Outled=CharCode[(dem%100)/10];
delay_us(1);
E2=1;
P0=0XFF;

E3=0;
Outled=CharCode[dem%10];
delay_us(1);
E3=1;
P0=0XFF;
}
else if((dem<=9))//hien thi 1 so khi gia tri hien
thi <9
{
L0=0;L1=L2=L3=L4=L5=L6=1;
E2=E1=E0=1;
E3=0;
Outled=CharCode[dem%10];
delay_us(1);
E3=1;


P0=0XFF;
}
}
/
**************************************************************
****************
Chuong trinh chinh
**************************************************************
****************/
void main(void)
{
Sys_init(); // goi chuong trinh khoi tao
P2=0X00;

Sp=0;
delay_us(8000);
Sp=1;
P2=0XFF;
while(true)
{
while(!chuki)
{
Vong=(Soxung/200)*15; // soxung(trong 4s)*15
= so vong trong 1phut
Display(Vong);
};
Soxung= Demxung;//luu gia tri so xung vua dem
Demxung=0;
//dat lai so xung
TR1=1;
//dat lai thoi gian
chuki=false;
};
}
/
**************************************************************
****************
Chuong trinh khoi tao
**************************************************************
****************/
void Sys_init()
{
TMOD=0x10;
//cho time1 chay

EX0=1;
//cho phep ngat ngoai 1
IT0=1;
//cho phep ngat suon am
TH1=THx;TL1=TLx;//dat gia tri cho time 1
TR1=1;
//dat thoi gian bat dau chay
ET1=1;
//cho phep ngat time 1
EA=1;
//cho phep ngat toan cuc
}




×