Nếu ta quyết định sử dụng một nguồn tần số khác bộ giao động thạch anh chẳng hạn nh là bộ giao động TTL thì nó sẽ đợc nối tới chân XTAL1, còn chân XTAL2 thì để hở không nối... 1 Lập trìn
Trang 1Lời nói đầu
Việc sự dụng động cơ điện trong sản xuất và đời sống là rất rộng rãi , đặc biệt là động cơ điện trong các kết cấu cơ khí Nhng gắn liền với việc sử dụng động cơ điện là quá trình điều chỉnh tốc độ của động cơ sao cho phù hợp với yêu cầu của thực tế vậy nên việc xác định tốc độ động cơ là việc rất cần thiết.
Là sinh viên chuyên ngành Cơ Điện Tử,với chúng em điều này cũng rất quan trọng.Tuy là ngành mới nhng nó nh 1 cơ thể có Cơ Khí là xơng thịt và Điện tử là tâm hồn
Đơc sự giúp đỡ của thầy giáo Nguễn Anh Dũng dạy môn Vi Điều khiểnvà
kiến thức đã đợc học, nhóm chúng em thực hiện đợc đề tài:
Đo tốc độ động cơ điện hiển thị trên màn hình LCD
Trong quá trình làm đề tài mặc dù chúng em đã nhiều cố gắng nhng vẫn không tránh khỏi sai xót.Rất mong các thầy thông cảm và giúp đỡ chúng em nhiều hơn.
Em xin chân thành cảm ơn!
Nhóm Sinh Viên thực hiện:
Nguyễn Ngọc Biên
Phạm Ngọc Giang
Nguyễn Quang Đức
Phần I :Tổng quan về bộ đo tốc độ động cơ
Việc phát triển của khoa học kĩ thuật các bộ Vi điều khiển và các cảm biến,ngày nay việc đo tốc đọ động cơ với vận tốc lớn không còn khó khăn vì tốc độ của vi xử lí rất nhanh,độ phân giải của các bộ cảm biến cao và chính xác
Trong đề tài chúng em sử dụng encoder độ phân giảI 100 xung/vòng để phản hồi tốc độ động cơ.Từ tín hiệu do encoder gửi đến ta đa vào chân T0 của CMU 89S52 cho bộ timer 0 hoạt đông với với chế độ bộ đếm sự kiện.Trong khi đó timer
Trang 21 cho hoạt động ở chế độ bộ định thời.trong khoảng thời gian 1 giây quét của timer
1 số xung đếm đợc lấy chia cho độ phân giải của encoder và nhân với 60 ta ra số vòng/phút
Sử dụng màn hinh LCD để hiển thị
Do thời gian quét không quá nhanh,cũng không quá chậm nên sai số của bộ đo không lớn và đáp ứng cũng nhanh,hiển thi liên tục tốc độ động cơ
Phần II : Cơ sở lý thuyết
1) Vi điều khiển 89S52
(Vi điều khiển 89s52 thuộc họ 8051 của hãng Intel)
- Lịch sử :
Vào năm 1981 Hãng Intel giới thiệu một số bộ vi điều khiển đợc gọi là 8051 Bộ vi
điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả đợc đặt trên một chíp Lúc ấy
nó đợc coi là một “hệ thống trên chíp” 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit đợc chia ra thành các dữ liệu 8 bit để cho xử lý 8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 Mặc dù 8051 có thể có một ROM trên chíp cực đại là 64 K byte,nhng các nhà sản xuất lúc đó đã cho xuất xởng chỉ với 4K byte Điều này sẽ đợc bàn chi tiết hơn sau này 8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện
họ phải để mã lại tơng thích với 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lợng ROM trên chíp khác nhau đợc bán bởi hơn nửa các nhà sản xuất Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lơng nhớ ROM trên chíp, nhng tất cả chúng
đều tơng thích với 8051 ban đầu về các lệnh Điều này có nghĩa là nếu ta viết chơng trình của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất
kỳ khác mà không phân biệt nó từ hãng sản xuất nào
Các đặc tính của 8051
Đặc tính Số lợng 89S52
ROM trên chíp 4K byte 8 Kbyte
RAM 128 byte 128 byte
Lập trình cho cổng vào - ra I/0
Mô tả chân của 8051.
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89C51, DS5000) đều có các kiểu
đóng vỏ khác nhau, chẳng hạn nh hai hàng chân DIP (Dual In-Line Pakage) dạng
vỏ dẹt vuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau nh vào ra I/0, đọc RD , ghi WR , địa chỉ, dữ liệu và ngắt
Trang 3
Sơ đồ chõn của 8051( 89s52 tương đương)
1 Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho chíp Nguồn điện áp là +5V
2 Chân GND: Chân GND: Chân số 20 là GND
3 Chân XTAL1 và XTAL2:
8051 có một bộ giao động trên chíp nhng nó yêu cầu có một xung đồng hồ ngoài
để chạy nó Bộ giao động thạch anh thờng xuyên nhất đợc nối tới các chân đầu vào XTAL1 (chân 19) và XTAL2 (chân 18) Bộ giao động thạch anh đợc nối tới XTAL1
và XTAL2 cũng cần hai tụ điện giá trị 30pF Một phía của tụ điện đợc nối xuống
đất nh đợc trình bày trên hình
Cần phải lu ý rằng có nhiều tốc độ khác nhau của họ 8051 Tốc độ đợc coi nh là tần
số cực đại của bộ giao động đợc nối tới chân XTAL Ví dụ, một chíp 12MHz hoặc thấp hơn Tơng tự nh vậy thì một bộ vi điều khiển cũng yêu cầu một tinh thể có tần
số không lớn hơn 20MHz Khi 8051 đợc nối tới một bộ giao động tinh thể thạch anh và cấp nguồn thì ta có thể quan sát tần số trên chân XTAL2 bằng máy hiện sóng Nếu ta quyết định sử dụng một nguồn tần số khác bộ giao động thạch anh chẳng hạn nh là bộ giao động TTL thì nó sẽ đợc nối tới chân XTAL1,
còn chân XTAL2 thì để hở không nối
Trang 44 Chân RST.
Chân số 9 là chân tái lập RESET Nó là một đầu vào và có mức tích cực cao (bình thờng ở mức thấp) Khi cấp xung cao tới chân này thì bộ vi điều khiển sẽ táI lập và kết thúc mọi hoạt động Điều này thờng đợc coi nh là sự tái bật nguồn Khi kích hoạt tái bật nguồn sẽ làm mất mọi giá trị trên các thanh ghi Bảng sau cung cấp một cách liệt kê các thanh ghi của 8051 và các giá trị của chúng sau khi tái bật nguồn
Giá trị một số thanh ghi sau RESET
Lu ý rằng giá trị của bộ đếm chơng trình PC là 0 khi tái lập để ép CPU nạp
mã lệnh đầu tiên từ bộ nhớ ROM tại vị trí ngăn nhớ 0000 Điều này có nghĩa là ta phải đặt dòng đầu tiên của mã nguồn tại vị trí ngăn nhớ 0 của ROM vì đây là mã CPU tĩnh thức và tìm lệnh đầu tiên hình dới trình bày hai cách nối chân RST với mạch bật nguồn
Trang 5a) Mạch tái bật nguồn RESET b) Mạch tái bật nguồn với Debounce
Nhằm làm cho đầu vào RESET có hiệu quả thì nó phải có tối thiểu 2 chu kỳ máy Hay nói cách khác, xung cao phải kéo dài tối thiểu 2 chu kỳ máy trớc khi nó xuống thấp
Trong 8051 một chu kỳ máy đợc định nghĩa bằng 12 chu kỳ dao động
5 Chân EA :
Các thành viên họ 8051 nh 8751, 98C51 hoặc DS5000 đều có ROM trên chíp lu cất chơng trình Trong các trờng hợp nh vậy thì chân EA đợc nối tới VCC Đối với các thành viên củ họ nh 8031 và 8032 mà không có ROM trên chíp thì mã chơng trình
đợc lu cất ở trên bộ nhớ ROM ngoài và chúng đợc nạp cho 8031/32 Do vậy, đối với 8031 thì chân EA phải đợc nối đất để báo rằng mã chơng trình đợc cất ở ngoài
EA có nghĩa là truy cập ngoài (External Access) là chân số 31 trên vỏ kiểu DIP Nó
là một chân đầu vào và phải đợc nối hoặc với VCC hoặc GND
Lập trình cho bộ đếm/ bộ định thời trong 8051
8051 có hai bộ định thời/ bộ đếm Chúng có thể đợc dùng nh các bộ định để tạo một bộ trễ thời gian hoặc nh các bộ đếm để đếm các sự kiện xảy ra bên ngoài bộ BVĐK Trong chơng này chúng ta sẽ tìm hiểu về cách lập trình cho chúng và sử dụng chúng nh thế nào?
1 Lập trình các bộ định thời gian của 8051
8051 có hai bộ định thời là Timer 0 và Timer1, ở phần này chúng ta bàn về các thanh ghi của chúng và sau đó trình bày cách lập trình chúng nh thế nào để tạo ra các độ trễ thời gian
Các thanh ghi cơ sở của bộ định thời
Cả hai bộ định thời Timer 0 và Timer 1 đều có độ dài 16 bít đợc truy cập nh haithanh ghi tách biệt byte thấp và byte cao Chúng ta sẽ bàn riêng về từng thanh ghi
Thanh ghi TMOD (chế độ của bộ định thời).
Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung một thanh ghi đợc gọi là IMOD để thiết lập các chế độ làm việc khác nhau của bộ định thời Thanh ghi TMOD
là thanh ghi 8 bít gồm có 4 bít thấp đợc thiết lập dành cho bộ Timer 0 và 4 bít cao dành cho Timer 1 Trong đó hai bít thấp của chúng dùng để thiết lập chế độ của bộ định thời còn 2 bít cao dùng để xác định phép toán Các phép toán này sẽ đợc bàn dới đây
Trang 6
Các bít M1, M0
Là các bít chế độ của các bộ Timer 0 và Timer 1 Chúng chọn chế độ của các bộ
định thời: 0, 1, 2 và 3 Chế độ 0 là một bộ định thời 13, chế độ 1 là một bộ định thời 16 bít và chế độ 2 là bộ định thời 8 bít Chúng ta chỉ tập chung vào các chế độ th ờng đợc
sử dụng rộng rãi nhất là chế độ 1 và 2 Chúng ta sẽ sớm khám phá ra các đặc tính củ các chế độ này sau khi khám phần còn lại của thanh ghi TMOD Các chế độ đợc thiết lập theo trạng thái của M1 và M0 nh sau
M1 M0 Chế độ Chế độ hoạt động
0 0 0 Bộ định thời 13 bít gồm 8 bít là bộ định thời/ bộ đếm 5 bít đặt
0 1 1 Bộ định thời 16 bít (không có đặt trớc)
1 0 2 Bộ định thời 8 bít tự nạp lại
1 1 3 Chế độ bộ định thời chia tách
C/ T (đồng hồ/ bộ định thời).
này trong thanh ghi TMOD đợc dùng để quyết định xem bộ định thời đợc dùng nh một máy tạo độ trễ hay bộ đếm sự kiện Nếu bít C/T = 0 thì nó đợc dùng nh một bộ định thời tạo độ chễ thời gian Nguồn đồng hồ cho chế độ trễ thời gian là tần số thạch anh của 8051
Nguồn xung đồng hồ cho bộ định thời
Nh chúng ta biết, mỗi bộ định thời cần một xung đồng hồ để giữ nhịp Vậy nguồn xung
đồng hồ cho các bộ định thời trên 8051 lấy ở đâu? Nếu C/T = 0 thì tần số thạch anh đi liền với 8051 đợc làm nguồn cho đồng hồ của bộ định thời Điều đó có nghĩa là độ lớn của tần số thạch anh đi kèm với 8051 quyết định tốc độ nhịp của các bộ định thời trên
8051 Tần số của bộ định thời luôn bằng 1/12 tần số của thạch anh gắn với 8051
Bít cổng GATE
Một bít khác của thanh ghi TMOD là bít cổng GATE Để ý trên hình 9.3 ta they cả hai
bộ định thời Timer0 và Timer1 đều có bít GATE Vậy bít GATE dùng để làm gì?
Mỗi bộ định thời thực hiện điểm khởi động và dừng Một số bộ định thời thực hiện điều này bằng phần mềm, một số khác bằng phần cứng và một số khác vừa bằng phần cứng vừa bằng phần mềm Các bộ định thời tren 8051 có cả hai Việc khởi động và dừng bộ
định thời đợc khởi động bằng phần mềm bởi các bít khởi động bộ định thời TR là TR0
và TR1 Điều này có đợc nhờ các lệnh “SETB TR1” và “CLR TR1” đối với bộ Timer1
và “SETB TRO” và “CLR TR0” đối với bộ Timer0 Lệnh SETB khởi động bộ định thời
và lệnh CLR dùng để dừng nó Các lệnh này khởi động và dừng các bộ định thời khi bít GATE = 0 trong thanh ghi TMOD Khởi động và ngừng bộ định thời bằng phần cứng từ nguồn ngoài bằng cách đặt bít GATE = 1 trong thanh ghi TMOD Tuy nhiên, để tránh
sự lẫn lộn ngay từ bây giờ ta đặt GATE = 0 có nghĩa là không cần khởi động và dừng các bộ định thời bằng phần cứng từ bên ngoài Để sử dụng phần mềm để khởi động và dừng các bộ định thời phần mềm để khởi động và dừng các bộ định thời khi GATE = 0 Chúng ta chỉ cần các lệnh “SETB TRx” và “CLR TRx” Việc sử dụng phần cứng ngoài
để khởi động và dừng bộ định thời ta sẽ bàn ở chơng 11 khi bàn về các ngắt
Chế độ O
Chế độ 0 hoàn toàn giống chế độ 1 chỉ khác là bộ định thời 16 bít đợc thay bằng13 bít
Bộ đếm 13 bít có thể giữ các giá trị giữa 0000 đến 1FFFF trong TH - TL Do vậy khi bộ
Trang 7định thời đạt đợc giá trị cực đại của nó là 1FFFH thì nó sẽ quay trở về 0000 và cờ TF
đ-ợc bật lên
Lập trình chế độ 2
Các đặc trng và các phép tính của chế độ 2:
1 Nó là một bộ định thời 8 bít, do vậy nó chỉ cho phép các giá trị từ 00 đến FFH đợc nạp vào thanh ghi TH của bộ định thời
2 Sau khi TH đợc nạp với giá trị 8 bít thì 8051 lấy một bản sao của nó đa vào TL Sau
đó bộ định thời phải đợc khởi động Điều này đợc thực hiện bởi lệnh “SETB
TR0” đối với Timer0 và “SETB TR1” đối với Timer1 giống nh ở chế độ 1 3 Sau khi bộ
định thời đợc khởi động, nó bắt đầu đếm tăng lên bằng cách tăng thanh ghi TL Nó
đếm cho đến khi đại giá trị giới hạn FFH của nó Khi nó quay trở về 00 từ FFH, nó thiết lập cờ bộ định thời TF Nếu ta sử dụng bộ định thời Timer0 thì đó là cờ TF0, còn Timer1 thì đó là cờ TF1
Lập trình cho bộ đếm
phần trên đây ta đã sử dụng các bộ định thời của 8051 để tạo ra các độ trễ thời
gian Các bộ định thời này cũng có thể đợc dùng nh các bộ đếm các sự kiện xảy ra bên ngoài 8051 Công dụng của bộ đếm/ bộ định thời nh bộ đếm sự kiện sẽ đợc tình bày ở phần này Chừng nào còn liên quan đến công dụng củ bộ định thời nh bộ đếm sự kiện thì mọi vấn đề mà ta nói về lập trình bộ định thời ở phần trớc cũng đợc áp dụng cho việc lập trình nh là một bộ đếm ngoại trừ nguồn tần số Đối với bộ định thời/ bộ đếm khi dùng nó nh bộ định thời thì nguồn tần số là tần số thạch anh của 8051 Tuy nhiên khi nó đợc dùng nh một bộ đếm thì nguồn xung để tăng nội dung các thanh ghi TH và
TL là từ bên ngoài 8051 ở chế độ bộ đếm, hãy lu ý rằng các thanh ghi TMOD và
TH ,TL cũng giống nh đối với bộ định thời đợc bàn ở phần trớc, thậm chí chúng vẫn có cùng tên gọi Các chế độ của các bộ định thời cũng giống nhau
Trang 83)Màn hình tinh thể lỏng (LCD)
_ Ngày nay trong lĩnh vực thông tin và giải trí, việc dùng màn hình ống tia ca tốt truyền thống (CRT) đang dần đợc thay thế bằng việc sử dụng màn hình tinh thể lỏng (LCD) Vì LCD có nhiều u điểm vợt trội nh : Độ dày màn hình nhỏ hơn
rất nhiều , Kích thớc đa dạng từ loại màn hình nhỏ tới màn hình cực lớn, Tiêu thụ
ít năng lợng và không nguy hiểm bằng CRT
LCD dùng trong lĩnh vực điều khiển
LCD dùng trong thông tin giải trí (Màn hình Tivi, máy vi tính)
LCD dùng trong truyền thông (Màn hình điện thoại, hiển thị của hệ thống chuyên dụng)
ở phần này chúng ta chỉ xét tới LCD loại nhỏ và việc dùng LCD để hiển thị của hệ thống chuyên dụng
Cấu trúc của LCD
1a Giới thiệu sơ đồ chân LCD
_ LCD có tổng số 14 chân chia làm 3 nhóm:
Nhóm 1: (3 chân) Cấp nguồn VDD, VSS : cấp 5V, 0V
VEE: thay đổi điện áp để thay đổi độ tơng phản Nhóm 2: (8 chân) Vào ra thông tin với VĐK : Từ chân D0-D7
Nhóm 3 : (3 chân) Điều khiển việc vào ra thông tin : E,RS,R/W
E :(bật /tắt ) (cho phép/ không cho phép trao đổi thông tin với VĐK )
RS :(loại thông tin trao đổi)Thông tin trao đổi là lệnh điều khiển hay à
dữ liệu để hiển thị
Trang 9R/W : (hớng truyền của thông tin) đọc trạng thái từ LCD hay thông
tin do VĐK gửi vào LCD để hiển thị
Cụ thể tên gọi và mô tả chức năng các chân đợc tổng kết trong bảng sau:
Interface Pin Connections
Chân
2 VDD Cấp nguồn Nối với dơng nguồn (+4.5V~+5.5V)
3 VEE Contrast điều chỉnh điện áp chân này sẽ tăng giảm độ tơng phản
của LCD cho nên nó thờng đợc nối với biến trở.
4 RS Chọn thanh ghi Nếu RS=0 : LCD nhận lệnh từ VĐKNếu RS=1: LCD nhận dữ liệu từ VĐK để hiển thị
5 RW Read/Write Chọn chức năng ghi/ đọc
RS=1 : chọn chức năng đọc dữ liệu từ LCD vào VĐK RS=0 : chọn chức năng ghi dữ liệu từ VĐKvào LCD để hiểnt thị
6 E Read Write enable
Cho phép/ ko cho phép LCD trao đổi thông tin với VĐK Chỉ khi E chuyển từ 10 thì tín hiệu ở các chân D0-D7 mới đợc đa vào LCD.
Data bus 0-7
8 chân này đợc nối với VĐK để vào/ra thông tin
10 D3
11 D4
12 D5
13 D6
14 D7
_ Từ những đặc điểm và chức năng đã đợc đề cập ở trên ta có thể đi tới việc hình thành việc ghép nối của LCD với vi điều khiển nh sau:
Trang 10Nh trên hình minh hoạ ta có thể thấy các chân D0-D3
là đờng tín hiệu 2 chiều (để trao đổi thông tin Vi điều
khiển và LCD) 3 chân điều khiển RS, R/W, E là chân
đa tín hiệu điều khiển từ Vi điều khiển tới LCD nên
nó chỉ là đờng tín hiệu 1 chiều thôi
Vì chân Contrast (VEE) điều chỉnh độ tơng phản
của LCD nên ta cấp nguồn cho nó thông qua biến trở
(nh hình vẽ)
Cấu trúc bộ nhớ trong LCD.
Màn hiển thị của LCD nói chung có thể lên tới
hơn 40 ký tự trên một dòng và một màn có thể có tới
4 dòng.Trong đó có một bộ RAM để chứa mã 80 ký tự gọi là bộ nhớ
DDRAM(display data ram),màn hiển thị có thể dịch cả màn để quan sát đợc các
ký tự khác
Bộ ký tự hiển thị : Bộ hiển thị có thể hiển thị đợc các ký tự đã đợc lập trình trớc hoặc các ký tự do ngời dùng định nghĩa.Trong bộ điều khiển hiển thị có một
bộ nhớ ROM dùng để phát ký tự, trong Rom này chứa 192 ký tự,khi cần chọn những ký tự này thì nó đợc chọn thông qua từng mã của nó, có tới 96 mã ký tự ASCII, 64 mã ký tự tiếng Nhật, 32 ký tự đặc biệt khác Trong bộ điều khiển LCD cũng có một bộ RAM gọi là CGRAM(character generator ram) trong bộ nhớ
này lu 8 ký tự do ngời dùng định nghĩa, các ký tự đầu tiên phải viết vào CGRAM trớc rồi sau đó mới hiển thị ra màn hiển thị đợc
Khả năng hiển thị của LCD.
LCD có khả năng hiển thị rất linh hoạt
_ Thiết lập chế độ hiển thị :
Hiển thị trên 1 dòng hay cả 2 dòng
Chọn cỡ chữ hiển thị (5x7 hay5x10)
Chọn kiểu con trỏ màn hình (có/không gạch chân , có/không nhấp nháy) _ Thiết lập kiểu trao đổi thông tin :
Trao đổi thông tin với Vi điều khiển dùng 4 bit hay 8 bít
_ Trình bày nội dung hiển thị
Hiển thị ký tự trên LCD