Thiết kế và thi công mạch giao tiếp với thiết bị đọc mã vạch sử dụng vi điều khiển AT89C51
Trang 1L1- CHUAN GIAO TIEP THONG QUA CONG PS2
1.2 - CHUAN GIAO TIEP THONG QUA CONG RS232
1.3— KHÁI NIỆM CHUNG VỀ CODE 39
Phần 2 : GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN 2.1 ~ GIGI THIEU
2.2 - LỊCH SỬ PHÁT TRIEN CUA VI ĐIỀU KHIỂN
2.3— KHẢO SÁT BỘ VI DIEU KHIỂN AT89C5I
Phần 3 : KHÁI QUÁT CHUNG VỀ EEPROM 3.1- KHAI QUAT CHUNG VE EEPROM
Trang 2
3.2 - EEPROM AT28C64
Phin 4 : TONG QUAN VE PLDs
4.1— KHÁI QUÁT CHUNG
7.2 - NGUYEN LY HOAT DONG CUA TUNG KHOI
7.3~ SO BO NGUYEN LY VA LUU BDO GIAI THUAT
7.4- THI CÔNG
Phần 8 : KẾT LUẬN
PHỤ LỤC TÀI LIỆU THAM KHẢO
Trang 5
Trang 3
Lời Mở Đầu
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới và khu vực Châu Á bằng nễn sản xuất đa dạng và đầy tiềm năng Nền sản xuất này không
chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chất lượng tay
nghề, kỹ thuật lao động và thiết bị sản xuất Trên đà phát triển đó, vấn đề tự động hoá
trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết Thoạt đầu vấn đề tự động hoá được thực hiện riêng lẻ từ cơ khí hoá đến các mạch điện tử Ngày nay, sự xuất
hiện cuả các chip vi xử lý cùng với sự ra đời của máy điện toán đã đẩy vấn để tự động
hoá lên một bước cao hơn và thời lượng nhanh hơn Các thiết bị, hệ thống đo lường va điều khiển kết hợp với máy điện toán cho ta độ chính xác rất cao, thời gian xử lý số liệu
ngắn Ngoài ra, chúng ta còn có thể thiết lập phần giao diện ứng dụng lên màn hình máy điện toán tạo nên sự tiện lợi cho người sử dụng Trước tiềm năng đó em đã quyết định
Hen hifw oh thin hiAn AAS thi © THe) WY od Th? CAna Manh Clan Tian VUZi Thirst RI
Trang 4Đọc Mã Vạch Sử Dụng Vi Điều Khiển AT89C51” thông qua cổng PS2 và thực hiện viết chương trình phần mềm để truyền số liệu giữa hai thiết bị trên
Do thời gian có hạn nên tập luận văn này không tránh khỏi những thiếu sót mong quí thầy cô thông cảm
Trang 6
Trang 5NỘI DUNG ĐỀ TÀI
Trang 6Trang 7
Trang 7
1 — Giới thiêu sơ nét về các chuẩn giao tiếp PS2 RS232 và 1 số khái niệm về CODE 39
1.1 - Chuẩn øiao tiếp thông qua cổng PS2 :
Tw AM,
Trang 8Vals =
Trong d6:
Pin 1 : KBD Clock Pin 2: GND
Pin 3 : KBD Data
.Pin4: NC Pin 5: +5v (VCC)
.Pin6:NC
Chuẩn giao tiếp PS2 có 3 đường tín hiệu quan trọng : đường xung nhịp bàn phim (KBD Clock), đường dữ liệu bàn phím (KBD Data), và masse (GND)
Trang 8
Trang 9
Phần 1 Các chuẩn giao tiếp và khái niệm về CODE 39
1.2 - Chuẩn øiao tiếp thông qua cổng tuần tư hay cổng COM :
Trang 10
1.3 - Một số khái niệm vé CODE 39 :
El BARCUD
Code 39 là 1 mã vạch rời rạc gồm các thanh sọc đen trắng xếp xen kẻ nhau Những
thanh rộng và hẹp Khoảng cách giữa mỗi ký tự mã vạch được gọi là “ranh giới ký tự nội
“ độ rộng của nó thì không xác định nhưng thường thi bằng với thanh sọc trắng hẹp
Trang 9
Trang 11
Phần 1 Các chuẩn giao tiếp và khái niệm về CODE 39
Độ rộng của thanh rộng và hẹp thiết lập nên các thành tố mà tất cả các thanh đều
giống nhau nhưng trên thực tế hầu hết các quá trình in ấn có thể xảy ra tình trạng lem mực Chính vì vậy một số thanh sẽ rộng ra và chiếm các khoảng trống khác Ảnh hưởng
này được chú ý nhiều nhất trên các thanh hẹp vì thỉnh thoảng nó làm cho loại mã vạch
này rất khó để quét bởi một số bộ giải mã
Mã vạch theo chuẩn Code 39 hổ trợ mã hóa đến 43 ký tự cộng với một ký tự thêm vào để giới hạn hay để đánh dấu bắt đầu hoặc kết thúc ký tự Ký tự bắt đầu hay kết thúc luôn xảy ra tại vị trí đầu và cuối của ký tự trong một mã vạch hoàn chỉnh và được qui ước
Trang 1239:
Trang 10
Trang 13
Phần 1 Các chuẩn giao tiếp và khái niệm về CODE 39
Char Bars Spaces Patten — Bars Spaces
1 EM oO sO 10001 0100 Hh Se em 11000 0001 2m Fh MM 01001 0100 N Bm Oe 00701 = 0001
Ki eM Be 101001 0001 + M HM i Wooo 1011
Trang 14
Trang 11
Trang 15
2 - Giới thiệu chung về vi điều khiển
2.1 - Giới thiệu :
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnh của
người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xứ lý thông tin, đo thời
gian và tiến hành đóng mở một cơ cấu nào đó
Trong các thiếh bị điện và điện và điện tử dân dụng, các bộ vi điểu khiển, điều khiển hoạt động của TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba Trong hệ thống sản xuất tự động, bộ vi điểu khiển được sử dụng trong Robot, dây chuyền tự động Các hệ thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng
2.2 - Lịch sử phát triển của vi điều khiển :
Bộ vi điều khiển thực ra, là một loại vi xử lí trong tập hợp các bộ vi xử lý nói chung
Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 do sự phát triển và hoàn
ahi Aen er nRan ce anak A cpt Bike th Aven teAn Tế? chÒus^2+ RAZ/ZS%CŒ (Matal Owinddke CaminnndAucrtar)
Trang 16
ee een eee ee ee ee nee OI OO IIE IEEE IEE
mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng cao
Năm 1971 xuất hiện bộ vi xử lí 4 bít loại TMS1000 do công ty texas Instruments vừa
là nơi phát minh vừa là nhà sản xuất Nhìn tổng thể thì bộ vi xử lí chỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo một trình tự, còn tất cả bộ phận
phụ trợ khác cần thiết như : bộ nhớ dữ liệu , bộ nhớ chương trình , bộ chuển đổi AID,
khối điều khiển, khối hiển thị, điều khiển máy in, hối đồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử lí
Mãi đến năm 1976 công ty INTEL (Interlligen-Elictronics) Mới cho ra đời bộ vi điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048 Bên cạnh bộ xử lí trung tâm
8048 còn chứa bộ nhớ đữ liệu, bộ nhớ chương trình, bộ đếm và phát thời gian các cổng
vào và ra Digital trén một chip
Trang 11
Trang 17
Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8bit tương tự như
8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48)
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn
chip với tên gọi 8051 Và sau đó hàng loạt các vi điểu khiển cùng loại với 8051 ra đời và
hình thành họ vi điều khiển MCS-5I
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công ty hàng dẫn hàng đầu thế giới chế tạo Đứng đầu là công ty INTEL và rất nhiều công ty khác như : AMD, SIEMENS, PHILIPS, DALLAS, OKT
Ngoài ra còn có các công ty khác cũng có những họ vi diéu khiển riêng như :
Họ 68HCOS của công ty Motorola
Họ H8 của công ty Hitachi
Họ pic cua cong ty Microchip
2 3 - Khảo sát bô vi điều khiển AT89C51 :
Trang 18
AT89C5I là một bộ vi điều khiển 8 bit loại CMOS, có tốc độ cao và công suất thấp,
với bộ nhớ Flash có thể lập trình được Nó được sản xuất với công nghệ bộ nhớ không
bay hơi mật độ cao của hãng Atmel, và tương thích với chuẩn công nghiệp của 80C51 và 80C52 vé chan ra và bộ lệnh
2.3.1 - Dac truing cia AT89C51
- _ Tương thích với các sản phẩm MCS-51
- _ 4Kbyte bộ nhớ Flash có thể lập trình lại với 1000 chu kỳ đọc/xóa
- _ Hoạt động tĩnh đầy đủ: 0Hz đến 24MHz
- _ Khóa bộ nhớ chương trình 3 cấp
- _ 128 byte RAM nội, 32 đường xuất/nhập lập trình được
- - Mạch đồng hồ và bộ dao động trên chip
Trang 12
Trang 19Serial port
TO* Interrupt Other 128 bytes TỊ*
Oscillator Bus I/O ports
control
Trang 20
Address/data
* Alternate pin assignments for P1 and P3
Interrup control: điều khiển ngắt
Orther registers: các thanh ghi khác
128 byte RAM: RAM 128 byte
Timer 0, 1: bộ dinh thdi 0, 1
CPU: don vi diéu khién trung tam
Oscillator: mach dao d6ng
Bus control: diéu khién Bus
I/O port: cAc port xuat/nhap
Address/data: địa chỉ/dữ liệu
2.3.2 - Cấu hình và đặc tính chân của A T89C51
- Trang 13
Trang 21
Như vậy, AT89C51 có tất cả 40 chân, 32 trong số 40 chân này có công dụng xuất/nhập Tuy nhiên, 24 trong 32 đường này có 2 mục đích (công dụng) Mỗi đường có thể hoạt động xuất/nhập hoặc hoạt động như một đường điều khiển, hoặc hoạt động như
một đường địa chỉ/dữ liệu của bus địa chỉ/dữ liệu đa hợp
32 chân nêu trên hình thành nên 4 port nối tiếp Với các thiết kế yêu cầu một mức tối thiểu bộ nhớ ngoài hoặc các thành phân bên ngoài khác, ta có thể sử dụng các port
này làm nhiệm vụ xuất/nhập 8 đường cho mỗi port có thể được xử lý như một đơn vị giao
tiếp với các thiết bị song song như máy in, bộ biến đổi D-A, v.v hoặc mỗi đường có thể hoạt động độc lập giao tiếp với các thiết bị đơn bit như chuyển mach, LED, BJT, FET, cuộn dây, động cơ, loa
Mô tả chân :
Trang 22
Trang 14
Trang 232.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
P1./
P1.6 P1.5 P1.4
Trang 24
"` AII
A10 A9 A§
Vcc(chân 40): chân cấp điện áp nguồn +5V chip
GND(chân 20): chân nối đất
Trang 25Phần 2 Giới thiệu chung về vi điều khiển Bình thường đây là cổng ra Để có thể vừa làm đầu ra, vừa làm đầu vào thì mỗi
chân phải được nối tới một điện trở 10KO kéo bên ngoài Sở dĩ như vậy là vì cổng port 0
có dạng cực máng để hở, đây là điểm khác với các cổng port 1, port 2, port 3 Khái niệm cực máng hở cũng tương tự như collector hở, tuy nhiên ở đây áp dụng cho các chip dạng
MOS Với các điện trở kéo ngoài, khi reset, port 0 được cấu hình làm cổng ra Khi có các
điện trở nối tới port 0, để tạo thành cổng vào thì cần phải lập trình bằng cách ghi I tới tất
cả các bit của cổng, sau đó nhận dữ liệu về từ port 0 và ghi vào thanh chứa A
Port 1:
Port 1 (các chân từ 1 đến 8) chỉ có một công dụng là xuất/nhập Các chân này chỉ
được dùng để giao tiếp với thiết bị bên ngoài khi có yêu cầu, ngoài ra chúng không có
chức năng nào khác nữa Nghĩa là chúng chỉ được sử dụng để giao tiếp với ngoại vi Khác với port 0, port 1 không cần điện trở kéo lên vì nó đã có các điện trở kéo bên
trong Khi reset, port 1 được cấu hình làm cổng ra Để chuyển port 1 thành đầu vào cần lân trình bằnơ cách øbi 1 lên tất cả các bịt của cổng.
Trang 26
Port 2:
Port 2 (các chân từ 21 đến 28) có 2 công dụng, hoặc làm nhiệm vụ xuất/nhập hoặc
là byte cao của địa chỉ 16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết
kế có nhiễu hơn 256 byte bộ nhớ dữ liệu ngoài Cũng giống như port 1, port 2 không cần
điện trở kéo vì bên trong đã có các điện trở kéo Khi reset, port 2 được cấu hình làm đầu -
ra ĐỂ port 2 làm cổng vào thì cần được lập trình bằng cách ghi 1 tới tất cả các chân của cổng
Trang 27
dụng chủ yếu Port 3 có thêm chức năng quan trọng khác là cung cấp một số tín hiệu đặc
biệt, chẳng hạn như ngắt
Bảng sau đây cho ta chức năng các chân của port 3:
Bit Tên Địa chỉ bit Chức năng
P3.0 RxD BOH chân nhận dữ liệu của port nối tiếp
P34 TO B4H ngõ vào của bộ định thời/đếm 0 P35 TI B5H ngõ vào của bộ định thời/đếm 1
P37 RD B7H điểu khiển đọc bộ nhớ dữ liệu ngoài
RST (chân 9):
Nek wih DOT IA mar wan via rhinkh fmacter racet) 35a 9OX† đdhànơ để thiết lân lai
Trang 28
trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống Bình thường ngõ vào
này ở mức thấp Khi ngõ vào này được treo ở logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi bên trong của 8951 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống RST có thể được tác động bằng tay hoặc được tác động khi cấp nguồn bằng cách dùng một mạch RC Trạng thái của tất cả các thanh ghi sau khi reset hệ thống được tóm tắt trong bảng sau:
Thanh chứa A 00H Thanh chứa B 00H
Trang 17
Trang 29port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp, chân ALE xuất tín hiệu để chốt địa
chỉ (byte thấp của địa chỉ 16 bit) vào một thanh ghi ngoài trong suốt nửa đầu của chu kỳ
bô nhớ Sau khi điều này đã được thực hiên các chân của nort 0 sẽ xuất/nhâp dữ liêu hdp
Trang 30lệ trong suốt nửa thứ hai của chu kỳ bộ nhớ Chân này cũng là ngõ nhập xung lập trình (PROG) khi lập trình Flash Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động
bên trong chip vi điều khiển và có thể được dùng làm xung Clock cho phần còn lại của
hệ thống Nếu mạch dao dộng có tần số 12MHz thì tín hiệu ALE có tần số 2MHz
PSEN (chân 29) :
PSEN (Program Store Enable) là ngõ ra cho phép đọc bộ nhớ chương trình ngoài
Chân này thường nối với chân cho phép xuất OE cia EPROM hodc ROM dé cho phép đọc các byte lệnh Tín hiệu PSEN ở logic 0O trong suốt thời gian tìm nạp lệnh Các mã nhị
phân của chương trình hay opcode được đọc từ EPROM, qua bus đữ liệu và được chốt vào thanh ghi lệnh IR của 8951 để được giải mã Khi thực thi một chương trình chứa ở ROM nội, PSEN được duy trì ở logic không tích cực (logic 1)
EA/VPP (chan 31):
Trang 18
Trang 31
Ngõ vào này có thể được nối với +5V (logic 1) hoặc được nối với GND (logic 0)
Nếu chân này nối lên +5V, 8951 thực thi chương trình trong ROM nội (chương trình nhỏ
hơn 4Kbyte) Nếu chân này nối với GND (và chân PSEN cũng ở logic 0), ROM nội bên trong chip bị vô hiệu hóa, và chương trình cần thực thi được chứa ở bộ nhớ ngoài Chân này hoặc được nối GND hoặc được nối với Vcc chứ không bao giờ dé hd -
Các phiên bản EPROM của 8051 còn sử dụng chân E4 làm chân nhận điện áp cấp
điện 21V (Vpp) cho việc lập trình EPROM nội (nạp EPROM)
XTALI1 và XTAL2 (chân 19 và chân 18) :
Mạch dao động bên trong chip được ghép với thạch anh bên ngoài ở hai chân
XTALI và
XTAL2 Khi mắc dao động thạch anh phải có hai tụ điện 30pF hoặc 33pF Một đầu
mỗi tụ nối với XTAL1 và XTAL2, còn đâu kia nối đất Tần số danh định của thạch anh là
12MHz cho hầu hết các chip của họ MCS-51 Dao động đồng hồ ngoài không nhất thiết nhải là hô đao déno thach anh ma cñnơ cá thể đhànơ bê đao đênơ TTTI, Khi đó bô đao
Trang 32
động được nối tới chân XTAL], còn chân XTAL2 được để hở
2.3.3 - Tổ chức bô nhớ
AT89C51 có những vùng nhớ riêng biệt cho chương trình và dữ liệu Cả chương
trình và dữ liệu có thể ở bên trong chip Dù vậy, chúng có thể được mở rộng ô nhớ bằng các thành phần bên ngoài lên đến tối đa 64Kbyte bộ nhớ chương trình và 64Kbyte bộ nhớ
- Các thanh ghi và các port xuất/nhập đã được xếp trong bộ nhớ và có thể
được truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác
Trang 19
Trang 33Phần 2 Giới thiệu chung về vi điều khiển
- Vùng stack thường trú trong RAM trên chip (RAM nội) thay vì ở trong RAM ngoài như đối với các bộ vi xử lý
bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
Vùng RAM đa mục đích còn có thể được truy xuất bằng cách dùng kiểu định địa chỉ gián tiếp qua các thanh ghi
Trang 34Trang 20
Trang 35Phần 2 Giới thiệu chung về vi điều khiển
) | Ving RAM EO | E7 | E6 | E5 | E4 | E3 | E2 | El | EO | ACC
Trang 3617|16 |15 |14 |13 |12 |11|10| $C | Không định dia chi bit
0F | 0E |0D |0C |0B|0A |09|08| 8B | Khong dinh địa chi bit
07 |06 |05 |04 |03 |02 |01|00| 8A | Không định địa chi bit
Dãy 3 8 89 | Không định địa chỉ bít
Day 2 8 87 | Không định địa chỉ bit
Dãy 1 8 82 | Không định địa chỉ bịt
IE
P2
SBUF SCON
Pl
THI THO TL1 TLO TMOD TCON PCON
DPH
Trang 37Phần 2 Giới thiệu chung về vi điều khiển
81 | Khong dinh dia chi bit
Day thanh ghi mac 8 80 | Không định địa chỉ bit
năng đặc biệt
2.3.3.2 - Vùng RAM dinh dia chi bit
8951 chứa 210 vị trí bit được định địa chỉ, trong đó 128 bit chứa trong các byte ở địa chỉ từ 20H đến 2FH (16byte x 8bit = 128bit) và phần còn lại chứa trong các thanh ghi
chức năng đặc biệt
Như vừa đề cập ở trên, 8951 có 128 vị trí bit được định địa chỉ và có nhiều mục đích
ở các byte có địa chỉ từ 20H đến 2FH Các địa chỉ này được truy xuất như là các byte hay các bit tùy vào lệnh cụ thể
2.3.3.3 - Các dãy thanh phi
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi Các lệnh của 8951 hỗ trợ
DPL SP
Trang 38các thanh ghi từ RO đến R7 thuộc dãy 0 Đây là dãy mặc định sau khi Reset hệ thông
Các thanh ghi này ở các địa chỉ từ OOH đến 07H
Các lệnh sử dụng trong các thanh ghi từ RO đến R7 là các lệnh ngắn và thực hiện nhanh hơn so với các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp Các giá trị dữ
| liệu thường được sử dụng thì nên chứa ở một trong các thanh ghi này Dãy thanh ghi đang
được sử dụng gọi là dãy thanh ghi tích cực Dãy thanh ghi tích cực có thể được thay đổi bằng cách thay đổi các bit chọn đãy trong từ trạng thái chương trình PSW (sẽ đề cập sau)
Ý tưởng “các dãy thanh ghi” cho phép “chuyển đổi ngữ cảnh” nhanh và có hiệu quả
ở những nơi mà các phần riêng rẻ của phần mềm sử dụng một tập thanh ghi riêng, độc lập với các phần khác của phần mềm
2.3.4 - Các thanh ghỉ chức năng đặc biệt SER
Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõ ràng bởi một tập
lệnh Việc truy xuất các thanh ghi cũng đựơc truy xuất trên 8951
Trang 22
Trang 39Phan 2 Giới thiệu chung về vi điều khiển
Các thanh ghi nội của 8951 được cấu hình thành một phần của RAM trén chip Do
vậy mỗi một thanh ghi cũng có một địa chỉ Điểu này hợp lý với 8951 vì chip này có rất
nhiều thanh ghi Cũng như các thanh ghi từ RO đến R7, ta có 21 thanh ghi chức năng đặc
biệt SER chiếm phần trên của RAM nội từ địa chỉ 80H đến FFH
Hầu hết các thanh ghi chức năng đặc biệt được truy xuất bằng kiểu định địa chỉ trực
tiếp Trong hình vẽ trên ta cần lưu ý là một số thanh ghi chức năng đặc biệt được định địa
chỉ từng bit và định địa chỉ từng byte
PSW.4 RS1 D4H chon day thanh ghi (bit 1)
PSW.3 RSO D3H chon dav thanh ghi (bit 0)
Trang 4000: dãy 0, địa chỉ từ 00H đến 07H 01: dãy 1, địa chỉ từ 08H đến OFH 10: dãy 2, địa chỉ từ 10H đến 17H
11: dãy 3, địa chỉ từ 18H dén 1FH
PSW.2 OV D2H cờ tràn
PSW.L - DIH dự trữ
PSW.0 P DOH cờ kiểm tra chắn lẽ
- PSW có địa chỉ là DOH chứa các bit trạng thái có chức năng được tóm tắt trong bảng trên
Cờ nhớ
Cờ nhớ CY (Carry flag) có 2 công dụng Công dụng truyền thống trong các phép
toán số học là được set bằng 1 nếu có số nhớ từ phép cộng bit 7 hoặc có số mượn mang
Trang 23