Thiết kế mạch đo tốc độ động cơ sử dụng vi điều khiển AT89C51
CHƯƠNG I: GIỚI THIỆU CHUNG
I. ĐẶT VẤN ĐỀ:
Ngày nay, hầu như trong bất cứ ngành kinh tế kỹ thuật nào nhất là các ngành công nghiệp, ở đâu cũng áp dụng kỹ thuật tự động hoá và vì thế đã làm thay đổi diện mạo nhiều ngành sản xuất, dịch vụ. Đã xuất hiện những nhà máy không có người, văn phòng không có giấy, cuộc chiến không có lính, rồi đến những thuật ngữ máy thông minh, thiết bị thông minh v.v.
Tóm lại “tự động hoá” có mặt ở hầu hết các ngành kinh tế kỹ thuật, có vị trí chủ đạo trong sự phát triển của các ngành đó và có thể nói một cách hình ảnh là “tự động hoá” đã “nhúng” phổ biến trong quản lý công nghệ, quản lý sản xuất và quản lý hành chính. “Tự động hoá” là cầu nối để các thành tựu của công nghệ thông tin biến thành hiện thực trong sản xuất và đời sống xã hội. “Tự động hoá” phải am hiểu từng ngóc ngách đến toàn thể quá trình công nghệ. “Tự động hoá” phải tiếp cận từ hệ thống toàn cục đến từng chi tiết cụ thể của vấn đề mà nó đang hiện thực.
Các phương tiện như ô tô, xe máy, các động cơ dùng trong xí nghiệp . khi vận hành đều cần độ chính xác cao, nên việc sử dụng các thiết bị đo là rất quan trọng, đề tài “Thiết kế mạch đo tốc độ động cơ sử dụng vi điều khiển AT89C51” dưới đây được nghiên cứu và thực hiện với mục đích trên.
II. PHƯƠNG PHÁP THIẾT KẾ:
Có 2 phương pháp đo tốc độ động cơ phổ biến đó là:
- Phương pháp dùng ecoder.
- Phương pháp dùng cảm biến tiêm cận.
Nhóm đã thảo luận và chọn nội dung của đề tài như sau:
- Động cơ sử dụng cảm biến tiệm cận.
- Nghiên cứu và tìm phương án để xử lý xung từ cảm biến tiệm cận.
- Dùng các phương pháp hiển thị ra led 7 đoạn.
- Thi công phần cứng.
III. MỤC ĐÍCH ĐỀ TÀI:
Thông qua quá trình nghiên cứu và thực hiện đề tài này đã giúp chúng em:
- Tăng khả năng tự nghiên cứu cũng như tự học.
- Bước đầu tiếp xúc với thực tế.
- Vận dụng những kiến thức đã có đồng thời tìm tòi những kiến thức mới để hiểu sâu sắc hơn trong lĩnh vực này.
---------------------------------------
---------------------------------------
---------------------------------------
(Có kèm hình ảnh sản phẩm và mạch in)
29 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2833 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Thiết kế mạch đo tốc độ động cơ sử dụng vi điều khiển AT89C51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG I: GIỚI THIỆU CHUNG
I. ĐẶT VẤN ĐỀ:
Ngày nay, hầu như trong bất cứ ngành kinh tế kỹ thuật nào nhất là các ngành công nghiệp, ở đâu cũng áp dụng kỹ thuật tự động hoá và vì thế đã làm thay đổi diện mạo nhiều ngành sản xuất, dịch vụ. Đã xuất hiện những nhà máy không có người, văn phòng không có giấy, cuộc chiến không có lính, rồi đến những thuật ngữ máy thông minh, thiết bị thông minh v.v.
Tóm lại “tự động hoá” có mặt ở hầu hết các ngành kinh tế kỹ thuật, có vị trí chủ đạo trong sự phát triển của các ngành đó và có thể nói một cách hình ảnh là “tự động hoá” đã “nhúng” phổ biến trong quản lý công nghệ, quản lý sản xuất và quản lý hành chính. “Tự động hoá” là cầu nối để các thành tựu của công nghệ thông tin biến thành hiện thực trong sản xuất và đời sống xã hội. “Tự động hoá” phải am hiểu từng ngóc ngách đến toàn thể quá trình công nghệ. “Tự động hoá” phải tiếp cận từ hệ thống toàn cục đến từng chi tiết cụ thể của vấn đề mà nó đang hiện thực.
Các phương tiện như ô tô, xe máy, các động cơ dùng trong xí nghiệp... khi vận hành đều cần độ chính xác cao, nên việc sử dụng các thiết bị đo là rất quan trọng, đề tài “Thiết kế mạch đo tốc độ động cơ sử dụng vi điều khiển AT89C51” dưới đây được nghiên cứu và thực hiện với mục đích trên.
II. PHƯƠNG PHÁP THIẾT KẾ:
Có 2 phương pháp đo tốc độ động cơ phổ biến đó là:
- Phương pháp dùng ecoder.
- Phương pháp dùng cảm biến tiêm cận.
Nhóm đã thảo luận và chọn nội dung của đề tài như sau:
- Động cơ sử dụng cảm biến tiệm cận.
- Nghiên cứu và tìm phương án để xử lý xung từ cảm biến tiệm cận.
- Dùng các phương pháp hiển thị ra led 7 đoạn.
- Thi công phần cứng.
III. MỤC ĐÍCH ĐỀ TÀI:
Thông qua quá trình nghiên cứu và thực hiện đề tài này đã giúp chúng em:
- Tăng khả năng tự nghiên cứu cũng như tự học.
- Bước đầu tiếp xúc với thực tế.
- Vận dụng những kiến thức đã có đồng thời tìm tòi những kiến thức mới để hiểu sâu sắc hơn trong lĩnh vực này.
IV. ĐỐI TƯỢNG NGHIÊN CỨU:
- Tìm hiểu vi điều khiển 89C51.
- Các phương án xử lý dữ liệu led 7 đoạn.
- Tìm hiểu phương pháp lập trình C cho 89C51.
V. KẾT LUẬN:
Phương pháp dùng ecoder sẽ cho kết quả chính xác hơn các phương pháp còn lại nếu dùng ecoder có nhiều rãnh. Tuy nhiên, với yêu cầu của đề tài chỉ cho phép 1 xung/vòng nên dùng cảm biến tiệm cận sẽ thỏa mãn được yêu cầu của đồ án. Do đó, ta sẽ dùng phương pháp đo tốc độ động cơ bằng cảm biến tiệm cận. Điều quan trọng ở đây là phần viết chương trình để đo chính xác tốc độ động cơ với sai số 1 đơn vị.
CHƯƠNG 2: TÍNH TOÁN VÀ THIẾT KẾ:
I. SƠ ĐỒ KHỐI:
KHOÁI XÖÛ LYÙ
HIEÅN THÒ
PHÍM NHẤN
RỜ LE
CAÛM BIEÁN
II. SƠ ĐỒ VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA TỪNG KHỐI:
1.KHỐI NGUỒN:
Chức năng và sơ đồ nguyên lý:
Biến đổi nguồn có điện áp 220VAC thành nguồn có các giá trị điện áp DC cung cấp nguồn hoạt động cho các khối trong mạch. Trong đó 5VDC dùng cho vi xử lý, 12VDC và 24VDC dùng cho cảm biến và động cơ.
Từ cảm biến ta lấy điện áp ra là 24VAC qua cầu diode chuyển đổi qua điện áp một chiều, khi đó ta qua con 7805 để lấy áp 5VDC để nuôi vi xử lí, và qua 7812 và 7824 cho ra áp 12VDC và 24VDC để nuôi cảm biến và động cơ. Trong mạch có 2 con transitor 2SA1943 có tác dụng tăng dòng cho 7805 và 7812.
2. KHỐI VI XỬ LÝ:
Chức năng và sơ đồ nguyên lý:
8951 là IC vi điều khiển (Microcontroller) do hãng Intel sản xuất. IC này có đặc điểm như sau:
- 4k byte ROM,128 byte RAM
- 4 Port I/O 8 bit.
- 2 bộ đếm/ định thời 16 bit.
- Giao tiếp nối tiếp.
- 64k byte không gian bộ nhớ chương trình mở rộng.
- 64k byte không gian bộ nhớ dữ liệu mở rộng.
- Một bộ xử lý luận lý (thao tác trên các bít đơn).
- 210 bit được địa chỉ hóa.
- Bộ nhân / chia trong 4µs.
* Chức năng các chân:
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: từ chân 1 đến chân 8 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao tiếp với thiết bị ngoài nếu cần.
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng kép dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép. Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 8051 như ở bảng sau:
Bit
Tên
Chức năng chuyển đổi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INT0\
INT1\
T0
T1
WR\
RD\
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngõ vào ngắt cứng thứ 0.
Ngõ vào ngắt cứng thứ 1.
Ngõ vào TIMER/ COUNTER thứ 0.
Ngõ vào của TIMER/ COUNTER thứ 1.
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
Tín hiệu đọc bộ nhớ dữ liệu ngoài.
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình mở rộng và thường được nối đến chân OE\ của Eprom cho phép đọc các byte mã lệnh.
PSEN ở mức thấp trong thời gian 8051 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 8051 để giải mã lệnh. Khi 8051 thi hành chương trình trong ROM nội PSEN ở mức cao.
ALE (Address Latch Enable):Khi 8051 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt.
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
EA\ (External Access): Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0. Nếu ở mức 1, 8051 thi hành chương trình từ ROM nội. Nếu ở mức 0, 8051 thi hành chương trình từ bộ nhớ mở rộng. Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8051.
RST (RESET): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. Khi cấp điện mạch phải tự động reset.
Các ngõ vào bộ dao động X1, X2: Bộ tạo dao động được tích hợp bên trong 8051. Khi sử dụng 8051, người ta chỉ cần nối thêm tụ thạch anh và các tụ. Tần số của thạch anh thường là 12 Mhz còn tụ thường là 33 pF.
* Tổ chức bộ nhớ RAM:
Ram bên trong 8051 được phân chia như sau:
- Các bank thanh ghi có địa chỉ từ 00H đến 1Fh.
- Ram địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
- Ram đa dụng từ 30H đến 7FH.
- Các thanh ghi chức năng đặc biệt từ 80H đến FFH.
* Trạng thái các thanh ghi sau khi reset:
Thanh ghi
Nội dung
Đếm chương trình PC
Thanh ghi tích lũy A
Thanh ghi B
Thanh ghi trạng thái PSW
SP
DPTR
Port 0 đến Port 3
IP
IE
Các thanh ghi định thời
SCON
SBUF
0000H
00H
00H
00H
07H
0000H
FFH
XXX0 0000B
0X0X 0000B
00H
00H
00H
Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được Reset tại địa chỉ 0000H. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ 0000H của bộ nhớ chương trình. Nội dung của Ram trong chip không bị hay đổi bởi tác động của ngõ vào Reset.
* Hoạt động định thời: 8951 có hai timer 16 bit, mỗi timer có bốn 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.
Truy xuất các timer của 8951 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng sau:
SFR
Mục Đích
Địa chỉ
Địa chỉ hóa từng bit
TCON
Điều khiển Timer
88H
Có
TMOD
Chế độ Timer
89H
Không
TL0
Byte thấp của Timer 0
90H
Không
TL1
Byte thấp của Timer 1
91H
Không
TH0
Byte cao của Timer 0
92H
Không
TH1
Byte cao của Timer 1
93H
Không
Các thanh ghi chức năng của timer trong 8951.
* Hoạt động ngắt:
- Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác. Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi.
- Có 5 nguồn ngắt ở 8951: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp. Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm.
- Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE ( Interrupt Enable : cho phép ngắt ) ở địa chỉ A8H. -Các cờ ngắt:
Ngắt
Cờ
Thanh ghi SFR và vị trí bit
Bên ngoài 0
IE0
TCON.1
Bên ngoài 1
IE1
TCON.3
Timer 1
TF1
TCON.7
Timer 0
TF0
TCON.5
Port nối tiếp
TI
SCON.1
Port nối tiếp
RI
SCON.0
Các loại cờ ngắt
Các vectơ ngắt:
Ngắt
Cờ
Địa chỉ vector
Reset hệ thống
RST
0000H
Bên ngoài 0
IE0
0003H
Timer 0
TF0
000BH
Bên ngoài 1
IE1
0013H
Timer 1
TF1
001BH
Port nối tiếp
TI và RI
0023H
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này, nó giống ngắt : nó ngắt chương trình chính và nạp cho PC giá trị mới.
3. KHỐI CẢM BIẾN:
- Chức năng và sơ đồ nguyên lý:
Mạch so sánh có chức năng chủ yếu là so sánh tín hiệu ra từ cảm biến với tín hiệu ta tạo ra để hạ biên độ của xung vông từ cảm biến ra là 12V xuống còn 5V đưa vào vdk. Nếu ta đưa trực tiếp tín hiệu từ cảm biến vào VDK thì VDK sẽ chết ngay vì 89C51 chỉ nhận tín hiệu điện áp từ 4.8V đến 5.2V. Do đó, ta phải chuyển đổi tín hiệu điện áp của cảm biến cho phù hợp với VDK.
- Nguyên lý cơ bản của cảm biến từ, trên trục động cơ có gắn một miếng kim loại. Người ta dùng một cảm biến từ để đọc tín hiệu xung. Khi động cơ quay đồng nghĩa với việc miếng kim loại cũng quay theo và cảm biến nhận tín hiệu đưa vào vi điều khiển xử lí và hiển thị ra led, Với các tín hiệu có, hoặc không có xung tương ứng số lần ánh sáng bị cắt. Thông qua một OPAMP so sánh điện áp ta thu được ở ngõ ra là một chuỗi xung vuông tương đối ổn định.
- Hình ảnh cảm biến:
- Đặc tính kỹ thuật:
Phát hiện các vật thể là kim loại.
Điện áp sử dụng 12-24 VDC hay 100-240 VAC.
Khoảng cách phát hiện: 1,5- 40mm.
Dòng điện tối đa 100-400 mA.
Tần số đóng mở :100-800Hz, những loại đặc biệt có tần số cao hơn.
Tuổi thọ rất bền vì không có sự va chạm cơ khí.
Nhiệt độ làm việc: -25-70 độ C.
- Ứng dụng:
Đếm số lần làm việc của thiết bị.
Định vị hành trình xylanh trong hệ thống điện, khí nén.
Phát hiện vật thể kim loại.
Phát hiện vị trí cam trong bộ truyền động.
Đo tốc độ góc (v/p) hay tốc độ dài (m/p) của motor.
4. KHỐI HIỂN THỊ:
Gồm 5 led 7 đoạn để hiển thị thông số đã xử lý từ khối xử lý trung tâm.
LED 7 đoạn có cấu tạo bao gồm 7 LED đơn có dạng thanh xếp theo hình bên dưới 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 đoạn. 8 LED đơn trên LED 7 đoạn có Anode hoặc Cathode được nối chung với nhau (COM). 8 cực còn lại trên mỗi LED đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch điện.
Nếu LED 7 đoạn có Anode chung, COM đượ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 chung, COM đượ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.
Anode chung:
Cathode chung:
LED 7 đoạn
- Trên sơ đồ nguyên lý, LED 7 đoạn là loại Anode chung, các chân Anode chung lần lượt nối với cực C của 5 Transistor PNP (Q1,Q2,Q3,Q4,Q5), cực E của Transistor nối nguồn 5V, các cực B lần lượt nối chân P2.3, P2.4, P2.5,P2.6,P2.7, của Vi xử lí. Các chân còn lại của LED 7 đoạn được nối với Port 0 (data led).
- Phương pháp quét LED: Khi kết nối chung data LED của LED 7 đoạn như trên, ta không thể cho các LED này sáng đồng thời (do ảnh hưởng lẫn nhau giữa các LED) mà phải thực hiện phương pháp quét, nghĩa là tại mỗi thời điểm chỉ sáng một LED và tắt các LED còn lại. Do hiện tượng lưu ảnh của mắt, ta sẽ thấy các LED sáng đồng thời. Lúc này, các Transistor hoạt động giống như "công tắc". Muốn LED nào sáng thì Transistor tương ứng với LED đó phải dẫn.
- Bảng mã LED:
Số
Mã LED
ASM
C
0
005h
0x05
1
0cfh
0xcf
2
026h
0x26
3
086h
0x86
4
0cch
0xcc
5
094h
0x94
6
014h
0x14
7
0c7h
0xc7
8
004h
0x04
9
084h
0x84
CHƯƠNG 3: LƯU ĐỒ THUẬT GIẢI VÀ CHƯƠNG TRÌNH
1. LƯU ĐỒ THUẬT GIẢI:
1.Ngắt ngoài.
Begin
Vòng ++
End
2. Ngắt timer0
Begin
TH0=-50000>>8;
TL0=-50000;
tam++;
Tam==2?
tam= 0;
giatri1= vong*600;
giatri= (giatri1+giatri2)/2;
giatri2= giatri;
vong= 0;
End
No
yes
3. Ngắt timer1
Begin
TH1=-600>>8;
TL1=-600;
Cht=1?
Cht=2?
Cht=3?
hienthi=btren
hienthi=bduoi
hienthi=giatri
Chtrinh hiển thị
End
4. Chương trình chính.
Bengin
TMOD= 0x11;
TH0= -50000>>8;
TL0= -50000;
TH1= -600>>8;
TL1= -600;
IT0= 1;
ET0= 1;
ET1= 1;
EX0= 1;
EA= 1;
TR0= 1;
TR1= 1;
tam= 0;
vong= 0;
giatri= 0;
cquet= 1;
btren= 5000;
bduoi= 1000;
chthi= 1;
hienthi= 0;
i= 0;
j= 0;
k= 0;
khoa= 1;
kick0= 0;
kick1= 0;
Chương trình chtang;
Chương trình nht;
Chương trình chọn gtri tăng;
5.Chương trình chọn gtri tăng.
begin
Ctang=0?
No
Yes
K++
K=1
K=2
K=3
K=4
Chon=1
Chon=2
Chon=3
Chon=4
K=0
No
No
No
Yes
Yes
Yes
Yes
Tang=0?
Cht=2?
Cht=3?
No
Yes
Yes
No
Yes
No
Tang btren
Tang bduoi
End
Khoa=0?
No
Yes
7. Tăng btren.
Begin
Chon=1?
Chon=2
Chon=3?
Chon=4?
No
No
No
btren= btren+1
btren= btren+10
btren= btren+1000
btren= btren+100
yes
yes
yes
yes
End
.
8. Tăng bduoi.
Begin
Chon=1?
Chon=2
Chon=3?
Chon=4?
No
No
No
buoi=bduoi+1
bduoi=bduoi+10
btren= btren+100
yes
yes
yes
yes
End
bduoi=bduoi+1000
9.Chương trình nht.
Begin
Nht=0?
No
i++
i=1?
i=2?
No
No
Cht=2
Yes
Cht=3
Yes
Cht=1;
i=0;
End
10. Chương trình hiển thị.
Begin
Cquet=1?
Yes
P2=0xff;
Led=nghin;
Led1=0;
Cquet=2;
Cquet=2?
Yes
P2=0xff;
Led=nghin;
Led1=0;
Cquet=2;
Cquet=3?
Yes
P2=0xff;
Led=nghin;
Led1=0;
Cquet=2;
Cquet=4?
Yes
P2=0xff;
Led=nghin;
Led1=0;
Cquet=2;
No
No
No
End
Yes
Yes
Cht=2
No
j=2?
j=1
No
10. Chương trình chtang.
Begin
j++
khoa=0
Mode=0?
End
Cht=3;
j=0
2. CHƯƠNG TRÌNH:
#include
#define kick0 P3_7
#define kick1 P3_6
#define led5 P2_0
#define led4 P2_1
#define led3 P2_2
#define led2 P2_3
#define raled P0
#define nhthi P1_0
#define mode P1_1
#define chtang P1_2
#define tang P1_3
unsigned char donvi, chuc, tram, nghin, cnghin, chthi; //timer1
unsigned char cquet ,tam;
unsigned int vong, du, giatri1, giatri2, hienthi, btren, bduoi, giatri; //ngat0
unsigned char i, j, k, chon, khoa;
unsigned char maled[10]={0x05,0xcf,0x26,0x86,0xcc,0x94,0x14,0xc7,0x04,0x84};
void ngat0(void) interrupt 0 //ngat ngoai 0
{
vong++;
}
void timer0(void) interrupt 1 // ngat timer 0
{
TH0=-50000>>8;
TL0=-50000;
tam++;
if( tam== 2)
{
tam= 0;
giatri1= vong*600;
giatri= (giatri1+giatri2)/2;
giatri2= giatri;
vong= 0;
}
}
void timer1(void) interrupt 3 // ngat timer 1
{
TH1=-600>>8;
TL1=-600;
if(chthi==1)
{
hienthi= giatri;
}
if(chthi==2)
{
hienthi= btren;
}
if(chthi==3)
{
hienthi= bduoi;
}
nghin= hienthi/1000;
du= hienthi%1000;
tram= du/100;
du= du%100;
chuc= du/10;
donvi= du%10;
switch (cquet)
{
case 1: P2= 0xff;
raled= maled[nghin];
led2= 0;
cquet= 2;
break;
case 2: P2= 0xff;
raled= maled[tram];
led3= 0;
cquet= 3;
break;
case 3: P2= 0xff;
raled= maled[chuc];
led4= 0;
cquet= 4;
break;
default: P2= 0xff;
raled= maled[donvi];
led5= 0;
cquet= 1;
break;
}
}
void main(void)
{
TMOD= 0x11;
TH0= -50000>>8;
TL0= -50000;
TH1= -600>>8;
TL1= -600;
IT0= 1;
ET0= 1;
ET1= 1;
EX0= 1;
EA= 1;
TR0= 1;
TR1= 1;
tam= 0;
vong= 0;
giatri= 0;
cquet= 1;
btren= 5000;
bduoi= 1000;
chthi= 1;
hienthi= 0;
i= 0;
j= 0;
k= 0;
khoa= 1;
kick0= 0;
kick1= 0;
while( 1)
{
if( giatri<bduoi)
{
kick0= 1;
}
else
{
kick0= 0;
}
if( giatri>btren)
{
kick1= 1;
}
else
{
kick1= 0;
}
if( nhthi==0)
{
i++;
switch (i)
{
case 1: chthi= 2;
break;
case 2: chthi= 3;
break;
default: chthi= 1;
i= 0;
break;
}
while( nhthi==0)
{
khoa= 1;
}
}
if( mode==0)
{
j++;
switch (j)
{
case 1: chthi= 2;
break;
case 2: chthi= 3;
j= 0;
break;
}
while( mode==0)
{
khoa= 0;
}
}
if( khoa==0)
{
if( chtang==0)
{
k++;
switch (k)
{
case 1: chon= 1;
break;
case 2: chon= 2;
break;
case 3: chon= 3;
break;
case 4: chon= 4;
k= 0;
break;
}
while( chtang==0)
{
}
}
if( tang==0)
{
if( chthi==2)
{
switch (chon)
{
case 1: btren= btren+1;
break;
case 2: btren= btren+10;
break;
case 3: btren= btren+100;
break;
case 4: btren= btren+1000;
break;
}
}
if( chthi==3)
{
switch (chon)
{
case 1: bduoi= bduoi+1;
break;
case 2: bduoi= bduoi+10;
break;
case 3: bduoi= bduoi+100;
break;
case 4: bduoi= bduoi+1000;
break;
}
}
}
while( tang==0)
{
if(btren>10000)
{
btren= donvi+chuc*10+tram*100;
}
if(bduoi>10000)
{
bduoi= donvi+chuc*10+tram*100;
}
}
}
}
}
CHƯƠNG 4: KẾT LUẬN
Thời gian 6 tuần học lại môn đồ án môn học đã giúp nhóm em hiểu thêm về một đề tài mới. Với sự hướng dẫn của thầy Đặng Đắc Chi nhóm em cung đã hoàn thành tốt đề tài.
1. CÁC VẤN ĐỀ ĐÃ NGHIÊN CỨU VÀ THỰC HIỆN:
- Nghiên cứu vi điều khiển AT89C51.
- Nghiên cứu cách quét led 7 đoạn.
- Nghiên cứu ngôn ngữ lập trình C.
2. CÁC CÔNG VIỆC MÀ NHÓM ĐÃ THI CÔNG:
- Thi công mạch nguồn.
- Thi công mạch hiển thị.
- Thi công mạch vi xử lý.
- Thi công mạch so sánh opam.
- Thi công mạch role.
3. ƯU NHƯỢC ĐIỂM CỦA ĐỐ ÁN:
Ưu điểm:
Mạch hiển thị tương đối ổn định.
Thiết kế tương đối đẹp, nhỏ, gọn.
Nhược điểm:
Còn sai số tương đối.
Mô hình còn hơi bị rung, không đươc êm cho lắm.
4. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI:
Có thể thay thế công cụ hiển thị từ led 7 đoạn bằng LCD.
Có thể mở rộng trong các hệ thống công nghiệp, dùng đẻ đo tốc độ động cơ trong các công ty xí nghiệp.
Mở rộng phạm vi ứng dụng như: điều khiển, ổn định tốc độ động cơ có hiển thị, thay thế cho bộ công tơ mét cơ học trên các phương tiên giao thông…
5. LỜI CẢM ƠN:
Đề tài: “ĐO TỐC ĐỘ ĐỘNG CƠ” đã trình bày được nguyên tắc hoạt động cơ bản của xử lý số liệu và hiển thị ra led bằng vi điều khiển AT89C51, giới thiệu về cách sử dụng cũng như sơ đồ chân.
Đặc biệt, chúng em xin cảm ơn thầy Đặng Đắc Chi đã hướng dẫn, chỉ bảo những kinh nghiệm, kiến thức thực tế để đề tài được hoàn thành trong thời gian quy định.
Tuy nhiên, do còn hạn chế về trình độ và kinh nghiệm thực tế nên đề tài không tránh khỏi nhiều sai sót, nhóm rất mong nhận được sự đóng góp ý kiến chân tình của thầy các bạn để đề tài được hoàn chỉnh hơn.