LỜI MỞ ĐẦU
Ngày nay việc ứng dụng vi điều khiển, vi xử lý đang ngày càng phát triển rộng
rãi và thâm nhập ngày càng nhiều vào các lĩnh vực kỹ thuật và đời sống xã hội.Với xu
hướng tất yếu này cùng với sự phát triển mạnh mẽ của công nghệ chế tạo,người ta đã
tạo những vi điều khiển có cấu trúc mạnh hơn, đáp ứng thời gian thực tốt hơn, chuẩn
hóa hơn so với các vi điều khiển 8 bit trước đây.
Với sự phát triển mạnh mẽ của khoa học,đặc biệt là ngành điện, điện tử,sự phát
minh ra các linh kiện điện tử đã và đang ngày càng đáp ứng được yêu cầu của các hệ
thống.Ưu điểm của việc sử dụng các linh kiện điện tử làm cho các hệ thống linh hoạt
và đa dạng hơn,giá thành thấp hơn và độ chính xác cao hơn.
Sau thời gian học tập và tìm hiểu,chúng em đã được làm quen với môn học vi
xử lý và đo lường hệ thống. Để áp dụng lý thuyết với thực tế của môn học này chúng
em nhận bài tập lớn:'' thiết kế mạch mô phỏng đo và hiển thị tốc độ động cơ( có gắn
Encoder 100 xung/vòng, khoảngđo[ 0-2500vòng/phút]”.
Tuy nhiên do kiến thức còn hạn chế,tài liệu tham khảo có giới hạn nên còn có những
sai sót.Chúng em rất mong thầy,cô giáo thông cảm và giúp đỡ chúng em hoàn thiện
bài tập lớn này.
Chúng em xin chân thành cảm ơn!
MUC LUC
PhầnI. Phân tích yêu cầu công nghệ
1.1. Phân tích và giới hạn về đặc điểm thiết bị
1.2. Trình bày về phương pháp đo tốc độ dùng Encoder
PhầnII. Thiết kế hệ thống
2.1 Phân tích giới hạn và tính toán lựa chọn thiết bị
2.2 Xây dựng mạch nguyên lí và thuyết minh
2.3 Xây dựng thật toán
2.4 Viết chương trình
2.5 Sơ đồ mạch mô phỏng
Phần III. Kết luận
3.1 Các kết quả đạt được
3.2 Các hạn chế tồn tại và phương hướng khắc phục
PHẦN 1: PHÂN TÍCH YÊU CẦU CÔNG NGHỆ
1.1: Phân tích và giới hạn về đặc điểm thiết bị
Hệ thống vi điều khiển 8051 ghép nối 04 LED bảy thanh hiển thị số đo tốc độ
động cơ dùng Encoder bao gồm :
• Vi điều khiển 89C51
• Mạch truyền thông chuẩn RS 232 (dùng vi mạch MAX 232)
• 04 LED bảy thanh
• Cảm biến đo tốc độ động cơ Encoder,
• Loa cảnh báo ngưỡng thấp, cao 2 nút ấn RUN, STOP
A, Bộ vi điều khiển 8 bit AT89C51 hoạt động ở tần số 12MHz, với bộ nhớ ROM
4kbyte,bộ nhớ RAM 128byte cư trú bên trong và có thể mở rộng bộ nhớ ra ngoài.Ở
bộ vi điều khiển này còn có 4 cổng 8bit (P0,P1,P2,P3) vào/ra 2 chiều để giao tiếp với
thiết bị ngoại vi.
Hình 1.1.1: Sơ đồ khối AT89C51
-Ngoài ra,nó còn có:
•
2 bộ định thời 16 bit (Time0 và Time1)
•
Mạch giao tiếp nối tiếp
•
Bộ xử lý bit
•
Hệ thống điều khiển và xử lý ngắt
•
•
•
Các kênh điều khiển/ dữ liệu/địa chỉ.
CPU
Các thanh ghi chức năng đặc biệt (SFR)
Sơ đồ chân tín hiệu của AT89C51
Chức năng của các chân tín hiệu như sau:
-P0.0 đến P0.7 là các chân của cổng 0
-P1.0 đến P1.7 là các chân của cổng 1
-P2.0 đến P2.7 là các chân của cổng 2
-P3.0 đến P3.7 là các chân của cổng 3
-RxD:nhận tín hiệu kiểu nối tiếp
-TxD:truyền tín hiệu kiểu nối tiếp
-INT0:ngắt ngoài 0
-INT1:ngắt ngoài 1
-T0: chân vào 0 của bộ Timer/Counter 0
-T1: chân vào1của bộTimer/Counter 1
-Wr: ghi dữ liệu vào bộ nhớ ngoài
-RST:chân vào Reset,tích cực ở mức logic cao trong khoảng 2 chu kỳ máy
-XTAL1:chân vào mạch khuếch đại dao động
-XTAL2:chân ra từ mạch khuếch đại dao động
-PSEN:chân cho phép đọc bộ nhớ chương trình ngoài
-ALE:chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ ngoài,khi On–chip xuất
ra byte thấp của địa chỉ.Nó có thể được dùng cho các bộTimer ngoài hoặc cho mục
đích tạo xung Clock.
-EA/Vpp: cho phép On–chip truy cập bộ nhớ chương trình ngoài khi EA=0,nếu
EA=1thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú.
-VCC :cung cấp nguồn cho On-chip
-GND:nối mát
+Các thanh ghi chức năng đặc biệt khác:
Các thanh ghi chức năng đặc biệt là các thanh ghi đảm nhiệm các chức năng khác nhau
trong chíp. Chúng nằm ở RAM bên trrong chíp chiếm vùng không gian bộ nhớ 128
bytes được định địa chỉ từ 80 đến Ffh.
•
Thanh ghi tích lũy (ACC): Đây là thanh ghi quan trọng trong chíp, dùng để lưu
trữ các toán hạng và kết quả của phép tính.Thanh ghi ACC dài 8bit,có địa chỉ là E0h
trong SFR.
•
Thanh ghi B: thanh ghi thường sử dụng khi thực hiện các phép toán nhân, chia.
Đối với các lệnh khác,thanh ghi B có thể xem như là thanh ghi đệm tạm thời. Trong
SFR thanh ghi B dài 8bits và có địa chỉ là F0h.
•
Con trỏ ngăn xếp: thanh ghi này dài 8bits,có địa chỉ trong SFR là 81h,giá trị
của nó được tăng tự động trước khi thực hiện các lệnh CALL, PUSH. Ngăn xếp có thể
đặt bất cứ nơi nào trong RAM của chíp,nhưng sau khi khởi động lại ngăn xếp thì con
trỏ ngăn xếp mặc định sẽ trỏ tới địa chỉ khởi đầu là 07h,vậy ngăn xếp sẽ được tạo ra
bắt đầu từ 08h.
•
Con trỏ dữ liệu: là thanh ghi dài 16 bits, gồm hai thanh dài 8bits hợp lại là
thanh ghi byte cao DPH và thanh ghi byte thấp DPL.Con trỏ dữ liệu có thể sử dụng
như là thanh ghi 16bits hoặc hai thanh ghi 8bits độc lập.Trong SFR thanh ghi DPH có
địa chỉ là 83h,còn thanh ghi DPLcó địa chỉ là 82h.
•
Thanh ghi PSW: là thanh ghi dài 8bits,có địa chỉ trong SFR là D0h. Thanh ghi
PSW dùng để chứa thông tin về trạng thái chương trình.Mỗi bit của PSW đảm nhiệm
một chức năng cụ thể. Thanh ghi này được phép truy cập ở dạng mức bit.
•
Thanh ghi PCON: thanh ghi điều khiển nguồn.
•
Thanh ghi IE: thanh ghi cho phép ngắt.
EA:nếu EA=0 không cho phép bất cứ ngắt nào hoạt động.Nếu EA=1 mỗi
nguồn ngắt riêng biệt được phép hoặc không được phép hoạt động bằng cách đặt hoặc
xóa bit Enable của nó.
ET2: bit cho phép hoặc không cho phép ngắt bộ Timer2
ET1: bit cho phép hoặc không cho phép ngắt tràn bộ Timer1
EX1: bit cho phép hoặc không cho phép ngắt ngoài 1
EX0: bit cho phép hoặc không cho phép ngắt tràn bộ timer
EX1: bit cho phép hoặc không cho phép ngắt ngoài 0
•
Thanh ghi IP: thanh ghi ưu tiên ngắt
•
Thanh ghi TCON: thanh ghi điều khiển trên bộ timer/ Counter
TF1: cờ tràn Timer 1
TR1: bit điều khiển bộ Timer 1 hoạt động
TF0: cờ tràn Timer 0
TR0: bit điều khiển bộ Timer 0 hoạt động
IE1: cờ ngắt ngoài 1
IE0: cờ ngắt ngoài 0
•
Thanh ghi TMOD: thanh ghi điều khiển kiểu Timer/ Counter
GATE: Khi TRx được thiết lập và GATE = 1, bộ Timer/ Counterx hoạt động
chỉ khi chân INTx ở mức cao. Khi GATE = 0, Timer/ Counterx hoạt động chỉ khi TRx
=1
C/T: bit cho phép chịn chức năng là Timer hay Counter.
M0,M1: bit chọn Mode, để xác định trạng thái và kiểu Timer/Counter.
•
Thanh ghi SCON: là thanh ghi trạng thái và điều khiển cổng nối tiếp.
B, Mạch truyền thông chuẩn MAX 232
Theo tiêu chuẩn RS232 quy định mức logic “0” ứng với điện áp +3V đến
+12V , mức logic “1” ứng với điện áp -3V đến -12V ,mà vi điều khiển truyền và nhận
tín hiệu theo chuẩn TTL/CMOS quy định mưc logic “0” ứng với điện áp 0V, mức
logic “1” ứng với 3,3V hay5V
Hình 1.1.2 sơ đồ chân RS232
+T1IN, T2IN trên chân số 10 và 11 là chân ngõ vào tín hiệu dạng TTL/CMOS
+T1OUT, T2OUT trên chân số 14 và 7 là chân ngõ ra
Tín hiệu RS-232
+R1IN, R2 IN trên chân số 13 và 8 là ngõ vào tín hiệu dạng RS-232
+R1OUT, R2OUT trên chân số 12 và 9 là ngõ ra tín hiệu dạng RS-232
+Vcc, GND chân cấp nguồn cho ic hoạt động
-Cổng com DB9:
Hầu hết các máy tính cá nhân hiện nay đều được trang bị ít nhất là 1 cổng Com hay
cổng nối tiếp RS232. Số lượng cổng Com có thể lên tới 4 tùy từng loại main máy tính.
Khi đó các cổng Com đó được đánh dấu là Com 1, Com 2, Com 3...Trên đó có 2 loại
đầu nối được sử dụng cho cổng nối tiếp RS232 loại 9 chân (DB9) hoặc 25 chân
(DB25). Tuy hai loại đầu nối này có cùng song song nhưng hai loại đầu nối này được
phân biệt bởi cổng đực (DB9) và cổng cái (DB25)(ít sử dụng).
Hình 1.1.3: sơ đồ chân cổng DB9
+ chân 1 : Data Carrier Detect (DCD) : Phát tín hiệu mang dữ liệu
+ chân 2: Receive Data (RxD) : Nhận dữ liệu
+ chân 3 : Transmit Data (TxD) : Truyền dữ liệu
+ chân 4 : Data Termial Ready (DTR) : Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi
bộ phận khi muốn truyền dữ liệu
+ chân 5 : Singal Ground ( SG) : Mass của tín hiệu
+ chân 6 : Data Set Ready (DSR) : Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi
nó sẵn sàng nhận dữ liệu
+ chân 7 : Request to Send : yêu cầu gửi,bô truyền đặt đường này lên mức hoạt động
khi sẵn sàng truyền dữ liệu
+ chân 8 : Clear To Send (CTS) : Xóa để gửi ,bô nhận đặt đường này lên mức kích
hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận tín hiệu
+ chân 9 : Ring Indicate (RI) : Báo chuông cho biết là bộ nhận đang nhận tín hiệu rung
chuông
C, Led 7 thanh
Hình 1.1.4: Cấu tạo led 7 thanh
Led 7 thanh có cấu tạo gồm 7 led đợn có dạng thanh xếp theo hình 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 đoạn.
8 led đơn trên led 7 đoạn có Anode(cức +) hoặc Cathode(cực -) được nối chung
với nhau vào một điểm, được đưa chân ra ngoài đê kết nối với thanh mạch điện. 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 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.
Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo
dòng qua mỗi led đơn trong khoảng 10mA – 20 mA để bảo vệ led.Nếu kết nối với
nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều
khiển.
D, Giới thiệu về Encoder
Hình 1.1.5: Cấu tạo Encoder
Nhìn trên hình ta thấy encoder gồm: 1 đĩa tròn có khắc lỗ, 1 Hệ thống LED phát và
thu.
• Cấu tạo chính của encoder:
-Gồm 1bộ phát ánh 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à photodiotde hoặc phototransistor) 1 hay 2 đĩ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 xoay, 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 được đè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ậy là encoder sẽ tạo ra các 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ỗ.Nên tần số của xung đầu ra sẽ phụ
thuộc vào tốc độ quay của tấm tròn đó.Ứng dụng của encoder: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 1 đối
tượng thông qua đếm số vòng quay của trục.
Hình 1.1.6: Encoder có lỗ định vị
Như vậy cho dù có lệch xung,mà chúng ta thấy Encoder đi ngang qua lỗ định vị
này,thì chúng ta sẽ biết Encoder đã bị đếm sai ở đâu đó.
Tuy nhiên có một vấn đề lớn nữa là,làm sao biết được Encoder đang xoay theo chiều
nào.Bởi vì xoay theo chiều nào thì các xung đều giống nhau.Vì vậy,người ta đặt thêm
một vòng lỗ ở giữa vòng lỗ thứ nhất và vòng lỗ định vị sao cho lỗ vòng 1 và vòng 2
lệch nhau,các cạnh của lỗ vòng 2 nằm ngay giữa lỗ vòng 1 và ngược lại.
Hình 1.1.7: sơ đồ của động cơ Encoder
E, Một số linh kiện khác
Tụ điện
Tụ điện là 1 linh kiện thụ động ,gồm 2 bản cực kim loại ghép cách hau 1 khoảng d,
ở giữa 2 bản tụ là dung dịch hay điện môi cách điện có điện dung C.Tụ cho phép dòng
xoay chiều đi qua và cản dòng 1 chiều
Hình 1.1.8: tụ điện
Khi tụ nạp điện thì sẽ bắt đầu nạp từ điện áp 0V tăng đến điện áp UDC và giảm từ
điện áp VDC xuống 0V.
Điện trở
Điện trở là linh kiện thụ động có tác dụng cản trở dòng và áp,được sử dụng nhiều
trong lĩnh vực điện tử.
Hình 1.1.9: điện trở
-Điện trở của dây dẫn có trị số lớn hay nhỏ phụ thuộc vào vật liệu làm dây,tỉ lệ thuận
với chiều dài dây và tỉ lệ nghịch với tiết diện dây.
R=(ρ.l)/S
R=U/I
ρ:điện trở suất của vật liệu(Ωm)
S:tiết diện dây(m^2)
l: chiều dài dây(m)
R:điện trở (Ω)
Điện trở treo
Hình 1.1.10: điện trở treo
Sử dụng điện trở thanh (treo) giúp việc thiết kế mạch dễ dàng hơn,điên trở treo
gồm: 8 điện trở cùng giá trị với mỗi đầu điện trở được nối với nhau,đầu chung này
được đưa ra ngoài bằng 1 chân nữa,thông thường chân chung này được nối với nguồn
Vcc
Điện trở treo có nhiệm vụ tạo điện áp ở từng mức theo yêu cầu,theo giá trị đặt
tại các chân của nó.
Thạch anh
Hình 1.1.11: Thạch anh dao động
Thạch anh dao động có nhiệm vụ tạo ra các xung điều khiển thích hợp phục vụ
cho vi điều khiển , thạch anh sử dụng ở đây là loại 12MHz
1.2. Trình bày về phương pháp đo tốc độ động cơ dùng Encoder
Gọi số xung xuất ra từ kênh A (kênh B) trong 1s là: n
Số xung của đĩa encoder là: Ne (khi động cơ quay được 1 vòng thì trên kênh
A hoặc B sẽ xuất ra Ne xung).
-> tốc độ động cơ: v=n/Ne (vòng/giây)
Vậy để đo được tốc độ động cơ, chỉ cần đếm được số xung xuất ra từ 1 trong
2 kênh A và B trong thời gian 1s hay nói cách khác đó chính là tần số của xung
encoder.
Thời gian 1s này còn được gọi là thời gian lấy mẫu, tuy nhiên nếu chọn thời
gian lấy mẫu quá lớn (1s) sẽ dẫn đến sai số trong việc đếm số xung, làm mất thời
gian thực thi của vi điều khiển và làm cho quá trình hiệu chỉnh tốc độ (nếu có)
không được liên tục. Vì vậy việc chọn thời gian lấy mẫu rất quan trọng, không được
quá lớn và không được quá bé.
- Gọi thời gian lấy mẫu là: Ts
- Gọi số xung encoder xuất ra trong thời gian Ts là ns
-> tốc độ động cơ: v=(ns*100)/(Ne*Ts)
PHẦN II. THIẾT KẾ HỆ THỐNG
2.1 Phân tích giới hạn và tính toán lựa chọn thiết bị
• Kết nối với vi điều khiển
-Ngõ nhận tín hiệu led 7 đoạn có 8 đường vì vậy có thể dùng 1 port nào đó của
vi điều khiển để điều khiển led 7 đoạn.Vì vậy led 7 đoạn nhận một dữ liệu 8 bit
từ vi điều khiển để điều khiển hoạt động sáng tắt của từng led đơn trong nó
-Có hai kiểu hiển thị led 7 đoạn:mã dành cho led 7 đoạn có anode (cực +)
chung và mã dành cho led 7 đoạn có cathode (cực -) chung.Chẳng hạn,nếu sử
dụng anode chung,muốn led đơn nào sáng thì đặt vào chân led đó điện áp la
0V(mức 0) các led đơn còn lại đặt điện áp là 5V(mức 1).Nếu sử dụng cathode
chung,muốn led nào sáng thì làm hoàn toàn ngược lại với anode chung.
Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có anode chung
Số hiển thị
trên led 7
đoạn
Mã hiển thị led 7 đoạn
dạng nhị phân
Mã hiển thị led 7 đoạn dạng
thập lục phân
0
1
2
3
4
5
6
7
8
9
A
hgfedcba
11000000
11111001
10100100
10110000
10011001
10010010
11000010
11111000
10000000
10010000
10001000
C0
F9
A4
B0
99
92
82
F8
80
90
88
B
C
D
E
F
-
10000011
11000110
10100001
10000110
10001110
10111111
83
C6
A1
86
8E
BF
Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có cathode chung
Số hiển thị trên led
7 đoạn
Mã hiển thị led 7 đoạn
dạng nhị phân
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
-
00111111
00000110
01011011
01001111
01100110
01101101
01111101
00000111
01111111
01101111
01110111
01111100
00111001
01011110
01111001
01110001
01000000
Mã hiển thị led 7
đoạn dạng thập lục
phân
3F
06
5B
4F
66
6D
7D
07
7F
6F
77
7C
39
5E
79
71
40
Nút ấn RUN, STOP chọn kiểu tiếp điểm thường mở
Loa cảnh báo ngưỡng cao, thấp: dưới 500v/p và trên 2500v/p
2.2 Xây dựng mạch nguyên lí và thuyết minh
Phím ấn
Gồm nút ấn Start và stop
Hình 2.2.1: nút ấn
Khối hiển thị
Hình 2.2.2: khối hiển thị
Mắc thêm điện trở để hạn chế dòng điện và bảo vệ đèn led
Khối xử lí trung tâm
Để tạo xung nhịp (clock) cho vi điều khiển ta dùng thạch anh 12MHz có giá trị từ
33p
Chu kì của 8051 là:
cổng P0 khi thực hiện chức năng xuất nhập phải dùng trở để kéo lên ,vì thế ta dùng
trở băng có giá trị 4,7k-10k đấu vào P0
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển
được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển
hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt động ban đầu.
Vì vậy chân RESET được kết như hình vẽ sau với C=10uf,R=10k
Hình 2.2.3: nút ấn RESET
2.3 Xây dựng thuật toán
2.4 Viết chương trình
Chương trình hợp ngữ:
ORG
0H
;Khai bao dia chi bat dau CT tu 0h trong Ram
noi
LJMP
MAIN
; Nhay den chuong trinh chinh
ORG
0BH
LJMP
INT_TIMER0
ORG
1BH
LJMP
INT_TIMER1
ORG
3H
LJMP
INT_EX0
ORG
13H
LJMP
INT_EX1
;Nhay den nhan INT_TIMER0
;Nhay den nhan INT_TIMER1
;Nhay den nhan INT_EXO
;Nhay den nhan INT_EX1
;DINH NGHIA CAC BIEN(gan gia tri cac bien)
LOA
EQU 2
RUN
EQU 1
VONG_GIAY
;LOA co gia tri = 2
EQU 7h
;So vong/giay = 7h=7
XUNG_DU
EQU 32H
;So xung du =100 50
DIGIT_1
EQU 33H
;DIGIT_1 = 33H=51
DIGIT_2
EQU 34H
=52
DIGIT_3
EQU 35H
=53
DIGIT_4
EQU 36H
=54
;CHUONG TRINH CHINH
ORG
30H 100
;Khai bao dia chi bat dau chuong trinh chinh
MAIN:
SETB
IT1
;P3.5 = 1 dau vao cua xung dem T1
SETB
IT0
;Dau vao cua xung dem T0(ngat canh xuong)
SETB
EX0
;Cho phep ngat ngoai INT0
SETB
EX1
;Cho phep ngat ngoai INT1
MOV
R0,#200
;Di chuyen R0 = 200
MOV
TMOD,#00010110b ;Khoi dong TIMER 1 – Che do 16 BIT
MOV
TH0,#-100
;Nap byte cao cua 100
MOV
TL0,#-100
;Nap byte thap cua 100
;Tao chu ky tran cho C0 = 100 xung/vong
SETB
ET0
;Cho phep ngat T0
SETB
ET1
;Cho phep ngat T1
SETB
TF1
;Cho phep bao bo dem cua T1 bi
SETB
TR1
;Cho phep timer 1 chay
SETB
TR0
;Cho phep timer 0 chay
SETB
EA
;Cho phep ngat toan bo(T/H CT tu bo nho
JMP
$
tran(Tcon.7)
trong)
;NGAT COUNTER 0
INT_TIMER0:
INC
VONG_GIAY
;Tang gia tri VONG_GIAY moi lan la
1V
RETI
;NGAT TIMER 1(tao thoi gian 1s de do)
INT_TIMER1:
JNB
RUN,EXIT ;Nhay den EXIT neu RUN = 0
MOV
A,40H
JZ
BAT_LOA;Nhay toi BAT_LOA neu (a) = 0 (a)là nội dug của
thanh ghi a
SUBB
A,#16
;Neu A > 16 A=A-16
JC
CONT;Nhay den nhan CONT :nhảy đến CONT nếu c=1 (c)nd
của cờ c
BAT_LOA:
CPL
P3.6
;Dao P3.6
p3.6=đảo p3.6
CONT:
MOV
TH1,#HIGH(-5000) ;Nap byte cao cua -5000
MOV
TL1,#LOW(-5000) ;Nap byte thap cua -5000
DJNZ
R0,QUET_LED
;Nhay den QUET_LED neu R0 khac 0
;(Vong lap neu chua du 1s thi quet led)
MOV
R0,#200
CLR
TR0
;Ngat timer 0
CLR
TR1
;Ngat timer 1
MOV
XUNG_DU,TL0
;
CALL
CALCULATOR
;Chuong trinh con tinh so V/P
MOV
TL0,#-100
;Nap byte thap cua -100
SETB
TR0
;Khoi dong timer 0
SETB
TR1
;Khoi dong timer 1
RETI
QUET_LED:
CJNE
R1,#0,LED_2
MOV
DPTR,#LED
;Quet LED_2 Neu R1 khac 0
;Nap dia chi gian tiep tu LED(ram ngoài) vào
con
;trỏ DPTR
MOV
A,DIGIT_1
MOVC
A,@A+DPTR
;Chuyen du lieu trong vung
nho A+DPTR vao A
MOV
P2,#0
;Xoa cong P2
MOV
P0,A
MOV
P2,#1
;P2=1
INC
R1
;Tang R1+ 1 (Quet LED tiep theo)
;Di chuyen P0=A
RETI
LED_2:
CJNE
R1,#1,LED_3
MOV
A,DIGIT_2
MOVC
;Nhay den quet LED_3 neu R1 khac 1
A,@A+DPTR
nho A+DPTR vao A
MOV
P2,#0
MOV
P0,A
MOV
P2,#2
;Xoa P2
;Chuyen du lieu trong vung
INC
R1
RETI
LED_3:
CJNE
R1,#2,LED_4
MOV
A,DIGIT_3
MOVC
;Nhay den quet LED_4 neu R1 khac 2
A,@A+DPTR
;Chuyen du lieu trong vung
nho A+DPTR vao A
MOV
P2,#0
MOV
P0,A
MOV
P2,#4
INC
R1
;Xoa P2
RETI
LED_4:
MOV
A,DIGIT_4
MOVC
A,@A+DPTR
;Chuyen du lieu trong vung
nho A+DPTR vao A
MOV
P2,#0
;Xoa P2
MOV
P0,A
MOV
P2,#8
MOV
R1,#0
;Quay ve LED 1
MOV
A,VONG_GIAY
;Di chuyen DL0 VONG_GIAY vao A
MOV
40H,A
;Di chuyen A vao o nho 40h
MOV
VONG_GIAY,#0
MOV
B,#6
;Nap TG B = 6.
MUL
AB
;Nhan A voi B < 255 Nen duoc chua trong A
MOV
B,#100
DIV
AB
MOV
DIGIT_1,A
MOV
A,B
EXIT:
RETI
CALCULATOR:
;Chia A/B
MOV
B,#10
DIV
AB
MOV
DIGIT_2,A
MOV
R3,B
;DIGIT_4:
;Gia tri tam thoi cua DIGIT_3
la so (XUNG_DU*60)/100
MOV
A,XUNG_DU
CLR
C
SUBB
A,#9CH
MOV
B,#10
DIV
AB
MOV
R4,B
MOV
B,#3
MUL
AB
MOV
B,#5
DIV
AB
MOV
R5,B
ADD
A,R3
MOV
B,#10
DIV
AB
ADD
A,DIGIT_2
MOV
DIGIT_2,A
MOV
DIGIT_3,B
;A-9CH=156
;Luu lai so le vao R4
;Cong A va R3. Ket qua luu o A
;SODU
MOV
A,R5
RL
A
MOV
R5,A
MOV
A,R4
MOV
B,#3
MUL
AB
MOV
B,#5
DIV
AB
ADD
A,R5
;Xoay trai gia tri thanh ghi A
MOV
DIGIT_4,A
RET
INT_EX0:
SETB
RUN
;RUN =1
MOV
P2,#0
;Xoa P2
CLR
RUN
;RUN =0 Dung chuong trinh
RETI
INT_EX1:
RETI
LED: DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END.
2.5 Sơ đồ mạch mô phỏng
Nguyên lý hoạt động của mạch :
Khi ta ấn nút Start hệ thống sẽ bắt đầu làm việc, động cơ quay, Encoder gắn
trên trục của động cơ sẽ cảm biến tốc độ, phát tín hiệu và chuyển tới mạch vi điều
khiển. Tại đây, tín hiệu sẽ được vi mạch xử lí và biến đổi để hiển thị trên 4 led 7 thanh
.
Khi ấn nút Stop: hệ thống dừng mọi hoạt động. Kết thúc 1 quá trình làm việc
của mạch/.
Trường hợp khi có sự cố xảy ra ta có thể ấn nút Reset để khôi phục lại trạng
thái ban đầu của mạch.
CHƯƠNG III : Kết luận
3.1 Kết quả đạt được
- Mạch có dải đo tốc độ lớn.
- Khả năng đáp ứng nhanh với sự thay đổi của biến trở.
- Mạch có thể đặt độ khống chế tốc độ động cơ, báo tốc độ cao và tốc độ thấp
- Mạch hiển thị LED 7 đoạn nên dễ dàng cho người sử dụng theo dõi tốc độ động cơ.
- Mạch được thiết kế nhỏ gọn, dễ sử dụng, tiện lợi và có thể dùng nhiều loại nguồn:
pin, sạc điện thoại,… nên rất cơ động.
3.2 Hạn chế và phương pháp khắc phục
- Còn có sai số tốc độ do sai số linh kiện và những sai số trong khi tính toán thiêt kế
mạch nhưng chấp nhận được
- Phương pháp khắc phục: sử dụng thiết bị linh kiện có độ chính xác cao hơn.