Tải bản đầy đủ (.pdf) (75 trang)

Đề tài đồ án nghiên cứu thiết kế bộ kit học tập sử dụng vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.02 MB, 75 trang )

ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

ĐỒ ÁN CHUYÊN NGÀNH 1
Đề Tài : Nghiên cứu thiết kế bộ kit học tập sử dụng vi
điều khiển

GiáoViên hướng dẫn : Trần Xuân Tiến
Sinh viên thực hiện : Trần Hữu Biển
Mã sinh viên
: 11219308
Lớp
: 112191.2

Hưng Yên, năm 2022


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


.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
..........................................................................

Hưng Yên, Ngày.....Tháng....Năm 2022
Giáo viên hướng dẫn


LỜI NÓI ĐẦU ............................................................................................................1
CHƯƠNG 1: ...............................................................................................................2
TỔNG QUAN VỀ VI ĐIỀU KHIỂN .........................................................................2
1.1 Tổng quan về họ vi điều khiển ..........................................................................2
1.2 Giới thiệu về AT89S52 .....................................................................................3
1.2.1 Tổng quan về AT89S52 .............................................................................3
1.2.2 Sơ đồ chân AT89S52 .................................................................................4
1.2.3 Tổ chức bộ nhớ ..........................................................................................6
1.3 Giới thiệu về 16F877A ....................................................................................10
1.3.1 Tổng quan về 16F877A............................................................................10
1.3.2 Sơ đồ chân vi điều khiển PIC 16F877A..................................................11
1.3.3 Tập lệnh của vi điều khiển PIC 16F877A ................................................14

1.3.4 Các thành phần cơ bản của một mạch ứng dụng vi điều khiển PIC: .......15
CHƯƠNG 2: .............................................................................................................16
TÍNH TỐN THIẾT KẾ CHẾ TẠO MẠCH ...........................................................16
2.1 Cấu tạo thành phần của bộ kit .........................................................................16
2.2 Thiết kế và tính tốn linh kiện sử dụng ...........................................................16
2.2.1 Khối MCU AT89S52 ...............................................................................16
2.2.2 MCU PIC16F877A ..................................................................................18
2.2.3 Khối Led đơn ...........................................................................................19
2.2.4 Khối led 7 thanh .......................................................................................20
2.2.5 Khối led LCD ...........................................................................................22
2.2.6 Khối led matrix ........................................................................................23
2.2.7 Khối động cơ bước ...................................................................................25
2.2.9 Khối điều khiển Relay ..............................................................................28
2.2.10 Khối cảm biến ........................................................................................30
2.2.11 Khối ADC ..............................................................................................33
2.2.12 Khối nút nhấn đơn và ma trận phím.......................................................34
2.2.13 Khối nguồn .............................................................................................36
2.3 Thiết kế mạch ..................................................................................................37
2.3.1 Sơ đồ thi công MCU AT89S52 ................................................................37
2.3.2 Sơ đồ thi công MCU PIC16F877A ..........................................................39
2.3.3 Sơ đồ thi cơng MAIN ...............................................................................39
CHƯƠNG 3 ..............................................................................................................41
BÀI TỐN ỨNG DỤNG CỦA KIT THEO PIC16F877A ......................................42
3.1 Bài toán với led đơn ........................................................................................42


3.1.1 Bài toán và sơ đồ kết nối ..........................................................................42
3.1.2 Xây dựng lưu đồ thuật tốn và chương trình ...........................................43
3.2 Bài toán với led 7 thanh ..................................................................................45
3.2.1 Bài toán và sơ đồ kết nối ..........................................................................45

3.3.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................46
3.3 Bài tốn với LCD ............................................................................................48
3.3.1 Bài toán và sơ đồ kết nối ..........................................................................48
3.3.2 Xây dựng lưu đồ thuật tốn và chương trình ...........................................49
3.4 Bài tốn với led matrix ....................................................................................51
3.4.1 Bài toán và sơ đồ kết nối ..........................................................................51
3.4.2 Xây dựng lưu đồ thuật tốn và chương trình ...........................................52
3.5 Bài toán với nút nhấn ......................................................................................54
3.5.1 Bài toán và sơ đồ kết nối ..........................................................................54
2) Sơ đồ kết nối .................................................................................................54
3.5.2 Lưu đồ thuật tốn và chương trình ...........................................................55
3.6 Bài tốn với động cơ bước ..............................................................................57
3.6.1 Bài toán và sơ đồ kết nối ..........................................................................57
3.6.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................58
3.7 Bài tốn với động cơ điện 1 chiều 12VDC .....................................................61
3.7.1 Bài toán và sơ đồ kết nối ..........................................................................61
3.7.2

Xây dựng lưu đồ thuật tốn và chương trình ........................................62

3.8 Bài toán biến đổi ADC hiển thị LCD ..............................................................65
3.8.1 Bài toán và sơ đồ kết nối ..........................................................................65
3.8.2 Xây dưng lưu đồ thuật tốn và chương trình ...........................................65
KẾT LUẬN ...............................................................................................................69
1 Đánh giá kết quả thực hiện.................................................................................69
*Ưu điểm của bộ kit ..........................................................................................69
*Nhược điểm của bộ kit ....................................................................................69
2 Phương hướng phát triển đề tài ..........................................................................69



LỜI NĨI ĐẦU
Với sự phát triển trong nền cơng nghiệp 4.0 hiện nay đặc biệt trong ngành
điện tử. Các vi điều khiển được ứng dụng nhiều trong các mạch điện nhằm xử lí dễ
dàng hơn những bài tốn phức tạp theo một ngôn ngữ máy. Ngày nay vi điều khiển
đã có rất nhiều chủng loại, kích thước,loại chân, số chân, tốc độ xử lí cũng như dung
lượng bộ nhớ...
Đối với sinh viên là đối tượng học tập và nghiên cứu đặc biệt là sinh viên
ngành điện điện tử. Hai vi điều khiển AT89S52 và PIC16F877A là hai vi điều khiển
kinh điển nhất thuộc hãng Atmel dòng AT89Sxx và Microchip dòng PIC. Để hiểu rõ
về vi điều khiển cũng như phương thức điều khiển và duy trong lập trình, ứng dụng
trong thực tiễn.
Trong đồ án chuyên ngành 1, đề tài của nhóm chúng em là “Thiết kế chế tạo
bộ kit thí nghiệm vi điều khiển”. Sau một thời gian nghiên cứu, nhóm đã chế tạo
thành cơng bộ kit thí nghiệm đã đáp ứng được yêu cầu đặt ra, đảm bảo nội dung phần
thí nghiệm của các học phần vi xử lí và lập trinh C ứng dụng.
Trong suốt thời gian thực, hiện đề tài chúng em đã gặp một số vướng mắc về
lý thuyết và khó khăn trong việc thi cơng sản phẩm. Tuy nhiên, chúng em đã nhận
được sự giải đáp và hướng dẫn kịp thời của thầy Trần Xuân Tiến, sự góp ý kiến của
các bạn sinh viên trong lớp. Đựơc như vậy chúng em xin chân thành cảm ơn và mong
muốn nhận được nhiều hơn nữa sự giúp đỡ, chỉ bảo của thầy giáo, cô giáo và bạn
trong các đồ án sau này.

Chúng em xin chân thành cảm ơn!
Sinh viên thực hiện

Trần Hữu Biển
Nguyễn Ngọc Đoàn

1



CHƯƠNG 1:
TỔNG QUAN VỀ VI ĐIỀU KHIỂN
1.1 Tổng quan về họ vi điều khiển
Vào năm 1981 hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051. Bộ vi
điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, một cổng
nối tiếp và 4 cổng (độ rộng 8 bit) vào – ra tất cả được đặt trên một chip. 8051 là một
bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm.
Dữ liệu lớn hơn 8 bit được chia ra thành các dự liệu 8 bit để xử lý. 8051 đã trở lên
phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán các dạng biến
thể của 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ
khác nhau và dung lượng ROM trên chip khác nhau. Mặc dù có nhiều biến thể khác
nhau của 8051 về tốc độ và dung lượng nhớ ROM trên chip, nhưng tất cả chúng đều
tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu viết chương trình
của mình cho một phiên bản nào của 8051 thì nó cũng sẽ chạy với mọi phiên bản
khác mà khơng phân biệt nó được sản xuất từ hãng nào.
Đặc Tính

Số Lượng

ROM trên chip

4K byte

RAM

128 byte

Bộ định thời


2

Các chân vào – ra

32

Cổng nối tiếp

1

Nguồn ngắt

6

Bảng 1.1: Các đặc tính của 8051 đầu tiên
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics
Division thuộc General Instrument.
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy
tính thơng minh có thể lập trình được) là một sản phẩm của hãng General Instrument
đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC1650 được dùng để
2


giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng
gọi PIC với cái tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại
vi). CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy
PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho
CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC
chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc

RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động).
Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và chủ sở hữu
mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời. Tuy nhiên PIC được bổ sung
EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC
được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM,
ADC...), với bộ nhớ chương trình từ 512 Word đến 32K Word.
1.2 Giới thiệu về AT89S52
1.2.1 Tổng quan về AT89S52
AT89S52 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,cơng suất
nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xố được lập trình được. Chip
này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao
của Atmel.
Chip AT89S52 cũng tương thích với tập lệnh và các chân ra của chuẩn công
nghiệp MCS-51. Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại
trên hệ thống hoặc bằng bộ lập trình bộ nhớ khơng mất nội dung qui ước. Bằng cách
kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel 89C51 là một
hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh
hoạt đối với các ứng dụng điều khiển.
AT89S52 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất
nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân
ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip.
Ngoài ra AT89S52 được thiết kế với logic tĩnh cho hoạt đơng có tần số giảm
xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm.
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.

3


Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao

động cung cấp xung clock nhằm vơ hiệu hố các hoạt động khác của chip cho đến
khi có reset cứng tiếp theo.
Các đặc điểm của 8951 được tóm tắt như sau:
• 4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ
ghi xố.
• Tần số hoạt động từ: 0Hz đến 24 MHz.
• 3 mức khóa bộ nhớ lập trình.
• 2 bộ Timer/counter 16 Bit.
• 128 Byte RAM nội.
• 4 Port xuất /nhập I/O 8 bit.
• Giao tiếp nối tiếp.
• 64 KB vùng nhớ mã ngồ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.
• 4 s cho hoạt động nhân hoặc chia.
1.2.2 Sơ đồ chân AT89S52

Hình 1.1 Sơ đồ các chân AT89S52.
4


-Chức năng các chân tín hiệu :
• VCC: chân cung cấp điện.
• GND: chân nối đất.
• Port 0: gồm 8 chân 32-39 (P0.0…P0,7) Port 0 là port có 2 chức năng. 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.
• Port1: chân 1-8 (P1.0…P1.7) Port 1 là port IO. Có thể dùng cho giao tiếp với
các thiết bị ngồ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 ngồi.
• Port 2: chân 21-28 (P2.0….P2.7) Port 2 là port có tác dụng kép. Được dùng như
các đường xuất nhập hoặc byte cao của bus địa chỉ đối với các thiết bị dùng bộ
nhớ mở rộng.
• Port 3: chân 10-17 (P3.0…P3.7) Port 3 là port xuất nhập 8 bit 2 chiều có các
điện trở kéo lên bên trong. 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ó lien hệ với các đặc tính đặc biệt của 8051
• RST: Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao
động đang hoạt động sẽ reset AT89S52.
• ALE/ PROG Xung của ngõ ra cho phép chốt địa chỉ ALE (address latch enable)
cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân
này cũng được dùng làm ngõ vào xung lập trình ( PROG ) trong thời gian lập
trình Flash. Khi hoạt động bình thường, xung của ngõ ra ALE ln ln có tần
số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các
mục đích định thời từ bên ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một
xung ALE sẽ bị bỏ qua trong mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài. Khi
cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vơ hiệu hố bằng
cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8EH. Khi bit
này được set, ALE chỉ tích cực tring thời gian thực thi lệnh MOVX hoặc MOVC.
Ngược lại chân này sẽ được kéo lên mức cao. Việc set bit không cho phép hoạt
động chốt byte thấp của địa chỉ sẽ khơng có tác dụng nếu bộ vi điều khiển đang
chế độ thực thi chương trình ngồi.
• PSEN : Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều
khiển truy xuất bộ nhớ chuơng trình ngoài. Khi AT89S52 đang thực thi chương
5



trình trong bộ nhớ chương trình ngồi, PSEN tích cực 2 lần cho mỗi chu kỳ máy,
ngoại trừ trường hợp 2 tác động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ
dữ liệu ngồi.
• EA / Vpp: Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable)
phải được nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí
nhớ của bộ nhớ chương trình ngồi, bắt đầu từ địa chỉ 0000H cho đến FFFFH.
Tuy nhiên cần lưu ý là nếu có bit khố 1(clock bit 1) được lập trình, EA sẽ được
chốt bên trong khi reset. EA nên nối với Vcc để thực thi chương trình trong chip.
Chân EA / Vpp cịn nhận điện áp cho phép lập trình Vpp trong thời gian lập trình
cho Flash, điện áp này cấp cho các bộ phận có u cầu điện áp 12V.
• XTAL 1: Ngõ vào đến mạch khuyếch đại đảo dao động và ngõ vào đến mạch
tạo xung clock bên trong chip.
• XTAL 2: Ngõ ra từ mạch khuyết đại đảo của mạch dao động.

1.2.3 Tổ chức bộ nhớ
Trên vi điều khiển 8051/8052 đều có cả bộ nhớ chương trình (ROM) và bộ
nhớ dữ liệu (RAM). Tuy nhiên dung lượng của các bộ nhớ trên chip là hạn chế. Khi
thiết kế các ứng dụng đòi hỏi bộ nhớ lớn người ta có thể dùng bộ nhớ ngồi.
1),Bộ nhớ chương trình
Bộ nhớ chương trình là bộ nhớ chỉ đọc, là nơi lưu trữ chương trình của vi điều
khiển. Bộ nhớ chương trình của họ 8051 có thể thuộc một trong các loại sau ROM,
EPROM, FLASH hoặc khơng có bộ nhớ chương trình trên chip. Với họ vi điều khiển
89xx, bộ nhớ chương trình được tích hợp sẵn trong chip có kích thước nhỏ nhất là
4kByte. Với các vi điều khiển khơng tích hợp sẵn bộ nhớ chương trình trên chip, buộc
phải thiết kế bộ nhớ chương trình bên ngồi.
Địa chỉ đầu tiên của bộ nhớ chương trình là 0000H, chính là địa chỉ reset của
vi điều khiển. Ngay khi bật nguồn hoặc reset vi điều khiển, thì CPU sẽ nhảy đến thực
hiện lệnh ở địa chỉ 0000H này.
Khi sử dụng bộ nhớ trên chip thì chân EA phải được nối lên mức logic cao (+5V).

Nếu bạn muốn mở rộng bộ nhớ chương trình thì chúng ta phải dùng bộ nhớ ngồi với
dung lượng tối đa là 64Kbyte.

6


2) Bộ nhớ dữ liệu
Bộ nhớ dữ liệu tồn tại độc lập so với bộ nhớ chương trình. Họ vi điều khiển
8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể mở rộng với
bộ nhớ dữ liệu ngoài lên tới 64kByte.
Bộ nhớ dữ liệu được phân chia như sau:
• Các băng thanh ghi có địa chỉ từ 00H đến 1FH 32 byte thấp của bộ nhớ nội được
dùng cho các băng thanh ghi (dãy thanh ghi). Bộ lệnh 8051 hỗ trợ 8 thanh ghi R0
đếnR7 và theo mặc định sau khi reset hệ thống, các thanh ghi này có các địa chỉ
từ 00H đến 07H.
Do có 4 băng thanh ghi nên tại một thời điểm chỉ có duy nhất 1 băng thanh ghi
được truy suất bới các thanh ghi R0 - R7, để thay đổi các băng thanh ghi thì ta thay
đổi các bit chọn băng trong thanh ghi trạng thái PSW.
• Vùng RAM địa chỉ hóa từng bit có địa chỉ từ 20h đến 2Fh 8051 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 (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặc biệt.
Ngồi ra 8051 cịn có các cổng xuất/nhập có thể định địa chỉ từng bit, điều này
làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit.
• Vùng RAM đa dụng có địa chỉ từ 30h đến 7Fh
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự
do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
• Các thanh ghi chức năng đặc biệt có địa chỉ từ 80h đến FFh
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt
SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý là không phải
tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa

3) Các thanh ghi chức năng đặc biệt (SFR)
Thanh ghi của 8051 được dùng để lưu trữ tạm thời dữ liệu hoặc địa chỉ. Các
thanh ghi này chủ yếu có kích thước 8 bit, 8 bit của các thanh ghi được sắp xếp như
hình dưới trong đó bit D7 là bit có trọng số cao nhất, cịn bit D0 là bit có trọng số
thấp nhất.

D7 D6 D5 D4 D3 D2 D1 D0
7


Hình 1.2 Thanh ghi 8 bit.
• Thanh ghi chính A
Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép tốn của CPU, thường kí
hiệu là A (Accumulator).
• Thanh ghi phụ B
Là thanh ghi tính tốn phụ của vi điều khiển 8051, ở địa chỉ F0H được dùng chung
với thanh ghi chính A trong các phép tốn nhân, chia. Thanh ghi B cũng được sử
dụng như một thanh ghi trung gian
• Thanh ghi cổng P0 - P3
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ 90H,
Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các port này đều có thể truy
suất theo bit hoặc theo byte.

Hình 1.3 Mơ tả chức năng xuất/nhập của thanh ghi cổng.
• Thanh ghi trạng thái chương trình PSW
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mơ tả tồn bộ
trạng thái chương trình đang hoạt động của hệ thống.

Giải thích chức năng từng bit của thanh trạng thái chương trình PSW
Cờ nhớ CY (Carry Flag) - địa chỉ D7h: cờ nhớ có tác dụng kép (dùng trong

các phép tốn số học và logic). Thơng thường nó được dùng cho các lệnh tốn học:
8


Cờ C được Set lên 1 nếu phép cộng có Bit nhớ từ Bit 7 (bị tràn) hoặc phép trừ có Bit
mượn cho Bit 7. Ngược lại, cờ nhớ C = 0 nếu phép cộng khơng có nhớ và phép trừ
khơng có mượn. Để dễ hình dung, ta xem ví dụ ở hình dưới đây
Cờ nhớ phụ AC (Auxiliary Carry Flag) - địa chỉ D6h: khi cộng những giá
trị BCD, cờ nhớ phụ được Set lên 1 nếu có Bit nhớ từ Bit 3 (bit thứ 4) sang Bit 4 hoặc
kết quả trong 4 Bit thấp nằm trong khoảng 0AH->0FH.
Cờ chẵn lẻ P - địa chỉ D0h: phản ánh số bit 1 trong thanh ghi A là chẵn hay
lẻ. Nếu thanh ghi A chứa một số chẵn các bít 1 thì P = 0 cịn chứa một số lẻ bit 1 thì
P = 1.
• Con trỏ ngăn xếp SP (Stack Point)
Ngăn xếp chính là vùng bộ nhớ RAM được CPU sử dụng để lưu thông tin tạm
thời. Thông tin này có thể là dữ liệu hoặc địa chỉ. CPU cần các thanh ghi này vì số
các thanh ghi bị hạn chế. Như vậy, để có thể truy cập vào vùng nhớ ngăn xếp thì cần
phải có thanh ghi trong CPU trỏ đến. Thanh ghi SP này sẽ được dùng để trỏ đến ngăn
xếp, nên được gọi là thanh ghi con trỏ ngăn xếp.Thanh ghi này có độ rộng là 8 bit,
tức là chỉ có thể trỏ được các địa chỉ từ 00h đến FFh.
• Con trỏ dữ liệu DPTR (Data pointer)
Con trỏ dữ liệu được dùng để truy xuất bộ nhớ chương trình ngồi hoặc bộ nhớ dữ
liệu ngồi. Con trỏ dữ liệu là một thanh ghi 16 bit ở địa chỉ 82H (DPL - byte thấp) và
83H (DPH - byte cao).
• Thanh ghi bộ đệm truyền thơng nối tiếp SBUF (Serial Data Buffer)
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ đệm
nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được chuyển
vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi q trình truyền dữ
liệu qua truyền thơng nối tiếp kết thúc. Khi thực hiện việc chuyển dữ liệu từ SBUF
ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thơng nối tiếp.

• Thanh ghi của bộ định thời/bộ đếm
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian
hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh
ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH
(TH0, byte cao). Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte
cao).

9


Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD
(Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON được định địa chỉ từng bit. i)
Thanh ghi ngắt (Interrupt register)
Ngắt (Interrupt) - như tên của nó, là một số sự kiện khẩn cấp bên trong hoặc bên
ngoài bộ vi điều khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình
hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu – nhiệm vụ này gọi là trình
phục vụ ngắt (ISR: Interrupt Service Routine).
Để thiết lập ngắt, ta sẽ thiết lập các giá trị trong thanh ghi cho phép ngắt IE ở địa
chỉ A8H, thứ tự ưu tiên ngắt được đặt bằng cách set các bit ở thanh ghi ưu tiên ngắt
IP ở địa chỉ B8h. Cả hai thanh ghi này được định địa chỉ theo bit.
1.3 Giới thiệu về 16F877A
1.3.1 Tổng quan về 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit. Mỗi lệnh đều được thực thi trong một chu kỳ xung lock. Tốc độ hoạt động tối
đa cho phép là 20 MHz với một chu kỳ lệnh là 200ns. Bộ nhớ chương trình 8Kx14
bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng
256x8 byte. Số PORT I/O là 5 với 33 pin I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
• Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
• Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa

vào xung lock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
• Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
• Hai bộ Capture/so sánh/điều chế độ rộng xung.
• Các chuẩn giao tiếp nối tiếp SSP (Synchronous Series Port), SPI và I2C.
• Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
• Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngồi.
• 8 kênh chuyển đổi ADC 10 bit.
• Hai bộ so sánh
• Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
10


• Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
• Bộ nhớ EEPROM có khả năng ghi xóa được 1.000.000 lần.
• Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
• Khả năng tự nạp chương trình với sự điều khiển của phần mền.
• Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming) thơng qua 2 chân.
• Watchdog Timer với bộ giao động trong.
• Chức năng bảo mật mã chương trình.
• Chế độ sleep.
• Có thể hoạt động với nhiều dạng Oscillator khác nhau.
1.3.2 Sơ đồ chân vi điều khiển PIC 16F877A

Hình 1.4 Sơ đồ chân của PIC 16F877A
Chức năng các chân tín hiệu :

• Chân 1: MCLR là chân clear của mạch này. Nó sẽ khởi động lại vi điều
khiển và được kích hoạt bởi mức logic thấp, có nghĩa là chân này phải được


11


cấp liên tục một điện áp 5V và nếu cấp điện áp 0V thì PIC16F877A sẽ bị
đặt lại.

• Một nút nhấn và một điện trở được kết nối đến chân này. Chân MCLR này
luôn được cấp điện áp 5V. Khi muốn khởi động lại mạch. Bạn chỉ cần nhấn
vào nút nhấn thì chân MCLR sẽ được đưa về 0 và mạch được đặt lại.

• Chân 2 RA0/AN0: PORT A có 6 chân, từ chân số 2 đến chân số 7. Tất cả
đều là các chân xuất, nhập dữ liệu hai chiều. Chân số 2 là chân đầu tiên của
PORT A. Chân này có thể được sử dụng như một chân tương tự (analog)
chân AN0. Nó được tích hợp bộ chuyển đổi analog sang digital.

• Chân 3 RA1/AN1: Đầu vào tín hiệu analog 1
• Chân 4 RA2/AN2/Vref-: Có thể hoạt động như đầu vào analog thứ 2 hoặc
chân điện áp tham chiếu âm.

• Chân 5 RA3/AN3/Vref+: Có thể hoạt động như đầu vào analog thứ 3 hoặc
chân điện áp tham chiếu dương.

• Chân 6 RA0/T0CKI: Với timer 0, chân này hoạt động được như một đầu
vào xung clock và đầu ra open drain.

• Chân 7 RA5/SS/AN4: Có thể hoạt động như một đầu vào analog thứ 4. Có
cổng nối tiếp đồng bộ và là chân SS cho cổng này.

• Chân 8 RE0/RD/AN5: PORT E bắt đầu từ chân số 8 đến chân số 10 và là

cổng I/O hai chiều. Nó cịn là cổng analog thứ 5 hoặc là chân RD (tích cực
mức logic thấp) cho cổng slave giao tiếp song song

• Chân 9 RE1/WR/AN6: Là đầu vào analog thứ 6 và là chân WR (tích cực
mức logic thấp) cho cổng slave giao tiếp song song.

• Chân 10 RE2/CS/A7: Là đầu vào analog 7 và là chân CS cho cổng slave
song song.

• Chân 11 và 32 VDD: Đây là hai chân cấp nguồn 5V.
• Chân 12 và 31 VSS: Các chân tham chiếu nối đất cho I/O và các chân
logic. Chúng nên được nối với 0V hoặc mắc GND.

• Chân 13 OSC1/CLKIN: Là đầu vào bộ dao động hoặc chân đầu vào xung
nhịp bên ngoài.

12


• Chân 14 OSC2/CLKOUT: Đây là chân đầu ra của bộ dao động. Một bộ dao
động thạch anh được nối vào giữa hai chân 13 và 14 để cấp xung nhịp bên
ngồi cho bộ vi điều khiển. ¼ tần số của OSC1 được OSC2 xuất ra trong
chế độ RC. Điều này xác định tốc độ chu kỳ xử lý lệnh.

• Chân 15 RC0/T1OCO/T1CKI: PORT C có 8 chân. Là cổng I/O hai chiều.
Trong số đó, chân 15 là chân đầu tiên. Nó có thể là đầu vào xung nhịp của
bộ định thời 1 hoặc đầu ra bộ dao động của bộ định thời 2.

• Chân 16 RC11/T1OSI/CCP2: Là đầu vào dao động của bộ định thời 1 hoặc
đầu vào capture 2 / đầu ra so sánh 2 / đầu ra PWM 2.


• Chân 17 RC2/CCP1: Đầu vào capture 1/ đầu ra so sánh 1/ đầu ra PWM1
• Chân 18 RC3/SCK/SCL: Đầu ra của chế độ SPI hoặc I2C và có thể là I/O
cho bộ dao động nối tiếp đồng bộ.

• Chân 23 RC4/SDI/SDA: Chân dữ liệu trong chế độ SPI hoặc là chân xuất
nhập dữ liệu chế độ I2C.

• Chân 24 RC5/SDO: Là chân xuất dữ liệu chế độ SPI.
• Chân 25 RC6/TX/CK: Có thể là chân xung clock đồng bộ hoặc chân truyền
khơng đồng bộ UART.

• Chân 26 RC7/RX/DT: Là chân dữ liệu đồng bộ hoặc chân nhận tín hiệu
UART.

• Các chân 19, 20, 21, 22, 27, 28, 29, 30: Tất cả các chân này đều thuộc
PORT D, đây là một cổng I/O hai chiều. Khi bus vi xử lý được kết nối, nó
có thể hoạt động ncho cổng slave giao tiếp dữ liệu song song.

• Chân 33-40 PORT B: Hai chân này đều thuộc PORTB. Trong đó RB0 có
thể được sử dụng làm chân ngắt ngồi và RB6 và RB7 có thể được sử dụng
làm chân debugger.
Lưu ý chân RA4/TOCKI vừa là chân số 4 của Port A và vừa là ngõ vào từ bên
ngoài cho bộ đếm. Việc lựa chọn một trong hai chức năng này được thực hiện qua
việcthay đổi giá trị cho các thanh ghi chuyên dụng. Khi ta chọn một trong hai chức
năng thì chức năng kia sẽ không hoặt động được.
Tất cả các chân RARD thuộc cổng port Aport D đều có thể được dùng như
các ngõ xuất hay nhập tùy thuộc vào yêu cầu của thiết bị điều khiển. Để định nghĩa
một chân là xuất hay nhập ta sử dụng các thanh ghi TRIS ở bank 1. Nếu một bit trongt
13



hanh ghi TRIS bằng 1 thì bit tương ứng với vị trí đó trong port lúc này sẽ là ngõ nhập
và ngược lại. Mỗi port có thanh ghi TRIS cho riêng nó. Port A ứng với thanh ghi
TRISA nằm trong bank 0, port B ứng với thanh ghi TRISB nằm trong bank 1, Port C
ứng với thanh ghi TRISC nằm trong bank 2. Đối với PIC16F877A PortA có 6 chân,
PortB và PortC và PortD có 8 chân.
1.3.3 Tập lệnh của vi điều khiển PIC 16F877A
PIC là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction Set
Computer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
Nhóm lệnh thao tác trên bit.
Nhóm lệnh thao tác trên byte.
Nhóm lệnh điều khiển.


Đối với dịng vi điều khiển PIC16Fxxx, mỗi lệnh được mã hóa thành 14 bit word,
bao gồm các bit opcode (dùng để xác định lệnh nào được mã hóa) và các bit mơ
tả một hay vài tham số của lệnh.

• Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte cần
thao tác) và d (xác định nơi chứa kết quả thực thi lệnh). Nếu d = 0, kết quả sẽ được
đưa vào thanh ghi W. Nếu d = 1, kết quả được đưa vào thanh ghi được mơ tả bởi
tham số f.
• Đối với nhóm lệnh thao tác trên bit,ta có hai tham số b (xác định bit cần thao tác)
và f (xác định địa chỉ byte dữ liệu cầnthao tác). Đối với nhóm lệnh điều khiển chỉ
có một tham số duy nhất là k (k có thể là 8 bit trong trường hợp các lệnh bình
thường hay 11 bit trong trường hợp là lệnh CALL và lệnh GOTO) dùng để mô tả
đối tượng tác động của vi điều khiển (một label, một hằng số nào đó).
• Mỗi lệnh sẽ được vi điều khiển thực thi xong trong vịng một chu kì lệnh, ngoại
trừ các lệnh làm thay đổi giá trị bộ đếm chương trình PC cần 2 chu kì lệnh. Một

chu kì lệnh gồm 4 xung clock của oscillator. Ví dụ ta sử dụng oscillator có tần số
4 MHz thì tần số thực thi lệnh sẽ là 4MHz/4 = 1 MHz, như vậy một chu kì lệnh
có thời gian 1 uS.
• Các lệnh thao tác trên một thanh ghi bất kì đều thực hiện cơ chế Read
Modify-Write,tức là thanh ghi sẽ được đọc, dữ liệu được thao tác và kết quả được
đưa vào thanh ghi chứa kết quả (nơi chứa kết quả tùy thuộc vào lệnh thực thi và tham
số d). Ví dụ như khi thưc thi lệnh “CLRF PORTB”, vi điều khiển sẽ đọc giá trị thanh
ghi PORTB, xóa tất cả các bit và ghi kết quả trở lại thanh ghi PORTB.

14


1.3.4 Các thành phần cơ bản của một mạch ứng dụng vi điều khiển PIC:
Cổng xuất nhập I/O:
Trong vi điều khiển PIC16F877A có 5 cổng:

• Cổng A gồm 6 chân: RA0, RA1.. RA5
• Cổng B gồm 8 chân: RB0, RB1,..RB7
• Cổng C gồm 8 chân: RC0, RC1, ..RC7
• Cổng D gồm 8 chân: RD0, RD1,..RD7
• Cổng E gồm 3 chân: RE0, RE1, RE2
• Mỗi cổng thực chất được quản lý bởi các thanh ghi PORTA, PORTB, PORTC,
PORTD, PORTE nằm trong bộ nhớ RAM của vi điều khiển.
Bộ nhớ RAM của vi điều khiển PIC 16F877A gồm 4 bank nhớ. Nhìn vào các
bank nhớ ta có thể thấy các thanh ghi được đặt tên và các thanh ghi đa mục đích
(General Purpose Register).
Các thanh ghi được đặt tên là các thanh ghi đặc biệt dùng để điều khiển, quản
lý hoặc thể hiện trạng thái của các khối chức năng trong vi điều khiển ví dụ PORTA
là đại diện cho các chân cổng A, PORTB là đại diện cho các chân cổng B v.v. Các
thanh ghi này có địa chỉ xác định và khơng được dùng cho các mục đích khác

Các thanh ghi đa mục đích được dùng để đặt biến trong một chương trình ứng
dụng của vi điều khiển. Nhìn vào bản đồ bộ nhớ RAM, ta thấy biến có thể đặt từđịa
chỉ 20F đến 7Fh trong bank nhớ 0, A0h-EFh, 120h-16Fh, 1A0h-1EFh. Trở lại vấn đề
về các cổng, tới đây ta có thể đưa ra nhận xét:
Thanh ghi PORTA phản ánh trạng thái của các chân cổng A, nghĩa là muốn
tín hiệu đầu ra của các chân cổng A như thế nào ta chỉ việc đưa giá trị vào các bit
tương ứng trên thanh ghi PORTA. Cũng như khi đọc giá trị của thanh ghi PORTA ta
sẽ biết được trạng thái của các chân cổng A.
Tương tự như vậy đối với các chân trên các cổng còn lại

15


CHƯƠNG 2:
TÍNH TỐN THIẾT KẾ CHẾ TẠO MẠCH
2.1 Cấu tạo thành phần của bộ kit
Bộ kit thí nghiệm thực hành vi điều khiển bao gồm 1 main chính là các khối
chức năng đưa vào đầu vào và đầu ra của vi điều khiển, 2 mạch vi xử lí độc lập tách
rời gồm : MCU AT89S52 và MCU PIC16F877A.

Khối
led 7
thanh

Khối
led
đơn

Khối
led

LCD

Khối
led
matrix

Khối
nút
đơn

Khối
sensor

Khối nguồn

MCU

Khối
ma
trận
phím

Khối
ADC

Khối
động

bước


2.2 Thiết kế và tính tốn linh kiện sử dụng
2.2.1 Khối MCU AT89S52
1) Sơ đồ nguyên lý

16

Khối
động
cơ DC

Khối
relay


Hình 2.1 Sơ đồ nguyên lý của MCU AT89S52.
-Cấu tạo gồm : Vi điều khiển AT89S52, khối tạo dao động, led báo nguồn,
các jump cắm để kết nối đầu ra vào cũng như nạp code cho AT89S52, nút ấn reset
và điện trở thanh.
2) Thiết kế tính tốn
a) CPU AT89S52
Thơng số kỹ thuật:
• Họ vi điều khiển 8 bit
• Điện áp cung cấp: 4-6V
• Tần số hoạt động :0 - 24 Mhz
• Bộ nhớ : 8 Kb Flash, 256 Bytes SRAM
• Timer/Counter : 3 bộ 16 bit
• 32 chân I/O lập trình được
• 8 nguồn ngắt khác nhau
• Kiểu chân : PDIP40
b) Khối tạo dao động


17


- Dựa vào dải tần số của thông số kĩ thuật ta chon thạch anh là 12Mhz. Lý do
đằng sau một số lẻ như vậy là tốc độ baud đối với truyền thông nối tiếp của 8051.
Tần số XTAL = 11,0592MHz cho phép hệ thống 8051 truyền thông với PC mà
khơng có lỗi.
- Tụ ổn định dao động cho thạch anh Cx3, Cx4 là 33pF
c) Các linh kiện khác
- Chọn nguồn cấp cho CPU là 5V, led báo nguồn 3,3v và cần 1 điện trở 1k để hạ
dòng cho led.
- Điện trở 10k treo GND chân Reset.
- Điện trở thanh 10k treo Vcc vào Port 0 do hở colector
2.2.2 MCU PIC16F877A
1) Sơ đồ nguyên lý

Hình 2.2 Sơ đồ khối của MCU PIC16F877A.
-Cấu tạo gồm : Vi điều khiển PIC16F877A, khối tạo dao động, led báo nguồn, các
jump cắm để kết nối đầu ra vào cũng như nạp code cho PIC16F877A, nút ấn reset .
2) Thiết kế tính tốn
a) CPU PIC16F877A

18


Thơng số kĩ thuật:
• Điện áp hoạt động 4 – 5.5V.
• Nhiệt độ hoạt động từ -40° đến 85° .
• Tần số hoạt động 20MHz.

• Loại bộ nhớ chương trình: FLASH.
• Dung lượng bộ nhớ chương trình 14KB.
• Đầu I/O : 33.
• Kiểu chân : PDIP40.
b) Khối tạo dao động
- Dựa vào dải tần số của thông số kĩ thuật ta chon thạch anh là 20Mhz
- Tụ ổn định dao động cho thạch anh Cx5, Cx6 là 33pF
c) Các linh kiện khác
- Chọn nguồn cấp cho CPU là 5V, led báo nguồn 3,3V và cần một điện trở 1k để hạ
dòng cho led.
- Điện trở 10k treo VCC chân Reset.
- 1 điện trở 10k treo VCC vào RA4 do hở colector.
2.2.3 Khối Led đơn
1) Sơ đồ nguyên lý

Hình 2.3 Sơ đồ nguyên lý khối LED đơn.

19


-Cấu tạo : Khối led đơn gồm 16 led đơn 3mm hoặc 5mm
-Nguyên lý : Các led đơn được nối Anot chung sử dụng tín hiệu mức thấp( mức 0)
Để điều khiển được kết nối bằng jump cắm.
2) Tính tốn chọn linh kiện
Thông số chung LED đơn 5mm:
Điện áp hoạt động ở mức: 1,8V - 3V;
Dòng điện: 10mA - 20mA;
Loại LED: LED đục, LED siêu sáng;
-Với điện áp được sử dụng là 5V thì giá trị điện trở R=


(5−U𝐿𝐸𝐷 )
0.01

U(led) =2,8V => R= 220 Ω.
Chúng ta sẽ cần điện trở đáp ứng hoặc vượt mức công suất tiêu tán. Công suất của
điện trở có đơn vị là W. Cơng thức tính là P = I * V
Như vậy với điện trở có I = 0,01A và V = 2,8 V áp vào cơng thức trên ta có
P = 0,01 x 2,8 = 0,028 W (28mW) là công suất tiêu tán của điện trở.
Thường thì giá trị phổ biến hay gặp ở điện trở là

1
4

W hay 0,25W là phù hợp.

2.2.4 Khối led 7 thanh
1) Sơ đồ nguyên lý

Hình 2.4 Sơ đồ khối nguyên lý khối led 7 thanh.

20


-Cấu tạo : Gồm 1 led 7 thanh 4 số 30x14 có anot chung, 2 led 7 thanh độc lập nối
anot chung, 4 transistor PNP A1015 và điện trở hạ dòng điều khiển transistor.
-Nguyên lý : Led 7 thanh 4 số được điều khiển mức thấp (mức 0) bằng phương pháp
quét led nhờ 4 transistor. 2 led 7 thanh độc lập điều khiển mức thấp được kết nối với
MCU bằng jump cắm.
2) Tính tốn chọn linh kiện


Hình 2.5 Sơ đồ chân khối led 7 thanh.
Thông số kĩ thuật led 7 thanh:
• Màu hiển thị: Màu đỏ.
• A chung (A anode).
• Số led: 4 led.
• Số chân: 12 chân.
• Kích thước: 0.56 inch.
• Điện áp: 2.2V.
• Dịng tối đa chạy qua mỗi LED là 25mA.
• Dịng chạy bình thường: 10mA.
=> Tính chon điện trở :
21


×