Tài liệu Đồ án Quang báo hiển thị bằng led ma trận: TRƯỜNG CAO ĐẲNG K Ỹ THUẬT
CAO THẮNG
----o0o----
KHOA ĐIỆN TỬ-TIN HỌC
ĐỒ ÁN TỐT NGHIỆP
THÀNH PHỐ HỒ CHÍ MINH
Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người
ngày càng trở nên tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải
pháp tốt hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rất phức tạp
gặp phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kỹ thuật hiện đại
trong tất cả các lĩnh vực đã và đang rất phổ biến trên toàn thế giới, thay thế dần những
phương thức thủ công , lạc hậu và ngày càng được cải tiến hiện đại hơn, hoàn mỹ hơn.
Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công
cuộc công nghiệp hóa và hiện đại hóa đất nước để theo kịp sự phát triển của các nước
trong khu vực và trên thế giới. Trong đó lĩnh vực điện tử đang ngày càng đóng vai trò
quan trọng trong việc phát triển kinh tế và đời sống con người. Sự phổ biến của nó
đóng góp không nhỏ tới sự phát tr...
70 trang |
Chia sẻ: tranhong10 | Lượt xem: 2783 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Quang báo hiển thị bằng led ma trận, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG CAO ĐẲNG K Ỹ THUẬT
CAO THẮNG
----o0o----
KHOA ĐIỆN TỬ-TIN HỌC
ĐỒ ÁN TỐT NGHIỆP
THÀNH PHỐ HỒ CHÍ MINH
Với sự phát triển khơng ngừng của khoa học cơng nghệ, cuộc sống con người
ngày càng trở nên tiện nghi và hiện đại hơn. Điều đĩ đem lại cho chúng ta nhiều giải
pháp tốt hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rất phức tạp
gặp phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kỹ thuật hiện đại
trong tất cả các lĩnh vực đã và đang rất phổ biến trên tồn thế giới, thay thế dần những
phương thức thủ cơng , lạc hậu và ngày càng được cải tiến hiện đại hơn, hồn mỹ hơn.
Cùng với sự phát triển chung đĩ, nước ta cũng đang mạnh mẽ tiến hành cơng
cuộc cơng nghiệp hĩa và hiện đại hĩa đất nước để theo kịp sự phát triển của các nước
trong khu vực và trên thế giới. Trong đĩ lĩnh vực điện tử đang ngày càng đĩng vai trị
quan trọng trong việc phát triển kinh tế và đời sống con người. Sự phổ biến của nĩ
đĩng gĩp khơng nhỏ tới sự phát triển của tất cả các ngành sản xuất, giải trí, ...trong
những năm gần đây đặc biệt trong lĩnh vực giải trí, quảng cáo đã cĩ sự phát triển mạnh
mẽ với nhiều hình thức, phương pháp tiếp cận, quảng bá và chia sẻ thơng tin hiện đại
và tồn diện hơn.
Với lịng đam mê, yêu thích của mình trong lĩnh vực này, nhĩm đã quyết định
chọn đề tài “Quang Báo Hiển Thị Bằng Led Ma Trận” làm đề tài tốt nghiệp.
Trong thời gian ngắn thực hiện đề tài cộng với kiến thức cịn nhiều hạn chế, nên
trong tập đồ án này khơng tránh khỏi thiếu sĩt, nhĩm thực hiện rất mong được sự đĩng
gĩp ý kiến của thầy cơ và các bạn sinh viên.
Nhĩm sinh viên thực hiện đề tài
LỜI CẢM ƠN
Trong suốt khĩa học (2006-2009) tại Trường
Cao Đẳng Kỹ Thuật Cao Thắng, với sự giúp đỡ
của quý thầy cơ và giáo viên hướng dẫn về mọi mặt
từ nhiều phía và nhất là trong thời gian thực hiện đề
tài, nên đề tài đã được hồn thành đúng thời gian qui
định. Nhĩm thực hiện xin chân thành cảm ơn đến :
Quí thầy cơ trong khoa Điện tử -Tin học đã giảng
dạy những kiến thức chuyên mơn làm cơ sở để thực
hiện tốt luận văn tốt nghiệp và đã tạo điều kiện thuận
lợi cho những người thực hiện hồn tất khĩa học.
Đặc biệt, cơ NGUYỄN THỊ HỒNG ÁNH– giáo
viên hướng dẫn đề tài đã nhiệt tình giúp đỡ và cho
nhĩm thực hiện những lời chỉ dạy quý báu, giúp
nhĩm thực hiện định hướng tốt trong khi thực hiện
luận văn.
Tất cả bạn bè đã giúp đỡ và động viên trong suốt
quá trình làm đồ án tốt nghiệp.
TP.HCM _ Tháng 7 năm 2009
Nhĩm sinh viên thực hiện.
MỤC LỤC
Trang
Phiếu đăng ký đồ án tốt nghiệp..
Nhận xét của giáo viên hướng dẫn
Nhận xét của giáo viên phản biện..
Lời nĩi đầu
Lời cảm ơn
PHẦN I: NỘI DUNG
Chương 1: Dẫn nhập ............................5
1.1: Đặt vấn đề...5
1.2: Nội dung đề tài.....5
1.3: Mục đích đề tài... 6
1.4: Đối tượng nghiên cứu....6
1.5: Lập kế hoạch nghiên cứu....6
Chương 2: Giới thiệu về bảng quang báo....7
2.1: Một số bảng quang báo thơng dụng ...7
2.2: Giới thiệu về bảng quang báo hiển thị led ma trận ... 8
Chương 3: Khảo sát linh kiện.. ..9
3.1: Vi điều khiển PIC 16F877A ......9
3.2: Linh kiện khác trong mạch quang báo.....32
Chương 4: Các phương pháp hiển thị led ma trận....37
4.1: Phương pháp hiển thị bằng IC chốt...37
4.2: Phương pháp sử dụng thanh ghi dịch...39
Chương 5: Sơ đồ khối và chức năng từng khối ....44
5.1: Sơ đồ khối hệ thống ...44
5.2: Ý nghĩa từng khối......44
Chương 6: Tính tốn .....48
6.1: Nguồn điều khiển...48
6.2: Mạch nguồn Reset.....48
6.3: Mạch kéo dịng. .....50
Chương 7:Sơ đồ mạch và nguyên lý hoạt động. ... 52
7.1: Sơ đồ nguyên lý mạch.... 52
7.2: Nguyên lý hoạt động....53
Chương 8: Lưu đồ giải thuật và chương trình hoạt động ..54
8.1: Lưu đồ giải thuật. ..54
8.2: Chương trình hoạt động..57
Chương 9: Tổng Kết........62
PHẦN II: PHỤ LỤC
CHƯƠNG 1
DẪN NHẬP
1.1 ĐẶT VẤN ĐỀ:
Thơng tin liên lạc là vấn đề được quan tâm trong xã hội. Ngay từ ngày xưa, con
người đã biết vận dụng những gì đã cĩ sẵn để truyền tin như lửa, âm thanh, các dấu
hiệu
Ngày nay, với sự phát triển của xã hội thì ngày càng cĩ nhiều cách tiếp cận với
những thơng tin mới. Ta cĩ thể biết được thơng tin qua báo chí, truyền hình, mạng
internet, qua các pano, áp phích Thơng tin cần phải được truyền đi nhanh chĩng, kịp
thời và phổ biến rộng rãi trong tồn xã hội. Và việc thu thập thơng tin kịp thời, chính
xác là yếu tố hết sức quan trọng trong sự thành cơng của mọi lĩnh vực. Các thiết bị tự
động được điều khiển từ xa qua một thiết bị chủ hoặc được điều khiển trực tiếp qua hệ
thống máy tính.
Việc sử dụng vi điều khiển để điều khiển hiển thị cĩ rất nhiều ưu điểm mà các
phương pháp truyền thống như panơ, áp phích khơng cĩ được như việc điều chỉnh
thơng tin một cách nhanh chĩng bằng cách thay đổi phần mềm. Với những lý do trên,
nhĩm thực hiện đề tài đưa ra một cách thức nữa phục vụ thơng tin là dùng quang báo.
Nội dung nghiên cứu của đề tài chính là tạo ra một bảng quang báo ứng dụng trong
việc hiển thị truyền thơng ở các nơi cơng cộng như cơng ty, nhà xưởng, các ngã tư báo
hiệu
Thế giới ngày càng phát triển thì lĩnh vực điều khiển cần phải được mở rộng
hơn. Việc ứng dụng mạng truyền thơng cơng nghiệp vào sản xuất mang lại nhiều thuận
lợi cho xã hội lồi người, thơng tin được cập nhật nhanh chĩng và được điều khiển một
cách chính xác .
1.2 NỘI DUNG ĐỀ TÀI:
Với khoảng thời gian thực hiện đề tài 4 tuần, nhĩm đã thảo luận và chọn nội
dung của đề tài như sau:
- Nghiên cứu và tìm phương án điều khiển và xử lý dữ liệu cho bảng led ma
trận hiển thị.
- Thi cơng bảng quang báo hiển thị kích thước 8×48 điểm ảnh.
- Viết chương trình tạo hiệu ứng và xử lý dữ liệu.
1.3 MỤC ĐÍCH ĐỀ TÀI:
Trong quá trình nghiên cứu và thực hiện đề tài này nhằm giúp người học:
- Tăng khả năng tự nghiên cứu cũng như tự học.
- Bước đầu tiếp xúc với thực tế .
- Vận dụng những kiến thức đã cĩ đồng thời tìm tịi những kiến thức mới để
hiểu sâu sắc hơn trong lĩnh vực này.
Để thiết kế được một hệ thống như đã nêu ở trên thì người nghiên cứu phải
nắm vững kiến thức chuyên ngành điện tử, tìm hiểu, nghiên cứu qua sách vở, tài liệu
nước ngồi và dạng mạch thực tế để thi cơng phần cứng.
1.4 ĐỐI TƯỢNG NGHIÊN CỨU:
- Các phương án điều khiển và xử lý dữ liệu cho bảng led ma trận.
- Tìm hiểu vi điều khiển PIC 16F877A.
- Tìm hiểu phương pháp lập trình C.
- Bảng quang báo led ma trận kích thước 8×48 điểm ảnh.
1.5 LẬP KẾ HOẠCH NGHIÊN CỨU:
Để thực hiện đề tài này nhĩm sinh viên đã kết hợp sử dụng nhiều phương
pháp và phương tiện hỗ trợ gồm cĩ:
Tham khảo tài liệu: kỹ thuật xung số, điện tử căn bản, vi điều khiển.
Quan sát.
Thực nghiệm.
Tổng kết kinh nghiệm.
Phương tiện: máy vi tính, Internet, thư viện..
Kế hoạch nghiên cứu:
Tuần 1: Nhận đề tài và lập đề cương tổng quát.
Thu thập tài liệu và lập đề cương chi tiết.
Tuần 2, 3, 4: Thiết kế thi cơng và viết đồ án.
CHƯƠNG 2
GIỚI THIỆU VỀ BẢNG QUANG BÁO
Ngày nay, các bảng quang báo ngày càng trở nên phổ biến và rất đa dạng về
chủng loại và cơng nghệ thay thế dần cho các hình thức truyền thống như pano, áp
phích,.bởi những tiện lợi và linh hoạt mà nĩ đem lại. Dưới đây, nhĩm xin giới thiệu
một số kiểu bảng quang báo thường được sử dụng:
2.1 MỘT SỐ BẢNG QUANG BÁO THƠNG DỤNG:
2.1.1. Mẫu một dịng chữ (16 X 240 điểm ảnh):
Các thơng số kỹ thuật:
Kích thước hiển thị: chiều cao 122mm, chiều dài tuỳ ý (thường là bội của
305mm)
Độ phân giải (số điểm ảnh): 16 x 40 x (chiều dài hiển thị/305)
Kết nối chuẩn (Máy tính, cổng COM) tuỳ chọn (RJ45, Bàn phím)
Bảng này cĩ thể hiển thị một dịng chữ cao 122mm (16 điểm ảnh - như hình
trên) hoặc hai dịng chữ cao 61mm (8 điểm ảnh) nhưng khơng dấu Tiếng Việt
Kết nối chuẩn (Máy tính, cổng COM) tuỳ chọn ( RJ45)
2.1.2. Mẫu hai dịng chữ (32 X 240 điểm ảnh)
Các thơng số kỹ thuật
Kích thước hiển thị: chiều cao 244mm, chiều dài tuỳ ý (thường là bội của
305mm)
Độ phân giải (số điểm ảnh): 32 x 40 x (chiều dài hiển thị/305)
Kết nối chuẩn (Máy tính, cổng COM) tuỳ chọn ( RJ45)
Bảng này cĩ thể hiển thị hai dịng chữ cao 122mm (16 điểm ảnh – như hình
trên) hoặc một dịng chữ cao 244mm (32 điểm ảnh - như hình dưới)
Kết nối chuẩn (Máy tính, cổng COM) tuỳ chọn ( RJ45)
2.2. GIỚI THIỆU VỀ BẢNG QUANG BÁO HIỂN THỊ LED MA TRẬN
TRONG ĐỒ ÁN:
2.2.1. Phần cứng:
- Kích thước hiển thị: chiều cao 6cm,chiều dài 36cm
- Độ phân giải (số điểm ảnh):8 x 48.
- Hiển thị:
o Một màu.
o Nội dung hiển thị được cho chạy theo nhiều hướng khác nhau như :
cuốn từ dưới lên, cuốn từ trên xuống, sang trái, sang phải.
2.2.2. Phần mềm:
- Dùng ngơn ngữ C lập trình cho vi điều khiển 16F877A
- Phần mềm để viết chương trình CCS
CHƯƠNG 3
KHẢO SÁT LINH KIỆN
3.1. VI ĐIỀU KHIỂN 16F877A:
1 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN PIC16F877A
2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A
Đâ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 clock. 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ào 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ồmcá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 clock 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 Serial 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 ngoài.
Các đặc tính Analog:
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ư:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
Bộ nhớ EEPROM với 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ềm. 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ộ dao độ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.
3 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A
4 TỔ CHỨC BỘ NHỚ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
5 BỘ NHỚ CHƯƠNG TRÌNH
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng
bộ
nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến
page 3) .
Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì
một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit).
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương
trình có dung lượng 13 bit (PC).
1. Khi vi điều khiển được reset,
bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt xảy ra,
bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector).
Bộ nhớ chương trình không bao gồm:
Bộ nhớ stack và không được địa chỉ hóa bởi bộ đếm chương trình. Bộ
nhớ stack sẽ được đề cập cụ thể trong phần sau.
6 BỘ NHỚ DỮ LIỆU
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều
bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có
dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special
Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung
GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các
thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ
được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy
xuất và làm giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu
PIC16F877A như sau:
6.1 THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các khối chức năng được tích hợp bên trong vi điều khiển. Có thể
phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên
trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức
năng bên ngoài (ví dụ như ADC, PWM, ). Phần này sẽ đề cập đến các thanh ghi
liên quan đến các chức năng bên trong. Các thanh ghi dùng để thiết lập và điều
khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức năng
đó.
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực
hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất
trong bộ nhớ dữ liệu. Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho
phép đọc và ghi, cho phép điều khiển chức năng pull-up của các chân trong
PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi
và bộ đếm Timer0.
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi,
chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi
RB0/INT và ngắt interrput-on-change tại các chân của PORTB.
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các
khối chức năng ngoại vi.
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các
ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối
chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM.
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ
reset của vi điều khiển.
6.2 THANH GHI MỤC ĐÍCH CHUNG GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua
thanh ghi FSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường,
người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh
ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho
chương trình.
7 STACK
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một
vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện
hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương
trình PC tự động được vi điều khiển cất vào trong stack. Khi một trong các lệnh
RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra
từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình
định trước.
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa
chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack lần
thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ
Stack lần thứ 10 sẽ ghi đè lên giá tri6 cất vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta
không biết được khi nào stack tràn. Bên cạnh đó tập lệnh của vi điều khiển dòng
PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn
toàn được điều khiển bởi CPU.
8 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá
trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển
được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức
năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các
chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với
thế giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn
có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan
đến chân xuất nhập đó.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD và PORTE. Cấu trúc và chức năng của từng cổng xuất
nhập sẽ được đề cập cụ thể trong phần sau.
8.1 PORTA
PORTA (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều”
(bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được
điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một
chân trong PORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong
thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong
PORTA là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi
TRISA. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều
khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB, đối
với PORTC là TRISC, đối với PORTD là TRISD vàđối với PORTE là TRISE).
Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ
vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master
Synchronous Serial Port). Đặc tính này sẽ được trình bày cụ thể trong phần sau.
Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTA sẽ
được trình bày cụ thể trong Phụ lục 1.
Các thanh ghi SFR liên quan đến PORTA bao gồm:
PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.
TRISA (địa chỉ 85h) : điều khiển xuất nhập.
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp. ADCON1
(địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
8.2 PORTB
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng
là TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá
trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB
còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức
năng điện trở kéo lên được điều khiển bởi chương trình.
Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTB sẽ
được trình bày cụ thể trong Phụ lục 1.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
8.3 PORTC
PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ
Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTC sẽ
được trình bày cụ thể trong Phụ lục 1.
Các thanh ghi điều khiển liên quan đến PORTC:
PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
8.4 PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng
là TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel
Slave Port). Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTD
sẽ được trình bày cụ thể trong Phụ lục 1.
Các thanh ghi liên quan đến PORTD bao gồm:
Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
Thanh ghi TRISD : điều khiển xuất nhập.
Thanh ghi TRISE : điều khiển xuất nhập PORTE và chuẩn giao tiếp PSP.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
8.5 PORTE
PORTE (RPE) gồm 3 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISE. Các chân của PORTE có ngõ vào analog. Bên cạnh đó PORTE còn là các
chân điều khiển của chuẩn giao tiếp PSP.
Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTE sẽ
được trình bày cụ thể trong Phụ lục 1.
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE : chứa giá trị các chân trong PORTE.
TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp
PSP.
ADCON1 : thanh ghi điều khiển khối ADC.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
9 TIMER_0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển
PIC16F877A. Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler)
8 bit. Cấu trúc của Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích
cực của xung clock. Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn. Bit TMR0IE
(INTCON) là bit điều khiển của Timer0. TMR0IE=1 cho phép ngắt Timer0
tác động, TMR0IF= 0 không cho phép ngắt Timer0 tác động.
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG),
khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào
Timer0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ FFh trở về 00h,
ngắt Timer0 sẽ xuất hiện. Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn
định thời điểm ngắt Timer0 xuất hiện một cách linh động.
Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC
(OPTION_REG). Khi đó xung tác động lên bộ đếm được lấy từ chân
RA4/TOCK1. Bit TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động
vào bột đếm. Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là
cạnh xuống nếu TOSE=1.
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON) sẽ được set.
Đây chính là cờ ngắt của Timer0. Cờ ngắt này phải được xóa bằng chương trình
trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm. Ngắt Timer0 không thể
“đánh thức” vi điều khiển từ chế độ sleep.
Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT
(Watchdog Timer). Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0
thì WDT sẽ không có được hỗ trợ của prescaler và ngược lại. Prescaler được điều
khiển bởi thanh ghi OPTION_REG. Bit PSA (OPTION_REG) xác định đối
tượng tác động của prescaler. Các bit PS2:PS0 (OPTION_REG) xác định tỉ
số chia tần số của prescaler. Xem lại thanh ghi OPTION_REG để xác định lại
một cách chi tiết về các bit điều khiển trên. Các lệnh tác động lên giá trị thanh
ghi TMR0 sẽ xóa chế độ hoạt động của prescaler. Khi đối tượng tác động là
Timer0, tác động lên giá trị thanh ghi TMR0 sẽ xóa prescaler nhưng không làm
thay đổi đối tượng tác động của prescaler. Khi đối tượng tác động là WDT, lệnh
CLRWDT sẽ xóa prescaler, đồng thời prescaler sẽ ngưng tác vụ hỗ trợ cho
WDT.
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0.
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và
PEIE).
OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
10 TIMER_1
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong
hai thanh ghi (TMR1H:TMR1L). Cờ ngắt của Timer1 là bit TMR1IF (PIR1).
Bit điều khiển của Timer1 sẽ là TMR1IE (PIE). Tương tự như Timer0,
Timer1 cũng có hai chế độ hoạt động: chế độ định thời (timer) với xung kích là
xung clock của oscillator (tần số của timer bằng ¼ tần số của oscillator) và chế
độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên
ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên). Việc lựa
chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động là timer hay
counter) được điều khiển bởi bit TMR1CS (T1CON). Sau đây là sơ đồ khối
của Timer1:
Ngoài ra Timer1 còn có chức năng reset input bên trong được điều
khiển bởi một trong hai khối CCP (Capture/Compare/PWM). Khi bit T1OSCEN
(T1CON) được set, Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2
và RC0/T1OSO/T1CKI làm xung đếm. Timer1 sẽ bắt đầu đếm sau cạnh xuống
đầu tiên của xung ngõ vào. Khi đó PORTC sẽ bỏ qua sự tác động của hai bit
TRISC và PORTC được gán giá trị 0. Khi clear bit T1OSCEN Timer1
sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI. Timer1 có hai
chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous). Chế độ
đếm được quyết định bởi bit điều khiển (T1CON). Khi =1 xung đếm lấy từ
bên ngoài sẽ không được đồng bộ hóa với xung clock bên trong, Timer1 sẽ tiếp
tục quá trình đếm khi vi điều khiển đang ở chế độ sleep và ngắt do Timer1 tạo ra
khi bị tràn có khả năng “đánh thức” vi điều khiển. Ở chế độ đếm bất đồng bộ,
Timer1 không thể được sử dụng để làm nguồn xung clock cho khối CCP
(Capture/Compare/Pulse width modulation). Khi =0 xung đếm vào Timer1 sẽ
được đồng bộ hóa với xung clock bên trong. Ở chế độ này Timer1 sẽ không hoạt
động khi vi điều khiển đang ở chế độ sleep.
Các thanh ghi liên quan đến Timer1 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và
PEIE).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1.
TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1.
T1CON (địa chỉ 10h): xác lập các thông số cho Timer1.
11.TIMER_2
Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số
prescaler va postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit
cho phép ngắt Timer2 tác động là TMR2ON (T2CON). Cờ ngắt của Timer2
là bit TMR2IF (PIR1). Xung ngõ vào (tần số bằng ¼ tần số oscillator) được
đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc
1:16 và được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON)).
Timer2 còn được hỗ trợ bởi thanh ghi PR2. Giá trị đếm trong thanh
ghi TMR2 sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset
về 00h. Kh I reset thanh ghi PR2 được nhận giá trị mặc định FFh. Ngõ ra của
Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ 1:1 đến 1:16.
Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra của
postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt.
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó
Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.
Các thanh ghi liên quan đến Timer2 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt (GIE và
PEIE).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF).
PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE).
TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.
T2CON (địa chỉ 12h): xác lập các thông số cho Timer2. PR2 (địa chỉ 92h):
thanh ghi hỗ trợ cho Timer2.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
Ta có một vài nhận xét về Timer0, Timer1 và Timer2 như sau:
Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong
khi Timer1 là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh). Timer0, Timer1 và
Timer2 đều có hai chế độ hoạt động là timer và counter. Xung clock có tần số
bằng ¼ tần số của oscillator. Xung tác động lên Timer0 được hỗ trợ bởi prescaler
và có thể được thiết lập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác
động) trong khi các thông số của xung tác động lên Timer1 là cố định. Timer2
được hỗ trợ bởi hai bộ chia tần số prescaler và postcaler độc lập, tuy nhiên cạnh
tác động vẫn được cố định là cạnh lên. Timer1 có quan hệ với khối CCP, trong
khi Timer2 được kết nối với khối SSP. Một vài so sánh sẽ giúp ta dễ dàng lựa
chọn được Timer thích hợp cho ứng dụng.
12 ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai
dạng tương tự và số. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0).
Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể
chuẩn được xác lập trên hai chân RA2 và RA3. Kết quả chuyển đổi từ tín tiệu
tương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghi
ADRESH:ADRESL. Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này
có thể được sử dụng như các thanh ghi thông thường khác. Khi quá trình chuyển
đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit
(ADCON0) được xóa về 0 và cờ ngắt ADIF được set.
Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:
1. Thiết lập các thông số cho bộ chuyển đổi ADC:
Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi
ADCON1)
Chọnh kênh chuyển đổi AD (thanh ghi ADCON0).
Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0).
Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0).
2. Thiết lập các cờ ngắt cho bộ AD
Clear bit ADIF.
Set bit ADIE.
Set bit PEIE.
Set bit GIE.
3. Đợi cho tới khi quá trình lấy mẫu hoàn tất.
4. Bắt đầu quá trình chuyển đổi (set bit ).
5. Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
Kiểm tra bit . Nếu =0, quá trình chuyển đổi đã hoàn tất.
Kiểm tra cờ ngắt.
6. Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit (nếu cần tiếp tục chuyển đổi).
7. Tiếp tục thực hiện các bước 1 & 2 cho quá trình chuyển đổi tiếp theo
Cần chú ý là có hai cách lưu kết quả chuyển đổi AD, việc lựa chọn
cách lưu được điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau:
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE, PEIE).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).
PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).
ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả
chuyển đổi AD.
ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộ
chuyển đổi AD.
PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog
ở PORTA. PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ
vào analog ở PORTE.
13 COMPARATOR
Bộ so sánh bao gồm hai bộ so so sánh tín hiệu analog và được đặt ở
PORTA. gõ vào bộ so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và
RA5. Thanh ghi điều khiển bộ so sánh là CMCON. Các bit CM2:CM0 trong
thanh ghi CMCON đóng vai trò chọn lựa các chế độ hoạt động cho bộ
Comparator (hình 2.10).
Cơ chế hoạt động của bộ
Comparator như sau:
Tín hiệu analog ở chân
VIN + sẽ được só sánh với điện áp
chuẩn ở chân VIN- và tín hiệu ở ngõ ra
bộ so sánh sẽ thay đổi tương ứng như
hình vẽ. Khi điện áp ở chân VIN+ lớn
hơn điện áp ở chân VIN+ ngõ ra sẽ ở
mức 1 và ngược lại.
Dựa vào hình vẽ ta thấy
đáp ứng tại ngõ ra không phải là tức thời
so với thay đổi tại ngõ vào mà cần có
một khoảng thời gian nhất định để ngõ ra thay đổi trạng thái (tối đa là 10us). Cần
chú ý đến khoảng thời gian đáp ứng này khi sử dụng bộ so sánh.
Cực tính của các bộ so sánh có thể thay đổi dựa vào các giá trị đặt
vào các bit C2INV và C1INV (CMCON).
Các chế độ hoạt động của bộ comparator.
Các bit C2OUT và C1OUT (CMCON) đóng vai trò ghi nhận sự thay đổi tín
hiệu analog so với điện áp đặt trước. Các bit này cần được xử lí thích hợp bằng
chương trình để ghi nhận sự thay đổi của tín hiệu ngõ vào. Cờ ngắt của bộ so
sánh là bit CMIF (thanh ghi PIR1). Cờ ngắt này phải được reset về 0. Bit điều
khiển bộ so sánh là bit CMIE (Tranh ghi PIE).
Các thanh ghi liên quan đến bộ so sánh bao gồm:
CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh): xác lập các thông số cho bộ
so sánh.
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép các
ngắt
(GIE và PEIE).
Thanh ghi PIR2 (địa chỉ 0Dh): chứa cờ ngắt của bộ so sánh (CMIF).
Thanh ghi PIE2 (địa chỉ 8Dh): chứa bit cho phép bộ so sánh (CNIE).
Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): các thanh ghi điều
khiển PORTA. Chi tiết về các thanh ghi sẽ được trình bày cụ thể trong phụ lục 2.
14 BỘ TẠO ĐIỆN ÁP SO SÁNH
Bộ so sánh này chỉ hoạt động khi bộ Comparator đựơc định dạng hoạt
động ở chế độ ‘110’. Khi đó các pin RA0/AN0 và RA1/AN1 (khi CIS = 0) hoặc
pin RA3/AN3 và RA2/AN2 (khi CIS = 1) sẽ là ngõ vào analog của điện áp cần so
sánh đưa vào ngõ VIN- của 2 bộ so sánh C1 và C2 (xem chi tiết ở hình 2.10).
Trong khi đó điện áp đưa vào ngõ VIN+ sẽ được lấy từ một bộ tạo điện áp so
sánh.
Sơ đồ khối của bộ tạo điện áp so sánh đựơc trình bày trong hình vẽ sau:
Bộ tạo điện áp so sánh này bao gồm một thang điện trở 16 mức
đóng vai trò là cầu phân áp chia nhỏ điện áp VDD thành nhiều mức khác nhau
(16 mức). Mỗi mức có giá trị điện áp khác nhau tùy thuộc vào bit điều khiển
CVRR (CVRCON). Nếu CVRR ở mức logic 1, điện trở 8R sẽ không có tác
dụng như một thành phần của cầu phân áp (BJT dẫn mạnh và dòng điện không đi
qua điện trở 8R), khi đó 1 mức điện áp có giá trị VDD/24. Ngược lại khi CVRR ở
mức logic 0, dòng điện sẽ qua điện trở 8R và1 mức điện áp có giá trị VDD/32.
Các mức điện áp này được đưa qua bộ MUX cho phép ta chọn được điện áp đưa
ra pin RA2/AN2/VREF-/CVREF để đưa vào ngõ VIN+ của bộ so sánh bằng cách
đưa các giá trị thích hợp vào các bit CVR3:CVR0.
Bộ tạo điện áp so sánh này có thể xem như một bộ chuyển đổi D/A
đơn giản. Giá trị điện áp cần so sánh ở ngõ vào Analog sẽ được so sánh với các
mức điện áp do bộ tạo điện áp tạo ra cho tới khi hai điện áp này đạt được giá trị
xấp xỉ bằng nhau. Khi đó kết quả chuyển đổi xem như được chứa trong các bit
CVR3:CVR0.
Các thanh ghi liên quan đến bộ tạo điện áp so sánh này bao gồm:
Thanh ghi CVRCON (địa chỉ 9Dh): thanh ghi trực tiếp điều khiển bộ so sánh
điện áp.
Thanh ghi CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ Comparator.
Chi tiết về các thanh ghi sẽ được trình bày cụ thể ở phụ lục 2.
3.2. CÁC LINH KIỆN KHÁC TRONG MẠCH QUANG BÁO
IC 74HC573:
74HC573 là mạch chốt tín hiệu tốc độ cao được chế tạo theo cơng nghệ
CMOS. IC 74HC573 sử dụng để giải mã khi kết nối vi xử lý với bộ nhớ ngồi. IC
74HC573 gồm 8 mạch chốt là các Flip-Flop cùng với 8 bộ đệm ngõ ra 3 trạng thái.
IC này cĩ hai chân điều khiển: chân cho phép nhập dữ liệu (LE) vào IC, chân cịn
lại (/OE) quyết định việc xuất dữ liệu của IC, cả hai chân này làm việc độc lập với
nhau.
16
1 2 3 4 5 6 7 8
15 14 13 12 11
9 10
VCC
GND /OE D2 D1
O1 O2 O3
D3
O8
D8 D7
O7 O6
D6 D5
74573
20 19 17 18
D4
O4 O5 LE
Chức năng các chân của IC như sau:
VCC, GND: hai chân này dùng để cấp nguồn nuơi cho IC, VCC nối
với +5V, GND được nối mass.
LE: Latch Enable, chân cho phép chốt dữ liệu. Khi chân này ở mức
logic cao thì dữ liệu mới được phép nhập vào IC, khi nĩ ở mức logic thấp thì dữ
liệu mới khơng được phép nhập vào và dữ liệu cũ (đã được đưa vào trước đĩ) vẫn
cịn ở ngõ ra của nĩ.
/OE: Output Enable, chân cho phép xuất dữ liệu. Khi chân này ở
mức logic thấp thì dữ liệu ở ngõ ra của Flip-Flop (bên trong IC) được đưa ra
ngồi. Ngược lại, khi chân này ở mức logic cao thì dữ liệu khơng được phép đưa
ra ngồi và tất cả cá ngõ ra đều ở trạng thái tổng trở cao.
D1 – D8: Data Inputs, các ngõ vào của IC. Dữ liệu được đưa vào IC
thơng qua các ngõ này.
O1 – O8: Out Puts, các ngõ ra tương ứng với các ngõ vào trên. Cụ
thể là ngõ ra O1 tương ứng với ngõ vào D1, O2 tương ứng với D2, O8 tương
ứng với D8.
Sơ đồ khối:
Hình 3.6: Sơ đồ khối 74HC573
LATCH
ENABLE
LE
D
G
D
D1
D
G G
O O O
D2 D8
O1 O2 O8
OUTPUT
ENABLE
OE
Đặc điểm của vi mạch:
Tốc độ truyền tín hiệu từ đầu vào sang đầu ra chỉ cĩ 18ns.
Phạm vi điện áp hoạt động: 2 – 5.5V.
Dịng điện đầu vào thấp nhất: 1uA.
Nguyên tắc hoạt động của IC 74573:
Dựa vào bảng trạng thái ta nhận thấy dữ liệu mới chỉ được phép truyền qua
IC khi cả hai chân điều khiển (LE và OE) ở mức logic thích hợp: LE ở mức logic
cao, OE ở mức logic thấp. Khi cả hai chân điều khiển ở trạng thái này thì dữ liệu ở
ngõ vào sẽ được đưa vào bên trong IC (truyền qua các Flip-Flop) và đưa thẳng ra
ngồi thơng qua các cổng đệm ngõ ra 3 trạng thái.
Khi chân OE ở mức logic thấp (cho phép) mà chân LE cũng ở mức logic
thấp (cấm) thì dữ liệu ở ngõ ra của IC là dữ liệu cũ (vừa mới được truyền qua IC).
Lúc này dữ liệu mới ở ngõ vào sẽ khơng được phép nhập vào IC.
Ngược lại, khi chân OE ở mức logic cao thì ngõ ra của IC sẽ ở trạng thái
tổng trở cao, bất chấp trạng thái logic của các ngõ vào cịn lại. Mặc dù ngõ ra ở
trạng thái tổng trở cao nhưng dữ liệu ở ngõ vào (nếu cĩ) vẫn được phép đưa vào
IC (đưa đến ngõ ra của các Flip-Flop ở bên trong IC). Dữ liệu này sẽ được phép
truyền đến ngõ ra khi chân OE về lại mức logic thấp.
Khi cả hai chân điều khiển đều ở trạng thái cấm (chân OE ở mức logic cao,
chân LE ở mức logic thấp) thì ngõ ra sẽ ở trạng thái tổng trở cao và ngõ vào sẽ
khơng được phép nhập dữ liệu mớivào. Như vậy, ở trạng thái này thì IC hồn tồn
khơng giao tiếp với bất kỳ linh kiện nào khác ở cả ngõ vào và ngõ ra.
Output Enable
(OE)
Latch Enable
(LE)
D
Output Q
L
L
L
H
H
L
H
L
X
H
L
Q0
H X X Z
Bảng 3.13:Trạng thái hoạt động74HC573
L:Trạng thái thấp Z: Trở kháng mức cao
H:Trạng thái cao Q0: Điều kiện trước
LED MA TRẬN:
Led ma trận dùng để chỉ thị, hiển thị, làm nguồn sáng trong các máy in
lazer, ngồi ra cịn được sử dụng trong các hệ thống thơng tin dựa vào quang sợi.
Led ma trận được coi là một trong nguồn quang điện phổ biến nhất.
Về cấu tạo led ma trận gồm nhiều led đơn ghép lại. Cĩ hai loại: Anode
chung ( cột Anode, hàng Catode) và Catode chung (cột Catode, hàng Anode), đa
dạng về màu sắc..
Hình 3.17 : Hình dạng thực tế
Hình 3.18: Cấu trúc bên trong của led ma trận 8x8
Dịng làm việc khoảng 10mA, và Điện áp làm việc khoảng 2,6V.
Điều quan trọng khi sử dụng led là luơn mắc nối tiếp với một điện trở.
RT =
V V
I
B D
F
VB : Điện thế nguồn
VD : Điện thế ngưỡng của led
IF : Dịng điện qua led
Điện áp ngưỡng của led cĩ các trị số sau :
đỏ 1,6 ... 2V
cam 2,2 ... 3V
xanh lá cây 2,7 ... 3,2V
vàng 2,4 ... 3,2V
xang da trời 3,0 ... 5V
CHƯƠNG 4
CÁC PHƯƠNG PHÁP
HIỂN THỊ LED MA TRẬN
Led ma trận được coi là một trong các nguồn quang điện tử phổ biến nhất. Nĩ
khơng đắt, tiêu thụ ít cơng suất, và dễ dàng thích hợp cho các mạch điện tử.
Led ma trận hiển thị bao gồm nhiều led ma trận nhỏ kết hợp lại tạo thành một
ma trận gồm m cột và n hàng (led ma trận m×n). Led ma trận 8×8 là led ma trận gồm
cĩ 8 cột và 8 hàng. Led ma trận này cĩ hai loại: loại thứ nhất là cathode chung (cột
cathode, hàng anode), loại thứ hai là anode chung (cột anode, hàng cathode). Sau đây
là các phương pháp hiển thị ma trận led.
4.1 PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG IC CHỐT:
Hiển thị led ma trận bằng phương pháp chốt giúp cho người lập trình thay đổi
cách thức quét và hiển thị một cách linh hoạt và nhanh chĩng.
matrix_3mau
12 9 6 3 13 16 19 22
11852141720231074115182124
c1 c2 c3 c4 c5 c6 c7 c8
hx
1
hx
2
hx
3
hx
4
hx
5
hx
6
hx
7
hx
8
hd
1
hd
2
hd
3
hd
4
hd
5
hd
6
hd
7
hd
8
DM74LS573
2 3 4 5 6 7 8 9 11 1
19 18 17 16 15 14 13 12
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
LE O
E
Q
0
Q
1
Q
2
Q
3
Q
4
Q
5
Q
6
Q
7
DM74LS573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
U7
DM74LS573
23456789111
1918171615141312
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
LEO
E
Q
0
Q
1
Q
2
Q
3
Q
4
Q
5
Q
6
Q
7
Hình 4.1: Giao tiếp led ma trận dùng phương pháp chốt.
4.1.1. CHỐT HÀNG:
Chốt hàng là phương pháp trong một khoảng thời gian xác định chỉ cĩ một cột
được tích cực, dữ liệu được đưa ra 8 hàng rồi chốt lại, dữ liệu được hiển thị trên màn
hình led ma trận. Sau đĩ dữ liệu kế tiếp được đưa ra 8 hàng và được chốt lại bởi một
IC chốt khác, trong khi đĩ dữ liệu trước đĩ vẫn hiện diện tại ngõ ra của IC chốt. Như
vậy dữ liệu của hàng nào được đưa ra đúng địa chỉ của hàng đĩ trong khi các dữ liệu
của các hàng khác vẫn hiện diện trên hàng mà khơng bị mất đi. Việc thực hiện chốt
hàng được thể hiện ở lưu đồ như sau:
Hình 4.2: Qui trình hiển thị chốt hàng.
4.1.2 CHỐT CỘT:
Chốt cột là phương pháp trong một khoảng thời gian xác định chỉ cĩ một hàng
được tích cực, dữ liệu được đưa ra 8 cột rồi chốt lại, dữ liệu được hiển thị trên màn
hình led ma trận. Sau đĩ dữ liệu được đưa ra 8 cột kế tiếp và được chốt lại bởi một IC
chốt khác, trong khi đĩ dữ liệu trước đĩ vẫn hiện diện tại ngõ ra của IC chốt (dữ liệu
vẫn hiện diện tại các cột). Như vậy dữ liệu của cột nào được đưa ra đúng địa chỉ của
cột đĩ trong khi các dữ liệu của các cột khác vẫn hiện diện trên cột mà khơng bị mất
đi. Việc thực hiện chốt cột được thể hiện ở lưu đồ như sau:
Hình 4.3: Qui trình hiển thị chốt cột..
Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng IC chốt:
Ưu điểm:
Mở rộng số hàng, số cột của bảng quang báo.
Dữ liệu được truyền đi nhanh.
Chuyển đổi cách quét hàng, cột một cách linh hoạt.
Nhược điểm:
Tạo bảng mã khĩ khăn.
Khĩ khăn trong việc lập trình xuất dữ liệu ra.
4.2 PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG THANH GHI DỊCH:
4.2.1 QUÉT HÀNG:
a) Giới thiệu chung về phương pháp quét hàng.
Quét hàng là phương pháp mà trong một khoảng thời gian xác định chỉ cho một
hàng được tích cực hiển thị trong khi các hàng khác đều tắt, các hàng được quét (tích
cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều lần với tốc độ >
24hình /1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên màn hình led ma trận.
Vcc
Vcc
H7
R26
27
H
8
Vcc
R42 3K3
R16
1K
R2
27
R15
3K3
Q8
TIP42
CTRL_B15
R35
27Q7
C1815
R28
1K
R7
1K
R41
27
R1
1K
H
5
Q28
TIP42
CTRL_B7
R47
27
R19
1K
H15
R44
27
R27 3K3
Q23
C1815
R24 3K3
Q18
TIP42
H4
R20
27
R22
1K
H
6
H
3
CTRL_B8
R18 3K3
R17
27
H6
H
2
Q21
C1815
R6
3K3
Q32
TIP42
R21 3K3
CTRL_B12
CTRL_B14
CTRL_B9
Q10
TIP42
Vcc
U7
matrix_3mau
12 9 6 3 13 16 19 22
11852141720231074115182124
c1 c2 c3 c4 c5 c6 c7 c8
hx
1
hx
2
hx
3
hx
4
hx
5
hx
6
hx
7
hx
8
hd
1
hd
2
hd
3
hd
4
hd
5
hd
6
hd
7
hd
8
Q17
C1815
R46
1K
U1
TPIC6B595/SO
3
18
121398
456714151617
S
D
I
S
D
O
R
C
LK
S
R
C
LK
GS
R
C
LR
D
R
A
IN
0
D
R
A
IN
1
D
R
A
IN
2
D
R
A
IN
3
D
R
A
IN
4
D
R
A
IN
5
D
R
A
IN
6
D
R
A
IN
7
R13
1K
R34
1K
CTRL_B3
H9
H3
Q31
C1815
Q11
C1815
CTRL_B13
Q26
TIP42
H14
Q4
TIP42
Vcc
Vcc
Vcc
Q9
C1815
R9
3K3
H1
Q16
TIP42
Q27
C1815
H10
Q25
C1815
Q22
TIP42
R23
27
R14
27
R45 3K3
Vcc
R11
27
Q29
C1815
H
1
Q5
C1815
Vcc
CTRL_B6
R30 3K3
Vcc
R36 3K3
Vcc
Q13
C1815
Q6
TIP42
R32
27
R37
1K
R8
27
U2TPIC6B595/SO
3
18
12 13 9 8
4 5 6 7 14 15 16 17
S
D
I
S
D
O
R
C
LK
S
R
C
LK
G S
R
C
LR
D
R
A
IN
0
D
R
A
IN
1
D
R
A
IN
2
D
R
A
IN
3
D
R
A
IN
4
D
R
A
IN
5
D
R
A
IN
6
D
R
A
IN
7
Q15
C1815
R33 3K3
Vcc
H2
Q30
TIP42
R39 3K3
H
7
Q20
TIP42
CTRL_B11
R29
27
R12
3K3
R38
27
R31
1K
Vcc
Q19
C1815
H16
H13
Q1
C1815
CTRL_B2
H5
R4
1K
Q24
TIP42
R48 3K3
Q2
TIP42
R40
1K
CTRL_B5
R5
27
Vcc
H
4
H12
R3
3K3
Q14
TIP42
Vcc
Q3
C1815
R25
1K
CTRL_B4
CTRL_B1
Vcc
R10
1K
Q12
TIP42
H11
R43
1K
CTRL_B10
CTRL_B16
Hình 4.4: Sơ đồ mạch thanh ghi.
b) Quá trình thực hiện quét hàng:
Quét hàng sử dụng thanh ghi dịch là tương đối phức tạp cho người lập trình
trong việc đưa dữ liệu ra cột. Dữ liệu lần lượt được đưa vào chân Datain của thanh ghi
dịch sau đĩ tác động xung clock dữ liệu đươc dịch đi.
VD: Đưa dữ liệu ra 8 cột được diễn ra như sau:
Hình 4.5: Qui trình đưa dữ liệu ra 8 cột cho led ma trận.
Dữ liệu của hàng thứ nhất được đưa ra cột sau đĩ tích cực hàng thứ nhất như
vây dữ liệu của hàng thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ liệu
của hàng thứ hai được đưa ra cột sau đĩ tích cực hàng thứ hai lúc này dữ liệu của hàng
thứ hai được hiển thị trên màn hình led ma trận, cứ như vậy cho đến dữ liệu của hàng
cuối cùng được đưa ra cột sau đĩ tích cực hàng cuối cùng. Cứ như thế quá trình trên
được lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được một hình ảnh liên tục
hiển thị trên màn hình led ma trận.
Ví dụ:
Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức 1, cột được
tích cực ở mức 0).
Hình 4.6: Hiển thị chữ B trên led ma trận dùng phương pháp quét hàng.
Hàng 1
Hàng 8
Cột 8
Cột 1
Dữ liệu thứ nhất cĩ giá trị: 11111111 được đưa ra cột tích cực hàng thứ nhất
(điều khiển hàng thứ nhất cho ra giá trị là 1); dữ liệu thứ hai cĩ giá trị: 00001111 đưa
ra cột, tích cực hàng thứ hai; dữ liệu thứ 3 cĩ giá trị: 01110111 đưa ra cột, tích cực
hàng thứ 3; dữ liệu thứ 4 cĩ giá trị: 01110111 đưa ra cột, tích cực hàng thứ 4; tiếp tục
đữ liệu hàng thứ 5 cĩ giá trị: 00001111 đưa ra cột, tích cực hàng thứ 5; kế tiếp là dữ
liệu của hàng thứ 6 cĩ giá trị: 01110111 được đưa ra cột, tích cực hàng thứ 6 ; dữ liệu
của hàng thứ 7 cĩ giá trị: 01110111 đưa ra cột, tích cực hàng thứ 7; dữ liệu thứ 8 cĩ
giá trị: 00001111 đưa ra cột, tích cực hàng thứ 8. Như vậy tồn bộ dữ liệu của chữ B
đã được đưa ra hiển thị trên màn hình led ma trận. Quá trình trên được diễn ra rất
nhanh > 24lần/ 1s nên chúng ta cĩ cảm giác nĩ diễn ra một cách đồng thời nhờ đĩ mà
chúng ta quan sát được trên màn hình led ma trậnlà một chữ B liên tục.
4.2.2 Quét cột:
a) Giới thiệu chung về phương pháp quét cột.
Phương pháp quét cột là phương pháp mà trong một khoảng thời gian xác định
chỉ cho một cột được tích cực hiển thị trong khi các cột khác đều tắt, các cột được quét
(tích cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều lần với tốc độ
> 24 hình/1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên màn hình led ma trận.
b) Quá trình thực hiện quét cột.
Dữ liệu của cột thứ nhất được đưa ra hàng sau đĩ tích cực cột thứ nhất như vây
dữ liệu của cột thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ liệu của
cột thứ hai được đưa ra hàng sau đĩ tích cực cột thứ hai lúc này dữ liệu của hàng thứ
hai được hiển thị trên man hình led ma trận, cứ như vậy cho đến dữ liệu của cột cuối
cùng được đưa ra hàng sau đĩ tích cực cột cuối cùng. Cứ như thế quá trình trên được
lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được một hình ảnh liên tục hiển thị
trên màn hình led ma trận.
Ví dụ:
Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức1, cột được
tích cực ở mức 0).
Hình 4.7: Hiển thị chữ B trên led ma trận dùng phương pháp quét cột.
Hàng 1
Hàng 8
Cột 8
Cột 1
Dữ liệu thứ nhất cĩ gía trị: 11111110 được đưa ra hàng, tích cực cột thứ nhất
(điều khiển cột thứ nhất cho ra giá trị là 0); dữ liệu thứ hai cĩ giá trị: 10010010 đưa ra
hàng, tích cực cột thứ hai; dữ liệu thứ 3 cĩ giá trị:10010010 đưa ra hàng, tích cực cột
thứ 3; dữ liệu thứ 4 cĩ giá trị: 10010010 đưa ra hàng, tích cực cột thứ 4; tiếp tục đữ
liệu hàng thứ 5 cĩ giá trị: 01101100 đưa ra hàng, tích cực cột thứ 5; kế tiếp là dữ liệu
của cột thứ 6 cĩ giá trị: 00000000 được đưa ra hang, tích cực cơt thứ 6 ; dữ liệu của cột
thứ 7 cĩ giá trị: 00000000 đưa ra hàng, tích cực cột thứ 7; dữ liệu thứ 8 cĩ giá trị:
00000000 đưa ra hàng, tích cực cột thứ 8. Như vậy tồn bộ dữ liệu của chữ B đã được
đưa ra hiển thị trên màn hình led ma trận. Quá trình trên được diễn ra rất nhanh >
24lần/ 1s nên chúng ta cĩ cảm giác nĩ diễn ra một cách đồng thời, nhờ đĩ chúng ta
quan sát được trên màn hình led ma trận là một chữ B liên tục.
Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng thanh ghi dịch:
Ưu điểm:
Tiết kiệm đường truyền, hiệu quả kinh tế.
Tiết kiệm chân PORT.
Truyền dữ liệu đi xa hơn.
Mở rộng bảng ma trận lên một cách dễ dàng.
Lập trình dễ dàng trong phương pháp quét cột.
Nhược điểm:
Tốn thời gian để thực hiện việc truyền dữ liệu đến các cột.
Chuyển đổi khơng linh hoạt bằng sử dụng phương pháp chốt.
Lập trình khĩ khăn hơn khi sử dụng phương pháp quét hàng.
CHƯƠNG 5
SƠ ĐỒ KHỐI VÀ CHỨC NĂNG
TỪNG KHỐI
5.1 SƠ ĐỒ KHỐI HỆ THỐNG:
Hình 5.1: Sơ đồ khối của hệ thống.
5.2 Ý NGHĨA TỪNG KHỐI:
5.2.1 Khối điều khiển:
Khối điều khiển: Được thiết kế bởi PIC 16F877A cĩ nhiệm vụ xử lý tất cả các
dữ liệu của chương trình. Điều khiển dữ liệu hiển thị. Điều khiển xuất nhập dữ liệu.
Điều khiển truy xuất dữ liệu và xử lý sau đĩ truyền đến các khối: cơng suất, chốt và
đệm để hiển thị trên Led ma trận.
VCC
b6
D8
DIODE
SW1
SW_PB_SPST
b8
P1
5
9
4
8
3
7
2
6
1
R3
R
C14
33P
Y1
12MHz
RXV
b1
RXMAX
VCC
C12
CAP
RXMAX
0
TXMAX
0
b5
C13
33P
b3
R10
1k
TXV
C8
CAP
b7
0
J13
CON9
1
2
3
4
5
6
7
8
9
C5
CAP
b4
RXV
TXV
VCC
U14
MAX232
1
3
4
5
16
15
2
6
12
9
11
10
13
8
14
7
C1+
C1-
C2+
C2-
VC
C
G
N
DV+
V-
R1OUT
R2OUT
T1IN
T2IN
R1IN
R2IN
T1OUT
T2OUT
b2
C7
CAP
VCC
C6
CAP
C4
104
TXMAX
U13
PIC16F877A
11
12
14
32
13
31
2
3
1
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
Vd
d
G
N
DOSC2/CLKOUT
M
C
LR
/V
PP
OSC1/CLK
GND
RA0/ANO
RA1/AN1
VDD/MCLR
RA2/AN2
RA3/AN3
RA4/TOCK/C1OUT
RA5/AN4
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6/BGC
RB7/BGD
RC0/T1OSO/
RC1/T1OSI
RC2/CCP1
RC3/SCK/SCL
RC4/SDA/SDI
RC5/SD0
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
Hình 5.3: Sơ đồ kết nối mạch VĐK.
5.2.2 Khối cơng suất:
Nâng cơng suất đủ lớn để cung cấp cho khối hiển thị.
Nếu ta dùng các IC để thúc cơng suất thì ta sẽ cĩ dịng ngõ ra cố định, khi muốn
dùng tải cơng suất lớn hơn thì ta khĩ cĩ thể sửa đổi lại mạch cơng suất được. Và một
điều nữa là theo tính tốn, dịng điện ở mỗi hàng cĩ thể lên tới vài trăm mA , giá trị
này cao hơn nhiều so với dịng ngõ cực đại của IC .Do đĩ cần phải thiết kế mạch để
thúc cơng suất cho tải.
Cịn nhiều cách khác nữa để thúc tải như dùng SCR, Triac, Opto, Relay...Các
cách này thường được dùng cho các tải cĩ cơng suất lớn ở ngồi trời.
Do tải ở đây là bảng cơng suất khơng lớn lắm nên ta chỉ cần dùng Transistor
cơng suất trung bình.
Về phương diện cơng suất chính là việc nâng dịng cho dữ liệu hàng và cột
nhằm đảm bảo yêu cầu về dịng qua led ma trận, vì phần cứng bao gồm 6 led ma trận,
mỗi led ma trận là một khối bao gồm 64 led đơn nên ta chỉ sử dụng C1815, đảm bảo
tính ổn định và cung cấp đủ dịng cho tải.
Như vậy, cứ mỗi cột ta phải dung một mạch đệm dịng.
D1
LED
Q1
1R1001
R3
R
VCC
R4
R
Hình 5.4: Sơ đồ nguyên lý mạch đệm dịng.
5.2.3 Khối hiển thị:
Cĩ nhiệm vụ dịch chuyển dữ liệu ra các cột, đệm tăng dịng đủ lớn để điều
khiển hiển thị các yêu cầu của người sử dụng.
Khối hiển thị làm nhiệm vụ dịch dữ liệu từ vi điều khiển, chốt dữ liệu, đệm dữ
liệu đủ dịng và hiển thị trên Led ma trận .
b8
p5
p21
U9
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
p6
p18
p3
LED 5
b8
b6
b6
U7
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
p17
p2
p22
p20
LED 2
b7
b6
p13
p10
b1
p7
p14
p1
RN3
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
RN1
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
b3
b4
b3 p11
p8
p24
RN2
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
p12
U8
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
p16
p15
b5
b7
b2
LED 3
p19
b1
b8
b4
b3
b1
b7
b4
LED 6
b2
b2
b5
p9
p4 LED 1
LED 4
p23
b5
Hình 5.5: Sơ đồ mạch các IC chốt và hiển thị.
Do nhĩm thực hiện đồ án quyết định chọn phương pháp hiển thị bằng IC chốt và
quét hàng nên trong khoảng thời gian xác định một cột chỉ phải chịu dịng của một
điểm ảnh, dịng ra cực đại tại một ngõ ra là 500mA, với những tính năng trên nhĩm
thực hiện quyết định chọn IC 74HC573 để làm thanh ghi dịch và dung BJT C1815
đệm dịng ở cột
5.2.4 Khối nguồn:
Trong một mạch điện tử thì bộ nguồn cĩ vai trị rất quan trọng, nĩ quyết định
sự hoạt động hay ngưng hoạt động của mạch. Một bộ nguồn khơng tốt sẽ làm cho
mạch hoạt động kém ổn định và dể làm hỏng linh kiện. Vì vậy bộ nguồn ổn áp tốt sẽ
rất cần thiết cho các mạch điện tử ( mạch dùng các IC số).
Chức năng của mọi ổn áp DC là biến đổi điện áp vào DC chưa ổn định thành
điện áp ra DC ổn định và giá trị điện áp này phải đúng với giá trị khi tính tốn lý
thuyết. Điện áp này phải được duy trì liên tục và khơng thay đổi khi điện áp ngõ vào
hoặc dịng tải thay đổi (ở một giới hạn cho phép của mạch). Để thực hiện điều này thì
một nguồn ổn áp thường gồm các phần sau:
Hình 5.6: Sơ đồ khối của khối nguồn.
Khối chỉnh lưu và lọc: cĩ nhiệm vụ đổi điện áp xoay chiều thành điện áp một
chiều và lọc.
Khối cơng suất: cung cấp dịng chính cho tải.
Khối lấy mẫu: lấy một điện áp từ ngõ ra đưa về so sánh với Vref để điều khiển ổn
định điện áp.
CHƯƠNG 6
TÍNH TỐN
6.1 NGUỒN ĐIỀU KHIỂN:
Sơ đồ mạch:
C4
10uf /25V
VCC
C2
10uF/25V
VCC
D2
C3
104
C1
1000uf /25V
J5
CON2
1
2
R2
1K
- +
D1
RS403L
2
1
3
4
U1 LM7805
1 3
2
IN OUT
G
N
D
Hình 6.1: Sơ đồ mạch nguồn ổn áp 5V
Thiết kế:
Để an tồn IC 7805 cung cấp dịng cho tải là: 100mA - 1A
Điện áp ngõ vào tối thiểu phải cao hơn điện áp ngõ ra 2V để mạch hoạt động
tốt. Trong đĩ C1, C2 dùng để lọc (nguồn DC chưa ổn định) để ổn định điện áp ngõ
vào, C3 dùng để lọc nhiễu cao tần, C4 làm cho áp được phẳng hơn.
6.2. MẠCH NGUỒN RESET:
Mạch dùng để thiết lập lại trạng thái ban đầu cho hệ thống, gọi tắt là reset hệ
thống. 16f877A được reset bằng cách giữ chân MCLR ở mức thấp. MCLR cĩ thể được
tác động bằng tay hoặc được tác động khi cấp nguồn (reset máy). Dưới đây là 2 dạng
mạch reset:
Sơ đồ mạch:
R2
R
MCLR
R1
R
VCC
C2
C
SW1
D1
DIODE
R2
R
MCLR
R1
R
VCC
C2
C
Hình 6.2: mach reset tự động -- mạch reset bằng tay
Giải thích mạch: Khi vừa cấp nguồn, điện áp trên tụ là 0V ngõ ra đưa đến chân
reset ở mức cao, PIC bắt đầu hoạt động ở chế độ này. Sau đĩ tụ nạp điện do đĩ chân
reset của PIC luơn ở mức cao, PIC được phép hoạt động. Hoặc khi mạch đang hoạt
động mà nhấn nút SW làm IC ngưng hoạt động (do tụ phĩng điện), PIC chỉ hoạt động
trở lại khi nút nhấn SW được thả ra và tụ nạp đến một giá trị nào đĩ. để chân reset của
PIC khơng cịn bị tác động.
Tính tốn: nguồn cung cấp cho mạch là 5V nên các IC thuộc họ CMOS sẽ hiểu
mức logic cao khi điện áp các chân ngõ vào là 3.5V, mức thấp là 1V. Do đĩ, để IC
thốt khỏi trạng thái reset (mức thấp) thì điện áp ở chân reset (điện áp trên R2) phải ≤
1V
Ta cĩ: VCC = 5V mà Vcc= VC + VR = VC + 1V
VC = 4V ; ( chọn VR=1V khi IC thốt khỏi trạng thái Reset )
Giả sử lúc chưa cĩ điện áp cung cấp, Vcc = 0V, Vc = 0V.
Khi cĩ điện áp Vcc =5V, tụ được nạp điện với phương trình nạp:
)1( RC
t
CCC eVV
với: = RC: thời hằng nạp của tụ.
t: thời gian tụ nạp đầy.
)1(54 RC
t
e
eRC
t
= 1 -
5
4 = 0.2
RC
t = 1,6
Chọn t = 0.13 s RC = 0.0812 s
Chọn C = 10 uF R =
C
= 8.12 K
Vậy, ta chọn R2 = 8.2 K .
Tính R1: Nhấn nút SW , tụ bắt đầu xã điện: VCC = 5V, (3V>VRESET =VR2)
Ta cĩ: VRESET = (VCC /(R1 + R2) x R1
R1 = (VCC .R2 – VRESET .R2)/VRESET = 10K
6.3. MẠCH ĐỆM DỊNG:
Sơ đồ mạch:
R1
R
R2
R
VCC
Q1
C1815
5V
D1
LED
Hình 6.3: Mạch đệm dịng
Về phương diện cơng suất chính là việc nâng dịng cho dữ liệu hàng và cột
nhằm đảm bảo yêu cầu về dịng qua led ma trận.
Đồ án dùng quang báo 8x48 ( tức 8 hàng, 48 cột), nguồn dương đưa vào cột nên
cĩ 48 mạch kéo dịng.
Tính tốn:
Tính R2
Khi Q1 dẫn bão hịa ta cĩ: Ib = k min
1I c ;( mà Ic1 Ib2)
Vì mach đệm dịng được thiết kế trên cột và quét theo hàng nên khi quét mỗi
cột chỉ sang một led.
Để mỗi led đơn của led ma trận sáng bình thường trong quá trình quét led ta
phân cực như sau:
Ic = 20mA
VLed = 2V
Trong đĩ: IR: dịng qua led ma trận
VLed : áp định mức đặt lên mỗi led
Ib = 3x(20/80) = 0.75(mA)
R2 = (Vcc – Vbe –Vled)/Ib= (5 – 0,8 – 2 )/0.75 =3 kΩ
Tính R1:
Khi Transistor C1815 dẫn bão hịa thì:
R1 = (Vcc – Vce – Vled )/Ic
= (5 – 0,2 – 2)/20
= 140 Ω
Chọn: R1 = 220 Ω, R2 = 3,3kΩ
CHƯƠNG 7
SƠ ĐỒ MẠCH VÀ NGUYÊN LÝ
HOẠT ĐỘNG
7.1 SƠ ĐỒ NGUYÊN LÝ
7.2 NGUYÊN LÝ HOẠT ĐỘNG
Khi khởi động nguồn quang báo, đầu tiên vi điều khiển sẽ cập nhật cấu hình
của quang báo trong đĩ cĩ font chữ, dữ liệu phơng hình, dữ liệu hiển thị trạng thái
điều khiển, trạng thái của phần lưu giữ liệu, cấu hình chạy chữ
Do khởi động mặc định là chữ chạy trước nên sau khi cập nhật cấu hình quang
báo xong, chương trình sẽ dựa vào cấu hình chạy chữ mà thực hiện.
Nếu khơng cĩ sự kiện nào phát sinh thì quang báo sẽ chạy vịng lặp hiển thị là
vơ tận.
Việc hiển thị trên bảng led là động. Tức là trong một thời điểm chỉ cĩ một
hàng được sáng. Nhưng khi quét nhanh ở tần số 50Hz trở lên thì mắt thường coi như
là sáng liên tục trên tồn bảng.
Kỹ thuật quét led :
Là cấp tín hiệu điều khiển theo dạng xung theo kiểu quét cho các hàng cần
hiển thị tần số quét nhỏ nhất cho mỗi chu kỳ cần khoảng 25Hz (40ms) nhằm bảo đảm
cho mắt thấy các led sáng đều khơng nhấp nháy.
Dữ liệu phơng chữ, hình được đổ qua cột.
Khi quét hết 48 cột thì được một hình.
Khi chạy chữ chỉ cần hiển thị một hình khác đã được dịch đi một cột (hoặc
hàng).
CHƯƠNG 8
LƯU ĐỒ GIẢI THUẬT VÀ
CHƯƠNG TRÌNH HOẠT ĐỘNG
Ý TƯỞNG THIẾT KẾ PHẦN MỀM:
Bảng quang báo chạy text với font tiếng Việt và tiếng Anh, chạy từ trái sang
phải, từ phải sang trái, chạy từ trên xuống dưới, từ dưới lên trên.
Tạo font chữ và giải mã.
Vi điều khiển lưu vào vùng nhớ trong ROM sau đĩ vi điều khiển lấy dữ liệu
điều khiển hiển thị ra màn hình led ma trận thơng qua mạch cơng suất và mạch hiển
thị.
8.1. LƯU ĐỒ GIẢI THUẬT.
1 .Quy trình hoạt động của hệ thống:
Hình 8.1 Quy trình hoạt động của hệ thống
2.Lưu đồ chương trình chính:
Hình 8.2: Lưu đồ chương trình chính.
3. Lưu đồ chương trình: chạy_chữ.
Hình 8.5: Lưu đồ chương trình chạy_chữ.
8.2. CHƯƠNG TRÌNH HOẠT ĐỘNG.
#include
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
//khai bao mang
int const
quet[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b11011
111,0b10111111,0b01111111};
int const mang0[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,128,190,72,72,72,72,136,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,156,162,130,186,34,28,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,145,81,95,81,81,145,
0,0,0,0,152,164,132,152,160,36,24,
0,0,0,0,0,2,2,2,2,2,94,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,0,0,0
};
int const mang1[]={0,0,0,0,0,0,0,0,
0,128,142,82,87,82,82,142,
0,0,0,17,10,251,36,36,36,36,35,
0,0,0,0,206,81,65,225,65,81,206,
0,0,0,0,0,40,40,232,40,37,34,
0,0,0,0,0,147,148,144,151,148,99,
0,0,0,0,0,147,180,212,148,148,147,
0,0,0,0,232,136,136,136,136,133,130,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,195,36,32,39,36,203,
0,0,0,0,0,0,0,0
};
int const mang2[]={0,0,0,0,0,0,0,0,
5,10,131,68,68,196,68,67,
0,0,0,0,0,68,76,84,100,68,68,
0,0,0,0,243,20,20,125,20,20,243,
0,0,0,0,0,122,138,139,138,138,122,
0,0,0,0,0,162,162,156,136,136,136,
0,0,0,0,0,28,34,2,58,34,28,
0,0,0,0,139,136,136,248,136,136,136,
0,0,0,0,0,227,20,16,23,20,227,
0,0,0,0,0,137,138,248,136,138,137,
0,0,0,0,0,0,0,0
};
int const mang3[]={0,0,0,0,0,0,0,0,
4,2,137,154,170,203,138,138,
0,0,0,0,0,78,81,193,89,81,78,
0,0,0,0,62,9,9,9,9,9,8,
0,0,0,0,0,0,2,0,0,2,0 ,
0,0,0,0,0,151,176,211,144,144,151,
0,0,0,0,0,78,209,81,95,81,81,
0,0,0,0,0,4,0,0,0,4,0,
0,0,0,0,0,56,69,5,5,69,56,
0,0,0,0,0,242,66,66,66,66,66,
0,0,0,0,0,0,0,0
};
int const mang4[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,64,160,234,42,235,42,42,234,64,
0,0,0,28,162,162,162,162,162,28,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,124,16,16,16,16,16,
0,0,0,0,0,20,20,245,22,20,20,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,34,162,190,162,162,162,
0,0,0,0,0,157,162,162,190,162,162,
0,0,0,0,0,0,0,0
};
int const mang5[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,29,36,36,28,4,5,
0,0,0,0,7,8,0,7,8,8,7,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,81,81,95,81,81,81,
0,0,0,0,0,1,1,1,1,1,1 ,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,147,180,212,151,148,148 ,
0,0,0,0,0,8,13,10,8,8,8 ,
0,0,0,0,0,0,0,0
};
void chot0()
{
output_high(pin_c0);
output_low(pin_c0);
}
void chot1()
{
output_high(pin_c1);
output_low(pin_c1);
}
void chot2()
{
output_high(pin_c2);
output_low(pin_c2);
}
void chot3()
{
output_high(pin_c3);
output_low(pin_c3);
}
void chot4()
{
output_high(pin_c4);
output_low(pin_c4);
}
void chot5()
{
output_high(pin_c5);
output_low(pin_c5);
}
void main(void)
{
int m,i,a;
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
while(1)
{
for(m=0;m<=20;m++)
{
for(i=0;i<=7;i++)
{
output_b(mang0[a+i]);
chot0();
output_b(mang1[a+i]);
chot1();
output_b(mang2[a+i]);
chot2();
output_b(mang3[a+i]);
chot3();
output_b(mang4[a+i]);
chot4();
output_b(mang5[a+i]);
chot5();
output_d(quet[i]);
delay_ms(2);
output_b(0x00);
chot0();
chot1();
chot2();
chot3();
chot4();
chot5();
output_d(0xff);
delay_us(2);
}
}
a++;
if(a==104)
a=0;
}
}
CHƯƠNG 9
TỔNG KẾT
Sau 4 tuần nghiên cứu và thực hiện với nhiều nỗ lực và cố gắng của nhĩm thực
hiện đề tài cùng với sự hướng dẫn tận tình của cơ Bùi Thị Kim Chi, quyển đồ án này
đã hồn thành với những nội dung như sau:
9.1. CÁC VẤN ĐỀ ĐÃ ĐƯỢC GIẢI QUYẾT TRONG ĐỒ ÁN:
Các vấn đề đã nghiên cứu:
Nghiên cứu vi điều khiển PIC 16F877A
Nghiên cứu cách quét led ma trận.
Thiết kế và thi cơng mơ hình một bảng quang báo.
Nghiên cứu ngơn ngữ lập trình C.
Các vấn đề đã thực hiện:
Lập trình điều khiển vi điều khiển PIC 16F877A bằng ngơn ngữ C.
Lập trình điều khiển led ma trận theo cách quét hàng.
Kết quả thực nghiệm và đánh giá mơ hình:
Thời gian nghiên cứu và thi cơng khơng nhiều nên phần thiết kế vẫn chưa tối ưu
về tính thẩm mỹ và hiệu quả kinh tế nhưng vẫn đảm bảo mơ hình họat động tốt. Độ
sáng của quang báo là cĩ thể chấp nhận được, nội dung cần hiển thị và cĩ khả năng
thay đổi được .
Hình 9.8: Bảng quang báo 8x48 điểm ảnh.
8.2. ƯU VÀ NHƯỢC ĐIỂM CỦA THI CƠNG MẠCH:
Ưu Điểm:
Chữ hiển thị rõ ràng, tốc độ di chuyển vừa phải.
Mạch hoạt động ổn định trong thời gian dài.
Nhược Điểm:
Khi muốn thay đổi kiểu hiển thị cần phải nạp lại chương trình tức tác
động trực tiếp trên board.
Các phương hướng phát triển đề tài:
Tăng kích thước của mạch quang báo cho phù hợp với thực tế sử dụng.
Sử dụng nhiều font chữ để làm phong phú hơn bảng quang báo.
Giao tiếp với máy tính .
Tạo bảng led ma trận bằng led out door để đáp ứng nhu cầu sử dụng.
KẾT LUẬN:
Đề tài: “QUANG BÁO HIỂN THỊ LED MA TRẬN”. Đề tài đã trình bày được
nguyên tắc hoạt động cơ bản của một mạch quang báo, giới thiệu về cách sử dụng
cũng như sơ đồ chân, sơ đồ nội bộ của các IC số dùng trong mạch.
Nhĩm thực hiện đề tài xin chân thành cảm ơn quý thầy cơ cùng các bạn sinh
viên, đã đĩng gĩp rất nhiều ý kiến, cơng sức quý báu trong quá trình nhĩm thực hiện
đề tài này.
Đặc biệt là cơ NGUYỄN THỊ HỒNG ÁNH, đã nhiệt tình hướng dẫn, chỉ bảo
những kinh nghiệm, kiến thức thực tế để đề tài được hồn thành nhanh chĩng.
Tuy nhiên, do cịn hạn chế về thời gian và trình độ nên đề tài khơng tránh khỏi
nhiều sai sĩt, nhĩm rất mong nhận được sự đĩng gĩp ý kiến chân tình của quý thầy cơ
và các bạn để đề tài được hồn chỉnh hơn.
PHẦN II
PHỤ LỤC
GIỚI THIỆU VỀ LẬP TRÌNH C CHO PIC 16F877A
I.Giới thiệu
C là một ngơn ngữ khá mạnh và rất nhiều ngưịi dùng.C là một ngơn ngữ lập trình
đa dụng,cấp cao cĩ những khả năng thực hiện những thao tác khá sâu như hợp ngữ
(Assembly language).Chính nhờ tính tổng quát và linh hoạt đĩ mà C được xem là ngơn
ngữ lập trình chuỵên nghiệp rất hiệu quả và tiện lợi,lập trình C cho vxl chúng ta chỉ
cần biết số lượng lệnh khơng nhiều .
Đầu tiên bạn phải làm quen với
Các kiểu tốn tử ở C
Các kiểu dữ liệu
Cẩu trúc cơ bản của một chương trình
Các cấu trúc điều khiển (chính các tập lệnh )
Cấu trúc điều kiện : if và else
Các cấu trúc lặp
Vịng lặp while
Vịng lặp do while
Vịng lặp for
Lệnh break.
Cấu trúc lựa chọn: switch. case
Biết sử dụng các hàm và chương trình con .
II.Cơ bản C
1. Các chỉ thị trước xử lý của C
// chu thich
/********** chu thich******************
*************************************** */
Đây là dịng chú thích. Tất cả các dịng bắt đầu bằng hai dấu sổ (//) được coi là chú
thích
chúng khơng cĩ bất kì một ảnh hưởng nào đến hoạt động của chương trình. Chúng cĩ
thể
được các lập trình viên dùng để giải thích hay bình phẩm bên trong mã nguồn của
chương
trình. Trong trường hợp này, dịng chú thích là một giải thích ngắn gọn những gì mà
chương
trình chúng ta làm. Cịn trong dấu (/* */) bạn cĩ thể chú thích bao nhiêu dịng tuỳ thích
#include
hoặc
#include "16F877A.H"
trình biên dịch sẽ gọi file thư viện của 16F877A ra
#include ;// khai báo cho tốn học
#include ;// khai báo cho chương trình dịch hỗ trợ cho PIC
#include ;// khai báo cổng ra,vào
#define bien_thay_the bien
2. Các tốn tử :
->Tốn tử gán (=).
Ex: b = 5;
a = 2 + b;
a = 2 + (b = 5);
a = b = c = 5;
->Các tốn tử số học ( +, -, *, /, % )
+ cộng
- trừ
* nhân
/ chia
% lấy phần dư (trong phép chia)
->Các tốn tử gán phức hợp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
value += increase; tương đương với value = value + increase;
a -= 5; tương đương với a = a - 5;
a /= b; tương đương với a = a / b;
price *= units + 1; tương đương với price = price * (units + 1);
Tăng và giảm ++ - -
a++; a+=1; a=a+1;
tính chất tiền tố hoặc hậu tố (++a) # (a++)
Ex:
B=3;
B=3;A=++B;
// A is 4, B is 4
B=3;
A=B++;
// A is 3, B is 4
-> Các tốn tử quan hệ ( ==, !=, >, =, <= )
== Bằng
!= Khác
> Lớn hơn
< Nhỏ hơn
> = Lớn hơn hoặc bằng
< = Nhỏ hơn hoặc bằng
3. Các kiểu dữ liệu
Các kiểu biến.chuẩn
type bits byte phạm vi
char 8 1 -127 to 128
unsigned char 8 1 0 to 255
int 16 2 -32,768 to 32,767
unsigned int 16 2 0 to 65,535
Kiểu dữ liệu trong Keil C
type bits byte phạm vi
bit 1 0 0 to1
sbit 1 0 0 to1
sfr 8 1 0 to 255
sf16 16 2 0 to 65,535
4. Cấu trúc cơ bản của 1 chương trình C
Cac cấu trúc lệnh
_while (expr) stmt : xét điều kiện trước rồi thực thi biểu thức sau .
_ do stmt while (expr) : thực thi biểu thức trước rồi xét điều kiện sau .
_Return : dùng cho hàm cĩ trả về trị, hoặc khơng trả về trị cũng được, khi đĩ chỉ cần dùng :
return ; ( nghĩa là thốt khỏi hàm tại đĩ).
_Break : ngắt ngang (thốt khỏi) vịng lặp while. _Continue : quay trở về đầu vịng lặp while .
Các chỉ thị tiền định
#include //Gọi thư viện cĩ sẵn cách viết khác "*.h"
#define led1 PORTA.0 //dùng định nghĩa các biến
char bien1,bien2; //cac bien can dung
int a,b;
void chuongtrinhcon(unsigned int b) // chuong trinh con
{
}
int ham(void) // chuong trinh con dang ham
{
.
Return(a);
}
{
int a; // khai bao bien dang so nguyen
chuongtrinhcon();
a = ham();
}
Khai báo ngắt
void main // chuong trinh chinh
{
...
while(1) //vong lap vo tan sau khi thuc hien xong cong viec
}
void ngat0(void) interrupt 0 // chuong trinh ngat
{
Khai báo Timer
void delay(unsigned char time)
{
while(time--)
{
TMOD=0x01;
TR0=0;
TH0 = 0xFF;// nạp giá trị cho timer
TL0 = 0xFF; nạp giá trị cho timer
TF0=0;
TR0 = 1; // Chạy bộ định thời
while(!TF0); // chờ khi nào cờ TF0 =1
}
TÀI LIỆU THAM KHẢO
[1] Hồ Trung Mỹ – Giáo trình Quang điện tử.Đại học Bách khoa Tp.Hồ Chí
Minh.
[2] Ngơ Diên Tập – Vi điều khiển với lập trình - Nhà xuất bản Khoa học và
Kỹ thuật Hà Nội
[3] W.Buchanan – C for Electronic Engineering
[4] Tài liệu PIC 16F877A_Nguyễn Văn Xuân
[5] Báo Cáo PIC 16F877A_Nguyễn Chí Linh
[6] www.Microchip.com
[7] www.diendandientu.net
[8] www.datasheet.com
[9] www.picvietnam.com
q45
d4
Q27
Q47
VCC
VCC
q17
d1
VCC
p24
d7
Q5
VCC
p17
R9
VCC
d2
b1
VCC
q4 q2
2
q4
0
b7
q41
d4
b7
d3
VCC
p4
q3
d5
d4
d3
q6
p20
Q12
VCC
d5
R16
Q50
VCC
q33
p31
b5
R23
VCC
p48
p30
d2
d6
SO DO NGUYEN LI
p35
p13
q1
3
q2
4
VCC
p11
p35
d1
p27
q6
q34
q9
U11
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
VC
C
D8
DIODE
VCC
p34
p5
b8
Q45
VCC
p48
q27
d2
b6
C3
104
VCC
VCC
q36
q4
5
d1
VCC
VCC
p3
q1
9
b3
p15
b2
b3
Q16
R27
b3
p41
q39
q2
9
q4
2
U15 LM7805
1 3
2
IN OUT
G
N
D
p42
d1
b6
d1
b8
b8
U12
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
VC
C
p38
p11
q2
8
Q49
q9
d2
R44
VCC
VCC
p44
d1
Q39
R18
p9
d6
Q38
KHOI CONG SUAT
VCC
q7
d4
SW1
SW_PB_SPST
q30
q10
q14
d6d7
VCC
d6
p29
VCC
p23
p26
R8
R15
VCC
p14
p3
q1
4
q3
6
d7
d1
R19
U3
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
RN2
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
q20
q21
b4
Q34
q3
9
b4
b7
b2
Q19
p12
U1
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
p13
d4
Q4
U5
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
R4
470
VCC
VCC
p15
q44
b6
Q3
C1815
R34
VCC
p22
q2
0
q3
3
b7
Q8
R42
R36
VCC
q3
7
d7 d8 d2d6
R37
U13
PIC16F877A
11
12
14
32
13
31
2
3
1
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
Vd
d
G
N
DOSC2/CLKOUT
M
C
LR
/V
P
P
OSC1/CLK
GND
RA0/ANO
RA1/AN1
VDD/MCLR
RA2/AN2
RA3/AN3
RA4/TOCK/C1OUT
RA5/AN4
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6/BGC
RB7/BGD
RC0/T1OSO/
RC1/T1OSI
RC2/CCP1
RC3/SCK/SCL
RC4/SDA/SDI
RC5/SD0
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
q11
p22
p16
p39
q2
1
d5
b7
b4
b8
Q15
VCC
q28
q18
q1
6
d7
R17
Q35
KHOI NGUON
p21
p9
q37
R10
Y1
12MHz
RXV
R51
RN3
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
VCC
VCC
q2
3
d4
Q17
U2
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
Q42
p33
q32
q3
2
d6
R39
RN6
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
VCC
VCC
q29
b4
d3
p40
p45
p45
q4
4
R29
VCC
p21
p26
d7
Q41
VCC
q3
0
b3
b2
d5
R25
R43
p40
p18
VCC
q15
d5
Q31
U9
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
V
C
C
q2
q1
TXV
D2
b6
d8
b5
b6
VCC
b1
d3
R10
1k
q42
p10
d3
b4
R21
C13
33P
R45
VCC
p32
b6
C4
104
KHOI DIEU KHIEN
p43
p44
q4
1
R20
R38
VCC
Q28
U6
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
p42
d5d8
R7
q26
b2
b6
Q37
U7
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
VC
C
R6
VCC
p28
q5
R33
R3
R
VCC
q2
5
d3
q1
2
b2
Q36
KHOI HIEN THI
p36
q12
U8
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
VC
C
Q11
R50
R46
p1
p2
d3
d8
R49
R28
VCC
p18
b8
d4
R30
VCC
q4
p4
p19
Q21
Q26
Q48
q47
q8
p6
b8
b3
Q24
VCC
q5 q2
7
Q30
R13
R14
p7
p12
p36
q2
b5
Q25
q3
d5
p17
p31
p37
q23
d3
R12
p33
q4
7
d8
b1
R40
Q44
q46
q13
q35
d7
b5
b5
p29
d1
p28
p7
q1
0
d4
U4
Matrix
1215
2
8
11
105
1 6 13
16
4
93
147
1215
2
8
11
105
1 6 13
16
4
93
147
p37
p32
b3
d2
J15
CON2
1
2
C14
33P
U10
74HC573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
10
20
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
G
N
D
V
C
C
q31
q1
R5
RN5
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
VCC
q16
p47
d8
Q7
VCC
p8
q4
8
b5
b4
b4
b8
Q18
p19
q2
6
VCC
p38
R41
q25
p47
q1
1
d8
b2
d6
R26
R22
q4
6
d5
R47
b1
d7
Q43
Q10 R35
q48
p1
p27
q3
1
p10
p46
q3
5
Q33
RN1
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
Q14 Q22
p8
q1
8
b1
Q23
- +
D1
RS403L
2
1
3
4
VCC
q8
R31
R48
p43
p23
b7
C4
10uf /25V
VCC
p5
p20
q1
7
Q13
VCC
p46
b1
VCC
p2
q3
8
R11
Q46
C1
1000uf /25V
VCC
p24
q40
p39
d8
RN4
R-PACK
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
q3
4
d2
Q6
R24
p41
p6
q1
5
d2
Q20
C2
10uF/25V
Q40
Q9
p30
q19
q4
3
b2
VCC
b3
b1
R32
VCC
p16
p25
b7 q43
q38
p34
b5
Q29
q22
p25
q7
p14
q24
d6
R3
1K
Các file đính kèm theo tài liệu này:
- file_goc_780054.pdf