You are on page 1of 42

TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG

KHOA: KỸ THUẬT - CÔNG NGHỆ


-----------------------

HOÀNG NGỌC HÙNG

THIẾT KẾ MÔ PHỎNG MẠCH HIỂN THỊ TRÊN LED MA


TRẬN DÙNG VI ĐIỀU KHIỂN PIC16F887

ĐỒ ÁN 1
Ngành: CÔNG NGHỆ KĨ THUẬT ĐIỆN, ĐIỆN TỬ

Phú Thọ, 2023


TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA: KỸ THUẬT – CÔNG NGHỆ
-----------------------

HOÀNG NGỌC HÙNG

THIẾT KẾ MÔ PHỎNG MẠCH HIỂN THỊ TRÊN LED MA


TRẬN DÙNG VI ĐIỀU KHIỂN PIC16F887

ĐỒ ÁN 1
Ngành: CÔNG NGHỆ KĨ THUẬT ĐIỆN, ĐIỆN TỬ

NGƯỜI HƯỚNG DẪN: NGUYỄN VĂN QUYẾT

Phú Thọ, 2023


MỤC LỤC
PHẦN I: PHẦN MỞ ĐẦU..........................................................................................1

1.Lý do chọn đề tài...................................................................................................1

2. Đối tượng và phạm vi nghiên cứu.......................................................................2

2.1. Đối tượng nghiên cứu...................................................................................2

2.2. Phạm vi nghiên cứu đề tài............................................................................2

3. Mục tiêu và mục đích nghiên cứu.......................................................................3

3.1. Mục tiêu nghiên cứu.....................................................................................3

3.2. Mục đích nghiên cứu của đồ án...................................................................3

PHẦN II: NỘI DUNG.................................................................................................3

CHƯƠNG 1: TỔNG QUAN VỀ VẤN DỀ NGHIÊN CỨU......................................3

1.1. Giới thiệu chung về LED ma trận....................................................................3

1.1.1. Khái niệm chung về mạch LED ma trận....................................................3

1.1.2. Cấu trúc LED ma trận..............................................................................5

1.1.3. Ưu thế của đèn LED ma trận trong hiển thị thông tin......................7

1.2. Khái quát chung về vi điều khiển.................................................................10

CHƯƠNG 2: THIẾT KẾ MẠCH HIỂN THỊ LED MA TRẬN BẰNG PHẦN


MỀM PROTEUS VÀ PIC16F887.............................................................................17

2.1 Thiết kế sơ đồ khối...........................................................................................17

2.2 Lựa chọn thiết bị..............................................................................................18

2.2.1 Vi điều khiển PIC 16F887.........................................................................18

2.2.2 Ma trận LED.............................................................................................19

2.2.3 IC giải mã hàng, IC đệm dòng, điện trở thanh.......................................20

CHƯƠNG 3: MÔ PHỎNG VÀ ĐÁNH GIÁ KẾT QUẢ.........................................22


3.1. Giới thiệu phần mềm dùng mô phỏng và phần mềm lập trình...................22

3.1.1. Phần mềm mô phỏng Proteus.................................................................22

3.1.2. Phần mềm lập trình PIC CCS..................................................................25

3.2. Kết quả lập trình và mô phỏng......................................................................26

3.2.1. Kết quả lập trình.......................................................................................26

3.2.1 Lưu đồ thuật toán.....................................................................................30

3.2.2 Chương trình nạp cho vi điều khiển........................................................31

3.2.3 Kết quả hiển thị.........................................................................................33

3.3. Đánh giá chung về kết quả.............................................................................34

PHẦN III: KẾT LUẬN.............................................................................................34

TÀI LIỆU THAM KHẢO.........................................................................................35


DANH MỤC HÌNH ẢNH
Hình 1. Bảng quảng cáo hiển thị bằng LED ma trận................................................4
Hình 2. Bảng hiển thị số và chữ bằng LED ma trận màu đỏ....................................5
Hình 3. Bảng quảng cáo bằng led ma trận sử dụng nhiều màu sắc.........................5
Hình 4. Sơ đồ khối LED ma trận................................................................................5
Hình 5. Sơ đồ chân của bảng LED ma trận 8x8........................................................6
Hình 6. Mô tả quá trình hiển thị và cho chạy chữ A trên bảng LED 8x8................7
Hình 7. Hiển thị bằng màn hình LCD........................................................................8
Hình 8. Hiển thị bằng LED ma trận và LED dây......................................................9
Hình 9. Hiển thị bằng LED đơn và màn hình LED...................................................9
Hình 10. Mô hình tổng quát của một vi điều khiển theo kiến trúc Harvard.........12
Hình 11. Cấu trúc chung của vi điều khiển..............................................................14
Hình 12. Sơ đồ khối của mạch hiển thị dòng chữ chạy bằng LED ma trận..........17
Hình 13. Cấu trúc bên trong của vi điều khiển........................................................18
Hình 14. Hình ảnh vi điều khiển PIC16F887...........................................................19
Hình 15. Hình ảnh trên mô phỏng protues LED MATRIX-8X8-RED..................20
Hình 16. Sơ đồ chân và hình ảnh thực của IC 74HC595........................................21
Hình 17. Hình dạng phần mềm Protues...................................................................23
Hình 18. Các kiểu dữ liệu của phần mềm PIC-C....................................................26
Hình 19. Chương trình báo không có lỗi sau khi đã kiểm tra................................29
Hình 20. Lưu đồ thuật toán mạch led ma trận dùng PIC 16F887..........................30
Hình 21. Hiển thị chữ “ KHOAKITHUATCONGNGHE”....................................33

DANH MỤC BẢNG BIỂU


Bảng 1. Thông số các chức năng chính của PIC16F887..........................................19
Bảng 2. Chức năng của các chân của IC 74HC595.................................................21
PHẦN I: PHẦN MỞ ĐẦU
1.Lý do chọn đề tài
Ngày nay khi nhu cầu về thông tin quảng cáo rất lớn , việc áp dụng các
phương tiện kĩ thuật mới vào các lĩnh vực trên là rất cần thiết. Cùng với các ngành
công nghiệp sản xuất, chiếu sáng là một nhu cầu cấp thiết cho sự phát triển kinh tế cũng
như cuộc sống hàng ngày của bất cứ quốc gia nào trên toàn thế giới. Chiếu sáng đòi hỏi
một công nghệ hết sức phức tạp và nguồn năng lượng rất lớn.  
Trong những năm gần đây, rất nhiều giải pháp đã được đưa ra cho công nghệ chiếu sáng
với tiêu chí chủ đạo là Tiết kiệm điện năng và Bảo vệ môi trường. Nổi lên trong các
giải pháp, việc sử dụng công nghệ LED tỏ ra vượt trội trong việc thỏa mãn tiêu chí ấy,
nó  
đem lại một số ưu điểm như sau:  
- Tiết kiệm điện năng so với việc sử dụng bóng đèn chiếu sáng truyền thống như
đèn sợi đốt, đèn Halogen, đèn huỳnh quang, đèn compact, … 100% phù hợp khi
thay thế và lắp đặt dễ dàng.  
- Thân thiện với môi trường, giảm lượng khí thải CO2, tối thiểu hóa lượng rác thải
ra môi trường do đèn LED có tuổi thọ rất cao trung bình dài gấp 10 đến 20 lần
các loại bóng đèn chiếu sáng thông thường và không sử dụng thủy ngân.  
- An toàn cho người sử dụng, giảm nguy cơ cháy nổ, nâng cao hiệu suất làm việc
của điều hòa không khí do đèn LED phát nhiệt rất thấp trong quá trình làm việc.
- Chất lượng ánh sáng thân thiện, tối thiểu hóa tia cực tím và bức xạ hồng ngoại,
không nhấp nháy, không gây nhức mỏi mắt.  
Với những ưu điểm đó, công nghệ LED đang đi vào cuộc sống thông qua nhiều
hình thức sản phẩm đa chủng loại như đèn chiếu sáng sử dụng các LED phát ánh sáng
trắng. LED cũng được dùng để làm bộ phận hiển thị trong các thiết bị điện, điện tử, đèn
quảng cáo, trang trí, đèn giao thông.  
Trong chiếu sáng đô thị, việc sử dụng đèn LED cho sự đồng đều và hiệu quả chiếu
sáng cao trên mặt đường tạo sự thoải mái và tăng khả năng quan sát cho người tham gia
giao thông vào ban đêm.  

1
Mặt khác hệ thống đèn LED cho độ sáng trên vỉa hè tăng vượt trội do chỉ số hoàn
màu cao của đèn LED (CRI 70) so với CRI 25 của đèn Natri cao áp thông thường.
Tuyến đường sử dụng đèn LED với chỉ số hoàn màu cao ngoài việc giúp tăng khả năng
quan sát còn tạo bộ mặt mới cho thẩm mỹ đường phố vào ban đêm…  
Công nghệ LED đã được sử dụng rộng rãi ở các nước phát triển trên thế giới và
mang lại lợi ích vô cùng to lớn, nhưng ở Việt Nam ứng dụng này còn khá hạn chế.
Theo các nhà nghiên cứu, trước hết cần có các biện pháp nhằm sớm chuyển đổi thị
trường chiếu sáng công nghệ truyền thống sang chiếu sáng bằng công nghệ LED.  
Hơn lúc nào hết chúng ta cần tăng cường đào tạo nhân lực trình độ cao, phát triển
nghiên cứu công nghệ và đặc biệt là nâng cao nhận thức về lợi ích của việc sử dụng đèn
chiếu sáng LED đến đông đảo người dùng thông qua truyền thông, quảng bá. Mặc dù
vẫn còn khá mới mẻ song cùng với tốc độ tăng trưởng kinh tế nhanh chóng như  
hiện nay, trong tương lai không xa, đèn LED sẽ trở thành nguồn sáng chiếm ưu thế,
được ứng dụng rộng rãi trong các hoạt động chiếu sáng tại Việt Nam, góp phần đạt các
mục tiêu chung về tiết kiệm năng lượng và bảo vệ môi trường.
Khi bạn đến các nơi công cộng, bạn dễ dàng bắt gặp những áp phích quảng
cáo điện tử chạy theo các hướng khác nhau với nhiều hình ảnh và màu sắc rất ấn
tượng.
Từ yêu cầu của môn học kĩ thuật vi xử lý và thực tiễn như trên, em quyết
định chọn đề tài cho đồ án 1 là: “Thiết kế mô phỏng mạch hiển thị trên led ma trận
dùng vi điều khiển pic16f887”
2. Đối tượng và phạm vi nghiên cứu
2.1. Đối tượng nghiên cứu
Tìm hiểu về LED ma trận và các linh kiện điện tử sử dụng trong mạch hiển thị
trên led ma trận dùng vi điều khiển pic16f887, phần mềm Proteus
2.2. Phạm vi nghiên cứu đề tài
- Nghiên cứu LED ma trận, PIC 16f887.
- Dùng phần mềm Proteus để thiết kế, mô phỏng hoạt động của mạch hiển thị
trên led ma trận dùng vi điều khiển pic16f887.

2
3. Mục tiêu và mục đích nghiên cứu
3.1. Mục tiêu nghiên cứu
Nghiên cứu, thiết kế và mô phỏng thành công hiển thị trên led ma trận dùng vi
điều khiển pic16f887 bằng proteus.
3.2. Mục đích nghiên cứu của đồ án
Đồ án : “Thiết kế mô phỏng mạch hiển thị trên led ma trận dùng vi điều khiển
pic16f887” giúp người thực hiện đề tài những vấn đề sau:
- Thông qua việc thực hiện đề tài giúp ôn lại những kiến thức đã học, rèn luyện
đúng nghề, cách thiết kế mạch thực tế, …
- Tạo cho người thực hiện có những ý tưởng mới, giải quyết các vấn đề một cách
hiệu quả nhất.
- Mô phỏng được mạch mà bản thân đã tự thiết kế dựa trên phần mềm mô phỏng
Proteus.

PHẦN II: NỘI DUNG


CHƯƠNG 1: TỔNG QUAN VỀ VẤN DỀ NGHIÊN CỨU
1.1. Giới thiệu chung về LED ma trận
1.1.1. Khái niệm chung về mạch LED ma trận
Mạch hiển thị LED ma trận là một loại mạch điện tử được sử dụng để hiển thị
các thông tin trên một màn hình LED ma trận. Một màn hình LED ma trận bao gồm
một số lượng lớn đèn LED được sắp xếp thành một ma trận, trong đó mỗi LED đại
diện cho một điểm ảnh.
Mạch hiển thị LED ma trận thường được sử dụng trong các ứng dụng đòi hỏi
hiển thị các thông tin đơn giản như chữ, số, biểu tượng hoặc hình ảnh nhỏ. Chúng
thường được sử dụng trong các bảng thông báo, các bảng đồng hồ hiển thị hoặc các
sản phẩm quảng cáo.

3
Hình 1. Bảng quảng cáo hiển thị bằng LED ma trận
Các loại mạch hiển thị LED ma trận thường có khả năng điều khiển các LED
độc lập hoặc nhóm các LED theo một cách cụ thể để tạo ra các thông tin hiển thị khác
nhau. Chúng có thể được điều khiển bằng một bộ vi xử lý hoặc các phần mềm điều
khiển khác để tạo ra các hiệu ứng hiển thị động hoặc tùy chỉnh hiển thị theo yêu cầu.
Mạch hiển thị LED ma trận là một giải pháp hiệu quả và tiết kiệm năng lượng để hiển
thị các thông tin đơn giản. Chúng được sử dụng rộng rãi trong các ứng dụng công
nghiệp, thương mại và giải trí.
Về màu sắc bảng LED ma trận có màu sắc khá đa dạng. Có loại bảng LED 10
chỉ có một màu, có loại phối hai màu, phối 3 màu hoặc phối màu trong từng LED đơn
để cho ra những LED có màu sắc sặc sỡ, bắt mắt. Đặc biệt là công nghệ chế tạo màn
hình LED cho chúng ta những màn hình lớn với màu sắc, âm thanh khá trung thực.
Màn hình LED cỡ lớn là loại màn hình sử dụng công nghệ đèn LED siêu sáng, điểm
ảnh là các LED đơn có độ sáng cao, độ bền lâu. Màn hình LED có các LED đơn càng
gần nhau thì độ nét càng cao. Khi lựa chọn, lắp đặt chúng ta cần phải căn cứ vào nhu
cầu sử dụng để lựa chọn cho phù hợp. Đối với màn hình LED lắp cho quảng cáo có
tầm nhìn xa và có độ cao, không yêu cầu quá cao về độ nét thì chỉ cần chọn loại màn
hình có các điểm sáng thưa, giảm được chi phí. Đối với LED dùng cho mục đích
chuyên dụng như sân khấu, hội nghị…thì nên dùng màn hình LED có độ nét cao nghĩa
là có các điểm sáng dầy hay khoảng cách các LED đơn gần nhau. Màn hình LED lớn
giúp cho việc cập nhật thông tin một cách thường xuyên, nhanh chóng, kích cỡ màn
hình LED có thể điều chỉnh tùy mục đích sử dụng, màu sắc và độ sáng của LED dễ
gây chú ý, dễ quan sát.

4
Mạch hiển thị LED ma trận thường được chia thành hai loại chính: loại đơn và
loại đa màu sắc. Loại đơn chỉ hiển thị một màu sắc duy nhất, thường là màu đỏ hoặc
xanh. Loại này được sử dụng phổ biến trong các ứng dụng đòi hỏi hiển thị các thông
tin đơn giản như số hoặc chữ.

Hình 2. Bảng hiển thị số và chữ bằng LED ma trận màu đỏ


Loại đa màu sắc có thể hiển thị nhiều màu sắc khác nhau bằng cách sử dụng
nhiều LED có màu sắc khác nhau để tạo ra các hiệu ứng màu sắc động. Loại này
thường được sử dụng trong các ứng dụng giải trí, như các bảng điện tử hiển thị thông
tin trên sân vận động hoặc các sản phẩm quảng cáo.

Hình 3. Bảng quảng cáo bằng led ma trận sử dụng nhiều màu sắc
1.1.2. Cấu trúc LED ma trận

KHỐI RTC
KHỐI VI
XỬ LÝ KHỐI HIỂN
THỊ

KHỐI ĐIỀU
KHIỂN

KHỐI NGUỒN

5
Hình 4. Sơ đồ khối LED ma trận
Dựa trên nguyên tắc như quét màn hình, ta có thể thực hiện việc hiển thị ma
trận đèn bằng cách quét theo hàng và quét theo cột. Mỗi Led trên ma trận LED
có thể coi như một điểm ảnh. Tại mỗi thời điểm chỉ có trạng thái của một điểm
ảnh được xác định. Tuy nhiên khi xác định địa chỉ và trạng thái của điểm ảnh
tiếp theo thì các điểm ảnh còn lại sẽ chuyển về trạng thái tắt (nếu LED đang
sáng thì sẽ tắt dần). Vì thế để hiển thị được toàn bộ hình ảnh của ma trận đèn, ta
có thể quét ma trận nhiều lần với tốc độ quét rất lớn, lớn hơn nhiều lần thời
gian kịp tắt của đèn. Mắt người chỉ nhận biết được tối đa 24 hình/s do đó nếu
tốc độ quét rất lớn thì sẽ không nhận ra được sự thay đổi nhỏ của đèn mà sẽ thấy
được toàn bộ hình ảnh cần hiển thị.
Bảng LED ma trận có hai loại: loại có các cột là chân Anode, các hàng là chân
Cathode và ngược lại loại có các hàng là chân Anode còn các cột là chân Cathode.
Trong thực tế khi đóng vỏ sự phân bố các hàng và cột không theo thứ tự, do đó cần tìm
hiểu kỹ thực tế để mắc mạch đúng. Để giảm số lượng các đường điều khiển, trong các
ma trận LED các LED đơn được nối chung với nhau theo hàng và cột. Như vậy số
lượng LED đơn trên ma trận LED là a x b, số lượng ngõ ra bằng tổng số hàng và cột là
a + b.

6
Hình 5. Sơ đồ chân của bảng LED ma trận 8x8.

Để tạo được hiệu ứng chữ chạy trên bảng LED ta sử dụng thủ thuật là quét và
hiển thị một hình ảnh trong một thời gian nhất định, sau đó ta dịch dữ liệu của các cột
sang trái một vị trí, khi đó ta sẽ tạo được hiệu ứng chữ chạy trên bảng LED.
Lấy ví dụ bảng LED 8x16, sử dụng 16 byte RAM làm bộ đệm cho màn hình,
lưu giá trị dữ liệu hàng của 10 cột. Bộ đệm được khai báo trong RAM nội của vi điều
khiển là một mảng gồm 11 phần tử. Chương trình hiển thị làm nhiệm vụ đọc dữ liệu từ
các vị trí 0 đến 16 của bộ đệm và đưa ra màn hình hiển thị. Hiệu ứng chữ chạy được
tạo ra bằng cách dịch giá trị các phần tử đi một vị trí (10 ->9, 9 ->8, 8 ->7, 7->6…)Sau
mỗi lần dịch ta lại gọi chương trình hiển thị. Khi đó trên bảng LED ta sẽ quan sát được
hiệu ứng chữ chạy.

Hình 6. Mô tả quá trình hiển thị và cho chạy chữ A trên bảng LED 8x8
1.1.3. Ưu thế của đèn LED ma trận trong hiển thị thông tin
Để hiển thị thông tin bằng thiết bị điện tử thì có nhiều phương án để lựa chọn.
Hai phương án phổ biến hiện nay là dùng đèn LED ma trận hoặc màn hình LCD.
Việc hiển thị bằng màn hình LCD thường được sử dụng trong nhà với kích
thước màn hình không quá lớn. Các màn hình LCD thường có sẵn với các kích cỡ
khác nhau được quy định bởi các nhà sản xuất, không thể thay đổi kích cỡ của nó, việc

7
sửa chữa phức tạp, điện năng tiêu thụ khá lớn. Việc sử dụng màn hình LCD phù hợp
để hiển thị các hình ảnh động nhiều màu sắc tại các vị trí mang tính công cộng hoặc
trong các mạch điều khiển tự động có hiển thị số liệu, thông tin. Đối với việc thiết kế
các biển hiệu, bảng quảng cáo, bảng thông tin điện tử hoặc màn hình sân khấu lớn thì
ưu thế kém hơn so với dùng đèn LED bởi giá thành cao, tốn điện, độ linh động không
cao và hình ảnh kém bắt mắt. Dưới đây là một ví dụ về hiển thị bằng màn hình LCD.

Hình 7. Hiển thị bằng màn hình LCD

Hiện nay chúng ta thấy việc hiển thị bằng đèn LED đang dần chiếm ưu thế. Có
thể kể ra một số lí do khiến cho việc sử dụng đèn LED trở nên phổ biến: có thể tạo ra
bảng điện tử với kích thước tùy ý với nhiều thiết kế khác nhau từ đơn giản đến phức
tạp, điện năng tiêu thụ ít, tuổi thọ cao, dễ lắp đặt trong nhà và ngoài trời tại các nơi
công cộng, độ linh động cao, thuận tiện cho sửa chữa.
Đối với việc hiển thị bằng LED cơ bản có ba phương án để lựa chọn. Phương
án thứ nhất là dùng LED đơn với việc điều khiển đơn giản, hình ảnh hiển thị cũng đơn
giản, việc tạo ra hiệu ứng chữ chạy hoặc thay đổi thông tin cần hiển thị còn rất hạn
chế. Phương án thứ hai là dùng LED dây. LED dây chủ yếu dùng để trang trí biển
hiệu, trang trí nội thất, sân khấu…Đối với hai phương án vừa nêu, thông tin cần hiển
thị thường cố định, khi muốn thay đổi chúng ta buộc phải tháo mạch và lắp lại.
Phương án thứ ba là dùng LED ma trận để tạo ra các bảng tin, bảng chữ chạy…với
việc điều khiển được thực hiện bởi các vi điều khiển. Phương án này có độ linh động
cao, có thể tạo ra các bảng thông tin kích cỡ đa dạng với các hiệu ứng chữ chạy, thay
đổi thông tin theo điều khiển 5 của lập trình hoặc trình chiếu video và giá thành không

8
quá cao. Phương án này đang trở nên phổ biến và chiếm ưu thế nổi trội khi thiết kế các
biển quảng cáo, biển hiệu, bảng thông tin.
Hiện nay có nhiều loại LED ma trận được sản xuất để đáp ứng nhu cầu của của
ngành quảng cáo: loại đơn sắc, đa sắc, loại phân giải cao, phân giải thấp, loại dùng
trong nhà, loại dùng ngoài trời...Đối với ma trận LED đơn sắc thì mỗi điểm ảnh chỉ có
1 đèn LED loại 1 màu (đỏ, xanh, vàng...). Ma trận LED đa sắc mỗi điểm ảnh có thể có
2 hoặc 3 đèn LED có màu khác nhau hoặc 1 đèn LED có thể hiển thị được nhiều màu.
Từ các bảng LED nhỏ người ta có thể tạo ra các màn hình LED với kích cỡ lớn.
Trên thị trường đã có những màn hình LED full color có thể trình chiếu videos không
kém những loại màn hình khác, đặc biệt màn hình LED có ưu thế hơn là có thể để
ngoài trời và độ sáng mạnh rõ nét.
Dưới đây là một ví dụ về hiển thị bằng đèn LED:

Hình 8. Hiển thị bằng LED ma trận và LED dây

9
Hình 9. Hiển thị bằng LED đơn và màn hình LED
1.2. Khái quát chung về vi điều khiển
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử
dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao
gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa
năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các mô đun
vào/ra, các mô đun biến đổi số sang tương tự và tương tự sang số...Vi điều khiển
thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá nhiều trong các
dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị
đa phương tiện, dây chuyền tự động…
Về cơ bản khái niệm vi điều khiển và vi xử lý không khác nhau nhiều. Vi xử lý
là thuật ngữ chung dùng để đề cập đến kỹ thuật ứng dụng các công nghệ vi điện tử,
công nghệ tích hợp và khả năng xử lý theo chương trình vào các lĩnh vực khác nhau.
Vào những giai đoạn đầu trong quá trình phát triển của công nghệ vi xử lý, các vi xử lý
(hay chip) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPU cùng các
mạch giao tiếp giữa CPU và các phần cứng 15 khác. Trong giai đoạn này, các phần
cứng khác (kể cả bộ nhớ) thường không được tích hợp trên chip mà phải ghép nối
thêm bên ngoài. Các phần cứng này được gọi là các ngoại vi (Peripherals). Về sau, nhờ
sự phát triển vượt bậc của công nghệ tích hợp, các ngoại vi cũng được tích hợp vào
bên trong IC và người ta gọi các vi xử lý đã được tích hợp thêm các ngoại vi là các vi
điều khiển.

10
Bộ vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính
toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu
quả đối với các bài toán và hệ thống lớn. Tuy nhiên đối với các ứng dụng nhỏ, tầm tính
toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi
vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao
tiếp phức tạp như nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình
thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối
này cùng liên kết với vi xử lý thì mới thực hiện được công việc. Để kết nối các khối
này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ,
các thiết bị ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian,
mạch in phức tạp và vấn đề chính là phụ thuộc nhiều vào trình độ người thiết kế. Kết
quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ
thống nhỏ.
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một số bộ nhớ và một
số mạch giao tiếp ngoại vi cùng với vi xử lý vào một mạch tích hợp duy nhất được gọi
là vi điều khiển (Microcontroller). Vi điều khiển có khả năng tương tự như khả năng
của vi xử lý, nhưng cấu trúc phần cứng dành cho người dùng đơn giản hơn nhiều. Vi
điều khiển ra đời mang lại sự tiện lợi đối với người dùng, họ không cần nắm vững một
khối lượng kiến thức quá lớn như người dùng vi xử lý, kết cấu mạch điện dành cho
người dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các
thiết bị bên ngoài. Vi điều khiển tuy được xây dựng với phần cứng dành cho người sử
dụng đơn giản hơn, nhưng thay vào lợi điểm này là khả năng xử lý bị giới hạn (tốc độ
xử lý chậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị giới hạn).
Thay vào đó, vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, việc sử 16 dụng
đơn giản, do đó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn
giản, không đòi hỏi tính toán phức tạp.
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard.
Cụm từ kiến trúc Harvard được dùng để chỉ những kiến trúc máy tính mà trong đó
phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình, chúng có những đường
truyền (bus) riêng để truy cập vào bộ nhớ dữ liệu và bộ nhớ chương trình. Kiến trúc

11
này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần
này là lõi CPU, bộ nhớ chương trình, bộ định thời và các cổng vào/ra để giao tiếp với
các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế
trong một vi mạch tích hợp. Như vậy, các vi điều khiển được xây dựng dựa trên kiến
trúc Harvard có bộ nhớ dữ liệu và bộ nhớ chương trình nằm riêng biệt, do đó CPU có
thể làm việc trực tiếp với cả hai bộ nhớ dữ liệu và bộ nhớ chương trình cùng một lúc,
tốc độ xử lý sẽ nhanh hơn.

Hình 10. Mô hình tổng quát của một vi điều khiển theo kiến trúc Harvard
Chúng ta có thể dùng vi điều khiển để thiết kế bộ điều khiển cho các sản phẩm,
ví dụ như:
- Trong các sản phẩm dân dụng: Nhà thông minh (cửa tự động, khóa số, tự động
điều tiết ánh sáng thông minh), điều khiển các thiết bị từ xa (qua điều khiển,
qua tiếng vỗ tay,...), điều tiết hơi ẩm, điều tiết nhiệt độ, điều tiết không khí, gió,
hệ thống vệ sinh thông minh,...
- Trong quảng cáo: Các loại biển quảng cáo nháy chữ, quảng cáo ma trận LED
(một màu, 3 màu, đa màu), điều khiển máy cuốn bạt quảng cáo,...
- Các máy móc dân dụng: Máy điều tiết độ ẩm cho vườn cây, buồng ấp trứng
gà/vịt, đồng hồ số, đồng hồ số có điều khiển theo thời gian.

12
- Các sản phẩm giải trí: Máy nghe nhạc, máy chơi game, đầu thu kỹ thuật số…
- Trong các thiết bị y tế: Máy móc thiết bị hỗ trợ: máy đo nhịp tim, máy đo
đường huyết, máy đo huyết áp, điện tim đồ, điện não đồ, máy chụp chiếu…
- Các sản phẩm công nghiệp: trong hầu hết các dây chuyền tự động.
Bộ vi điều khiển đầu tiên xuất hiện vào năm 1976 khi Intel giới thiệu bộ vi điều
khiển (microcontroller) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên
trong họ MCS-48. Độ phức tạp, kích thước và khả năng của vi điều khiển tăng thêm
một bậc quan trọng vào năm 1980 khi Intel tung ra vi điều khiển 8051, bộ vi điều
khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ vi điều khiển được
sản xuất sau này. Sau đó rất nhiều họ vi điều khiển của nhiều nhà chế tạo khác nhau
lần lượt được đưa ra thị trường với tính năng được cải tiến ngày càng mạnh.
Các họ vi điều khiển thông dụng có thể kể đến là:
- Họ vi điều khiển 8051: Intel 8051 là họ vi điều khiển đơn tinh thể kiến trúc
Harvard, lần đầu tiên được sản xuất bởi Intel năm 1980, để dùng trong các hệ
thống nhúng. Tuy nhiên hiện tại đã cũ và được thay thế bằng các thiết bị hiện
đại hơn, với các lõi phối hợp 8051, được sản xuất bởi hơn 20 nhà sản xuất độc
lập. Tên gọi chính thức của họ vi điều khiển Intel 8051 - MCS 51. Những vi
điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET, những
phiên bản sau có chứa kí hiệu “C” trong tên (như 80C51), dùng công nghệ
CMOS và yêu cầu công suất thấp hơn trước.
- Họ vi điều khiển AVR: AVR là một kiến trúc Harvard sửa đổi 8-bit RISC đơn
chip được phát triển bởi Atmel vào năm 1996. Các AVR là một trong những họ
vi điều khiển đầu tiên sử dụng on-chip bộ nhớ flash để lưu trữ chương trình, trái
với One-Time Programmable ROM, EPROM hoặc EEPROM được sử dụng bởi
vi điều khiển khác vào lúc đó. Trong số những thành viên đầu tiên của dòng
AVR là AT90S8515, đóng vỏ trong gói 40-pin DIP có chân ra giống như một vi
điều khiển 8051, bao gồm địa chỉ BUS multiplexed bên ngoài và dữ liệu. Tín
hiệu RESET đã đổi ngược, 8051 RESET mức cao, AVR RESET mức thấp),
nhưng khác với đó, chân ra là giống hệt nhau.

13
- Họ vi điều khiển PIC: PIC là một họ vi điều khiển RISC được sản xuất bởi 18
công ty MicrochipTechnology. Dòng PIC đầu tiên là PIC1650 được phát triển
bởi Microelectronics Division thuộc General Instrument. 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.
Tất cả các hoạt động trong các vi điều khiển được thực hiện ở tốc độ cao và khá
đơn giản, nhưng vi điều khiển chính nó sẽ không được thật sự hữu ích nếu không có
mạch đặc biệt làm cho nó hoàn thiện. Cấu trúc chung của một vi điều khiển có một số
bộ phận chính như hình :

Hình 11. Cấu trúc chung của vi điều khiển

Trong đó các thành phần chính được mô tả như sau:


- Read Only Memory (ROM): Read Only Memory (ROM) là một loại bộ nhớ
được sử dụng để lưu vĩnh viễn các chương trình được thực thi. Kích cỡ của
chương trình có thể được viết phụ thuộc vào kích cỡ của bộ nhớ này. ROM có
thể được tích hợp trong vi điều khiển hay thêm vào như là một chip gắn bên
ngoài, tùy thuộc vào loại vi điều khiển. Nếu ROM được thêm vào như là một
chip bên ngoài, các vi điều khiển là rẻ hơn và các chương trình có thể tồn tại lâu

14
hơn đáng kể. Nhưng đồng thời, làm giảm số lượng các chân vào/ra để vi điều
khiển sử dụng với mục đích khác. ROM nội thường là nhỏ hơn và đắt tiền hơn,
nhưng lá ghim thêm có sẵn để kết nối với môi trường ngoại vi.
- Random Access Memory (RAM) là một loại bộ nhớ sử dụng cho các dữ liệu
lưu trữ tạm thời và kết quả trung gian được tạo ra và được sử dụng trong quá
trình hoạt động của bộ vi điều khiển. Nội dung của bộ nhớ này bị xóa một khi
nguồ cung cấp bị tắt.
- Electrically Erasable Programmable ROM (EEPROM) là một kiểu đặc biệt của
bộ nhớ chỉ có ở một số loại vi điều khiển. Nội dung của nó có thể được thay đổi
trong quá trình thực hiện chương trình (tương tự như RAM), nhưng vẫn còn lưu
giữ vĩnh viễn, ngay cả sau khi mất điện (tương tự như ROM). Nó thường được
dùng để lưu trữ các giá trị được tạo ra và được sử dụng trong quá trình hoạt
động (như các giá trị hiệu chuẩn, mã, các giá trị để đếm, v.v..), mà cần phải
được lưu sau khi nguồn cung cấp ngắt. Một bất lợi của bộ nhớ này là quá trình
ghi vào là tương đối chậm.
- Các thanh ghi chức năng đặc biệt (SFR): Thanh ghi chức năng đặc biệt (Special
Function Registers) là một phần của bộ nhớ RAM. Mục đích của chúng được
định trước bởi nhà sản xuất và không thể thay đổi được. Các bit của chúng được
liên kết vật lý tới các mạch trong vi điều khiển như bộ chuyển đổi A/D, modul
truyền thông nối tiếp,…Mỗi sự thay đổi trạng thái của các bit sẽ tác động tới
hoạt động của vi điều khiển hoặc các vi mạch.
- Bộ đếm chương trình (PC: Program Counter): Bộ đếm chương trình chứa địa
chỉ chỉ đến ô nhớ chứa câu lệnh tiếp theo sẽ được kích hoạt. Sau mỗi khi thực
hiện lệnh, giá trị của bộ đếm được tăng lên 1. Vì lý do đó nên chương trình chỉ
thực hiện được được từng lệnh trong một thời điểm.
- Central Processor Unit (CPU): Đây là một đơn vị có nhiệm vụ điều khiển và
giám sát tất cả các hoạt động bên trong vi điều khiển và người sử dụng không
thể tác động vào hoạt động của nó. Nó bao gồm một số đơn vị con nhỏ hơn,
trong đó quan trọng nhất là:

15
+ Bộ giải mã lệnh có nhiệm vụ nhận dạng câu lệnh và điều khiển các mạch khác theo
lệnh đã giải mã. Việc giải mã được thực hiện nhờ có tập lệnh và mỗi họ vi điều khiển
thường có các tập lệnh khác nhau.
+ Bộ số học (ALU): Thực thi tất cả các thao tác tính toán số học và logic.
+ Thanh ghi tích lũy (Accumulator) là một thanh ghi chức năng đặc biệt 20 (SFR) liên
quan mật thiết với hoạt động của ALU. Nó lưu trữ tất cả các dữ liệu cho quá trình tính
toán và lưu giá trị kết quả để chuẩn bị cho các tính toán tiếp theo. Một trong các thanh
ghi SFR khác được gọi là thanh ghi trạng thái (Status Register) cho biết trạng thái của
các giá trị lưu trong thanh ghi tích lũy.
- Các cổng vào/ra (I/O Ports): Để vi điều khiển có thể hoạt động hữu ích, nó cần
được kết nối với các thiết bị ngoại vi. Mỗi vi điều khiển có một vài thanh ghi
(được gọi là cổng) được kết nối với các chân của vi điều khiển. - Bộ dao động
(Oscillator): Bộ dao động đóng vai trò nhạc trưởng làm nhiệm vụ đồng bộ hóa
hoạt động của tất cả các mạch bên trong vi điều khiển. Nó thường được tạo bởi
thạch anh hoặc gốm để ổn định tần số. Các lệnh không được thực thi theo tốc
độ của bộ dao động mà thường chậm hơn, bởi vì mỗi câu lệnh được thực hiện
qua nhiều bước. Mỗi loại vi điều khiển cần số chu kỳ khác nhau để thực hiện
lệnh.
- Bộ định thời/đếm (Timers/Counters): Hầu hết các chương trình sử dụng các bộ
định thời trong hoạt động của mình. Chúng thường là các thanh ghi SFR 8 hoặc
16 bit, sau mỗi xung dao động clock, giá trị của chúng được tăng lên. Ngay khi
thanh ghi tràn, một ngắt sẽ được phát sinh.
- Chương trình: Không giống như các mạch tích hợp, chỉ cần kết nối các thành
phần với nhau và bật nguồn, vi điều khiển cần phải lập trình trước. Để viết một
chương trình cho vi điều khiển, có một vài ngôn ngữ lập trình bậc thấp có thể
sử dụng như Assembly, C hay Basic. Viết một chương trình bao gồm việc viết
các câu lệnh đơn giản theo một thứ tự để chúng có thể thực thi. Có rất nhiều
phần mềm chạy trên môi trường Windows cho phép xây dựng các chương trình
hoàn chỉnh cho các họ vi điều khiển.

16
Mặc dù đã có rất nhiều họ vi điều khiển được phát triển cũng như nhiều chương
trình điều khiển tạo ra cho chúng, nhưng tất cả chúng vẫn có một số điểm chung cơ
bản. Do đó nếu ta hiểu cặn kẽ một họ thì việc tìm hiểu thêm một họ vi điều khiển mới
là hoàn toàn đơn giản. Một kịch bản chung cho hoạt động của một vi điều khiển như
sau:
- Khi không có nguồn điện cung cấp, vi điều khiển chỉ là một con chip có chương
trình nạp sẵn vào trong đó và không có hoạt động gì xảy ra.
- Khi có nguồn điện, mọi hoạt động bắt đầu được thực thi với tốc độ cao. Đơn vị
điều khiển logic có nhiệm vụ điều khiển tất cả mọi hoạt động. Nó khóa tất cả
các mạch khác, trừ mạch giao động thạch anh.
- Điện áp nguồn nuôi đạt đến giá trị tối đa của nó và tần số giao động trở nên ổn
định. Các bit của các thanh ghi SFR cho biết trạng thái của tất cả các mạch
trong vi điều khiển. Toàn bộ vi điều khiển hoạt động theo chu kỳ của chuỗi
xung chính.
- Thanh ghi bộ đếm chương trình (Program Counter) được xóa về 0. Câu lệnh từ
địa chỉ này được gửi tới bộ giải mã lệnh sau đó được thực thi ngay lập tức.
- Giá trị trong thanh ghi của bộ đếm chương trình được tăng lên 1 và toàn bộ quá
trình được lặp lại vài triệu lần trong một giây.

CHƯƠNG 2: THIẾT KẾ MẠCH HIỂN THỊ LED MA TRẬN BẰNG PHẦN


MỀM PROTEUS VÀ PIC16F887
2.1 Thiết kế sơ đồ khối
Sơ đồ khối của mạch điện tử hiển thị phụ thuộc vào việc chúng ta thiết kế bảng
LED và nội dung thông tin cần hiển thị. Trong đề tài này chúng tôi thu hẹp phạm vi
bằng thiết kế một mạch điển tử hiển thị dòng chữ và cho chạy dòng chữ. Sơ đồ khối
của mạch điện tử hiển thị dòng chữ cho như ở hình 2.1:

17
Hình 12. Sơ đồ khối của mạch hiển thị dòng chữ chạy bằng LED ma trận
Trong đó:
- Vi điều khiển: Vi điều khiển có chức năng xuất tín hiệu điều khiển các khối giải
mã hàng và giải mã cột để cung cấp sự điều khiển cho LED.
- Khối giải mã địa chỉ hàng: Nhận tín hiệu từ vi điều khiển, đưa qua bộ đệm
hàng, từ đó đưa tín hiệu cho phép hàng LED nào trên bảng LED ma trận được
phép sáng. Tại mỗi thời điểm chỉ có một hàng trên bảng LED ma trận được
phép sáng.
- Khối giải mã dữ liệu cột: Nhận tín hiệu từ vi điều khiển, đưa qua bộ đệm cột, từ
đó đưa tín hiệu ra cột.
- Khối đệm hàng và đệm cột: Đảm bảo cho độ sáng của các LED trên bảng LED
ma trận là đồng đều cho dù một LED sáng hay cả hàng (hoặc cả cột đều sáng).
- Ma trận LED: Hiển thị thông tin (chữ ).
- Khối nguồn: Cấp nguồn cho toàn bộ mạch hoạt động.
2.2 Lựa chọn thiết bị
2.2.1 Vi điều khiển PIC 16F887
Sơ đồ chân của vi điều khiển PIC16F887 loại 40 chân bao gồm:

18
Hình 13. Cấu trúc bên trong của vi điều khiển

Vi điều khiển PIC16F887 loại 40 chân, trong đó các chân đều tích hợp nhiều
chức năng, chức năng của từng chân được khảo sát theo port.

Hình 14. Hình ảnh vi điều khiển PIC16F887

Các chức năng chính PIC16F887


Tần suất hoạt động DC - 20MHz
Đặt lại và độ trễ BOR, BOR (PWRT, OST)
Bộ nhớ chương trình FLASH 8K
(Từ 14 bit)
Bộ nhớ dữ liệu (Byte) 368
Bộ nhớ dữ liệu EEPROM 256

19
Ngắt 14
Cổng I / O Cổng A, B ,C
Hẹn giờ 3
Chụp / So sánh/ Mô- đun PWM 2
Truyền thông nối tiếp MSSP, USART
Truyền thông song song PSP
Mô - đun 10-bit Analog-to-Digital 8 kênh đầu vào
Bộ hướng dẫn 35 hướng dẫn

Bảng 1. Thông số các chức năng chính của PIC16F887

2.2.2 Ma trận LED


Việc lựa chọn bảng LED ma trận dùng để hiển thị tùy thuộc vào thông tin cần
hiển thị, yêu cầu về cỡ chữ, màu sắc. Đối với việc hiển thị nhiều thông tin khác nhau
cùng một lúc và cỡ chữ vừa phải thì cách dùng phổ biến hiện nay là ghép nhiều bảng
LED ma trận nhỏ lại với nhau để tạo nên một bảng điện tử hiển thị lớn. Bảng này
thường dùng để làm bảng thông tin của các cơ quan, doanh nghiệp hoặc những nơi
công cộng. Đối với việc hiển thị một dòng chữ với các cỡ chữ khác nhau chạy từ bên
trái qua bên phải hoặc ngược lại, hoặc chạy từ trên xuống dưới, từ dưới lên trên thì
cách dùng phổ biến là sử dụng các modul LED ma trận cỡ vừa sẵn có trên thị trường
như 31 modul LED 8x16, 8x32, 16x32, 16x64…
Hình ảnh trên mô phỏng protues LED MATRIX-8X8-RED cho ở hình 15.

20
Hình 15. Hình ảnh trên mô phỏng protues LED MATRIX-8X8-RED

2.2.3 IC giải mã hàng, IC đệm dòng, điện trở thanh


IC 74HC595 : 74HC595 là IC ghi dịch 8bit kết hợp chốt dữ liệu, đầu vào nối
tiếp, đầu ra song song.
Sơ đồ chân và hình ảnh thực của IC 74HC595 cho như ở hình 16:

21
Hình 16. Sơ đồ chân và hình ảnh thực của IC 74HC595

Chức năng của các chân của IC 74HC595 như trong bảng 2 :
Bảng 2. Chức năng của các chân của IC 74HC595
Số Kí Chức năng
chân hiệu
1÷7 Q1÷Q7 Các đầu vào xung clock
15 Q0 Đầu vào xung clock
8 GND Nối mass
9 Q7’ Chân dữ liệu nối tiếp. Nếu dùng nhiều
74HC595 mắc nối tiếp nhau thì chân này đưa
vào đầu vào của con tiếp theo khi đã dịch đủ 8
bit
10 MR Khi chân này ở mức thấp (mức 0) thì dữ
liệu thì sẽ xóa trên chip
11 SH_C Chân vào xung clock. Khi có 1 xung
P clock tích cực ở sườn dương thì 1bit được dịch
vào IC.
12 ST_CP Xung clock chốt dữ liệu. Khi có 1 xung
clock tích cực ở sườn dương thì cho phép xuất
dữ liệu trên các chân output
13 OE Chân cho phép tích cực ở mức thấp (0).
Khi ở mức cao, tất cả các đầu ra của 74595 trở
về trạng thái cao, không có đầu ra nào được cho
phép.
14 DS Đầu vào dữ liệu nối tiếp. Tại 1 thời điểm
xung clock chỉ đưa vào được 1bit.
16 VCC Cấp nguồn.

22
CHƯƠNG 3: MÔ PHỎNG VÀ ĐÁNH GIÁ KẾT QUẢ
3.1. Giới thiệu phần mềm dùng mô phỏng và phần mềm lập trình
3.1.1. Phần mềm mô phỏng Proteus.
Proteus là phần mềm của hãng Labcenter Electronics, nó mô phỏng được cho hầu
hết các linh kiện điện tử thông dụng, đặc biệt có thể hỗ trợ cho cả các MCU như PIC,
8051, AVR, Motorola.
Proteus đã được sử dụng rộng rãi trên 35 quốc gia. Proteus đã tự khẳng định thế
mạnh của nó về mô phỏng các mạch nguyên lý sát với thực tế, trên 12 năm hình thành
và phát triển nó càng được hoàn thiện và phát triển mạnh hơn. Proteus cung cấp cho
người sử dụng hầu như toàn bộ các linh kiện điện tử để người dung có thể tạo ra được
các mạch nguyên lý và sau cùng là cho chạy thử và so sánh với kết quả thực tế. Chính
vì proteus có thể tạo và chạy thử được các mạch đơn giản cũng như phức tạp nên có
thể dùng nó trong giảng dạy, trong các phòng thí nghiệm điện tử cũng như trong thực
hành vi xử lý..

23
Hình 17. Hình dạng phần mềm Protues
Các ưu điểm của phần mềm:
Dễ dàng tạo ra một sơ đồ nguyên lý đơn giản từ các mạch điện đơn giản, đến các
mạch có bộ lập trình vi xử lý.
Dễ dàng chỉnh sửa các đặc tính của linh kiện trên sơ đồ nguyên lý: chỉnh sửa số
bước của động cơ bước, chỉnh sửa nguồn nuôi cho mạch, thay đổi tần số hoạt động cơ
bản của vi xử lý...Công cụ hỗ trợ kiểm tra lỗi thiết kế trên sơ đồ nguyên lý. Xem và
lưu lại phần báo lỗi.
Chạy mô phỏng và phân tích các tính chất của mạch điện cơ bản. Công cụ hỗ trợ
cho việc chạy và mô phỏng rất mạnh và chính xác. Các công cụ và đồ thị hỗ trợ mạch
cho việc phân tích tần số, song, âm thanh... không những thế phần mềm còn có thêm
các máy phân tích từ đơn giản như đồng hồ đo Vôn, Ampe, đến các máy đo dao động,
máy tạo sóng dao động.
Ngoài ra Proteus còn cung cấp cho người sử dụng các công cụ mạnh và các phần
mềm khác hầu như không có. Chẳng hạn như thư viện led với các mầu sắc khác nhau
kể cả led 7 đoạn. Nhưng phần hiển thị mạnh nhất mà Proteus cung cấp là LCD, nó có
thể mô phỏng cho rất nhiều LCD từ đơn giản đến phức tạp

24
Một ưu điểm nữa của Proteus là có thể mô phỏng công cụ phát và thu tín hiệu từ
các mạch giao tiếp với máy tính thông qua công cụ RS232. Trong đó người sử dụng có
thể điều khiển được quá trình truyền phát, tốc độ Baud... giúp cho người lập trình có
thể mô phỏng các mạch truyền, phát tín hiệu. Một điểm mạnh khác của Proteus là cung
cấp cho người dùng công cụ biên dịch cho các họ vi xử lý như MSC51, AVR, HCHI...
Qua đó tạo ra các tập tin HEX dùng để nạp cho vi xử lý và tập tin DSI dùng để xem và
chạy kiểm tra từng bước trong chương trình mô phỏng.
Đối với các mạch vi xử lý Proteus không những cung cấp hình ảnh thực tế của
các linh kiên xuất mà còn cung cấp cho người lập trình rất nhiều các cửa sổ thông báo
các nội dung của bộ nhớ, con trỏ, thanh ghi...Proteus có một thư viện khá lớn hơn
6000 linh kiện các loại và càng ngày càng được bổ sung. Ngoài ra còn có keypad (Ma
trận phím tạo đơn giản cho người thiết kế khi cần thao tác trên các ma trận phím).
Khả năng ứng dụng của phần mềm:
Khả năng ứng dụng chính của Proteus là mô phỏng, phân tích các kết quả từ các
mạch nguyên lý. Proteus giúp cho người sử dụng có thể thấy trước mạch thiết kế chạy
đúng hay sai trước khi thiết kế trên bo mạch. Các công cụ phục vụ cho việc phân tích
mạch có độ chính xác khá cao như đo vôn, ampe hay máy đo dao động.
Khả năng áp dụng chương trình Proteus vào trong giảng dạy là rất tốt cho các
giảng viên cũng như cho sinh viên học tập kỹ thuật điện tử vì hầu như Proteus cung
cấp gần như đầy đủ từ cơ bản đến phức tạp cho người học điện tử và vi xử lý.
Đối với các sinh viên thì Proteus nếu mà được sử dụng rộng rãi thì nó gần như là
thầy dạy cho chính họ ở nhà. Nó giúp cho các sinh viên tự học, tự nghiên cứu và thiết
kế thử các phần đã học và chạy xem kết quả rồi rút ra các bài học tốt.
Nhược điểm của phần mềm:
Phần mềm nào cũng có nhược điểm của nó do đó Proteus cũng không tránh khỏi
các nhược điểm:
 Phần mềm do công ty nước ngoài nên tính bảo mật khá cao, và hầu như ít
được biết đến nên rất khó kiếm ngoài thực tế.
 Trong khi thiết kế có nhiều phần quan trọng Proteus chạy không theo một quy
tắc nào làm người sử dụng đôi lúc gặp khó khan.

25
 Sử dụng khá phức tạp nhất là đối với các mạch vi xử lý hay các mạch cần
chỉnh sửa các tính chất của các linh kiên ( do quá nhiều tính chất phải điển chỉnh).
 Phần mềm do công ty nước ngoài viết nên không có tài liệu nào cung cấp hay
hướng dẫn sử dụng.
 Hướng dẫn sử dụng trong Proteus hoàn toàn bằng tiếng anh nên đòi hỏi người
sử dụng cũng phải có một nền tảng tiếng anh cơ bản nếu muốn sử dụng nó một cách
hiệu quả ( Nhất là tiếng anh chuyên ngành về điện tử).
3.1.2. Phần mềm lập trình PIC CCS
Ngôn ngữ lập trình C là một ngôn ngữ lập trình được sử dụng phổ biến, là ngôn
ngữ tạo mã hiệu quả, các phần tử lập trình có cấu trúc, và một tập hợp phong phú các
toán tử.
Ngôn ngữ C một ngôn ngữ lập trình thuận tiện và hiệu quả, nhiều ứng dụng có
thể được giải quyết dễ dàng hơn và hiệu quả hơn bằng ngôn ngữ C so với các ngôn
ngữ chuyên biệt khác.
Ở chương này giới thiệu các ngôn ngữ lập trình C cho các loại vi điều khiển và
các lệnh C cơ bản để phục vụ lập trình cho các ứng dụng. Do có nhiều họ vi điều khiển
của nhiều hãng khác nhau nên các phần mềm lập trình C cho vi điều khiển cũng khác
nhau, phần này chỉ trình bày những kiến thức lập trình C chung và cơ bản nhất và tùy
thuộc vào từng phần mềm biên dịch mà các bạn tìm hiểu thêm.
Sau khi kết thúc phần này sẽ giúp các bạn biết cấu trúc một chương trình, biết
các lệnh C cơ bản để lập trình, biết khai báo các kiểu dữ liệu cho các biến, biết viết
chương trình.
Trong chương trình thƣờng khai báo biến để lưu dữ liệu và xử lý dữ liệu, tùy
thuộc vào loại dữ liệu mà ta phải chọn loại dữ liệu cho phù hợp. Các biến của vi xử lý
bao gồm bit, byte, word và long word tương ứng với dữ liệu 1 bit, 8 bit, 16 bit và 32
bit.
Các kiểu dữ liệu cơ bản tùy thuộc vào phần mềm sử dụng, vi điều khiển PIC có
rất nhiều phần mềm biên dịch như: PIC-C, MIKRO-C, MPLAB, trong phần này trình
bày phần mềm PIC-C.

26
Hình 18. Các kiểu dữ liệu của phần mềm PIC-C
3.2. Kết quả lập trình và mô phỏng
3.2.1. Kết quả lập trình
Sau khi hoàn thành các bước tạo File , viết chương trình và soát lỗi ta thu được
kết quả như sau:
#include <16f887.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG,NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use fast_io(b)
#use fast_io(d)
#use delay(clock=20000000)
int32 send_reg;
int16 m,l,x,lap,s;
int32 const chay[]={0x80000000,0x40000000,0x20000000,0x10000000,
0x08000000,0x04000000,0x02000000,0x01000000,0x00800000,0x00400000,0x0020
0000,0x00100000,0x00080000,0x00040000,0x00020000,0x00010000,
0x00008000,0x00004000,0x00002000,0x00001000,0x00000800,0x00000400,0x0000
0200 ,0x00000100,
0x00000080,0x00000040,0x00000020,0x00000010,0x00000008,0x00000004,0x0000
0002,0x00000001,0x00000000};
Const unsigned char
data[]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,

27
255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,231,219,189,126,255,
0,0,231,231,0,0,255,129,126,126,129,255,1,230,230,1,255,0,0,231,219,189,126,255,2,
255,254,254,0,254,254,255,0,231,231,0,255,0,127,127,0,255,1,230,230,1,255,254,254
,0,254,254,255,129,126,126,126,255,129,126,126,129,255,0,253,251,247,0,255,129,1
26,110,14,239,255,0,253,251,0,255,129,126,110,14,239,255,0,231,231,0,255,0,102,10
2,102,255,255};
#bit d7=send_reg.0
void serout(){
int8 n;
for(n=0;n<=32;n++)
{
output_low(pin_b0);
if(d7!=0)
output_high(pin_b0);
output_low(pin_b1);
output_high(pin_b1);
send_reg=send_reg >>1;
}
}
void display(){
output_high(pin_b2);
serout();
output_low(pin_b3);
output_high(pin_b3);
}
void hc595(){
m=32;
x=0;
for(x=0;x<=32;x++){
output_d(data[l+m]);

28
send_reg=chay[x];
display();
m--;
}
}
void main(){
set_tris_d(0);
output_d(255);
set_tris_b(0x00);
while(true){
l=0;
for(l=0;l<=100;l++){
for(s=0;s<=1;s++)
{
for(lap=0;lap<=5;lap++){
hc595();
}
}
}
}
}

Hình 19. Chương trình báo không có lỗi sau khi đã kiểm tra

29
3.2.1 Lưu đồ thuật toán

30
Hình 20. Lưu đồ thuật toán mạch led ma trận dùng PIC 16F887

31
3.2.2 Chương trình nạp cho vi điều khiển
Chương trình nạp cho vi điều khiển sử dụng ngôn ngữ lập trình C và được khởi
tạo bởi sự hỗ trợ của trình biên dịch CCS. Chương trình viết cho việc hiển thị và chạy
chữ “ HÀ TRUNG K17 “ như sau:
- Chương trình chính:
#include <16F887.h>
#device ADC=10
#fuses HS
#use delay(clock = 20M)

#define sda pin_c2


#define str pin_c1
#define sck pin_c0

unsigned int8 cot[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

const unsigned int8 hang[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xff,0x08,0x08,0x08,0xff,
0x00,0xfe,0x12,0x11,0x12,0xfe,
0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x01,0xff,0x01,0x01,
0x00,0xff,0x11,0x19,0xe6,0x80,
0x00,0x7f,0x80,0x80,0x80,0x7f,
0x00,0xff,0x04,0x08,0x10,0xff,
0x00,0x7e,0x81,0x91,0x91,0xf2,
0x00,0x00,0x00,0x00,0x00,
0x00,0xff,0x08,0x18,0x24,0xc3,

32
0x00,0x84,0x82,0xff,0x80,0x80,
0x00,0x01,0xf9,0x05,0x03,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0x,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void chuyen(unsigned char x)
{
unsigned char temp,i;
for(i=0;i<8;i++)
{
temp=x&0x80;
if(temp==0x80)
output_high(sda);
else output_low(sda);
x=x*2;
output_low(sck);
output_low(sck);
}
}
void main()
{
int i,j,k;
while(true)
{
for(i=0;i<102;i++)
{
for(j=0;j<6;j++)
{
for(k=0;k<8;k++)

33
{
chuyen(hang[i+k+24]);
chuyen(hang[i+k+16]);
chuyen(hang[i+k+8]);
chuyen(hang[i+k]);
output_low(str);
output_high(str);
output_d(cot[k]);
delay_ms(2);
output_d(0x00);
}
}
}
}
}
3.2.3 Kết quả hiển thị

Hình 21. Hiển thị chữ “ KHOAKITHUATCONGNGHE”

34
3.3. Đánh giá chung về kết quả
Sau khi chạy thử em rút ra được như sau: Ta có thể sử dụng IC 74HC595 để mở
rộng các port của vi điều khiển. Từ các chân vi điều khiển PIC 16F887 ta có thể điều
khiển được LED ma trận nhờ vào IC 74HC595, IC UNL2803 và điện trở thanh
(RESPACK-8).

PHẦN III: KẾT LUẬN


Thông qua đề tài: “Thiết kế mô phỏng mạch hiển thị trên led ma trận dùng vi
điều khiển pic16f887” sinh viên đã rút ra được nhiều bài học rất bổ ích, học tập được
tinh thần làm việc nghiêm túc, nhất là việc kết hợp kiến thức của các môn chuyên
ngành mà sinh đã được trang bị trong nhà trường để thực hiện đề tài. Bên cạnh đó
nhóm nghiên cứu cũng đã tự đánh giá được phần nào còn hạn chế, ít nhiều bổ sung
thêm các kiến thức môn hoc chuyên ngành và một phong cách làm việc khoa học,
nghiêm túc.
Trong điều kiện thời gian nghiên cứu có hạn, vấn đề nghiên cứu còn rất mới đối
với sinh viên nghiên cứu nên trong thời gian thực hiện đề tài, em đã gặp không ít
những khó khăn nhưng nhờ có sự hướng dẫn tận tình của thầy giáo hướng dẫn, cùng
với sự nỗ lực, lòng đam mê, ham học hỏi của bản thân nên em đã hoàn thành nhiệm vụ
được giao. Đề tài này có ý nghĩa rất lớn bởi vì nó mang tính khoa học, tính thực tế và
tính kinh tế cao:
 Tính khoa học
Bằng những vốn kiến thức chuyên môn của ngành Điện Tử, em đã vận dụng để thực
hiện yêu cầu đề tài đặt ra.
Hiển thị dòng chữ “KHOAKITHUATCONGNGHE” chạy chính xác.
 Tính thực tế
Đề tài này thực hiện được ứng dụng vào thực tế đời sống và quảng bá thương hiệu đặc
biệt được dùng trong các tòa nhà, cửa hàng, văn phòng để đưa được thông tin hữu ích
tới mọi người.

35
TÀI LIỆU THAM KHẢO
1. Nguyễn Trường Thịnh (2004),Giáo trình Vi điều khiển PIC 16F và ngôn ngữ
lập trình HI-TECH C, NXB Đại học Quốc gia Tp Hồ Chí Minh.
2. Kiều Xuân Thực (2005), Vi điều khiển- Cấu trúc, lập trình và ứng dụng, NXB
giáo dục.
3. Phạm Quý Võ (2002), Giáo trình vẽ và thiết kế mạch in, NXB Thống kê.

36

You might also like