You are on page 1of 30

MỤC LỤC

MỤC LỤC..................................................................................................................... 1
LỜI MỞ ĐẦU...............................................................................................................2
Chương 1: PHÂN TÍCH BÀI TOÁN.............................................................................3
1.1. Yêu cầu bài toán..................................................................................................3
1.2. Giải pháp thiết kế.................................................................................................3
1.2.1. Sơ đồ khối.....................................................................................................3
1.2.2. Phân tích chức năng nhiệm vụ từng khối......................................................3
1.2.3. Nguyên lý hoạt động toàn mạch....................................................................4
1.3. Linh kiện sử dụng................................................................................................4
1.3.1. Bộ vi điều khiển 89S52.................................................................................4
1.3.2. Động cơ bước................................................................................................8
1.3.3. LCD 16x2....................................................................................................10
1.3.5. Điện Trở......................................................................................................13
1.3.6. Nút bấm.......................................................................................................13
1.3.7. Tụ điện........................................................................................................13
Chương 2: THIẾT KẾ VÀ THỰC THI........................................................................15
2.1. Thiết kế phần cứng............................................................................................15
2.1.1. Sơ đồ nguyên lý...........................................................................................15
2.1.2.Lưu đồ thuật toán.........................................................................................16
2.1.2. Sơ đồ mạch in..............................................................................................18
2.2.2. Mã nguồn chương trình...............................................................................18
2.3. Một số hình ảnh sản phẩm.................................................................................26
KẾT LUẬN.................................................................................................................28
TÀI LIỆU THAM KHẢO...........................................................................................29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN..........................................................30

1
LỜI MỞ ĐẦU
Với sự phát triển ngày càng mạnh mẽ và rộng lớn của nền khoa học kỹ thuật.
Các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời để đáp ứng
những nhu cầu của xã hội, và một trong số đó phải kể đến là kỹ thuật vi điều khiển.
Hiện nay kỹ thuật vi điều khiển vẫn còn đang là một trong các lĩnh vực mới mẻ và đã
được đưa vào giảng dạy rộng rãi ở các trường đại học và cao đẳng trong cả nước. Tại
trường đại học công nghệ thông tin và truyền thông thái nguyên dưới sự giảng dạy và
chỉ dẫn nhiệt tình của các thầy cô đã mang lại cho sinh viên rất nhiều những hiểu biết
về vi điều khiển và các ứng dụng của vi điều khiển trong đời sống. Trên tinh thần học
đi đôi với hành, học gắn liền với lao động , sản xuất và đời sống, nhóm sinh viên
chúng em đã tìm hiểu và ứng dụng của vi điều khiển trong việc điều khiển động cơ
bước hiện thị trên led 7 thanh. Với sự hướng dẫn và chỉ dạy nhiệt tình của thầy
Nguyễn Thế Dũng chúng em đã tiến hành thiết kế và chế tạo mạch “ Điều khiển động
cơ bước hiện thị thông số lên LCD 16x2 dùng vi điều khiển AT89S52 “. Phần thiết kế
bao gồm: sơ đồ mạch lắp ráp, thuật toán, và viết chương trình điều khiển cho vi xử lý.
Mặc dù chúng em đã cố gắng rất nhiều để hoàn thành đề tài này, xong do giới
hạn về thời gian cũng như kiến thức nên nội dung còn nhiều thiếu sót. Rất mong được
sự đóng góp ý kiến của thầy cô để bài báo cáo của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn.

2
Chương 1: PHÂN TÍCH BÀI TOÁN.
1.1. Yêu cầu bài toán.
Mục tiêu thiết kế mạch điều khiển động cơ bước có sử dụng nút nhấn để thay
đổi tốc độ quay, chiều quay thuận ngược hiển thị số vòng quay lên LCD 16x2.
Gồm có nút nhấn điều khiển: START, STOP, TĂNG TỐC, GIẢM TỐC, QUAY
THUẬN, QUAY NGƯỢC.
1.2. Giải pháp thiết kế.
Mạch điều khiển động cơ bước sử dụng vi điều khiển 89S52, có khả năng nạp
onboard. Động cơ bước 5V. Khối hiển thị dùng LCD 16x2 hiển thị 2 dòng, mỗi dòng
16 ký tự.
1.2.1. Sơ đồ khối.

PHÍM ẤN NGUỒN
HIỂN THỊ ĐỘNG CƠ

LCD

ĐK ĐỘNG

VĐK 89C51 ĐỘNG CƠ

NGUỒN 12V

Hình 1.1. Sơ đồ khối chức năng của mạch.


1.2.2. Phân tích chức năng nhiệm vụ từng khối.
Khối nguồn: cung cấp nguồn điện cho toàn mạch. Cung cấp nguồn 5V cho vi
điều khiển và khối hiển thị. Cấp nguồn 12V cho khối cồng suất và khối động cơ.
Khối hiện thị: nhận tín hiệu điều khiển từ vi điều khiển và hiển thị số vòng
quay, tốc độ quay, chiều quay, bước quay của động cơ bước.
Khối vi điều khiển: có nhiệm vụ điều khiển hoạt động của toàn mạch. Nhận biết
lệnh điều khiển từ nút bấm, từ đó đưa ra các xung điện áp tương ứng để điều khiển
khối công suất và khối hiện thị. Cho người điều khiển biết được mạch hoạt động như
thế nào và trạng thái hoạt động của mạch. Việc hệ thống hoạt động có nhịp nhàng hay
không, tốt hay không, tốt hay không tốt phụ thuộc nhiều vào khối vi điều khiển.

3
Khối công suất: khuếch đại tín hiệu điều khiển từ khối điều khiển và cách ly rồi
đưa tới động cơ.
Khối động cơ: nhận tín hiệu điều khiển và thực hiện các lệnh đã được người lập
trình sẵn.
1.2.3. Nguyên lý hoạt động toàn mạch.
Mạch hoạt động dựa trên nguyên tắc quét từng cuộn dây của động cơ bước. Khi
mỗi cuộn dây được cấp điện động cơ sẽ quay 1 góc 90 0 qua bộ giảm tốc trục ngoài
cũng sẽ quay đc 1 góc 7,5 0 từ đó cứ mỗi 48 vòng quay của động cơ sẽ làm trục ngoài
của động cơ quay được 1 vòng hoàn chỉnh và chính xác.
Khi có tác động của khối nút nhấn, vi xử lý nhận tín hiệu nút nhấn điều khiển
dữ liệu xuất ra 4 chân từ P1.0 đến P1.3 để điều khiển động cơ bước. Do yêu cầu của
động cơ về dòng điện cao nên ta dùng thêm IC đệm dòng UNL2003 để đảm bảo động
cơ được cấp đủ dòng trong quá trình hoạt động, đồng thời tránh hiện tượng treo vi điều
khiển do xung nhiễu gây ra từ các cuộn dây của động cơ tác động ngược lại vi điều
khiển.
1.3. Linh kiện sử dụng.
1.3.1. Bộ vi điều khiển 89S52.
a. Sơ lược về vi điều khiển 89S52.
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩm
AT89S52 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên byte và cáctoán số
học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữliệu nhanh
trên RAM nội. Tập lệnh cung cấp một bảng tiện dụng của những lệnhsố học 8 bit gồm
cả lệnh nhân và lệnh chia. Nó cung cấp những hổ trợ mở rộngtrên chip dùng cho
những biến một bit như là kiểu dữ liệu riêng biệt cho phép quảnlý và kiểm tra bit trực
tiếp trong hệ thống điều khiển. AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte
bộ nhớ chỉ đọc cóthể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O,
3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán
song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.Các đặc điểm
của chip AT89S52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit
• 128 Byte RAM nội.

4
• 4 Port xuất /nhập I/O 8 bit.
• Giao tiếp nối tiếp.
• 64 KB vùng nhớ mã ngoài
• 64 KB vùng nhớ dữ liệu ngoại.
• 4µs cho hoạt động nhân hoặc chia

Hình 1.2. Hình ảnh thực tế của 89S52.


Cấu tạo bên trong IC 89S52.

Hình 1.3. Sơ đồ khối của vi điều khiển 89S52.


VĐK 8052 tín hiệu vào/EA trên chân 31 thường ở mức cao (+5V) hoặc mức
thấp (GND). Nếu ở mức cao thì 8952 thi hành chương trình từ ROM nội trong khoảng
địa chỉ thấp (4K hoặc 8K đối với 8052). Nếu ở mức thấp chương trình sẽ thi hành từ
bộ nhớ mở rộng (tối đa đến 64K).

5
Ta thấy rẳng, trong số 40 chân của 8052, có 32 chân có công dụng nhập/ xuất
dữ liệu, tuy nhiên 24 trong 32 đường này có 2 mục đích, 32 chân này hình thành 4 port
8-bit. Với các thiết kế yêu cầu một mức tối thiểu bộ nhớ ngoài hoặc các thành phần
bên ngoài khác, ta có thể sử dụng các port này làm nhiệm vụ nhập/ xuất. 8 đường cho
mỗi port có thể xử lí như một đơn vị giao tiếp với các thiếp bị song song như máy in,
bộ biến đổi D-A….hoặc mỗi đường có thể hoạt động độc lập giao tiếp với 1 thiết bị
đơn bit như chuyển mạch, LED, BJT, FET, cuộn dây, động cơ, loa…

Hình 1.4. Các chân của vi điều khiển 8052.


 Các cổng xuất/ nhập
Bốn cổng P0, P1, P2 và P3 đều sử dụng 8 chân và tạo thành cổng 8 bít. Tất cả các
cổng khi Reset đều được cấu hình như các đầu ra, sẵn sàng để được sử dụng như các cổng
đầu ra. Muốn sử dụng cổng nào trong số các cổng này làm đầu vào thì nó phải được lập
trình.
- Port P0: Cổng P0 chiếm tất cả 8 chân (từ chân 32 đến 39).
Nó có thể được dùng như cổng đầu ra, để sử dụng các chân của cổng P0 vừa làm
đầu ra, vừa làm đầu vào thì mỗi chân phải được nối tới một điện trở kéo bên ngoài 10kW.
Với những điện trở kéo ngoài được nối khi Reset cổng P0 được cấu hình như một cổng
đầu ra.

6
Điều này là do một thực tế là cổng P0 là một máng mở khác với các
cổng P1, P2 và P3. Khái niệm máng mở được sử dụng trong các chíp MOS về chừng
mực nào đó nó giống như collector hở đối với các chíp TTL.
- Port P1: Cổng P1 chiếm tất cả 8 chân (từ chân 1 đến chân 8).
Nó có thể được sử dụng như đầu vào hoặc đầu ra. So với cổng P0 thì cổng này
không cần đến điện trở kéo vì nó đã có các điện trở kéo bên trong. Trong quá trình
Reset thì cổng P1 được cấu hình như một cổng đầu ra.
Cổng P1 là đầu vào: Tương tự P0, để biến cổng P1 thành đầu vào thì nó phải
được lập trình bằng cách ghi 1 đến tất cả các bit của nó.
- Port P2: Cổng P2 chiếm 8 chân (các chân từ 21 đến 28).
Nó có thể được sử dụng như đầu vào hoặc đầu ra, không cần điện trở kéo. Khi
Reset, thì cổng P2 được cấu hình như một cổng đầu ra. Cổng P2 là đầu vào thì nó phải
được lập trình bằng cách ghi các số 1 tới tất cả các chân của nó.
Vai trò kép của P2: Trong các hệ thống 8751, 89C52 và DS5000 thì P2 được
dùng như đầu ra. Tuy nhiên trong hệ thống 80312 thì cổng P2 có thể được dùng cùng
với P0 để tạo ra địa chỉ 16 bit đối với bộ nhớ ngoài. Vì một bộ 8031 có khả năng truy
cập 64k byte bộ nhớ ngoài, nên nó cần một đường địa chỉ 16 bít. Trong khi P0 cung
cấp 8 bit thấp qua A0 - A7. Công việc của P2 là cung cấp các bít địa chỉ A8 -A15.
- Port P3: Port P3 chiếm 8 chân (các chân 10 đến 17).
Nó có thể được sử dụng như đầu vào hoặc đầu ra. Cổng P3 không cần các điện
trở kéo. Mặc dù cổng P3 được cấu hình như một cổng đầu ra khi Reset, nhưng đây
không phải là cách nó được sử dụng phổ biến nhất.
Cổng P3 được bổ sung các chức năng quan trọng, đặc biệt. Bảng 1 bảng
dưới cung cấp các chức năng khác của cổng P3. Thông tin này áp dụng cho cả 8052 và
8031.

7
Bảng 1:Chức năng các cổng của 8052.
Bít của cổng P3 Chức năng chân số
P3.0 Nhận dữ liệu (RXD) 10
P3.1 Phát dữ liệu (TXD) 11
P3.2 Ngắt 0(INT0) 12
P3.3 Ngắt 1(INT1) 13
P3.4 Bộ định thời 0 (TO) 14
P3.5 Bộ định thời 1 (T1) 15
P3.6 Ghi (WR) 16
P3.7 Đọc (RD) 17

1.3.2. Động cơ bước.


Động cơ bước là một loại động cơ điện có nguyên lý và ứng dụng khác biệt với
đa số các động cơ điện thông thường. Chúng thực chất là một động cơ đồng bộ dùng
để biến đổi các tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành
các chuyển động góc quay hoặc các chuyển động của rôto có khả năng cố định rôto
vào các vị trí cần thiết.
Về cấu tạo, động cơ bước có thể được coi là tổng hợp của hai loại động cơ:
ĐỘng cơ một chiều không tiếp xúc và động cơ đồng bộ giảm tốc công suất nhỏ.

Hình 1.5. hình ảnh động cơ bước.

8
- Cấu tạo động cơ bước:

Hình 1.6. cấu tạo động cơ bước.


Động cơ bước không quay theo cơ chế thông thường, chúng quay theo từng bước
nên có độ chính xác rất cao về mặt điều khiển học. Chúng làm việc nhờ các bộ chuyển
mạch điện tử đưa các tín hiệu điều khiển vào stato theo thứ tự và một tần số nhất định. Tổng
số góc quay của rôto tương ứng với số lần chuyển mạch, cũng như chiều quay và tốc độ
quay của rôto phụ thuộc vào thứ tự chuyển đổi và tần số chuyển đổi.
Phương pháp điều khiển động cơ bước: các cuộn dây được cấp dòng theo vòng.
Mỗi khi vòng dây được cấp thì động cơ được gọi là quay 1 bước.
- Hoạt động của từng cuộn dây trong động cơ bước:

Hình 1.7. cấu tạo bên trong động cơ bước.

9
Các cuộn dây ABCD được nạp theo chu trình:
“ABCD:=”1001”=>”1100”=>”0110”=>”0011”.
Lúc đó động cơ sẽ quay ngược chiều kim đồng hồ được 1 vòng. Muốn động cơ
quay thuận chiều kim đồng gồ thì ta chỉ việc thay đổi ngược lại chu trình nạp trên.
Tùy thuộc vào chương trình chạy cho trễ bao nhiêu thì tốc độ động cơ sẽ thay
đổi bấy nhiêu. Tốc độ của động cowtyr lệ nghịch với hàm trễ.
- Ứng dụng.
Động cơ bước có rất nhiều ứng dụng trong kỹ thuật, đặc biệt là trong điều khiển
kỹ thuật số, các dây truyền công nghệ hiện đại hiện nay hầy hết đêu khai thác sử dụng
loại động cơ này. Ngoài ra động cơ còn được dùng để chế tạo robot…
1.3.3. LCD 16x2.
LCD làm việc ở chế độn 8 bit nối với post của vi điều khiển.

Hinh 1.8.Hình dạng một LCD.


Đây là loại gồm 16 ký tự x2 dòng ,mỗi ký tự được tạo ra từ một ma trận điểm
sáng kích cỡ 5×7 hoặc 5×10.
Sơ đồ chân:

Hình 1.9.Sơ đồ chân LCD.

10
Bảng 3.1: Thứ tự các chân LCD và công dụng của chúng.
Chân Kí hiệu I/O Mô tả
1 Vss - Đất
2 VDD - Dương nguồn 5V
3 VEE - Cấp nguồn điều khiển
RS= 0 chọn thanh ghi lệnh; RS = 1
I
4 RS chonh thanh ghi dữ liệu
5 R/W I R/W = Đọc dữ liệu, RW=0 gi
6 E I/O Cho phép
7 D0 I/O Các bit dữ liệu
8 D1 I/O Các bit dữ liệu
9 D2 I/O Các bit dữ liệu
10 D3 I/O Các bit dữ liệu
11 D4 I/O Các bit dữ liệu
12 D5 I/O Các bit dữ liệu
13 D6 I/O Các bit dữ liệu
14 D7 I/O Các bit dữ liệu
Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất, VEE
chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , một
đầu nối mát . Chân VDD nối dương nguồn .
RS chân chọn thanh gi: có hai thanh gi trong LCD, chân RS được dùng để chọn
thanh gi như sau: RS=0 thì thanh gi mà lệnh được chọn để cho người dùng gửi một
lệnh chẳng hạn như xóa màn hình, đưa con trỏ về đầu dòng...Nếu RS = 1 thì thanh ghi
dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị lên LCD.
Chân đọc ghi RW: Đầu vào đọc ghi cho phép người dùng ghi thông tnin lên
LCD khi RW = 0 và đọc thông tin khi RW = 1.
Chân cho phép E (Enable) : Chân cho phép E được sử dụng bởi LCD để chốt
dữ liệu của nó. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống
thấp được áp đến chân này để LCD chốt các dữ liệu trên các chân dữ liệu. Xung này
phải rộng tổi thiểu là 450ns.
Chân Do-D7: Đây là 8 chân dữ liệu 8 bít, được dùng đẻ gửi thông tin lên LCD
hoặc đọc nội dung trong các thanh ghi của LCD. Để hiển thị các chữ cái và con số,
chúng ta gửi mã ASCII của các chữ cái từ A đến Z, a đến f và các con số từ 0 đến 9
đến chân này khi RS = 1.
Cũng có các mã lệnh mà có thể gửi đến LCD để xóa màn hình hoặc đưa con trỏ
về đầu dòng hoặc nhấp nháy con trỏ.
Để mạch hoạt động ta có thể mắc theo sơ đồ sau:

11
Hình 1.10.Sơ đồ nguyên lý LCD trong mạch.
1.3.4. ULN2003A.

Hình 1.11. Cấu tạo của ULN2003A.


ULN2003A là một IC dùng để khuếch đại dòng, vì vi điều khiển không đủ dòng
để điều khiển các cuộn dây của động cơ bước nên ta phải ghép thêm ICULN2003A để
cấp đủ dòng cho các cuộn dây trên stator của động cơ bước. Chúng ta có thể dùng các
IC khác để khuếch đại dòng như ULN2008, thyrytor trường IRF540 để cấp đủ dòng
cho stator nhưng dùng bóng bán dẫn làm bộ điều khiển thì cần sử dụng các diode để
ngăn dòng cảm ứng ngược tạo ra khi tắt cuộn dây. Vì thế 1 lý do mà ULN2003 được
ưa chuộng chính là vì nó đã có sẵn diode bên trong để ngăn dòng cảm ứng ngược.
1.3.5. Điện Trở.

12
Điện trở là linh kiện điện tử thụ động có tính cản trở dòng điện. trong mạch
điện nó có tác dụng điều chỉnh điện áp,hạn chế dòng điện, chia điện áp, điều chỉnh hệ
số khuếch đại, ổn định nhiệt...
Cấu tạo của điện trở: điện trở được cấu tạo từ những vật liệu có điện trở suất
cao như làm bằng than, magie kim loại NiO2, oxit kim loại,dây quấn... Người ta dùng
các vòng màu để biểu thị giá trị điện trở.
Kí hiệu: R

Hình 1.12. hình ảnh Điện trở than.


1.3.6. Nút bấm.

Hình 1.13. hình ảnh nút bấm.


1.3.7. Tụ điện.
Tụ điện là một linh kiện điện tử thụ động bao gồm hai bản cực ghép nối với
nhau được phân cách bởi một chất cách điện, gọi là điện môi (không khí, giấy, mica,
dầu nhờn, nhựa, cao su, gốm, thuỷ tinh...).
Trong mạch điện tụ điện có tác dụng lọc nguồn,nối tầng tín hiệu,khử nhiễu…
Giá trị của tụ điện là điện dung, được đo bằng đơn vị Farad (kí hiệu là F). Giá
trị F là rất lớn nên hay dùng các giá trị nhỏ hơn như micro fara (μF), nano Fara (nF)
hay picro Fara (pF).

13
Hình 1.14. hình ảnh các loại tụ.

14
Chương 2: THIẾT KẾ VÀ THỰC THI.
2.1. Thiết kế phần cứng.
2.1.1. Sơ đồ nguyên lý.
Sơ đồ nguyên lý được thiết kế trên phần mềm Proteus. Gồm các khối điều khiển
dùng vi điều khiển AT89S52, khối động cơ bước dùng IC đệm dòng UNL2003, khối
hiển thị LCD 16x2.

Hình 2.1.sơ đồ nguyên lý.

15
2.1.2.Lưu đồ thuật toán.

Start

Thiết lập LCD 16x2

Thiết lập timer0 đếm 1ms

Thiết lập chiều quay ban đầu

Phím Start
được nhấn? Gán thời gian trễ =8;

Gán biến đánh dấu =0;

Phím Stop
được nhấn? Gán biến đánh dấu =3;

1 2

16
2
1

Phím tăng
tốc được
nhấn? Giảm thời gian trễ 1;

Phím giảm
tốc được
nhấn? Tăng thời gian trễ 1;

Phím quay
thuận được
nhấn? Gán biến đánh dấu =1;

Phím quay
ngược được
nhấn? Gán bién đánh dấu = 2;

Chạy động cơ với thông số


thời gian trễ và biến đánh
dấu

17
2.1.2. Sơ đồ mạch in.
Mạch in khối điều khiển:

Hình 2.2.mạch in khối điều khiển.


- Mạch in khối động cơ và hiển thị.

Hình 2.3.mạch in khối động cơ và hiển thị.


2.2.2. Mã nguồn chương trình.
Code chương trình điều khiển động cơ bước hiển thị lên LCD 16x2:
#include <regx52.h>
//------------Khoi tao bien va cac gia tri gan-------------//
sbit RS_LCD = P2^5;
sbit RW_LCD = P2^6;
sbit E_LCD = P2^7;
sbit qn = P3^2;
sbit qt = P3^3;

18
sbit tt = P3^4;
sbit gt = P3^5;
sbit stop = P3^6;
sbit start = P3^7;

unsigned char M[] = {0,0x0c,0x04,0x06,0x02,0x03,0x01,0x09,0x08};


unsigned int v,vt,d1,d0;
unsigned char a,i,n,j,xungdelay,h;

//-------------------------

void delay_short()
{
unsigned int x;
for(x=0;x<10;x++);
}//--------------****------------------//
void delay(unsigned int time)
{
unsigned int q;
unsigned char e;
for (q=1; q<=time; q++)
{
for (e=1; e<=150; e++)
{;}
}
}
//các ham lcd
//----Ham kiem tra co ban-----
void kt_ban()
{
unsigned char x;
P0 = 0xff;

19
RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay(3);
E_LCD = 0;
x=P0;
x=x&0x80;
}
while(x!=0x80);
}
//---Ham ghi lenh giao tiep voi LCD---//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
delay(50);
P0 = lenh;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}
//---Ham ghi ky tu ra LCD---//
void ghi_kytu(unsigned char kytu)
{
kt_ban();
delay(50);
P0 = kytu;
RS_LCD = 1; // Chon che do doc du lieu tu 8051
RW_LCD = 0;

20
E_LCD =1;
delay_short();
E_LCD = 0;
}
//---Ham ghi nhanh ky tu ra LCD---//
void ghi_nhanh ( unsigned char kytu)
{
kt_ban();
P0 = kytu;
RS_LCD = 1;
RW_LCD = 0;
E_LCD = 1;
delay_short();
E_LCD = 0;
}
//---Ham ghi chuoi ky tu ra LCD----//
void ghi_chuoi(char *str)
{
while(*str)
{
ghi_kytu(*str);
str++;
}
}
void ghi_chuoi1(char *str)
{
while(*str)
{
ghi_kytu(*str);
str++;
ghi_lenh(0x07);
}

21
}
//---Ham ghi nhanh chuoi ky tu ra LCD---//
void ghi_nhanh_chuoi(char *str)
{
while(*str){
ghi_nhanh(*str);
str++;
}
}
//---Ham ghi so nguyen ra LCD---//
void hienthiso(unsigned char n){
int c1, d1;
c1=n/10; n=n-c1*10;
d1=n;
ghi_lenh(0xc0);
//ghi_lenh(0x0c);
if((a<1)||(a>2)||(h==1)) ghi_nhanh_chuoi(" STOP -> START!");
else{
if(a==1)ghi_nhanh_chuoi("QT : ");
else if(a==2) ghi_nhanh_chuoi("QN : ");
if(c1!=0) ghi_nhanh(c1+48); // Doi ra hang chuc, ma ascii
ghi_nhanh(d1+48); // Doi ra hang don vi, ma ascii
ghi_nhanh_chuoi(" V/Phut ");
}
}
//---Ham khoi tao LCD---//
void setting_LCD()
{
ghi_lenh(0x38);
ghi_lenh(0x01); // Xoa man hinh
ghi_lenh(0x0f); // Co dich hien thi
}

22
//ham gioi thieu
void gioi_thieu()
{
ghi_lenh(0x01);
ghi_lenh(0x0c);
ghi_chuoi("MACH DIEU KHIEN ");
delay(300);
ghi_lenh(0xC0);
ghi_lenh(0x0c);
ghi_chuoi("DONG CO BUOC ");
ghi_lenh(0xC0);
ghi_lenh(0x0c);
ghi_chuoi(" VDK 8051 ");
delay(2000);
delay(2000);
ghi_lenh(0x01);
ghi_lenh(0x0c);
ghi_chuoi(" START ");
delay(2000);
}
//--------------------------

//-------------------------
//---Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban---//

void khoitao(void){// Ham khoi tao


TMOD=0x01;
IE=0x82; //chon timer0
TH1=0x3c;
TL1=0xb0;
TH0=0xfc;
TL0=0x18;

23
TR1=1; //khoi dong timer1
TR0=1;
n=0;

}//----------------------------------------//

void ktphim()
{
if(tt==0)
{ while (tt==0) {;}
if(vt>=15) vt=15;
else vt++;
if(xungdelay<2) xungdelay=1;
else xungdelay=xungdelay-1;
}
if(gt==0)
{ while (gt==0) {;}
if(vt<=1) vt=1;
else vt--;
if( xungdelay>=16) xungdelay=16;
else xungdelay=xungdelay+1;
}
if(qt==0)
if(a==3) {a=1; h=1;}
else a=1;
if(qn==0)
if(a==3) {a=2; h=1;}
else a=2;
if(stop==0) a=3;
if(start==0)

24
{
vt=8;
if(a==3) a=1;
h=0;
xungdelay=8;
}
}
void dich()
{
if((a==1)&&(h==0)) i++;
if((a==2)&&(h==0))i--;
if(i==9) i=1;
if(i==0) i=8;
P1 = M[i];
}

void main()
{
P1=0;
khoitao();
setting_LCD();
gioi_thieu();
ghi_lenh(0x01);
ghi_lenh(0x0c);
ghi_chuoi("TOC DO HIEN TAI:");
xungdelay=8;
d0=0;
a=3;
while(1)
{
ktphim();
P1 = M[i];

25
ghi_lenh(0xc0);
hienthiso(vt);
}

}
void timer0(void) interrupt 1
{
TR0=0;
d0=d0+1;
if(d0==xungdelay)
{
P3_1=P3_1 ^1;
d0=0;
dich();
}
if(d0>18) d0=0;
TL0=0x18;
TH0=0xfc;
TR0=1;
}
2.3. Một số hình ảnh sản phẩm.

Hình 2.4. Hình ảnh mạch sau khi hoàn thành.

26
Hình 2.5. Hình ảnh mạch sau khi hoàn thành.

27
KẾT LUẬN
Với Đề tài Vi Điều Khiển giúp cho sinh viên bổ sung thêm kỹ năng về lập trình
cũng như làm mạch trong thực tế và xử lý sự cố. Đề tài của em đã làm về điều khiển
động cơ bước ứng dụng cho vi điều khiển họ AT89XX. Thông qua module này em đã
được tiếp cận với các thiết bị điện tử ngoài thực tế, nó sẽ rất có ích với iệc công tác của
em sau này. Với sự hướng dẫn nhiệt tình của cô Ngô Thị Vinh cùng sự cố gắng và tìm
hiểu em đã thiết kế ứng dụng một số Modul của vi điều khiển trong lĩnh vực điều
khiển cơ học. Trong quá trình thực hiện còn một số chỗ chưa thật tối ưu , rất mong
được sự góp ý , hướng dẫn của thầy cô và các bạn .
Qua đây em cũng xin gửi lời cảm ơn tới các thầy cô đã trang bị cho chúng em
vốn kiến thức đầy đủ để giúp cho quá trình thực tế không ngỡ ngàng và tự tin với kiến
thức mình đã được trang bị ở trường. Đặc biêt em xin gửi lời cảm ơn tới giáo viên
hướng dẫn của em cô Ngô Thị Vinh, thầy đã giúp đỡ Tôi rất nhiều trong bài báo cáo
chuyên ngành lần này.

28
TÀI LIỆU THAM KHẢO
[1] Dương Quốc Hưng – Kỹ thuật vi xử lý – Trường đại học kỹ thuật công
nghiệp Thái Nguyên, 2009.
[2] Douglas W. Jones,Đoàn Hiệp dịch, Điều khiển động cơ bước –Trường đại
học bách khoa HCM 2010
[3] Nguyễn Hoàng Sơn- Mạch nối động cơ bước với vi điều khiển-Trường cao
đẳng kỹ thuật Cao Thắng 2010.
[4] Phạm Hùng Kim Khánh-Tài liệu thực hành vi điều khiển – Trường đại học
bách khoa Đà Nẵng 2010
[5] Kiều Xuân Thực – Vi điều khiển cấu trúc- lập trình và ứng dụng – Nhà xuất
bản giáo dục 2008.

29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

30

You might also like