thuyết minh đồ án
TRANSCRIPT
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Tên đề tài: THIẾT KẾ, CHẾ TẠO BỘ KIT THỰC HÀNH VI ĐIỀU KHIỂN
Nhận Xét Của Giáo Viên Hướng Dẫn:
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
Hưng Yên, ngày…..tháng….năm 2012
Giáo Viên Hướng Dẫn
MỤC LỤC
Phần I: CƠ SỞ LÝ THUYẾT …………………………………….5
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 1
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Chương I: Tổng quan về vi điều khiển AT89C51………………………5
1.1. Giới thiệu cấu trúc phần cứng họ MSC-51(AT89C51)……………..5
1.2. Khảo sát sơ đồ chân AT89C51, chức năng từng chân……………...6
1.3. Cấu trúc bên trong vi điều khiển……………………………………9
1.4. Hoạt động TIME của AT89C51…………………………………...15
1.5. Hoạt động PORT nối tiếp………………………………………….22
1.6. Tóm tắt tập lệnh của 89C51……………………………………….31
1.7. Lập trình FLASH AT89C51………………………………………37
Phần II: Thiết kế và thi công phần cứng của bộ KIT……………..39
Chương I: Thiết kế bộ KIT vi điều khiển ……………………………..39
1.1. Mục đích và yêu cầu thiết kế vi điều khiển phục vụ thí nghiệm….39
1.2. Chọn phương án thiết kế…………………………………………42
1.3. Xây dựng sơ đồ khối của bộ KIT…………………………………43
1.4. Thiết kế và lựa chọn linh kiện từng module………………………44
1.5. Thi công mạch…………………………………………………….55
Chương II: Lắp ráp linh kiện …………………………………………58
2.1. Module mạch nạp…………………………………………………58
2.2. Module CPU………………………………………………………60
2.3. Module led đơn…………………………………………………...61
2.4. Module led 7 thanh……………………………………………….61
2.5. Module ledma trận………………………………………………..62
2.6. Module hiển thị LCD……………………………………………..62
2.7. Module điều khiển động cơ một chiều……………………………64
2.8. Module điều khiển động cơ bước…………………………………65
2.9. Hệ thống công tắc 3 cực…………………………………………..65
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 2
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
LỜI NÓI ĐẦU
Ngày nay kĩ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong
dân dụng. Từ các dây truyền sản xuất lớn đến các thiết bị gia dụng chúng ta đều thấy sự
hiện diện của vi điều khiển ( VĐK ). Các bộ VĐK có khả năng xử lý nhiều hoạt động phức
tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp
bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng. VĐK không những góp phần
vào kỹ thuật điều khiển mà còn góp phần to lớn vào phát triển thông tin. Đó là sự ra đời
của hàng loạt thiết bị viễn thông và truyền hình hiện đại, đặc biệt sự ra đời của mạng
internet – góp phần đưa con người lên đỉnh cao của nền văn minh nhân loại.
Chính vì các lí do trên, việc tìm hiểu khảo sát VĐK là điều mà các sinh viên ngành điện tử
chúng em hết sức quan tâm . Các bộ điều khiển sử dụng VĐK tuy đơn giản nhưng để vận
hành và sử dụng được lại là một điều rất phức tạp. Phần công việc sử lý chính vẫn là con
người đó chính là chương trình hay phần mềm. Tuy chúng ta thấy các máy tính ngày nay
cực kỳ thông minh, giải quyết các bài toán phức tạp trong vài phần triệu giây nhưng đó
cũng đều là dựa trên sự hiểu biết của con người. Nếu không có sự tham gia của con người
thì hệ thống VĐK cũng chỉ là một vật vô tri. Do vậy khi nói đến VĐK cũng như máy tính
bao gồm phần cứng và phần mềm.
Các bộ VĐK theo thời gian cũng phát triển rất nhanh cùng với công nghệ bán dẫn, từ các
bộ VĐK 4 bit đơn giản tới các bộ VĐK 32 bit. Bộ VĐK 8 bit là cơ sở để chúng ta tìm hiểu và
sử dụng các bộ VĐK tối tân hơn, đây chính là bước đầu tiên để chúng ta tìm hiểu sâu vào
lĩnh vực này.
Để tìm hiểu bộ VĐK một cách khoa học và mang lại hiệu quả cao làm nền tảng cho việc
xâm nhập công nghệ tối tân hơn. Việc trang bị những kiến thức về VĐK cho sinh viên là
hết sức cần thiết. Xuất phát từ thực tế này em đã quyết định thực hiện đề tài “ Thiết kế
bộ KIT thực hành vi điều khiển 8051”.
Trong những thập niên gần đây công nghiệp hoá hiện đại hoá ngày càng phát triển mạnh mẽ. Kỹ thuật điện tử đã có những bước phát triển mạnh đặc biệt là trong kỹ thuật điều khiển tự động, kỹ thuật vi điều khiển.
Ở nước ta hiện nay, việc lập trình ghép nối máy tính sử dụng vi điều khiển đã và đang là công cụ được ứng dụng rộng rãi trong lĩnh vực tự động hoá. Nó phát triển nhanh chóng, đã mang lại những thay đổi to lớn trong công nghệ cũng như trong đời sống hàng ngày. Việc các máy móc thiết bị trở lên linh hoạt hơn, thông minh hơn và làm việc với năng suất cao là nhờ có sự hoạt động thông minh của bộ vi điều khiển.
Đặc biệt, trong các trường Đại Học và Cao Đẳng trong cả nước, thì việc sử dụng những công nghệ của khoa học kỹ thuật để chế tạo ra các mô hình có khả năng ứng
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 3
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
dụng cao trong học tập, luôn là điều mong mỏi không chỉ của các thầy cô mà còn là niềm mong đợi của rất rất nhiều sinh viên khoa Điện - Điện Tử trường ĐHSPKT HƯNG YÊN.
Xuất phát từ nhu cầu thực tế, do trang thiết bị giảng dạy vẫn chưa đáp ứng đủ nhu cầu học tập của sinh viên.Vì vậy chúng em được nhận đề tài : “ THIẾT KẾ, CHẾ TẠO BỘ KIT THỰC HÀNH VI ĐIỀU KHIỂN” dưới sự hướng dẫn nhiệt tình của Cô Phạm Thị Ngọc Anh, cùng với sự nỗ lực của các thành viên trong nhóm chúng em đã hoàn thành đề tài được giao.
Do kiến thức còn nhiều hạn chế chính vì vậy mà sản phẩm của chúng em không thể tránh khỏi những thiếu xót nhất định nên chúng em rất mong nhận được sự đóng góp của các thầy cô cùng toàn thể các bạn sinh viên để sản phẩm của chúng em được hoàn thiện hơn.
Chúng em xin trân thành cảm ơn!
Hưng Yên, ngày…..tháng … năm 2012
1.Đặt vấn đề
Họ vi điều khiển 8051 hiện đang được sử dụng rất phổ biến , chúng xuất hiện trong
rất nhiều ứng dụng như điều khiển , đo lường , điện thoại …Hơn thế nữa, chúng
còn xuất hiện nhiều trong các hệ thống nhúng SoC , rất phát triển hiện nay . Việc
nghiên cứu học tập kỹ thuật vi xử lý nói chung , các họ vi điều khiển nói riêng ,
trong đó điển hình là họ 8051 là rất cần thiết cho sinh viên điện điện tử - viễn
thông . Để có thể học tập, nghiên cứu , thiết kế tốt về các họ vi điều khiển rất cần
thiết cho các thiết bị thí nghiệm thực hành cũng như các công cụ hỗ trợ thiết kế hệ
vi điều khiển .Trong thực tế có rất nhiều các thiết bị thí nghiệm , các công cụ hỗ trợ
thiết kế vi xử lý khá chuyên nghiệp như hệ phát triển , hệ kiểm tra logic , máy nạp
ROM , các bộ phần mềm dịch chéo …trong đó hệ phát triển đóng vai trò quan
trọng nhất . Song việc trang bị các thiết bị chuyên dụng trên đòi hỏi phải có lượng
kinh phí lớn , khó có thể trang bị đại trà , trong khi đó khả năng hiện nay chungsta
có thể thiết kế các thiết bị như vậy với giá thành phẩm rẻ. Vì vậy chúng em đã lựa
chọn thiết kế bộ kit thực hành vi điều khiển để phục vụ cho việc học tập nghiên
cứu của sinh viên .
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 4
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
2. Tính cấp thiết của đề tài
Với mục đích chính là hỗ trợ sinh viên thí nghiệm thực hành môn kỹ thuật vi xử
lý và thiết kế hỗ trợ ứng dụng vi xử lý , bộ KIT phải được thiết kế đa dạng gồm
nhiều modul ứng dụng sử dụng được phần lớ khả năng và tài nguyên của họ vi
điều khiển 8051 và phải có cấu trúc mở cho phép hỗ trợ sinh viên phát triển thêm
các thiết bị ứng dụng riêng .Cấu trúc của bộ KIT bao gồm các modul ứng dụng đa
dạng phục vụ việc học tập :
- Modul điều khiển chính
- Modul điều khiển 32 led đơn
- Modul điều khiển led 7 thanh
- Modul điều khiển động cơ bước
- Modul điều khiển động cơ DC
- Modul điều khiển matrix 8x8
- Modul điều khiển LCD 16x2
- Modul điều khiển ADC
- Modul SWITCH
Giải quyết vấn đề :
- Sử dụng vi điều khiển AT89C51 làm chíp điều khiển trung tâm.
- Sử dụng cảm biến nhiệt độ LM35 để xác định nhiệt độ.
- Dùng IC ADC0804 để biến đổi tín hiệu dạng tương tự sang dạnh số.
- Dùng LCD 16x2 để hiện thị nhiệt độ đo được một cách trực quan nhất.
- Dùng IC ổn áp 7805, để duy trì ổn định mức điện áp cho mạch điện.
Ngoài ra trong mạch còn dùng một số linh kiện khác để thực hiện truyền tín hiệu giữa
vi điều khiển trung tâm với các thiết bị nói trên.
-
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 5
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Phần I: CƠ SỞ LÝ THUYẾT
Chương I: TỔNG QUAN VỀ VI ĐIỀU KHIỂN
1.Sơ lược về Vi Điều Khiển.
- Một bộ Vi Điều Khiển là một mạch chứa hang ngàn thậm chí hàng triệu Transisor (LSI,VLSI) được kết nối với nhau. Các transistor ấy cùng nhau làm việc để lưu trữ và xử lý dữ liệu cho phép bộ vi xử lý thực hiện nhiều chức năng hữu ích. Chức năng của vi xử lý được xác định bằng nhiều phần mềm có thẻ lập trình được. - Hệ thống vi xử lý gồm 3 khối chúc năng: Vi xử lý,bộ nhớ, các cổng I/O.Bộ nhớ được thực hiện bằng các chip nhớ bán dẫn ROM hoặc RWM là nơi lưu trữ chương trình và dữ liệu.Đối với vi xử lý bộ nhớ là nơi tập hợp các ô nhớ phân biệt theo địa chỉ của chúng.Các cổng I/O được thực hiện bắng các chip MSI hoặc Bằng LSI là phần mềm giao tiếp giữa vi xử lý với các thiết bị I/O. Bộ Vi xử lý cũng phân biệt các cổng I/O theo địa chỉ của chúng.
1.1. GIỚI THIỆU CẤU TRÚC PHẦN CỨNG HỌ MSC-51 (AT89C51)
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương tự
như nhau. Ở đây giới thiệu ICAT89C51 là một họ IC vi điều khiển do hãng Intel của
Mỹ sản xuất. Chúng có các đặc điểm chung như sau:
Các đặc điểm của AT89C51 được tóm tắt như sau :
- 8 KB EPROM bên trong.
- 128 Byte RAM nội.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 6
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
- 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.
- Xử lí Boolean (hoạt động trên bit đơn).
- 210 vị trí nhớ có thể định vị bit.
Hình 1.1 : Sơ đồ khối của AT89C51:
1.2. KHẢO SÁT SƠ ĐỒ CHÂN AT89C51, CHỨC NĂNG TỪNG CHÂN
1.2.1. Sơ đồ chân AT89C51:
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 7
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
a) DIP b)PLCC
Hình 1.2: Sơ đồ chân IC AT89C51
1.2.2. Chức năng các chân của AT89C51:
- AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó
có 24 chân có hai tác dụng (có nghĩa 1 chân có 2 chức năng), mỗi
đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là
thành phần của các bus dữ liệu và bus địa chỉ.
1.2.1. Các Port:
- Port 0 :
Port 0 là port ở các chân 32 – 39 của AT89C51. 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 các
thiết kế cỡ 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:
Port 1 là port I/O trên các chân 1-8. Các chân được ký hiệu P1.0, P1.1, P1.2, … , P1.7,
có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng
khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.
- Port 2 :
Port 2 là 1 port có hai tác dụng trên các chân 21 - 28 được 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:
Port 3 là port có hai tác dụng trên các chân 10 - 17. Các chân của port này có
nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của
AT89C51 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
P3.0 RXD Nhận tín hiệu kiểu nối tiếp.
P3.1 TXD Truyền tín hiệu kiểu nối tiếp.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 8
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
INT0\
INT1\
T0
T1
WR\
RD\
Ngắt ngoài 0.
Ngắt ngoài 1.
Chân vào 0 của Timer/Counter 0.
Chân vào1 của Timer/Counter 1.
Ghi dữ liệu vào bộ nhớ ngoài.
Đọc dữ liệu từ bộ nhớ ngoài.
Bảng 1.1: Chức năng chân PORT 3
1.2.2. Các đầu tín hiệu điều khiển :
-/PSEN :
Chân cho phép đọc bộ nhớ chương trình ngoài(ROM ngoài). PSEN là tín hiệu đầu ra ở
chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nối đến
chân 0E\ (output enable) của Eprom cho phép đọc các byte mã lệnh.
PSEN ở mức thấp trong thời gian Microcontroller AT89C51 lấy lệnh. Các mã lệnh
của chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi
lệnh bên trong AT89C51 để giải mã lệnh. Khi AT89C51 thi hành chương trình trong
ROM nội PSEN sẽ ở mức logic 1.
-ALE (/PROG ) :
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ỉ. Tín hiệu chốt được kích hoạt ở mức cao,tần số xung chốt =1/6 tần số
dao động của bộ VDK. Nó có thể được dùng cho các bộ Time ngoài hoặc cho mục
đích tạo xung Clock. Đây cũng là chân xung vào để nạp chương trình cho Plash (hoặc
EEPROM) bên trong On-chíp khi nó ở mức thấp.
- /EA/Vpp:
Cho phép On-chip truy cập bộ nhớ chương trình ngoài khi /EA=0, nếu /EA=1 thì On-
chip sẽ làm việc với bộ nhớ chương trình nội trú (trường hợp cần truy cập vùng nhớ
lớn hơn dung lượng bộ nhớ chương trình nội trú, thì bộ nhớ chương trình ngoài cũng
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 9
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
được sử dụng). Khi chân này được cấp nguồn điện áp 12V(Vpp) thì On-chi Đảm nhận
chức năng nạp chương trình cho Flash bên trong nó.
-RST (Reset) :
Đầu vào RST ở chân 9 là đầu vào Reset của AT89C51. Khi đầu vào tín hiệu
này đưa lên cao ít nhất là 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 tự động Reset.
- XTAL1,XTAL2:
Chân vào, ra mạch khuếch đại dao động.bộ dao động được tích hợp bên trong
AT89C51, khi sử dụng AT89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các
tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho AT89C51 là 12MHz,
để truyền thông thì sử dụng thạch anh 11.0592Mhz là chuẩn để tạo ra tốc độ baud.
- Chân 40 (Vcc) :Được nối lên nguồn 5V.
- GND : nối mass.
1.3. CẤU TRÚC BÊN TRONG VI ĐIỀU KHIỂN
1.3.1. Tổ chức bộ nhớ:
Hình 1.3: Tổ chức bộ nhớ vi điều khiển
Bảng tóm tắt các vùng nhớ AT89C51
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 10
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Địa
chỉ
byte
Địa chỉ bit
Địa
chỉ
byte
Địa chỉ bit
7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
RAM đa dụng
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
30 B8 - - - BC BB BA B9 B8 IP
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF AC AB AA A9 A8 IE
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40 99 Không định địa chỉ bit SBUF
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D Không định địa chỉ bit TH1
22 17 16 15 14 13 12 11 10 8C Không định địa chỉ bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B Không định địa chỉ bit TL1
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 11
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
20 07 06 05 04 03 02 01 00 8A Không định địa chỉ bit TL0
1F Bank 3 89 Không định địa chỉ bit TMOD
18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
17 Bank 2 87 Không định địa chỉ bit PCON
10
0F Bank 1 83 Không định địa chỉ bit DPH
08 82 Không định địa chỉ bit DPL
07 Bank thanh ghi 0 81 Không định địa chỉ bit SP
00 (mặc định cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0
Bảng 1.2: Vùng nhớ RAM của AT89C51
Thanh ghi trạng thái chương trình (PSW: Program Status Word):
BIT SYMBOL ADDRESS DESCRIPTION
PSW.7 CY D7H Cary Flag
PSW.6 AC D6H Auxiliary Cary Flag
PSW.5 F0 D5H Flag 0
PSW4 RS1 D4H Register Bank Select 1
PSW.3 RS0 D3H Register Bank Select 0
00=Bank 0; address 00H(07H)
01=Bank 1; address 08H(0FH)
10=Bank 2; address 10H(17H)
11=Bank 3; address 18H(1FH)
PSW.2 OV D2H Overlow Flag
PSW.1 - D1H Reserved
PSW.0 P DOH Even Parity Flag
Bảng 1.3: Thanh ghi từ trạng thái.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 12
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):
Cờ nhớ trong phép toán số học nếu có nhớ từ phép cộng bít số 7 hoặc có số mượn
mang đến bít 7 thì CY được đặt bằng 1
- Cờ Carry phụ AC (Auxiliary Carry Flag):
Cờ nhớ phụ (Đối với mã BCD). Khi cộng các giá trị BCD, nếu có một số nhớ được tạo
ra từ bit 3 chuyển sang bit 4 thì AC được đặt bằng 1. Khi giá trị được cộng bằng là
BCD lệnh cộng phải được thực hiện tiếp theo bởi lệnh DA A( hiệu chỉnh thập phân
nhanh chứa A) để đưa các kết quả lớn hơn về giá trị đúng.
Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ
thống và được thay đổi bởi phần mềm khi cần thiết.
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là
Bank 0, Bank1, Bank2, Bank3.
BANK RS1 RS0
Bank 0 0 0
Bank 1 0 1
Bank 2 1 0
Bank 3 1 1
Bảng 1.4: Bits chọn băng thanh ghi.
- Cờ tràn OV (Over Flag) :
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 13
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán học thì
OV được đặt bằng 1.Khi các số có dấu được cộng hoặc trừ , phần mềm có thể kiểm tra
OV để xác định xem kết quả có nằm trong tầm xác định không. Khi các số không có
dấu được cộng bit OV được bỏ qua. Các kết quả lớn hơn +128 hoặc nhỏ hơn –127 thì
bit OV=1.
- Bit Parity (P):
Bit tự động được Set hay Clear bằn phần cứng trong mỗi chu trình lệnh để chỉ thị số
chẵn hay lẻ của bít 1 trong thanh ghi tích lũy .Số các bít trong A cộng với bit P luôn
luôn là số chẵn.
1.3.2. Bộ nhớ ngoài (external memory) :
AT89C51 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương trình và 64k
byte bộ nhớ dữ liệu ngoài. Do đó có thể dùng thêm RAM và ROM nếu cần.Khi dùng
bộ nhớ ngoài, Port0 không còn chức năng I/O nữa. Nó được kết hợp giữa bus địa chỉ
(A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt
byte của bus địa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port được cho là byte thấp của bus
địa chỉ.
Truy xuất bộ nhớ dữ liệu ngoài (Accessing External Data Memory):
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được cho
phép của tín hiệu RD\ và WR. Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6 (WR).
Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộ đệm dữ
liệu 16 bit (DPTR), R0 hoặc R1 như là một thanh ghi địa chỉ.
Các RAM có thể giao tiếp với AT89C51 tương tự cách thức như EPROM ngoại
trừ chân RD\ của AT89C51 nối với chân OE\ (Output Enable) của RAM
và chân WR\ của AT89C51 nối với chân WE\ của RAM. Sự nối các bus địa chỉ
và dữ liệu tương tự như cách nối của EPROM.
Hoạt động Reset:
AT89C51 có đầu vào Reset RST tác động ở mức cao trong khoảng thời gian 2
chu kỳ xung máy, sau đó xuống mức thấp để AT89C51 bắt đầu làm việc.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 14
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Hoạt động Reset cần thiết khi lập trình hay khi đang thực thi chương trình bị lỗi
chúng ta có thể RST có thể kích bằng tay bằng một phím nhấn thường hở, sơ đồ mạch
Reset như sau:
Hình 1.4: Reset bằng tay.
Trạng thái của tất cả các thanh ghi trong AT89C51 sau khi reset hệ thống được
tóm tắt như sau:
Thanh ghi Nội dung
Đếm chương trình PC
Thanh ghi tích lũy A
Thanh ghi B
Thanh ghi thái PSW
SP
DPRT
Port 0 đến port 3
IP
IE
Các thanh ghi định
thời
SCON SBUF
0000H
00H
00H
00H
07H
0000H
FFH
XXX0 0000 B
0X0X 0000 B
00H
00H
00H
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 15
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
PCON (MHOS)
PCON (CMOS)
0XXX XXXXH
0XXX 0000 B
Bảng 1.5: Trạng thái AT89C51 khi RESET
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 đầu 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 trên chip không bị thay đổi bởi
tác động của đầu vào Reset.Khi khởi động lại bộ VĐK(Reset) thì giá trị của các cổng
đều ở mức logic 1.
1.4.HOẠT ĐỘNG TIMER CỦA AT89C51.
1.4.1. Giới thiệu.
Bộ định thời của Timer là một chuỗi các Flip Flop được chia làm 2, nó nhận tín
hiệu vào là một nguồn xung clock, xung clock được đưa vào Flip Flop thứ nhất là
xung clock của Flip Flop thứ hai mà nó cũng chia tần số clock này cho 2 và cứ tiếp
tục.
Vì mỗi tầng kế tiếp chia cho 2, nên Timer n tầng phải chia tần số clock đầu vào
cho 2n. Đầu ra của tầng cuối cùng là clock của Flip Flop tràn Timer hoặc cờ mà nó
kiểm tra bởi phần mềm hoặc sinh ra ngắt. Giá trị nhị phân trong các FF của bộ Timer
có thể được nghĩ như đếm xung clock hoặc các sự kiện quan trọng bởi vì Timer được
khởi động. Ví dụ Timer 16 bit có thể đếm đến từ FFFFH sang 0000H.
Hoạt động của Timer đơn giản 3 bit được minh họa như sau:
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 16
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Hình 1.5: Hoạt động của Timer đơn giản
Trong hình trên mỗi tầng là một FF loại D phủ định tác động cạnh xuống được
hoạt động ở mode chia cho 2 (đầu ra Q\ được nối vào D). FF cờ là một bộ chốt đơn
giản loại D được set bởi tầng cuối cùng trong Timer. Trong biểu đồ thời gian, tầng đầu
đổi trạng thái ở tần số clock, tầng thứ hai đổi trạng thái ở tần số tần số clock . . . Số
đếm được biết ở dạng thập phân và được kiểm tra lại dễ dàng bởi việc kiểm tra các
tầng của 3 FF. Ví dụ số đếm “4” xuất hiện khi Q2=1, Q1=0, Q0=0.
Các Timer được ứng dụng thực tế cho các hoạt động định hướng. AT89C51 có
2 bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động. Các Timer dùng để đếm giờ, đếm
các sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud bởi sự gắn liền Port nối tiếp.
Mỗi sự định thời là một Timer 16 bit, do đó tầng cuối cùng là tầng thứ 16 sẽ chia tần
số clock vào cho 216 = 65.536.
Trong các ứng dụng định thời, 1 Timer được lập trình để tràn ở một khoảng thời
gian đều đặn và được set cờ tràn Timer. Cờ được dùng để đồng bộ chương trình để
thực hiện một hoạt động như việc đưa tới 1 tầng các đầu vào hoặc gởi dữ liệu đếm đầu
ra. Các ứng dụng khác có sử dụng việc ghi giờ đều đều của Timer để đo thời gian đã
trôi qua hai trạng thái (ví dụ đo độ rộng xung). Việc đếm một sự kiện được dùng để
xác định số lần xuất hiện của sự kiện đó, tức thời gian trôi qua giữa các sự kiện.
Các Timer của AT89C51 được truy xuất bởi việc dùng 6 thanh ghi chức năng
đặc biệt như sau :
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 17
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Timer SFR Purpose Address Bit-Addressable
TCON Control 88H YES
TMOD Mode 89H NO
TL0 Timer 0 low-byte 8AH NO
TL1 Timer 1 low-byte 8BH NO
TH0 Timer 0 high-byte 8CH NO
TH1 Timer 1 high-byte 8DH NO
Bảng 1.6: Các thanh ghi truy suất Timer
1.4.2. Các thanh ghi điều khiển timer.
1.4.2.1.Thanh ghi điều khiển chế độ Timer /Counter.
Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động cho
Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1. 8 bit của thanh ghi TMOD được
tóm tắt như sau:
GATE C/(/T) M1 M0 GATE C/(/T) M1 M0
Dành cho Timer 1 Dành cho Timer 0
Bảng 1.7: Thanh ghi TMOD
Bit Name Timer Description
7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1
6 C/T 1 Bit cho đếm sự kiện hay ghi giờ
C/T = 1 : Đếm sự kiện
C/T = 0 : Ghi giờ đều đặn
5 M1 1 Bit chọn mode của Timer 1
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 18
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
4 M0 1 Bit chọn mode của Timer 1
3 GATE 0 Bit cổng của Timer 0
2 C/T 0 Bit chọn Counter/Timer của Timer 0
1 M1 0 Bit chọn mode của Timer 0
0 M0 0 Bit chọn mode của Timer 0
Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer1.
M1 M0 MODE DESCRIPTION
0 0 0 Mode Timer 13 bit (mode 8048)
0 1 1 Mode Timer 16 bit
1 0 2 Mode tự động nạp 8 bit
1 1 3 Mode Timer tách ra :
Timer 0 : TL0 là Timer 8 bit được điều khiển bởi
các bit của Timer 0. TH0 tương tự nhưng được
điều khiển bởi các bit của mode Timer 1.
Timer 1 : Được ngừng lại.
Bảng 1.8: Bits chọn MODE cho timer 0 hoặc 1.
TMOD không có bit định vị, nó thường được LOAD một lần bởi phần mềm ở
đầu chương trình để khởi động mode Timer. Sau đó sự định giờ có thể dừng lại, được
khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt của Timer
khác.
1.4.2.2.Thanh ghi điều khiển timer TCON (timer control register):
Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer
0 và Timer 1. Thanh ghi TCON có bit định vị. Hoạt động của từng bit được tóm tắt
như sau :
Bit SymbolBit
AddressDescription
TCON.7 TF1 8FH Cờ tràn Timer 1 được set bởi phần cứng ở sự
tràn, được xóa bởi phần mềm hoặc bởi phần
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 19
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
cứng khi các vectơ xử lí đến thủ tục phục vụ
ngắt ISR
TCON.6 TR1 8EH Bit điều khiển chạy Timer 1 được set hoặc
xóa bởi phần mềm để chạy hoặc dừng chạy
Timer.
TCON.5 TF0 8DH Cờ tràn Timer 0(hoạt động tương tự TF1)
TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1)
TCON.3 IE1 8BH Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất
hiện trên INT1 thì IE1 được xóa bởi phần
mềm hoặc phần cứng khi CPU định hướng đến
thủ tục phục vụ ngắt ngoài.
TCON.2 IT1 8AH Cờ kiểu ngắt 1 ngoài được set hoặc xóa bằng
phấn mềm bởi cạnh kích hoạt bởi sự ngắt
ngoài.
TCON.1 IE0 89H Cờ cạnh ngắt 0 ngoài
TCON.0 IT0 88H Cờ kiểu ngắt 0 ngoài.
Bảng 1.9: Thanh ghi TCON
1.4.2.3. Các nguồn xung nhịp cho timer (clock sources):
Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự đếm sự
kiện bên ngoài. Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer được khởi
động.
Hình 1.6: Các nguồn xung nhịp cho Timer
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 20
Crystal
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Sự bấm giờ bên trong (Interval Timing)
Sự đếm các sự kiện (Event Counting)
1.4.3.Các chế độ timer và cờ tràn (timer modes and overflow).
AT89C51 có 2 Timer là Timer 0 và timer 1. Ta dùng ký hiệu TLx và THx để
chỉ 2 thanh ghi byte thấp và byte cao của Timer 0 hoặc Timer 1.
1.4.3.1.Mode Timer 13 bit (MODE 0):
Hình 1.7: Timer MODE 0
Mode 0 là mode Timer 13 bit, trong đó byte cao của Timer (THx) được đặt thấp
và 5 bit trọng số thấp nhất của byte thấp Timer (TLx) đặt cao để hợp thành Timer 13
bit. 3 bit cao của TLx không dùng.Khi thanh ghi được xóa về 0 thì cờ ngắt thời
gian TFx được thiêt lập. Bộ timer hoạt động khi bít điều khiểnTRx được thiết
lập(TRx=1)hoặc Gate trong TMOD bằng 0 hoặc /INTx =1.Nếu đặt GATE=1 thì cho
phép điều khiển Timer/Counter bằng đường vào ngoài/INTx để dễ dàng xác định độ
rộng xung.
Khi hoạt động ở chức năng thời gian thì bít C/(/T)=0, do vậy xung nhịp từ bộ
dao động xung nội qua bộ chia tần số f=fosc/12 được đưa vào để đếm trong
Khi các thanh ghi Timer/Counter hoạt động ở chức năng bộ đếm thì bit C/(/T)=1 lúc
đó xung nhịp ngoài đưa vào sẽ được đếm.
1.4.3.2. Mode Timer 16 bit (MODE 1):
Hình 1.8: Timer MODE 1
Mode 1 là mode Timer 16 bit, tương tự như mode 0 ngoại trừ Timer này hoạt động
như một Timer đầy đủ 16 bit, xung clock được dùng với sự kết hợp các thanh ghi cao
và thấp (TLx, THx). Khi xung clock được nhận vào, bộ đếm Timer tăng lên 0000H,
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 21
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
0001H, 0002H, …, và một sự tràn sẽ xuất hiện khi có sự chuyển trên bộ đếm Timer từ
FFFFH sang 0000H và sẽ set cờ tràn Time, sau đó Timer đếm tiếp.
Cờ tràn là bit TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghi bởi phần
mềm.
Bit có trọng số lớn nhất (MSB) của giá trị trong thanh ghi Timer là bit 7 của
THx và bit có trọng số thấp nhất (LSB) là bit 0 của TLx. Bit LSB đổi trạng thái ở tần
số clock vào được chia 216 = 65.536. Các thanh ghi Timer TLx và THx có thể được
đọc hoặc ghi tại bất kỳ thời điểm nào bởi phần mềm.
1.4.3.3.Mode tự động nạp 8 bit (MODE 2):
Hình 1.9: Timer MODE 2
Mode 2 là mode tự động nạp 8 bit, byte thấp TLx của Timer hoạt động như
một Timer 8 bit trong khi byte cao THx của Timer giữ giá trị Reload. Khi
bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà giá trị trong THx cũng
được nạp vào TLx: Bộ đếm được tiếp tục từ giá trị này lên đến sự chuyển trạng thái từ
FFH sang 00H kế tiếp và cứ thế tiếp tục. Mode này thì phù hợp bởi vì các sự tràn xuất
hiện cụ thể mà mỗi lúc nghỉ thanh ghi TMOD và THx được khởi động.
1.4.3.4.Mode Timer tách ra (MODE 3):
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 22
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Hình 1.10: Timer MODE 3
Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer.
Timer 1ở mode 3 chỉ chứa chúc năng đếm của nó, kết quả giống khi đặt TR1=0.Timer
0 ở chế đọ 3 được thiết lập TH0,TL0 như là 2 bộ đếm riêng biệt. Mạch Logic đối với
chế độ 3 của Timer 0 thể hiện. Bộ đếm TL0 được điều khiển bởi các
bít :C/(/T),GATE,TR0,/INT0 và khi đếm tràn thì nó thiết lập cờ
ngắt TF0.Bộ đếm TH0 chỉ được điều khiển boiwr bít TR1, và khi đếm tràn thì nó thiêt
lập cờ ngắt TF1. Vaawyj TH0 điều khiển ngăt Timer/Counter 1.
Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của AT89C51. Khi vào Timer
0 ở mode 3, Timer có thể hoạt động hoặc tắt bởi sự ngắt nó ra ngoài và vào trong mode
của chính nó hoặc có thể được dùng bởi Port nối tiếp như là một máy phát tốc độ
Baud, hoặc nó có thể dùng trong hướng nào đó mà không sử dụng Interrupt.
1.5.HOẠT ĐỘNG PORT NỐI TIẾP
1.5.1.Giới thiệu
Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối
tiếp là: SBUF và SCON. Bộ đệm port nối tiếp (SBUF) ở điạ chỉ 99H nhận dữ liệu để
nhận hoặc truyền. Thanh ghi điều khiển port nối tiếp (SCON) ở điạ chỉ 98H là thanh
ghi có điạ chỉ bit chứa các bit trạng thái và các bit điều khiển.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 23
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Các bit điều khiển đặt chế độ hoạt động cho port nối tiếp, và các bit trạng thái
Báo cáo kết thúc việc truyền hoặc nhận ký tự. Các bit trạng thái có thể được kiểm tra
bằng phần mềm hoặc có thể lập trình để tạo ngắt.
Hình 1.11: PORT nối tiếp
1.5.2.Các thanh ghi và các chế độ hoạt động của port nối tiếp:
1.5.2.1.Thanh ghi điều khiển port nối tiếp:
Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế độ port
nối tiếp (SCON) ở địa chỉ 98H .Sau đây các bản tóm tắt thanh ghi SCON và các chế
độ của port nối tiếp:
SM0 SM1 SM2 REN TB8 RB8 TI RI
Bảng 1.10: Thanh ghi SCON
* SM0 ,SM1 là các bit cho phép chọn chế độ cho cổng truyền nối tiếp.
SM0 SM1 Mode Đặc Điểm Tốc độ baud
0
0
1
0
1
0
0
1
2
Thanh ghi dịch
UART 8 bit
UART 9 bit
Cố định (Fosc /12 )
Thay đổi ( đặt bằng timer )
Cố định (Fosc /12 hoặc
Fosc/64 )
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 24
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
1 1 3 UART 9 bit Thay đổi ( đặt bằng timer )
Bảng 1.11: Bits chọn MODE cho PORT nối tiếp
*SM2: Cho phép truyền tin đa xử lý thể hiện ỏe Mode 2 và 3 , ở chế độ 2 hoặc 3 nếu
đặt SM2=1 thì RI sẽ không được kích hoạt nếu bít dữ liệu thứ 9 nhận bằng 0 ở Mode
1, nếu SM2=1 thì RI sẽ không được kích hoạt nếu bít dừng có hiệu lực đã không được
nhận ở chế độ 0, Sm2 nên bằng 0.
*REN: Cho phép nhận nối tiếp được đặt hoặc xóa bởi phần mềm để cho hép hoặc
không cho phép nhận.
*TB8 : Là bit dữ liệu thư 9 mà sẽ được truyền ỏ Mode 2 và 3, được đặt hoawcj xóa bởi
phần mềm.
*RB8 : Là bit dữ liệu thứ 9 đã được nhận ở mode 2 và 3 . Ở Mode 1, nếu SM2=0 thi
RB8 là bit dừng đã được nhận.Ở Mode 0 , RB8 không được sử dụng.
*TI : Cờ ngắt truyền được đặ bởi phần cứng tại cuối thời điểm của bit thứ 8 trong
Mode 0, hoặc đầu thời điểm của bit dừng trong các Mode khác .Ở bất kỳ quá trình
truyền nói tiếp nào nó cũng phải được xóa bằng phần mềm.
*RI: Cờ ngắt nhận được đặt bởi phần cứng tại cuối thời điểm của bit thứ 8 trong
Mode 0 hoặc giữa thời điểm của bit dừng trong các Mode khác. Ở khác .Ở bất kỳ quá
trình nhận nối tiếp nào( trừ trường hợp ngoại lệ ,xem SM2), nó cũng phải được xóa
bằng phần mềm.
1.5.2.2.Chế độ 0 (Thanh ghi dịch đơn 8 bit) :
Chế độ 0 được chọn bằng các thanh ghi các bit 0 vào SM1 và SM2 của SCON,
đưa port nối tiếp vào chế độ thanh ghi dịch 8bit. Dữ liệu nối tiếp vào và ra qua RXD
và TXD xuất xung nhịp dịch, 8 bit được truyền hoặc nhận với bit đầu tiên là LSB. Tốc
độ baud cố định ở 1/12 tần số dao động trên chip.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 25
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Việc truyền đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF. Dữ
liệu dịch ra ngoài trên đường RXD (P3.0) với các xung nhịp được gửi ra đường TXD
(P3.1). Mỗi bit truyền đi hợp lệ (trên RXD) trong một chu kỳ máy, tín hiệu xung nhập
xuống thấp ở S3P1 và trở về cao ở S6P1.
Hình 1.12: Giản đồ thời gian Port nối tiếp truyền ở chế độ 0
Việc nhận được khởi động khi cho phép bộ nhận (REN) 1 là và bit ngắt nhận
(RI) là 0. Quy tắc tổng quát là đặt REN khi bắt đầu chương trình để khởi động port nối
tiếp, rồi xoá RI để bắt đầu nhận dữ liệu. Khi RI bị xoá, các xung nhịp được đưa ra
đường TXD, bắt đầu chu kỳ máy kế tiếp và dữ liệu theo xung nhịp ở đường RXD. Lấy
xung nhịp cho dữ liệu vào port nối tiếp xảy ra ở cạnh đường của TXD.
Một chu kỳ máy
Data out
Shift clock
Hình 1.13: Giản đồ thời gian truyền nối tiếp ở chế độ 0
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 26
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
1.5.2.3. Chế độ 1 (UART 8 bit với tốc độ baud thay đổi được):
Ở chế độ 1, port nối tiếp của AT89C51 làm việc như một UART 8 bit với tốc
độ baud thay đổi được. Một UART (Bộ nhận truyền đồng bộ vạn năng) là một dụng cụ
nhận truyền dữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ở mức thấp và
theo sau bit stop ở mức cao. Đôi khi xen thêm bit kiểm tra chẵn lẻ giữa bit dữ liệu cuối
cùng và bit stop. Hoạt động chủ yếu của UART là chuyển đổi song song sang nối tiếp
với dữ liệu nhập.
Ở chế độ 1, 10 bit được truyền trên TXD hoặc nhận trên RXD. Những bit đó là:
1 bit start (luôn luôn là 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop (luôn luôn là 1).
Với hoạt động nhận, bit stop được đưa vào RB8 trong SCON. Trong AT89C51 chế độ
baud được đặt bằng tốc độ báo tràn của timer1.
Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trong các
chế độ 1,2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, đầu ra là xung nhịp tốc
độ baud. Đầu vào của bộ đếm này được chọn qua phần mềm.
Hình 1.14: UART 8 bits chế độ 1
1.5.2.4. UART 9 bit với tốc độ baud cố định (chế độ 2):
Khi SM1 = 1 và SM0 = 0, cổng nối tiếp làm việc ở chế độ 2, như một UART
9bit có tốc độ baud cố định, 11 bit sẽ được truyền hoặc nhận:1bit start, 8 bit data, 1 bit
data thứ 9 có thể được lập trình và 1 bit stop. Khi truyền bit thứ 9 là bất cứ gì đã được
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 27
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
đưa vào TB8 trong SCON (có thể là bit Parity) .Khi nhận bit thứ 9 nhận được sẽ ở
trong RB8. Tốc độ baud ở chế độ 2 là 1/32 hoặc 1/16 tần số dao động trên chip.
1.5.2.5. UART 9 bit với tốc độ baud thay đổi được (chế độ 3):
Chế độ này giống như ở chế độ 2 ngoại trừ tốc độ baud có thể lập trình được và
được cung cấp bởi Timer.Thật ra các chế độ 1, 2, 3 rất giống nhau. Cái khác biệt là ở
tốc độ baud (cố định trong chế độ 2, thay đổi trong chế độ 1 và 3) và ở số bit data (8
bit trong chế độ 1,9 trong chế độ 2 và 3).
1.5.2.6. Khởi động và truy xuất các thanh ghi cổng nối tiếp:
Cho Phép Nhận
Bit cho phép bộ nhận (REN=Receiver Enable) Trong SCON phải được đặt lên 1bằng
phần mềm để cho phép nhận các ký tự thông thường thực hiện việc này ở đầu chương
trình khi khởi động cổng nối tiếp, timer …
Bit dữ liệu thứ 9:
Bit dữ liệu thứ 9 cần truyền trong các chế độ 2 và 3 phải được nạp vào trong
TB8 bằng phần mềm. Bit dữ liệu thứ 9 nhận được đặt ở RB8. Phần mềm
có thể cần hoặc không cần bit dữ liệu thứ 9, phụ thuộc vào đặc tính kỹ thuật của thiết
bị nối tiếp sử dụng (bit dữ liệu thứ 9 cũng đóng vai trò quan trọng trong truyền thông
đa xử lý )
Thêm 1 bit parity:
Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự. Như đã nhận xét ở
chương trước, bit P trong từ trạng thái chương trình (PSW) được đặt lên 1 hoặc bị xoá
bởi chu kỳ máy để thiết lập kiểm tra chẳn với 8 bit trong thanh tích lũy.
Các cờ ngắt:
Hai cờ ngắt nhận và truyền (RI và TI) trong SCON đóng một vai trò quan trọng
trong truyền thông nối tiếp dùng AT89C51/8051. Cả hai bit được đặt lên 1 bằng phần
cứng, nhưng phải được xoá bằng phần mềm.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 28
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
1.5.2.7. Tốc độ baud port nối tiếp
Như đã nói, tốc độ baud cố định ở các chế độ 0 và 2. Trong chế độ 0 nó luôn
luôn là tần số dao động trên chip được chia cho 12. Thông thường thạch anh ấn định
tần số dao động trên chip nhưng cũng có thể sử dụng nguồn xung nhịp khác.
Hình 1.15: Các nguồn tạo xung nhịp cho port nối tiếp
Vì PCON không được định địa chỉ theo bit, nên để đặt bit SMOD lên 1 cần
phải theo các lệnh sau:
MOV A,PCON ; lấy giá trị hiện thời của PCON vào A
SETB ACC.7 ; đặt bit SMOD lên 1
MOV PCON,A ; Chuyển dữ liệu trongA vào PCON
Các tốc độ baud trong các chế độ 1 và 3 được xác định bằng tốc độ tràn của
timer 1. Vì timer hoạt động ở tần số tương đối cao, tràn timer được chia thêm cho 32
(hoặc 16 nếu SMOD =1) trước khi cung cấp tốc độ xung nhịp cho port nối tiếp.
1.5.3. Tổ chức ngắt trong 8051
1.5.3.1.Phép và Không Cho Phép Ngắt
Mỗi nguồn ngắt được cho phép hoặc không cho phép thông qua thanh ghi chức
năng đặc biệt có các bit được địa chỉ hóa IE (Interrupt Enable) tại địa chỉ 0A8H.
BIT SYMBOL BIT ADDRESSDESCRIPTION
(1:ENABLE,0:DISABLE)
IE.7 EA AFH Global Enable/Disable
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 29
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
EA
ET2
ES
ET1
EX1
ET0
EX0
AEH
ADH
ACH
ABH
AAH
A9H
A8H
Undefined
Enable Timer 2 Interrupt (8052)
Enable Serial Port Interrupt
Enable Timer 1 Interrupt
Enable External 1 Interrupt
Enable Timer 0 Interrupt
Enable External 0 Interrupt
Bảng 1.12: Thanh ghi IE
Ưu tiên ngắt.
Mỗi nguồn ngắt đuợc lập trình riêng vào một trong hai mức ưu tiên qua thanh ghi chức
năng đặc biệt được địa chỉ bit IP (Interrupt priority: ưu tiên ngắt) ở địa chỉ B8H.
*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 sẽ phụ thuộc vf bit cho phép ngắt tương ứng.
* _: Không dùng.
* ET2: Bít cho phép hoặc không cho phép ngắt bộ Timer 2.
*ES: Bít cho phép hoặc không cho phép ngắt cổng nối tiếp(SPI và UART)
*ET1: Bit cho phép hoặc không cho phép ngắt tràn bộ Timer 1.
*EX1: Bit cho phép hoặc không cho phép ngắt ngoài 1.
*ET0: Bit cho phép hoặc không cho phép ngắt tràn bộ Timer 0.
*EX0: bit cho phép hoặc không cho phép ngắt ngoài 0.
Bit Ký hiệu Địa chỉ bit Mô tả (1=mức cao hơn,0=mức thấp)
IP.7
IP.6
IP.5
IP.4
IP.3
PT2
PS
PT1
BDH
BCH
BBH
Không được định nghĩa
Không được định nghĩa
Ưu tiên cho ngắt từ timer 2 (8052)
Ưu tiên cho ngắt Port nối tiếp
Ưu tiên cho ngắt từ timer 1
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 30
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
IP.2
IP.1
IP.0
PX1
PT0
PX0
BAH
B9H
B8H
Ưu tiên cho ngắt ngoài 1
Ưu tiên cho ngắt từ timer 0
Ưu tiên cho ngắt ngoài 0
Bảng 1.13: Tóm tắt thanh ghi IP.
Các ngắt ưu tiên được xóa sau khi reset hệ thống để đặt tất cả các ngắt ở mức ưu tiên
thấp hơn.
1.5.3.2.Xử lý ngắt.
Khi có một ngắt xảy ra và được CPU chấp nhận, chương trình chính bị ngắt
quãng. Những hoạt động sau xảy ra:
Thi hành hoàn chỉnh lệnh đang hiện hành.
Các DC vào ngắt xếp.
Trạng thái ngắt hiện hành được cất bên trong.
Các ngắt được chặn tại mức của ngắt.
Nạp vào DC địa chỉ Vector của ISR.
ISR thực thi.
ISR thực thi và đáp ứng ngắt. ISR hoàn tất bằng lệnh RETI. Điều này làm
lấy lại giá trị cũ của PC từ ngăn xếp và lấy lại trạng thái ngắt cũ. Chương
trình lại tiếp tục thi hành tại nơi mà nó dừng.
1.5.3.3.Véctơ Ngắt
Khi ngắt được chấp nhận giá trị được đưa vào PC (Program Counter) gọi là
vector ngắt (Interrupt Vector)
INTERRUPT FLAG VECTOR ADDRESS
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 31
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
System Reset
External 0
Timer 0
External 1
Timer 1
Serial Port
Timer 2
RST
IE0
TF0
IE1
TF1
RI OR TI
TF2 OR EXF2
0000 H
0003 H
000B H
0013 H
001B H
0023 H
002B H
Bảng 1.14: Vector ngắt
1.5.3.4.Các ngắt của 8051.
a.Các ngắt timer.
Các ngắt timer có địa chỉ Vector ngắt là 000BH (timer 0) và 001BH (timer 1).
Ngắt timer xẩy ra khi các thanh ghi timer (TLx ITHx) tràn và set cờ báo tràn
(TFx) lên 1. Các cờ timer (TFx) không bị xóa bằng phần mềm. Khi cho phép các ngắt,
TFx tự động bị xóa bằng phần cứng khi CPU chuyển đến ngắt.
b.Các ngắt cổng nối tiếp.
Ngắt cổng nối tiếp xẩy ra khi hoặc cờ truyền (TI) hoặc cờ ngắt nhận (RI) được đặt
lên 1. Ngắt truyền xẩy ra khi một ký tự đã được nhận xong và đang đợi trong SBUP để
được đọc.
Các ngắt cổng nối tiếp khác với các ngắt timer. Cờ gây ra ngắt cổng nối tiếp
không bị xóa bằng phần cứng khi CPU chuyển tới ngắt. Do có hai nguồn ngắt cổng nối
tiếp TI và RI. Nguồn ngắt phải được xác định trong ISR và cờ tạo ngắt sẽ được
xóa bằng phần mềm. Các ngắt timer cờ ngắt được xóa bằng phần cứng khi CPU hướng
tới ISR.
c.Các ngắt ngoài.
Các ngắt ngoài xẩy ra khi có một mức thấp hoặc cạnh xuống trên chân INT0
hoặc INT1 của vi điều khiển. Đây là chức năng chuyển đổi của các bit Port 3.(Port 3.2
và Port 3.3).
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 32
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Các cờ tạo ngắt này là các bit IE0 vá IE1 trong TCON. Khi quyền điều khiển đã
chuyển đến ISR, cờ tạo ra ngắt chỉ được xóa nếu ngắt được tích cực bằng cạnh xuống.
Nếu ngắt được tích cực theo mức, thì nguồn yêu cầu ngắt bên ngoài sẽ điều khiển mức
của cờ thay cho phần cứng.
Sự lựa chọn ngắt tích cực mức thấp hay tích cực cạnh xuống được lập trình qua
các bit IT0 và IT1 trong TCON. Nếu IT1 = 0, ngắt ngoài 1 được tác động bằng múc
thấp ở chân IT1. Nếu IT1 = 1 ngắt ngoài 1 sẽ được tác động bằng cạnh xuống. trong
chế độ này, nếu các mẫu liên tiếp trên chân INT1 chỉ mức cao trong một chu kỳ và chỉ
mức thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1 trong TCON được đặt lên 1, rồi bit IE
yêu cầu ngắt.
Nếu ngắt ngoài được tác động bằng cạnh xuống thì nguồn bên ngoài phải giữ
chân tác động ở mức cao tối thiểu một chu kỳ và giữ nó ở mức thấp thêm
một chu kỳ nữa để đảm bảo phát hiện được cạnh xuống. Nếu ngắt ngoài được
tác động theo mức thì nguồn bên ngoài phải giữ tín hiệu yêu cầu tác động cho đến khi
ngắt được yêu cầu được thật sự tạo ra và không tác động yêu cầu ngắt trước khi ISR
được hoàn tất . Nếu không một ngắt khác sẽ được lặp lại.
1.6. TÓM TẮT TẬP LỆNH CỦA 89C51
Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng logic, sự nối tiếp
của các lệnh được nghĩ ra một cách hiệu quả và nhanh.
Tập lệnh họ MSC – 51 được sự kiểm tra của các mode định vị và các lệnh của chúng
có các Opcode 8 bit. Điều này cung cấp khả năng 2 = 256 lệnh được thi hành. Vài lệnh
có 1 hoặc 2 byte bởi dữ liệu hoặc địa chỉ thêm vào Opcode. Trong toàn bộ các lệnh có
139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte.
1.6.1. Các chế độ định vị địa chỉ (addressing mode):
Các mode định vị là một bộ phận thống nhất của tập lệnh. Chúng cho phép định rõ
nguồn hoặc nơi gởi tới của dữ liệu ở các đường khác nhau tùy thuộc vào trạng thái của
người lập trình. 89c51 có 8 mode định vị được dùng như sau:
√ Thanh ghi.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 33
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
√Trực tiếp
√ Gián tiếp.
√ Tức thời.
√ Tương đối.
√ Tuyệt đối.
√ Dài.
√ Định vị.
1.6.2. Tóm tắt tập lệnh của họ MCS – 51:
a. Nhóm lệnh chuyển dữ liệu
Lệnh Mô tả
MOV A, Rn (A) ← (Rn)
MOV A, @Ri (A) ← ((Ri))
MOV A, # data (A) ← #data
MOV Rn, A (Rn) ← (A)
MOV Rn, #data (Rn) ← #data
MOV direct, Rn (direct) ← (Rn)
MOV direct, @Ri (direct) ← ((Ri))
MOV direct, #data (direct) ← #data
MOV @Ri, A ((Ri)) ← (A)
MOV @ Ri, direct ((Ri)) ← (direct)
MOV @Ri, #data ((Ri)) ← (data)
MOVX @ Ri, A ((Ri)) ← (A)
MOVX @ dptr, A ((dptr) ← (A)
PUSH direct (SP)←(SP)+1
((SP)) ← (direct)
POP direct (direct)←((SP))
(SP) ← (SP) – 1
XCH A, Rn (direct) ↔ (Rn)
XCH A, direct (A) ↔ (direct)
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 34
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
XCHA, @Ri (A) ↔ ((Ri))
XCHD A, @Ri A3 – 0) ↔ ((Ri3 – 0))
b. Nhóm lệnh toán học:
Lệnh Mô tả
ADD A, Rn (A) ← (A) + (Rn)
ADD A, direct (A) ← (A) + (direct)
ADD A, @Ri (A) ← (A) + ((Ri))
ADD A, #data (A) ← (A) + #data
SUBB A, Rn (A) ← (A) – (Rn) – (C)
SUBB A, direct (A) ← (A) – (direct) – (C)
SUBB A, @i (A) ← (A) – ((Ri)) – (C)
SUBB A, #data (A) ← (A) - #data – (C)
INC A (A) ← (A) + 1
INC Rn (Rn) ← (Rn) + 1
INC direct (direct) ← (direct) +1
((Ri)) ← ((Ri)) + 1
INC dptr (dptr) ← (dptr) +1
DEC A (A) ← (A) – 1
DEC Rn (Rn) ← (Rn) – 1
DEC direct (direct) ← (direct) - 1
DEC @Ri ((Ri)) ← ((Ri)) – 1
MUL AB (B15 – 8), (A7 – 0) ← (A) x (B)
DIV AB (A15 – 8), (B7 – 0) ← (A) / (B)
DA A Content of A là BCD
c. Nhóm lệnh logic:
Lệnh Mô tả
ANL A, Rn (A) ← (A) AND (Rn)
ANL A, direct (A) ← (A) AND (direct)
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 35
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
ANL A, @ Ri (A) ← (A) AND ((Ri))
ANL A, #data (A) ← (A) AND #data
ANL direct, A (direct) ← (direct) and (A)
ANL direct, #data (direct) ← (direct) and #data
ORL A, Rn (A) ← (A) OR (Rn)
ORL A, direct (A) ← (A) OR (direct)
ORL A, @Ri (A) ← (A) OR ((Ri))
ORL A, #data (A) ← (A) OR #data
ORL direct, A (direct) ← (direct) OR (A)
ORL direct, #data (direct) ← (direct) OR #data
XRL A, Rn (A) ← (A) XOR (Rn)
XRL A, direct (A) ← (A) XOR (direct)
XRL A, @Ri (A) ← (A) XOR ((Ri))
XRL direct, A (direct) ← (direct) XOR (A)
CLR A (A) ← 0
CPL A (A) ← (-A)
SWAP A (A3 – 0) ↔ (A7 – 4)
d. Nhóm lệnh chuyển điều khiển:
Lệnh Mô tả
LJMP addr 16 (PC) ← addr15 – 0
SJMP rel (PC) ← (PC) + 2
(PC) ← (PC) + rel
JMP @ A + dptr (PC) ← (A) + (dptr)
JZ rel (PC) ← (PC) + 2
IF (A) = 0 then
(PC) ← (PC) + rel
JNZ rel (PC) ← (PC) + 2
IF (A) ≠ 0 then
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 36
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
(PC) ← (PC) + rel
JC rel (PC) ← (PC) + 2
IF (C) = 0 then
(PC) ← (PC) + rel
JNC rel
(PC) ← (PC) + 2
IF (C) ≠ 0 then
(PC) ← (PC) + rel
JB bit, rel (PC) ← (PC) + 3
IF (bit) = 0 then
(PC) ← (PC) + rel
JNB bit, rel (PC) ← (PC) + 3
IF (bit) ≠ 0 then
(PC) ← (PC) + rel
JBC bit, rel (PC) ← (PC) + 3
IF (bit) = 0 then (bit) ← 0
(PC) ← (PC) + rel
CJNE A, direct, rel (PC) ← (PC) + 3
IF (direct) < (A) then
(C) ← 0 and
(PC) ← (PC) + rel
IF (direct) > (A) then
(C) ← 1 and
(PC) ← (PC) + rel
CJNE A, #data, rel (PC) ← (PC) + 3
IF #data > (A) then
(C) ← 0 and
(PC) ← (PC) + rel
IF #data > (A) then
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 37
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
(C) ← 1 and
(PC) ← (PC) + rel
DJNZ Rn, rel (PC) ← (PC) + 2
(Rn) ← (Rn) – 1
IF ((Ri)) ≠ 0 then
(PC) ← (PC) + rel
DJNZ direct, rel (PC) ← (PC) + 3
(direct) ← (direct) – 1
IF (direct) ≠ 0 then
(PC) ← (PC) + rel
NOP (PC) ← (PC) + 1
e. Nhóm lệnh xử lý bit:
Lệnh Mô tả
CLR C (C) ← 0
CLR bit (bit) ← 0
SETB C (C) ← 1
SETB bit (bit) ← 1
CPL C (C) ← (-C)
CPL bit (bit) ← (bit)
ANL C, bit (C) ← (C) AND (bit)
ANL C, / bit (bit) ← (C) AND (bit)
ORL C, bit (C) ← (C) OR (bit)
ORL C, / bit (bit) ← (C) OR (bit)
MOV C, bit (C) ← (bit)
MOV bit, C (bit) ← (C)
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 38
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
1.7.LẬP TRÌNH FLASH AT89C51
AT89C51 bình thường được cung cấp dải nhớ Flash ở trạng thái đã được xóa
(Nghĩa là toàn bộ nội dung của các byte là FFH) và sẵn sàng được lập trình. Mạch giao
tiếp lập trình cho 2 tín hiệu cho phép lập trình hight-voltage (Vpp = 12V) hoặc low-
voltage (Vcc = 5V). Chế độ lập trình điện áp thấp cung cấp một phương tiện lập trình
thích hợp cho AT89C51 bên trong hệ thống của người sử dụng trong khi đó chế độ lập
trình điện áp cao tương thích với các thiết bị lập trình cho Flash và EPROM.
AT89C51 được cung cấp với hai chế độ lập trình . Tương ứng là nhãn hiệu (Top-side
mark) và chữ ký (Signature) được liệt kê trong bảng sau:
Vpp = 12V Vpp = 5V
Top-side Mark AT89C51
xxxx
yyww
AT89C51
xxxx-5
Yyww
Signature (030H)=1EH
(031H)=51H
(032H)=FFH
(030H)=1EH
(031H)=51H
(032H)=05H
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 39
Trường Đại Học SPKT Hưng Yên Đồ Án Môn Học Khoa :Điện – Điện Tử Lớp ĐTK39
Dải nhớ chương trình được lập trình một byte – by - byte. Mỗi khi dải này đã được lập
trình, để lập trình lại bất kỳ byte nào không trống, toàn bộ dải nhớ cần được xóa sử
dụng chế độ Earse Mode.
- Program verify (kiểm tra chương trình)
- Chip earse (Xóa chip)
- Reading the Signature Bytes
- Programming Algorithm (Giải thuật lập trình)
- Ready/Busy
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 40
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Phần II:
THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG CỦA BỘ KIT
Chương I: THIẾT KẾ BỘ KIT VI ĐIỀU KHIỂN
1.1. MỤC ĐÍCH VÀ YÊU CẦU CỦA BỘ KIT
1.1.1. Mục đích
Kỹ thuật vi điều khiển là môn học cơ bản quan trọng đối với sinh viên các ngành
Điều khiển, Điện tử, Tin học,Tự động hóa vv…. nhằm trang bị cho sinh
viên những kiến thức cần thiết về một họ vi điều khiển, ở đây là họ 8051, như cấu trúc,
nguyên tắc hoạt động, cùng các mạch phụ trợ, tập lệnh, cách lập trình bằng hợp ngữ,
các phương thức điều khiển vào ra và các phương pháp kết nối thiết bị ngoại vi. Dựa
trên nền tảng kiến thức của môn học kỹ thuật vi điều khiển, sinh viên tiếp thu những
môn học kỹ thuật chuyên nghành và tiếp cận dễ dàng hợn với những kỹ thuật, trang
thiết bị hiện đại. Đồng thời cho phép sinh viên có cái nhìn trực quan và kiểm chứng,
khẳng định sự đúng đắn các kiến thức đã học. Do vậy việc đưa vào giáo trình phần xây
dựng thiết kế Kit vi điều khiển là hết sức quan trọng và rất thiết thực đối với sinh viên
chuyên nghành tự động hóa, điện tử, đo lường…Các Kit vi điều khiển đều được thiết
kế dựa trên các họ vi điều khiển mà sinh viên đang học trong trường. Sinh viên có thể
dùng các Kit vi điều khiển này để điều khiển các quá trình nhiệt độ, điều khiển động
cơ, điều khiển các đối tượng giao thông, điều khiển các quá trình sản xuất…
Trên thế giới có rất nhiều nguồn cung cấp các mạch Kit nói trên như : từ các hãng của
nước ngoài, ví dụ như bộ KIT MDA-EMS51 của hãng Midas của Hàn Quốc, KIT và
phần mềm phát triển cho họ vi điều khiển PIC của MikroElektronika (Website
http://www.mikroelektronika.co.yu/), hay một hãng nổi tiếng khác là OLIMEX
(Website http://www.olimex.com) với các sản phẩm
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 41
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
KIT phát triển cho các dòng AVR, PIC, MAXQ, MSP430, ARM… Đặc điểm của các
sản phẩm này là có các tính năng mạnh, mẫu mã đẹp, phục vụ tốt nhu cầu thực hành
của môn học. Tuy nhiên giá thành của thiết bị là rất đắt (khoảng 700$ MDA-EMS51,
và việc đặt mua không thuận tiện).
Do các trung tâm nghiên cứu và các trường đại học trong nước tự chế tạo.
Trong các trường đại học, các thiết bị thực hành môn học vi điều khiển có thể do các
giáo viên giảng dạy môn học chế tạo do các sinh viên tự chế tạo dưới sự hướng dẫn
của giáo viên, Ưu điểm của các sản phẩm chế tạo trong nước giá thành rẻ mà chất
lượng, mẫu mã không thua kém nước ngoài. Cấu hình của sản phẩm và nội dung thực
hành phù hợp với mục đích, chương trình đào tạo, với điều kiện học tập của sinh viên
cả nước nói chung và sinh viên trường Đại học SPKT Hưng Yên nói riêng.
Xuất phát từ tình hình thực tế và sự cần thiết đáp ứng nhu cầu thực hành trong quá
trình học tập môn học vi điều khiển nói trên, việc thiết kế, xây dựng một bộ KIT vi
điều khiển với đầy đủ các thành phần cơ bản, là vấn đề hết sức cần thiết đối với các
nghành điện tử, tự động hóa trong trường Đại học SPKT Hưng Yên. Đây là vấn đề
trọng tâm trong quyển đồ án này.
1.1.2. Yêu cầu thiết kế KIT vi điều khiển phục vụ thí nghiệm
1.1.2.1.Phần cứng.
Bởi vì mục đích của sản phẩm là phục vụ cho việc đào tạo nên cấu hình cứng
phải rõ ràng, dàn trải. Kích thước của bộ KIT gọn nhẹ, dễ dàng di chuyển và bảo quản.
Các thành phần của bộ KIT được thể hiện rõ ràng, dễ nhận biết, một đặc điểm nữa là
nó phân thành các modul nhỏ và liên kết với modul trung tâm bằng cáp mềm , điều
này cũng giúp người học có thể nhìn thấy một cách trực quan các thành phần của bài
thí nghiệm sẽ tiến hành. Đồng thời việc tổ chức thành các modul nhỏ cũng tiện cho
việc sửa chữa, thiết kế mở rộng, và có thể dễ dàng trọng việc thương mại hóa sản
phẩm này.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 42
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.1.2.2.Các thành phần của bộ KIT.
Bộ KIT có đầy đủ các thành phần cơ bản của một hệ vi điều khiển và các nguồn tài
nguyên phong phú, cho phép người sử dụng có thể tự do phát triển các ứng dụng của
mình.
1. Module mạch nạp
2. Module led ma trận
3. Module led đơn
4. Module led 7 thanh
5. Module hiển thị LCD
6. Module điều khiển động cơ một chiều
7. Module động cơ bước
1.1.2.3.Các bài thí nghiệm thực hành trên bộ KIT:
Các bài cơ bản: Giúp sinh viên làm quen với hệ lệnh của chip vi điều khiển,
nhập các lệnh, nạp chương trình và chạy xem kết quả thực hiện của các lệnh đó.
Các bài nâng cao: Gồm các bài thí nghiệm phức tạp hơn thực hiện sử dụng các
thành phần ngoại vi trên bộ KIT. Các bài thí nghiệm thực hiện việc điều khiển một quá
trình tương tự hoặc số, Ví dụ: điều khiển LED 7 SEG, Matrix LED8x8, điều khiển
động cơ v.v…
Thực hiện các bài thí nghiệm:
Các bài tập mẫu xây dựng trước: Đi kèm với sản phẩm bộ KIT là một hệ
thống các bài tập mẫu được xây dựng cho các ứng dụng trên bộ KIT như điều khiển
các thành phần ngoại vi của KIT…Sinh viên có thể đọc hướng dẫn sử dụng và thực
hiện các bài tập mẫu này trên bộ KIT.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 43
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Các bài tập do sinh viên tự lập trình: Sau khi đã nắm rõ cấu hình của bộ KIT
và sơ đồ bộ nhớ của các thành phần trên bộ KIT, sinh viên có thể tự lập trình các bài
thí nghiệm trên bộ KIT theo ý định của riêng mình.
Công cụ lập trình:
Bằng máy tính PC: Có thể sử dụng ngôn ngữ ASM với trình biên dịch hợp ngữ
sẵn có như: Keil, Reads51, Ride, Prog-Studio,v.v… để lập trình các
chương trình cho bộ KIT từ máy tính bằng ngôn ngữ C, ASM , sau đó biên dịch thành
file dạng Hex rồi nạp xuống cho bộ KIT để thực hiện các chương trình đó.
1.2. CHỌN PHƯƠNG ÁN THIẾT KẾ.
Họ vi điều khiển mà bộ KIT chọn làm thành phần trung tâm là họ 8051, vì
những lí do sau :
- Họ 8051 là họ vi điều khiển phổ biến nhất hiện nay, được sử dụng rất rộng
rãi trong các ứng dụng công nghiệp cũng như trong việc chế tạo các sản phẩm dân
dụng.
- Họ 8051 đã và đang là môn học được nằm trong chương trình đào tạo của
các trường trung học, cao đẳng và đại học trong cả nước, đây còn là một đối tượng cụ
thể cho sinh viên khi bắt đầu nhập môn vi điều khiển. Vì vậy, việc chọn họ 8051 làm
thành phần trung tâm của bộ KIT là phù hợp với chương trình đào tạo và điều kiện học
tập của sinh viên.
Vì những lí do trên, và xuất phát từ mục đích, yêu cầu của đồ án là thiết kế một bộ
KIT vi điều khiển phục vụ mục đích đào tạo môn học này, ta quyết định chọn phương
án sử dụng chip vi điều khiển AT89Cxx của hãng ATMEL để làm thành phần trung
tâm của KIT, cùng với các thành phần bộ nhớ ROM/RAM bên ngoài và các thiết bị
ngoại vi phong phú.Chip vi điều khiển AT89Cxx là một bộ vi điều khiển cũng thuộc
họ 8051, do đó nó có tất cả những đặc trưng cơ bản của họ này.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 44
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.3. XÂY DỰNG SƠ ĐỒ KHỐI CỦA KIT.
Hình 1.1: Sơ đồ khối của bộ KIT vi điều khiển
Trong sơ đồ khối của bộ KIT như trên chức năng của các khối như sau:
Modul nguồn: Cung cấp nguồn cho tất cả các khối trong mạch.
Module BOARD chủ: Đây là module trung tâm của hệ thống. Nó bao gồm
chip vi điều khiển AT89C51, gồm các cổng giao tiếp mở rộng. Khối này
làm nhiệm vụ trung tâm điều hành hoạt động của cả bộ KIT.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 45
Mô đulMa trận led 8x8
Mô đul nguồn
Mô đul DC
Motor
Mô đul chủAT89C51
Mô đulLCD
Mô đul Led 7 Thanh
Mô đul Led Đơn
Mô đul Động cơ
bước
Mô đul Mạch Nạp
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Module hiển thị LCD: Màn hình tinh thể lỏng 16x2 (16 ký tự và 2 dòng). Cho
phép hiển thị các thông số cần thiết của các ứng dụng. Hiển thị mã ASCII. LCD tạo ra
sự tiện lợi, thân thiện cho người sử dụng trong làm quen cũng như thí nghiệm trên
KIT.
Module ĐK Động cơ 1 chiều: Là module dùng Tip41 và các transitor điều
khiển động cơ một chiều. Sử dụng cách ly PC817 để cách ly tín hiệu điều khiển.
Module động cơ bước : Là module dùng Tip41 và các transitor điều khiển
động cơ bước. Sử dụng cách ly PC817 để cách ly tín hiệu điều khiển.
Module ma trận LED: Là một ma trận LED gồm 8hàng x 8 cột.
Module LED đơn :gồm 32 LED đơn được bố trí điều khiển trực tiếp từ 4 cổng
của vi điều khiển..
Module LED 7 thanh: là module sử dụng 8 LED 7 thanh hiển thị mã BCD.
1.4. THIẾT KẾ VÀ LỰA CHỌN LINH KIỆN TỪNG MODULE.
1.4.1. Module xử lý trung tâm KIT (Board chủ).
1.4.1.1 Chức năng:
Đây là module tiếp nhận và xử lí mọi thông tin liên quan đến hoạt động của
KIT. Khối xử lí trung tâm làm việc không ngừng trong suốt thời gian làm việc do đó
độ bền bỉ và khả năng xử lí nhanh chóng linh hoạt với mọi tình huống phụ thuộc vào
phẩm chất linh kiện mà chúng ta sử dụng cũng như nguồn cung cấp cho hệ thống.
Chính và vậy chọn bộ xử lí trung tâm làm đối tượng đầu tiên để ta thiết kế không
ngoài lý do trên, nó sẽ quyết định cho khả năng hoạt động cho hệ thống của chúng ta.
1.4.1.2. Yêu cầu chọn linh kiện, tính toán:
a) Yêu cầu chọn linh kiện.
- Có nền tảng cơ bản của một hệ thống vi điều khiển.
- Khả năng ưu việt so với hệ thống số.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 46
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
- Dễ sử dụng cũng như thiết kế các ứng dụng.
- Có tài liệu liên quan.
- Không yêu cầu cao trong thiết kế phần cứng.
- Mua được trên thị trường Việt Nam.
b) Tính toán thiết kế.
Việc chọn IC trung tâm là họ 8051 và sử dụng loại IC AT89Cxx làm khối xử lí
trung tâm là theo yêu cầu và mục đích của đề tài.
Ở đây ta sử dụng Socket thay cho việc hàn cứng IC lên KIT. Để tiện cho việc
thay đổi IC hay thay đổi chương trình ứng dụng, tránh làm hư hại IC.
Vi điều khiển AT89Cxx với thị trường Hà Nội, và cả khu vực miền Bắc nói
chung ta chọn AT89Cxx là chip dễ dàng mua được, bộ nhớ 4Kbyte đủ cho các ứng
dụng trong lĩnh vực thí nghiệm và nghiên cứu trên KIT. AT89Cxx có 4K Flash ROM
làm bộ nhớ chương trình, 128 byte RAM, 32 đường vào ra số, 2 bộ định thời, cấu trúc
ngắt 2 mức ưu tiên và 5 nguồn ngắt. Vùng nhớ Flash
ROM có thể nạp và xóa 1000 lần. Vi điều khiển AT89Cxx hỗ trợ tần số làm
việc lên tới 24Mhz. Có chế độ Power Down để tiết kiệm điện năng của hệ thống tuy
nhiên vẫn duy trì nội dung của RAM nhưng không cho mạch dao động cấp xung vào
nhằm vô hiệu hóa các hoạt động khác cho chip cho .đến khi có Reset cứng tiếp theo.
Chế độ Idle hay còn gọi là chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các
bộ định thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động.
Từ Datasheet của nhà sản xuất Port0 của IC là hở collector. Vì vậy ta phải có
điện trở treo bên ngoài mới có thể sử dụng cho mục đích tải ngoài. Ở đây ta chọn điện
trở treo có giá trị trong khoảng từ 1K- 10K, ở giá trị này mạch sử dụng tiết kiệm năng
lượng nhất. Dòng qua các chân của IC cũng phù hợp khoảng 0,5mA.
Do thực nghiệm cho thấy khi IC chạy thực tế điện áp mức 1(mức cao) của IC
chỉ khoảng 2,5-3V như vậy với một số ứng dụng yêu cầu cao về mức tín hiệu thì điện
áp này không đủ. Vì vậy ta phải sử dụng IC đệm có chức năng nâng
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 47
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
điện áp đầu ra mà không làm ảnh hưởng tới tín hiệu của IC. IC có chức năng đệm
được dùng phổ biến hiện nay đó là IC 74HC245N. Trong đề tài này chúng em dùng
đệm ở các cổng P1,P2 và P3,P4 của AT89Cxx
Hình 1.2: IC đệm 74HC245N
Như vậy chúng ta đều có chức năng đệm cũng như không dùng đệm. Giúp sinh
viên có thể thấy sự khác nhau này.
Cổng BUS giao tiếp với các Modul khác được sử dụng trong đề tài là các Jum
cắm 8 chân, dùng cáp mềm để nối rất thuận tiện cho việc thay đổi cổng và ứng dụng
của người dùng. Khi thiết kế chức năng của các cổng là tương tự nhau. Do cổng P3 có
thêm chức năng đặc biệt, hay tùy vào ứng dụng chúng ta dùng cổng cho phù hợp
Hình 1.3:Chân jum cắm đơn.
1.4.2. Module hiển thị LCD
1.4.2.1.Chức năng.
Trong những năm gần đây LCD đang ngày càng được sử dụng rộng rãi thay thế
dần cho các đèn LED, LED 7 đoạn,... Do khả năng hiển thị số, ký tự và đồ họa tốt hơn
những cách hiển thị khác, dễ dàng lập trình cho các ký tự đồ họa.
Vì vậy mà khối hiển thị LCD là một khối rất quan trọng trong bộ KIT này, nó
sẽ giúp thực hiện các bài luyện tập ghép nối LCD với 89C51 và lập trình hiển thị các
số, ký tự và đồ họa trên LCD một các dễ dàng và trực quan.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 48
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.4.2.2.Phân tích yêu cầu lựa chọn linh kiện.
Với mục đích thực hành, thí nghiệm nên khối hiển thị LCD cần có những yêu
cầu sau:
- Kích thước nhỏ gọn.
- Dễ dàng ghép nối và quan sát,
- Đảm bảo việc thực hiện các bài luyện tập cho người sử dụng,
- Thiết kế, chế tạo dễ dàng, giá thành hạ.
1.4.2.3. Tính toán, thiết kế.
Các thông số của SD – DM1602A:
- Điện áp cung cấp: VDD = 4.5 ÷ 5.5V
- Điện áp điều khiển: V0 = VDD – 15.0V ÷ VDD + 0.3V
- Dòng điện: 2mA
- Điện áp đèn BL: 4.2V
- Dòng điện đèn BL: 185mA
- Công suất đèn BL: PBL = 777mW
Từ các thông số trên ta chọn nguồn cung cấp: VDD = 5V
Biến trở để thay đổi điện áp V0 điều chỉnh độ tương phản của màn hình hiển thị.
Hình 1.5: Sơ đồ nguyên lý mạch hiển thị LCD
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 49
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Các chân DB0 đến DB7 được nối với 8 bit tương ứng Px.0 đến Px.7 của vi điều
khiển, chân RS , RW ,E nối với chân P2.2, P2.1, P2.0 của vi điều khiển qua cáp 8
1.4.3. Module LED đơn
1.4.3.1.Chức năng.
Hiển thị trạng thái logic tại các cổng. Hiển thị các ứng dụng đơn giản kết hợp
với các modul khác như trạng thái Run/Stop hoặc Left/Right. v.v…
1.4.3.2.Thiết kế và tính toán.
Không giống như Diode, LED sáng (Phân cực thuận) sẽ gây sụt áp trên nó vào
khoảng 1,7 ÷ 2,5V tùy màu LED. Và dòng định mức trong khoảng 10 ÷ 40 mA. Khi
đó ta có mạch điều khiển LED như sau.
Hình 1.6: Sơ đồ kết nối LED đơn
LED đơn được điều khiển trực tiếp từ vi điều khiển lên ta có IN giải điện áp là
0 đến 5v .Chọn dòng qua LED là 20 mA cho LED thật sáng và điện áp rơi trên LED là
2.8V.
Xét hình a: LED sáng khi mức logic tại đầu IN là mức logic 0. Nên giá trị điện
trở R1 là:
R1=5−2 .8
20 .10−3=390Ω
Suy ra chọn R1 = 390Ω.
Xét hình b: LED sáng khi mức logic tại đầu IN1 có mức logic1, ứng với điện áp
là 5V, nên giá trị điện trở R1 là:
R1=5−2,8
20 .10−3=390Ω
Suy ra chọn R1 = 390Ω.
Tuy nhiên khi thiết kế mạch như hình b thì phải đảm bảo dòng tại chân vào IN
phải đáp ứng được 20mA.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 50
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Ta có các cách mắc nối LED như sau.
Hình 1.7: Các cách nối LED đơn
Ở cách 3 một đầu ra của Vi điều khiển không thể cho ra dòng lớn hơn 1mA do
vậy LED sáng rất mờ có thể không sáng.
Ở cách 2, sụt áp trên LED sẽ rất lớn 2V, 3V còn lại sẽ sụt áp trên Vi điều khiển,
gây tổn thất năng lượng lớn, hoặc LED sẽ bị cháy.
Ở cách 1, đây là cách tốt nhất, có điện trở hạn dòng. Trở được tính như sau sao
cho sụt áp trên nó khoảng từ 2V ÷ 2,5V và sụt áp trên Vi điều khiển 0,9V. Từ những
tính toán ở trên điện trở hạn dòng cho LED không nên dưới 100Ω (không LED sẽ
cháy).
Từ những phân tích và tính toán trên chúng em lựa chọn phương án 1 (Cách 1).
Với modul led đơn thì ta sẽ tính được công suất max mà mạch tiêu thụ là khi 32
led cùng sáng.
Với dòng trên mỗi Led là 20mA và điện áp nguồn là 5V
P = U.I = 5.32.15 = 2,4W
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 51
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Hình 1.8: Sơ đồ nguyên lý LED đơn
1.4.4. Module ma trận LED.
1.4.4.1.Chức năng.
Hiển thị quang báo, thông tin hệ thống hay đồng hồ, đếm.v .v . Giúp người
dùng hiểu cách thiết lập mở rộng phần cứng và hiển thị những ứng dụng riêng.
1.4.4.2.Tính toán và thiết kế.
Mạch phải hiển thị rõ ràng, các ký tự theo hàn và theo cột. Có khả năng hiển thị
nhiều phông.
Các LED trong Ma trận có thể sáng riêng lẻ nhau nếu ta đưa tín hiệu điều khiển
riêng biệt đến hàng và cột riêng biệt. Mỗi LED có thể sáng nếu ta cấp một điện áp 2 ÷
2,8V với dòng tối đa là 30mA. Vì LED ma trận có hàng hiện thị ở mức cao, cột ở mức
thấp nên ta cấp điện áp cho hàng và cột để hiển thị.
Hàng điều khiển bởi các cổng ra của Vi điều khiển, có dòng ra rất thấp. Do đó
để đủ dòng cấp cho LED ta phải thiết kế mạch khuếch đại công suất cho LED.
Hình 1.9: Sơ đồ nguyên lý mạch Led Ma trận 8x8
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 52
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Tính toán cho led ma trận. Ta có phương trình sau:
Vcc=RB I B+V BE+V LED .
Để cho LED sáng tối đa V LED=1,8 V .
Chọn transistor là loại Silic nên: {V BE=0,6 V ¿ ¿¿¿
⇒RB I B=5−0. 6−1. 8−0 .3=2 .3V
⇒ I B=2 . 3V1k Ω
=2.6 mA.
I C=β . I B=I LED=β .2 . 6 mA .
Để 1 LED tối đa là 30mA. Trong đó với ma trận 8x8 thì một cột gồm 8 LED
nên để LED sáng bình thường thì .Ic = 8x ILED
Vậy: β . 2 .6 mA=210 mA
⇒β=2102. 6
=81
Chọn β=100
Tra bảng ta chọn Transistor loại C1815 thỏa mãn yêu cầu trên để khuếch đại cho hàng.
Và tính toán trên cũng cho ta chọn IC đệm dòng cho đầu ra đảo phù hợp với tín hiệu
cột nối 0V để LED sáng.
1.4.5.Khối Led 7 thanh (LED 7-SEG).
1.4.5.1.Chức năng.
Tương tự như LCD dùng để hiển thị các thông số hay đếm xung, đồng hồ.v.v…
Chúng ta còn có LED 7 thanh được cấu tạo từ 7 led đơn xếp thành hình số 8. Như vậy
ta có thể hiện các con số từ 0 đến 9, hay hiển thị một số chữ cái đơn giản.
1.4.5.2.Tính toán và thiết kế.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 53
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Như vậy ta có điện áp cung cấp cho LED 4V điện áp rơi trên LED 1,7 đến 2V
như vậy điện trở hạn dòng cho từng led khoảng 150Ω đến 330Ω. Nếu ta nối 1 điện trở
hạn dòng cho toàn bộ 8 LED tại đầu Anot hoặc Catot chung thì điện trở được tính như
sau:
Do mỗi LED cần 15mA để LED sáng bình thường
Suy ra 8 LED có dòng tổng như sau: 8x15mA = 120mA.
Vậy giá trị điện trở đó được tính như sau:
R=V outH−V LED
I tong
= 4−1.70.12
=20Ω
Ta chọn loại điện trở 22Ω 1W do dòng đi qua lớn(120÷200mA)
Tổng công suất của khối là:
P = U.I = 25.4. 5 = 500mW
Hình 1.2: Sơ đồ nguyên lý mạch Led 7 thanh
1.4.6.Module điều khiển động cơ 1 chiều.
1.4.6.1.Chức năng.
Module động cơ một chiều có chức năng thực hiện các yêu cầu điều khiển và
điều chỉnh tốc độ động cơ điện một chiều.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 54
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.4.6.2.Phân tích yêu cầu lựa chọn linh kiện.
Các yêu cầu của module động cơ một chiều:
- Điều khiển động cơ DC với dòng điện tải tối đa 2A khi quá tải.
- Có thể điều chỉnh tốc độ động cơ DC bằng cách tác động trên cổng P3 sử
dụng công tắc 3 cực .
- Điều khiển chính xác, tin cậy và ổn định.
- Thiết kế đơn giản.
1.4.6.3.Tính toán và thiết kế.
Có rất nhiều loại động cơ một chiều khác nhau. Nhưng ở trên MODULE này
chúng ta chỉ sử dụng loại động cơ DC công suất rất nhỏ. Tín hiệu được lấy từ cổng P2
sau đó được đưa qua 2 con cách ly PC817 sau đó được đưa đến Tip41 đóng ngắt điều
khiển động cơ.3bits trực tiếp điều khiển cho động cơ quay thuận , ngược , stop trên
cổng P3
Hình 1.10: Sơ đồ nguyên lý mạch điều khiển động cơ DC
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 55
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Với động cơ một chiều và động cơ bước chúng em lựa chọn trong modul này thì có
các thông số như sau:
Điện áp điều khiển là 12VDC
Dòng điện định mức là 500mA
1.4.7.Khối mạch nạp (Programmer).
Dùng để nạp chương trình cho IC trung tâm ở mạch này cung cấp cho chúng ta
2 Socket 40 chân và 20 chân có thể nạp chương trình (files) Hex cho họ AT89C51.
Chi tiết có thể xem phần hướng dẫn sử dụng mạch nạp.
Đây là một modul khá đặc biệt và yêu cầu thiết kế rất phức tạp từ phần cứng
cho tới chương trình điều khiển (Có thể nói đây là một đề tài riêng biệt). Ở đề tài này
chúng em đã tham khảo mạch nạp của hãng Sunrom trên mạch internet
(http://www.sunrom.com) . Mạch và phần mềm do hãng cung cấp hoàn
toàn miễn phí. Mạch nạp rất tốt cho nhiều loại IC khác nhau thuộc họ 8051 và rất bền
chip do có sự tính toán kĩ lưỡng về dòng và áp để lập trình Flash.
1.4.8. Module động cơ bước.
1.4.8.1. Chức năng.
Module động cơ bước có chức năng thực hiện các yêu cầu điều khiển và điều
chỉnh tốc độ động cơ bước.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 56
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.4.8.2.Phân tích yêu cầu lựa chọn linh kiện.
Các yêu cầu của module động cơ bước:
- Điều khiển động cơ bước với dòng điện tải tối đa 2A khi quá tải
- Có thể điều chỉnh tốc độ động cơ Bước bằng cách tác động trên cổng P3 sử
dụng công tắc 3 cực .
- Điều khiển chính xác, tin cậy và ổn định.
- Thiết kế đơn giản
Hình 1.13: Sơ đồ nguyên lý mạch điều khiển động cơ bước
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 57
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Tín hiệu điều khiển đông cơ bước được đưa tới từ vi điều khiển qua cách ly
PC817 và Tip41 , với 4 bit đầu vào nối với các bit Px.0 đến Px.3 của vi điều khiển;
còn các đầu ra được nối với 4 đầu dây động cơ bước qua chân cắm STEP-
MOTOR.Với động cơ bước chúng em lựa chọn trong modul này thì có các thông số
như sau:
Điện áp điều khiển là 12VDC
Dòng điện định mức là 500mA
1.5. THI CÔNG MẠCH
1.5.1. Vẽ mạch nguyên lý và mạch in
Công việc này được trợ giúp bởi phần mềm Eagle. Đây là phần mềm chuyên
dùng cho người thiết kế mạch điện tử. Để mạch chạy tốt thì sơ đồ nguyên lý của mạch
phải đúng, đầy đủ. Khi cho chạy board mạch cần phải chú ý đến kích thước các đường
tín hiệu và đường nguồn, đường nguồn bao giờ cũng có kích thước lớn hơn đường tín
hiệu.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 58
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Hình 1.14 : Sơ đồ mạch nguyên lý kit thực tập VĐK
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 59
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
1.5.2. Thi công mạch in ( board )
Sau khi chúng ta đã vẽ xong mạch in thì việc làm board có thể thực hiện theo
các phương án sau:
- Phương án 1: Tự in mạch thủ công bằng bàn là nghĩa là chúng ta vẽ mạch xong. Đem
in ra giấy đề can sau đó dùng bàn là là lên fip đồng sau đó dùng dung dịch FeCl 3 ăn
mòn.
- Phương án 2: Làm mạch bằng phương pháp in lưới. Nghĩa là sau khi đã vẽ mạch
xong, chúng ta đem in lưới lên mạch in, sau đó cũng dùng dung dịch ăn mòn.
- Phương án 3: Phương án này là phải dùng đến các máy chuyên dùng thi công mạch
in, đây là cách thi công mạch có độ chính xác cao nhất, ít hư hỏng, thi công được mạch
nhiều lớp với đường mạch với kích thước rất nhỏ. Về thẩm mĩ rất đẹp và chuyên
nghiệp.
Do hạn chế về trình độ cũng như phương tiện kỹ thuật trang thiết bị và điều kiện kinh
tế nên chúng em chọn phương pháp đầu tiên để làm.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 60
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Hình 1.15 : Sơ đồ mạch board lý kit thực tập VĐK
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 61
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Chương II LẮP RÁP LINH KIỆN VÀO MẠCH IN
2.1. MODUL MẠCH NẠP.
2.1.1. Hình ảnh thực tế:
Hình 2.1:Module mạch Nạp
2.1.2. Mô tả nguyên lý:
Flash MC Programer có thể dùng để ghi, đọc và xóa chương trình cho các loại
chip IC vi điều khiển: AT89C51, AT89LV51, AT89C52, AT89LV52, AT89C55,
AT89LV55, AT89S51, AT89LS51, AT89S52, AT89LS52, AT89S53, AT89LS53,
AT89S8252, AT89LS8252, AT89C1051, AT89C2051, AT89C4051.
Thiết bị kết nối với máy tính qua cổng USB được điều khiển bởi phần mềm
PI51L, trao đổi dữ liệu và lấy nguồn trực tiếp qua cổng dạng đầu USB.
Đặc tính của mạch:
- Hỗ trợ các chip của Atmel 89.
- Tự động xác định phần cứng khi kết nối.
- Kiểm tra lỗi trong quá trình nạp.
- Khóa chip chống sao chép chương trình.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 62
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
- Tự động xóa trước khi ghi và kiểm tra sau khi ghi xong.
- Trạng thái ghi hiển thị Status toolbar.
- Đơn giản với người sử dụng
- Tốc độ baud 57600.
2.1.3. Giao diện phần mềm và trình tự thực hiện:
Nạp chương trình.
Khi kết nối mạch với máy tính sẽ hiện ra như sau:
2.1.4. Hướng dẫn sử dụng:
a. Cấp nguồn.
Sử dụng nguồn trục tiếp từ cây may tnhs thong qua cổng dạng USB
b. Lắp và nạp chíp
Nên ngắt điện cung cấp cho thiết bị trước khi thao lắp IC nạp. IC cần được lắp
theo đúng chiều, chân số 1 của IC phải được lắp vào đúng khe cắm gần cần
khóa IC nhất.
Quy trình lắp:
- Đưa cần khóa IC về vị trí thẳng đứng (không khóa).
- Lắp IC đúng chiều vào khay (socket) một cách ngay ngắn.
- Gạt cần khóa IC (vuông góc với vị trí không khóa) để khóa IC lại.
Quy trình nạp IC:
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 63
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Sau khi đã nắp IC vào chip nạp đầu tiên ta phải chọn xem chip cần nạp la 89C51
hay 89C52. Để làm việc này ta ấn vao Autodelect.
Sau đó nhấn vào Connect chọn Auto sau khi chip tự động chọn cổng COM muốn nạp
ta tiếp tục nhấn váo CHIP để chộn tìm file muốn nạp
c. Tháo IC đã nạp xong.
- Đưa cần khóa IC về vị trí thẳng đứng (mở khóa).
- Lấy IC ra khỏi khay cắm..
Lưu ý:
- Ngắt điện khi tháo lắp IC
- Tránh chạm vào chân IC hoặc làm cong, gãy chân IC.
2.2.MODULE MẠCH CHỦ
Hình 2.2: Module mạch chủ
Module mạch chủ là module có chức năng quan trọng trong toàn bộ Kit.nó để điều
khiển tất cả các module khác trên toàn mạch thông qua các cổng P0,P1,P2,P3.các tín
hiệu được đưa ra đén các module bằng các jum và cáp nối.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 64
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
2.3. MODULE LED ĐƠN
2.3.1. Mô hình bố trí linh kiện thực tế.
Hình 2.3: Module led đơn
2.3.2. Phương pháp lập trình
- Modul led đơn gồm có 32 led đơn được bố trí trên một hàng, mỗi led được nối với
một điện trở hạn dòng cho các led này tránh hiện tượng khi có dòng điện lớn qua các
led cháy led.
- Điều khiển 32 LED đơn chúng ta điều khiển trực tiếp từ vi điều khiển qua bốn cổng
P0,P1,P2và P3 của vi điều khiển.
- Có nhiều phương pháp điều khiển lập trình cho led đơn, có thể chỉ điều khiển cho 8
led, 16 led, 24 led, hay 32 led bằng cách nối các cổng của CPU, điều khiển các led
nhâp nháy, nháy xen kẽ, sáng dần từ trái sang phải, từ phải sang trái.
2.3.3.Chương Trình
Chương Trình$INCLUDE(REG51.INC)
SPEED DATA 50HORG 00H
START:MOV P0,#0FFH
MOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH
NHAP_NHAY:MOV A,#0FFH
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 65
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
MOV R1,#5LOOP1:
CPL AMOV P0,AMOV P1,AMOV P2,AMOV P3,AACALL DELAYDJNZ R1,LOOP1
NHAY_XEN_KE:MOV R1,#5MOV A,#55H
LOOP2:CPL AMOV P0,A
MOV P1,AMOV P2,AMOV P3,AACALL DELAYDJNZ R1,LOOP2
SANG_DAN_TRAI_PHAI:MOV A,#0FFHMOV P0,AMOV P1,AMOV P2,AMOV P3,A
LOOP3:CLR CRRC AMOV P0,AACALL DELAYCJNE A,#0,LOOP3MOV A,#0FFH
LOOP4:CLR CRRC AMOV P1,AACALL DELAYCJNE A,#0,LOOP4MOV A,#0FFH
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 66
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
LOOP5:CLR CRRC AMOV P2,AACALL DELAYCJNE A,#0,LOOP5MOV A,#0FFH
LOOP6:CLR CRRC AMOV P3,AACALL DELAYCJNE A,#0,LOOP6
TAT_DAN_PHAI_TRAI: MOV A,#0MOV P0,AMOV P1,AMOV P2,AMOV P3,A
LOOP7:SETB CRLC AMOV P3,AACALL DELAYCJNE A,#0FFH,LOOP7MOV A,#0
LOOP8:SETB CRLC AMOV P2,AACALL DELAYCJNE A,#0FFH,LOOP8MOV A,#0
LOOP9:SETB CRLC AMOV P1,AACALL DELAYCJNE A,#0FFH,LOOP9MOV A,#0
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 67
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
LOOP10:SETB C
RLC AMOV P0,AACALL DELAYCJNE A,#0FFH,LOOP10
SANG_TU_GIUA_RA:JMP START
DELAY:MOV R2,#2
K1:MOV R3,#200K2:MOV R4,#200
DJNZ R4,$DJNZ R3,K2DJNZ R2,K1RET
2.4. MODULE LED 7 THANH2.4.1. Mô hình bố trí linh kiện thực tế.
Hình 2.4: Module led 7 thanh
2.4.2. Phương pháp lập trình
Có rât nhiều phương pháp lập trình cho led 7 thanh như phương pháp quet led,
quet đa hợp, quet không đa hợp,hay phương pháp dich bit.nhưng ở đây ta sử dụng
phương pháp quet led hiển thị từ số 0-7 theo thứ tự led1 hiển thị số 0, led 2 hiển thị số
1…và led thứ 8 hiển thị số 7 và quay ngược lại .
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 68
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
2.4.3.Chương Trình
$INCLUDE(REG51.INC) ORG 000H; mach dem tu 0-7 hien thi tren led 7 thanh ket noi voi port p2
mov p2,#00hmov p1,#00hmov dph,#01hmov r0,#00hmov r1,#40h
Tien: mov a,#00hmov dpl,r1movc a,@a+dptrmov p1,amov a,#00hmov dpl,r0movc a,@a+dptrmov p2,acall treinc r1inc r0cjne r0,#08,tienmov r0,#07hmov r1,#47h
Lui: mov a,#00hmov dpl,r1movc a,@a+dptrmov p1,amov a,#00hmov dpl,r0movc a,@a+dptr
mov p2,acall tredec r1dec r0cjne r0,#1fh,luijmp $ ;neu muon chi thuc hien 1 lan;jmp start ; neu muon chay di chay lai
Tre: mov r4,#5k0:mov r2,#200k1:mov r3,#229
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 69
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
djnz r3,$djnz r2,k1djnz r4,k0ret
org 0100hdb 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h; bang ma led 7 thanh loai a chungorg 0140hdb 01h,02h,04h,08h,10h,20h,40h,80h; ma quet
2.5. MODULE MA TRẬN LED
2.5.1. Mô hình bố trí linh kiện thực tế.
Hình 2.5: Module ma trận led
2.5.2. Phương pháp lập trình:
Điều khiển trực tiếp từ vi điều khiển thông qua 2 cổng P0 và P2.
Tùy vào yêu cầu hiển thị của LedMatrix mà ta có các chương trình hiển thị khác
nhau.Dữ liệu hiển thị sẽ được hiển thị qua việc quét các hàng và các cột bằng việc quét
8bít điều khiển bằng mã dữ liệu(HEX). Vì vậy khi muốn hiển thị dữ liệu ta phải lập
bảng mã HEX tương ứng với các chữ cái mà chúng ta cần hiển thị.Ở đây chúng em
hiển thị chữ “ĐỒ ÁN MÔN HỌC”.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 70
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
2.5.3.Chương Trình
$INCLUDE(REG51.INC)ORG 0000H
MAIN:MOV DPTR,#DATABASE ;DIA CHI NAP DU LIEU
timeht:
MOV R0,#8 ;TOC DO HIEN KY TUktnap:
LCALL SCANDATA ;NAP DU LIEUDJNZ R0,ktnapINC DPTRMOV A,DPLMOV R1,DPHCJNE R1,#00H,timeht ;KIEM TRA KET THUC CHUOI CJNE A,#60h,timehtSJMP MAIN
SCANDATA: PUSH ACCPUSH 00HPUSH 01HMOV R0,#00H ;DIA CHI DU LIEU DAU TIEN TRON
DATABASEMOV R1,#01H ;HIEN THI RA COT DAU TIENSCAN:
MOV A,R0MOVC A,@A+DPTR ;NAP DU LIEU TU DATABASE
VAO AMOV P2, A ;HIEN THI RA DONG TUONG UNGMOV P0,R1 ;HIEN THI RA COT DAU TIENLCALL DELAY5MS ;CHUONG TRINH TAO TRE 5 MSMOV R4,#40H ;CHONG LEMMOV P0,#00H
;loop: DJNZ R4,loopINC R0 ;HIEN THI DU LIEU KE TIEPMOV A,R1 ;CHUYEN SANG COT KE TIEPRL AMOV R1,A
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 71
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
CJNE R0,#8H,SCAN ;KIEM TRA QUET COT THU 8 CHUA
POP 01HPOP 00HPOP ACCRET
DELAY5MS:;PUSH 00H;PUSH 01H;MOV R1,#13
loop1:;MOV R0,#180;DJNZ R0,$;DJNZ R1,loop1
; POP 01H;POP 00HRET
DATABASE:DB 0ffH,0ffH,0ffH,0ffH,0ffH,0ffH,0ffH,0ffHDB 0E7H,0H,0H,66H,7EH,0BDH,0C3H,0ffH ,0FFH ;DDB 81H,7EH,7EH,7EH,81H,0FFH,0FFH ; ODB 1H,0EEH,0EEH,0EEH,1H,0FFH,0FFH ;ADB 00H,0F9H,0E7H,9FH,00H ,0FFH,0FFH ;NDB 00H,0F9H,0E7H,0E7H,0F9H,00H ,0FFH,0FFH ;MDB 81H,7EH,7EH,7EH,81H,0FFH,0FFH ; ODB 00H,0F9H,0E7H,9FH,00H ,0FFH,0FFH ;NDB 00H,0E7H,0E7H,0E7H,00H,0FFH,0FFH ;HDB 81H,7EH,7EH,7EH,81H,0FFH,0FFH ; ODB 81H,7EH,7EH,7EH,0BDH,0FFH,0FFH ;C
DB 0ffH,0ffH,0ffH,0ffH,0ffH,0ffH,0ffH,0ffHEND
2.6. MODULE HIỂN THỊ LCD.
2.6.1. Mô hình bố trí linh kiện thực tế.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 72
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Hình 2.6: Module LCD
2.6.2.Phương pháp lập trình:
Nguyên lý hoạt động cơ bản của LCD:
Địa chỉ (Số chân Port) Chân VĐK Chức năng
2, 4, 6, 8, 10, 12, 14, 16Px.0 ÷ Px.7
(DB0 đến DB7)Chân dữ liệu
13 P3.3 (CS\) Chọn chip
15 P3.6 (RW\) Điều khiển ghi/đọc
17 P3.7 (RS) Mã lệnh/ dữ liệu
19 20 (GND) Chân nối Mass 0V
20 40 (Vcc) Chân nối +5V
Bảng 2.1. Sơ đồ chân và chức năng của LCD
Để gửi một lệnh bất kỳ nêu ở bảng trên đến LCD, cần đưa chân RS = 0, còn để
gửi dữ liệu thì bật RS = 1. Sau đó, gửi sườn xung cao xuống thấp đến chân
CS để cho phép chốt dữ liệu trong LCD, (Sử dụng hàm trễ sau mỗi lần gửi mã lệnh
hay dữ liệu đến LCD).
Cách trên không kiểm tra cờ bận DB7, mỗi lần thực hiện một lệnh, LCD phải mất
một khoảng thời gian để hoàn tất việc này. Chính vì vậy khi ra lệnh thực hiện cho
LCD, ta phải trễ một khoảng thời gian. Sau đó mới được thực hiện lệnh tiếp theo. Tuy
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 73
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
nhiên phương pháp trễ không được ổn định và chính xác khi tần số thạch anh thay đổi,
còn một phương pháp nữa đó là kiểm tra LCD đã sẵn sàng nhận dữ liệu hay chưa bằng
cách kiểm tra bít có trọng số cao nhất DB7 của thanh ghi lệnh, tức khi RS = 0. khi bit
này xuống 0 báo hiệu LCD đã sẵn sàng nhận lênh tiếp theo. Phương pháp này có ưu
điểm là làm việc ổn định, đồng bộ và không mất thời gian trễ dư không cần thiết.
LCD sẵn sàng làm việc.
Để cho LCD có thể hoạt động, đầu tiên ta phải khởi tạo LCD, báo cho nó biết số hàng,
số ký tự hiển thị trên một hàng. Các dữ liệu điều khiển lần lượt được
chuyển vào Data bus của LCD là 38h, 0Eh, 01h, 06h, 48h. (Ý nghĩa của chúng cho
trong bảng trên).
Đối với Modul LCD chúng em hiển thị dòng đầu tiên là chữ:”KIT THỰC TẬP” còn
dòng thứ 2 là chữ “VI ĐIỀU KHIỂN”
2.6.3.Chương Trình
$INCLUDE (REG51.INC)ORG 0000HSTART:MOV A,#38h ; CHON LDC 2 DONGACALL malenhACALL delayMOV A,#0Eh ; HIEN THI NHAP NHAY CON TROACALL malenhACALL delayMOV A,#01h ; XOA MAN HINH HIEN THIACALL malenh
ACALL delayMOV A,06h ; DICH CON TRO SANG PHAIACALL malenhACALL delayMOV A,#82h ; DUA CON TRO VE DONG 1ACALL malenhACALL delayRET;---------khoi tao dong 1-----------MOV A,#"K"ACALL hienthiACALL delay
MOV A,#"I"
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 74
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
ACALL hienthiACALL delayMOV A,#"T"ACALL hienthiACALL delayMOV A,#" "ACALL hienthiACALL delayMOV A,#"T"ACALL hienthiACALL delayMOV A,#"H"ACALL hienthiACALL delayMOV A,#"Ư"ACALL hienthiACALL delayMOV A,#"C"ACALL hienthiACALL delayMOV A,#" "ACALL hienthiACALL delayMOV A,#"T"ACALL hienthiACALL delayMOV A,#"Â"ACALL hienthiACALL delayMOV A,#"P"ACALL hienthiACALL delayRET;-------khoi tao dong 2-------MOV A,#0C0hACALL malenhACALL delayMOV A,#"V"ACALL hienthiACALL delayMOV A,#"I"
ACALL hienthi
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 75
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
ACALL delayMOV A,#"Đ"ACALL hienthiACALL delayMOV A,#"I"ACALL hienthiACALL delayMOV A,#"Ê"ACALL hienthiACALL delayMOV A,#"U"ACALL hienthiACALL delayMOV A,#" "ACALL hienthiACALL delayMOV A,#"K"ACALL hienthiACALL delayMOV A,#"H"ACALL hienthiACALL delayMOV A,#"I "ACALL hienthiACALL delayMOV A,#"Ê"ACALL hienthiACALL delayMOV A,#"N"ACALL hienthiACALL delayJMP STARTRETmalenh:MOV P1,ACLR P2.2 ; RS=0 CHON THANH GHI MA LENHCLR P2.1 ; RW=0 CHO PHEP GHI DLSETB P2.0 ; EN = 1CLR p2.0 ; EN = 0rethienthi:
MOV P1,A
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 76
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
SETB P2.2 ; RS = 1 CHON THANH GHI DLCLR P2.1 ; RW = 0 CHO PHEP GHI DLSETB P2.0 ; EN = 1CLR P2.0 ; EN = 0retdelay:mov r2,#10 x1:mov r3,#200 x2: mov r4,#299 djnz r4,$ djnz r3,x2 djnz r2,x1RETEND
2.7. MODULE ĐIỀU KHIỂN ĐỘNG CƠ MỘT CHIỀU.
2.7.1. Hình ảnh thực tế.
Hình 2.7: Module động cơ một chiều
2.7.2. Mô tả nguyên lý
Có rất nhiều loại động cơ một chiều khác nhau. Nhưng ở trên MODULE này
chúng ta chỉ sử dụng loại động cơ DC công suất rất nhỏ. Tín hiệu được lấy từ cổng P2
sau đó được đưa qua 2 con cách ly PC817 rồi đưa đến Tip41 đóng ngắt điều khiển
động cơ.3bits trực tiếp điều khiển cho động cơ quay thuận,ngược,stop trên cổng P3
Chân cắm DC_MOTOR dùng kết nối với động cơ DC.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 77
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
2.7.3.Chương Trình
$INCLUDE(REG.INC) ORG 0000Hmov p3,#0ffhmov p2,#00hmain:jnb p3.2,thuanjnb p3.3,nguocjnb p3.4,stopsjmp mainthuan:mov p2,#1sjmp mainnguoc:mov p2,#2sjmp mainstop:mov p2,#00hsjmp mainretend 2.8. MODULE ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC
2.8.1. Hình ảnh thực tế.
Hình 2.8: Module động cơ bước
2.8.2. Mô tả nguyên lý:
Tín hiệu được lấy từ cổng P0 sau đó được đưa qua 2 con cách ly PC817 sau đó được
đưa đến Tip41 đóng ngắt điều khiển động cơ.3bits trực tiếp điều khiển cho động cơ
quay trên cổng P3
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 78
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
2.8.3.Chương Trình
$INCLUDE(reg51.inc)org 0000hstart:THUAN BIT P3.0NGUOC BIT P3.1TOCDO BIT P3.2DONGCO EQU P1MOV P1,#0ffH MOV P2,#0FFH ;.........stop................MAIN:
JNB THUAN,QUAYTHUAN1JNB NGUOC,QUAYNGUOC1
JMP MAIN;--------THUAN-----------------QUAYTHUAN1:MOV A,#0ddhQUAYTHUAN: MOV B,#7
MOV DONGCO,A LCALL DELAY
MOV DONGCO,#0ffhLCALL DELAYJNB TOCDO,TANGTOCJMP nhay
TANGTOC: MOV B,#2 nhay:
LCALL delayRL AMOV p2,#0ffhJNB NGUOC,QUAYNGUOCJMP QUAYTHUAN
;--------NGUOC------------------QUAYNGUOC1: MOV A,#0eeh QUAYNGUOC:
MOV B,#7
MOV DONGCO,A
LCALL DELAY
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 79
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
MOV DONGCO,#0ffhLCALL DELAY
JNB TOCDO,TANGTOC1 JMP nhay1 TANGTOC1: MOV B,#2 nhay1: LCALL delay RR A MOV p2,#0ffh
JNB THUAN,QUAYTHUANJMP QUAYNGUOC
delay:MOV R7,Bmov tmod,#01hlap1:MOV th0,#0d8h MOV tl0,#0efhsetb tr0jnb tf0,$clr tr0clr tf0djnz r7,lap1ret
END
2.9. Hệ thống công tắc 3 cực.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 80
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Sử dụng 8 công tắc 3 cực để điều khiển trực tiếp động cơ 1 chiều và động cơ bước. Tín
hiệu điều khiển được lấy trực tiếp từ cổng P3.
Hình ảnh trực tiếp
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 81
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
KẾT LUẬN
1. KẾT QUẢ ĐẠT ĐƯỢC
Sau quá trình nghiên cứu và thi công, nhóm đã hoàn thành các nội dung đề tài
nêu ra với các module đã thiết kế và chế tạo với mục đích sử dụng trong việc giảng
dạy thực hành, thí nghiệm cho môn học vi điều khiển. Các modul đã được kiểm tra,
khắc phục lỗi và chạy các ứng dụng tương ứng.
Với mỗi cá nhân trong nhóm, sau khi thực hiện xong đề tài này đã có thêm
nhiều kiến thức về cấu trúc phần cứng vi điều khiển, lập trình vi điều khiển và ghép
nối cho các ứng dụng thực tế. Đồng thời có thêm những kinh nghiệm trong việc thiết
kế và lập trình các ứng dụng cho vi điều khiển.
2. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
Đề tài hiện tại chỉ cho phép làm việc với các loại chip họ 89Cxx và 89Sxx,
không có chế độ kiểm tra để người dùng có thể quan sát các quá trình hoạt động của
bộ KIT.
Với những hạn chế đó ta có thể phát triển đề tài có thể sử dụng các loại chip
khác như PIC, AVR, … Xây dựng phần mềm tương tác giữa bộ KIT và máy tính để có
thể mô phỏng các hoạt động của bộ KIT trên máy tính, giúp người dùng có thể trực
quan câu lệnh, các hoạt động của chip.
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 82
Trường Đại học SPKT Hưng Yên Đồ Án Môn Học Khoa : Điện – Điện Tử Lớp ĐTK39
Tài liệu tham khảo:
1. Nguyễn Tăng Cường, Phan Quốc Thắng. Cấu trúc và lập trình họ vi điều
khiển 8051. NXB Khoa học và kỹ thuật, 2004.
2. Lâm Tăng Đức, Lê Tiến Dũng. Giáo trình kỹ thuật vi điều khiển. ĐH Đà
Nẵng, 2006.
Webside tham khảo:
http://www.datasheetcatalog.com
http://www.dientuvietnam.com
GVHD : Phạm Thị Ngọc AnhSVTH : Trần Văn Thọ Đàm Thị Phương Thảo Trang 83
84