Nó được ứng dụng trong rất nhiều các lĩnh vực trong đó có điều khiển và đo lường, kết hợp với sự phát triển không ngừng của các hệ thống mạngcàng làm tăng tính năng linh động trong các ứ
Trang 1LỜI CẢM ƠN
Trước tiên em xin chân thành cảm ơn toàn thể thầy cô khoa Điện tử-Tin học
trường Cao Đẳng Kỷ Thuật Cao Thắng , những người đã tạo điều kiện cho em có cơ hội nghiên cứu và tìm hiểu sâu rộng về lĩnh vực điện tử, đặc biệt là thầy Võ Xuân Nam
đã tận tình hướng dẫn và giúp đỡ chúng em trong thời gian thực hiện đề tài Đồng thờichúng em cũng gửi lời cảm ơn tới gia đình và bạn bè đã giúp đỡ em trong thời gian qua
Có được sự giúp đỡ nhiệt tình đó cộng với sự cố gắng của bản thân nên chúng em đãhoàn thành được đề tài đúng thời hạn Với sự hiểu biết còn hạn chế và thời gian thực hiện
đề tài không nhiều nên đề tài không tránh khỏi những sai sót Rất cảm ơn sự hướng dẫn
và góp ý của quý thầy cô và bạn bè cho đề tài được hoàn chỉnh hơn
Chúng em xin chân thành cảm ơn!
Sinh viên thực hiện
Lương Công ĐoanThiều Quang Đạt
Trang 2LỜI NÓI ĐẦU
Ngày nay, trong tất cả các lĩnh vực của đời sống con người điều có sự trợ giúp củamáy tính, máy tính ngày càng làm cho công việc của con người trở nên nhẹ nhàng hơnkhông chỉ nhờ vào tốc độ xử lý mà còn ở khả năng linh động trong các ứng dụng Nókhông những làm giảm nhẹ gánh nặng cho con người, nâng cao hiệu quả lao động màcòn giúp cho con người có những phát minh, sáng chế mới trong nhiều lĩnh vực Máytính ngày càng được sử dụng rộng rãi trong nhiều cơ quan, xí nghiệp, trường học, trongcác ngành kinh tế và ngay cả trong gia đình
Trong các lĩnh vực công nghiệp và điều khiển, việc kết nối máy tính với các thiết bị ngoại
vi ngày càng trở nên phổ biến Nó được ứng dụng trong rất nhiều các lĩnh vực trong đó
có điều khiển và đo lường, kết hợp với sự phát triển không ngừng của các hệ thống mạngcàng làm tăng tính năng linh động trong các ứng dụng đòi hỏi việc trao đổi thông tin từ
xa
Từ những vấn đề đó, với kiến thức đã được học tại trường và được sự hướng dẫn tận tình
của thầy Võ Xuân Nam, em đã quyết định thực hiện đề tài “Bảng báo giá vàng và ngoại
tệ cập nhật tỷ giá từ internet ”.
Tuy nhiên, một hệ thống có thể hoạt động ổn định thì đòi hỏi phải có một thời gian thửnghiệm cũng như cần có sự đóng góp và giúp đỡ của nhiều người Vì thời gian có hạn vàkiến thức chuyên môn còn hạn chế nên trong quá trình thực hiện đồ án không thể tránhnhững thiếu sót nhất định Rất mong sự giúp đỡ, ý kiến đóng góp của quý thầy cô cùngtất cả các bạn để đồ án tốt nghiệp này được hoàn thiện hơn
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Tp Hồ Chí Minh, ngày… tháng… năm 2010
Giáo viên hướng dẫn
Ký tên
Thầy Giáo Võ Xuân Nam
Trang 4NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Tp HCM, ngày… tháng… năm 2010
Giáo viên phản biện
Trang 5MỤC LỤC
Phần A Giới thiệu
Lời cảm ơn 1
Lời mở đầu 2
Nhận xét của giáo viên hướng dẫn 3
Nhận xét của giáo viên phản biện 4
Mục lục 5
Phần B Nội dung 6
Chương 1 Dẫn nhập 7
1.1 Đặt vần đề 7
1.2 Tầm quan trọng của vấn đề 7
1.3 Giới hạn vấn đề 7
1.4 Mục đích nghiên cứu 7
Chương 2 Các bước thực hiện 9
2.1 Dàn ý nghiên cứu 9
2.2 Đối tượng nghiên cứu 9
2.3 Phương pháp nghiên cứu 9
2.4 Phương tiện nghiên cứu 9
2.5 Thời gian nghiên cứu 10
Chương 3 Cơ sở lý thuyết 11
3.1 Các chuẩn giao tiếp 11
3.2 Lựa chọn phương thức giao tiếp 12
3.3 Vi điều khiển PIC 16F877A 14
3.4 Ngôn ngữ lập trình CCS 23
3.5 PIC 16F877A và IC ghi dịch 74HC595 28
3.6 IC Max 232 32
Chương 4 Phần cứng và hoạt động của hệ thống 33
4.1 Sơ đồ khối hệ thống 33
4.2 Chức năng mỗi khối 34
4.3 Hoạt động của hệ thống 34
4.4 Sơ đồ nguyên lí 35
Chương 5: Phần mềm điều khiển hệ thống 37
5.1 Cơ sở lí thuyết lập trình giao tiếp VB 37
5.2 Phần mềm điều khiển hệ thống 43
5.3 Chương trình Vi xử lí 52
Chương 6: Tổng kết và hướng phát triển 56
Tài liệu tham khảo
Trang 6Phần B
NỘI DUNG
Trang 7Chương 1 DẪN NHẬP
1.1 Đặt vấn đề.
Ngày nay, với sự phát triển của khoa học kĩ thuật, trong đó có lĩnh vực máy tính vàlĩnh vực điện tử đã cho ra đời những hệ thống điều khiển khá hữu dụng Mục đích mànhững hệ thống đó đem lại là giúp nâng cao chất lượng cuộc sống của con người Nógiúp thỏa mãn những nhu cầu, đòi hỏi ngày càng cao của con người trong thời kì hiệnđại Hiện nay, sinh hoạt của con người thường gắn liền với những thiết bị, máy móc vàvấn đề đặt ra là chúng ta sẽ tạo ra những thiết bị để điều khiển quá trình hoạt động củachúng như thế nào và giám sát chúng ra sao để đạt được hiệu quả đồng thời thỏa mãnđược những nhu cầu
Ngày nay việc Update tin tức trở nên cực kì quan trọng, thông tin lúc nào cũng phảiđược cập nhật thường xuyên và chính xác nhất ví dụ như tin tức sàn chứng khoán, giáxăng dầu, ngoại tệ, vàng …
Để việc kinh doanh được dễ dàng hơn và thông tin cập nhật giá vàng, ngoại tệ là mới
nhất Em quyết định chọn đề tài “bảng báo giá vàng và ngoại tệ cập nhật tỷ giá mới
nhất từ internet” làm đề tài tốt nghiệp của mình.
1.2 Tầm quan trọng của vấn đề
Giúp cho công việc cập nhật dể dàng hơn ít tốn công sức
Cập nhật tự động dữ liệu mới nhất, chính xác nhất từ internet
1.3 Giới hạn vấn đề
- Phương thức giao tiếp giữa các module chính và máy tính thông qua chuẩn RS232
- Thiết kế giao diện điều khiển sử dụng phần mềm VB6
- Sử dụng 1 đường truyền internet cố định
- Thực hiện 1 mô hình bảng báo bằng led 7 đoạn
1.4 Mục đích nghiên cứu
- Dựa vào những kiến thức đã học về Kỹ thuật điện tử tin học,nghiên cứu về cách thứcgiao tiếp giữa máy tính và vi xử lý
-Nắm được cách thức hiển thị dữ liệu ra Led 7 đoạn
-Tìm hiểu,thi công một mô hình quang báo qui mô nhỏ,làm cơ sở cho những nghiên cứuchuyên sâu hơn về lĩnh vực này
Trang 8- Nhằm ôn lại những kiến thức đã học cũng như nâng cao trình độ chuyên môn để phục
vụ cho công việc sau khi ra trường
Trang 9Chương 2 CÁC BƯỚC THỰC HIỆN
2.1 Dàn ý nghiên cứu
- Tìm hiểu về máy tính và mạng
- Tìm kiếm phần mềm trên mạng và tài liệu liên quan trên mạng
- Tìm hiểu các chuẩn truyền dữ liệu RS232
- Tìm hiểu kỹ thuật lập trình VB6 và lập trình cho Vi điều khiển
- Thiết kế phần cứng của hệ thống
- Thiết kế chương trình điều khiển trên máy tính và vi điều khiển khiển.
2.2 Đối tượng nghiên cứu
- Kỹ thuật lập trình VB6 và giao tiếp giữa máy tính với các thiết bị ngoại vi
- Mạng internet
- Chuẩn giao tiếp RS232
2.3 Phương pháp nghiên cứu
Tham khảo tài liệu
- Tài liệu hướng dẫn lập trình Visual Basic 6
- Tài liệu hướng dẫn lập trình CCS cho vi xử lí
- Các tài liệu về cách thức truyền nhận dữ liệu qua giao tiếp RS232
- Tìm hiểu các hoạt động của các IC sử dụng trong đề tài qua datasheet do nhà sản xuất cung cấp
Phương pháp thực nghiệm.
Bằng cách vận dụng các kiến thức đạt được trong quá trình học tập tham khảo tài liệu, em
đã tiến hành tìm hiểu, thiết kế, thi công, và thử nghiệm mô hình trong nhiều tình huống
và điều kiện khác nhau Quá trình thực nghiệm giúp em thực hiện tự hoàn thiện và bổsung dần các kiến thức mới Đặc biệt là tìm được hướng nghiên cứu thích hợp nhất đểhoàn chỉnh và tối ưu đề tài
2.4 Phương tiện nghiên cứu
- Máy vi tính.
- Các linh kiện điện tử để thi công mạch điện.
- Các phần mềm hỗ trợ như : VB6,PIC C Compiler.
Trang 102.5 Thời gian nghiên cứu
Với thời gian cho phép là 4 tuần, em thực hiện đồ án phân bố thời lượng công việc như sau:
Tuần 1 : Thu thập tài liệu, lập kế hoạch chi tiết.
Tuần 2 : Tìm ra giải thuật để giải quyết vấn đề cho đề tài, thiết kế mạch, viết chương trình.
Tuần 3 : Thi công và thí nghiệm phần cứng, phần mềm
Tuần 4 : Hoàn thiện phần thi công, sửa chữa và in ấn.
Trang 11Chương 3 Cơ Sở Lý Thuyết
3.1 Các chuẩn giao tiếp
Hiện nay việc giao tiếp giữa máy tính với các thiết bị ngoại vi có thể thực hiện bằngnhững cách sau:
Ghép nối qua cổng máy in ( truyền song song )
Cổng ghép nối máy in (LPT), là giao diện sử dụng ổ cắm gồm 25 chân ở phía sau máytính Ở cổng này, các bit dữ liệu được truyền đi song song và do vậy tốc độ truyền dữ liệucũng đạt đến mức đáng kể Tất cả các đường dẫn dữ liệu của cổng này đều tương thíchTTL, nghĩa là mức high khoảng 3,5-5V và các ngõ ra được phép chịu dòng tải cỡ 10mA.Cổng máy in có thể dùng truy suất nhanh 8 bit dữ liệu Tuy nhiên, việc dùng cổng songsong có một nhược điểm đáng kể là cáp truyền dùng quá nhiều sợi nên đắt tiền và mứctín hiệu 0 – 5V không thích ứng với khoảng cách lớn
Ghép nối qua cổng COM
Cổng nối tiếp RS232, hay còn gọi là cổng COM, là giao diện sử dụng ổ cắm 9 chân hoặc 25 chân Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp, nghĩa là các bit dữ liệu được truyền nối tiếp nhau trên một đường dẫn Loại truyền này cókhả năng dùng cho những khoảng cách lớn hơn so với cổng LPT vì khả năng gây nhiễu lànhỏ đáng kể Ngoài ra, cáp truyền ít sợi hơn làm cho giá thành rẻ và mạch ít phức tạp hơn
Ghép nối qua khe cắm PCI
Giao tiếp qua khe PCI (slot card) có thể đạt được tốc độ lớn nhất, tuy nhiên việcthiết kế và thi công rất phức tạp, thêm vào đó giá thành lại đắt tiền
Ghép nối qua cổng USB
USB viết tắt từ bus nối tiếp đa năng (Universal Serial Bus) Đây là một chuẩn truyền
dữ liệu cho bus ngoại vi (external bus) do Intel (phần cứng: chipset) và Microsoft (phần mềm: hệ điều hành) phối hợp phát triển cùng với Compaq, IBM, DEC, NEC, và NorthernTelecom
Trang 12Chuẩn USB càng tiện lợi cho người dùng hơn nhờ hỗ trợ tính năng cài đặt cắm làchạy (Plug-and-Play) và đặc biệt là tính năng gắn và gỡ nóng (hot plugging) , tức là cóthể cắm và gỡ thiết bị USB trong khi máy tính vẫn đang hoạt động và không cần phảikhởi động lại.
USB còn có một khả năng cung cấp điện năng cho một số loại thiết bị USB từ điện nguồn
hệ thống thông qua bus USB giúp thiết bị ngoại vi đó không†cần phải được cấp điệnriêng Tuy nhiên, do điện thế của bus USB không lớn nên nó chỉ đủ năng lượng cấp chonhững thiết bị nhỏ
Phiên bản ban đầu của USB là 1.0, và 1.1 có tốc độ truyền tải dữ liệu 12Mbps (nhanh hơnSerial hay Parallel), còn USB 2.0, hay còn gọi là Hi-Speed USB, có tốc độ truyền tải dữliệu tới 480Mbps, nghĩa là còn cao hơn IEEE 1394 (400Mbps)
Việc giao tiếp giữa máy tính với thiết bị ngoại vị thông qua cổng USB tuy rất tiện lợi vàđạt được tốc độ cao, nhưng đòi hỏi phải có IC hỗ trợ Đây chính là điều khó khăn đối vớithị trường điện tử nước ta
3.2 Lựa chọn phương thức giao tiếp
Qua việc tìm hiểu các giao thức giao tiếp giữa máy tính và các thiết bị ngoại vi,đồng thời nhận thấy việc giao tiếp không đòi hỏi phải có tốc độ nhanh Việc giao tiếp chỉđơn giản là truyền và nhận dữ liệu, vì vậy em quyết định lựa chọn phương thức giao tiếpmáy tính thông qua cổng COM với chuẩn giao tiếp RS232
Chuẩn RS232
Các máy tính thường có 1 hoặc 2 cổng nối tiếp theo chuẩn RS232, được gọi là cổng Com Chúng được dùng ghép nối cho chuột, modem, thiết bị đo lường…Khi cần dùng nhiều cổng hơn ta có thể lắp đặt các card mở rộng trên đó có thêm một đến hai cổng Com Có hai dạng cổng Com: cổng Com 25 chân và cổng Com 9 chân
Ưu điểm giao diện nối tiếp RS232:
Khả năng chống nhiễu của các cổng nối tiếp cao
Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua cổng nối tiếp
Trang 13Hình 3.1: Chân ra cổng Com DB9.
Bảng 3.1: Các Chân và chức năng của cổng Com DB9.
1 Data Carrier
Phát hiện tín hiệu mang dữ liệu
2 Receive Data RxD Nhận dữ liệu
3 Transmit Data TxD Truyền dữ liệu
4 Data Terminal
Đầu cuối dữ liệu sẵn sàng, được kích hoạt bởi bộ nhận khi muốn truyền dữ liệu
5 Singal Ground SG Mass của tín hiệu
6 Data Set Ready DSR
Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu
7 Request to Send RTS
Yêu cầu gửi, bộ truyền đặt đường này lên mức hoạt động khi sẵn sàng truyền dữ liệu
8 Clear To Send CTS
Xóa để gửi, bộ nhận đặt đường này lên mức hoạt động
để thông báo cho bộ truyền là
nó sẵn sàng nhận dữ liệu.
9 Ring Indicate RI
Báo chuông, cho biết là bộ nhận đang nhận tín hiệu rung chuông.
Trang 14Những đặc điểm cần lưu ý trong chuẩn RS232:
Trong chuẩn RS232, các giới hạn trên đối với mức logic 0 và logic 1 là
±12V
Mức logic 1 có điện áp nằm trong khoảng –3V đến –12V, mức logic 0 từ+3V đến +12V
Trở kháng tải phải lớn hơn 3000 nhưng phải nhỏ hơn 7000
Tốc độ truyền/nhận dữ liệu cực đại là 100kbps (ngày nay có thể đạt được
200 kbps)
Các lối vào phải có điện dung nhỏ hơn 2500pF
Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nốitiếp RS232 không thể vượt quá 15 m nếu không sử dụng Modem
- Sau này PIC thuộc Microchip Technology (vào năm 1985)
- PIC được viết tắt từ: "Programmable Intelligent Computer" (Máy tính khả trình thông minh)
Ứng dụng của PIC:
Được sử dụng rộng rãi trong đời sống:
Trang 15 Điều khiển đèn giao thông.
Các kí hiệu của vi điều khiển PIC:
chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash)
Trang 16 Hỗ trợ các giao tiếp khác: USB,Ethernet,CAN…
Sơ đồ chân của pic 16f877a:
MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A
Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa chophé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 bit RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 bit 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:
Trang 17 Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
WR, CS ở bên ngoài
Các đặc tính Analog:
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
thông qua 2 chân
Trang 18SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A
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ươngtá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 trongmỗ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 trongcá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
Trang 19đặ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ậptrong 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 thanhghi 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
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ềukhiể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 trongPORTA 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àntươ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ếpMSSP (Master Synchronous Serial Port) Đặc tính này sẽ được trình bày cụ thể trongphần sau
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
Trang 20ngắ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á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
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
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
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
Trang 21ADCON: thanh ghi điều khiển khối ADC.
3.3.3.Nhận dữ liệu qua chuẩn giao tiếp nối tiếp bất đồng bộ USART
Dữ liệu được đưa vào từ chân RC7/RX/DT sẽ kích hoạt khối phục hồi dữ liệu Khối phục hồi dữ liệu thực chất là một bộ dịch dữ liệu ctốc độ cao va có tần số hoạt động gấp
16 lần hoặc 64 lần tần số baud Trong khi đó tốc độ dịch của thanh thanh ghi nhận dữ liệu
sẽ bằng với tần số baud hoặc tần số của oscillator
Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA<4>) Thành phầnquan trọng nhất của khối nhận dữ liệu là thsnh ghi nhận dữ liệu RSR (Receive Shift Register) Sau khi nhận diện bit Stop của dữ liệu truyền tới, dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh ghi RCGER, sau đó cờ hiệu RCIF (PIR1<5>) sẽ được set và ngắt nhận được kích hoạt Ngắt này được điều khiển bởi bit RCIE (PIE1<5>).Bit cờ hiệu RCIF là bit chỉ đọc và không thể được tác động bởi chương trình RCIF chỉ reset về 0 khi dữ liệu nhận vào ở thanh ghi RCREG đã được đọc và khi đó thanh ghi RCREG rỗng Thanh ghi RCREG là thanh ghi có bộ đệm kép (double-buffered register)
và hoạt động theo cơ chế FIFO (First In First Out) cho phép nhận 2 byte và byte thứ 3 tiếp tục được đưa vào thanh ghi RSR Nếu sau khi nhận được bit Stop của byte dữ liệu thứ 3 mà thanh ghi RCREG vẫn còn đầy, cờ hiệu báo tràn dữ liệu (Overrun Error bit) OERR(RCSTA<1>) sẽ được set, dữ liệu trong thanh ghi RSR sẽ bị mất đi và quá trình đưa dữ liệu từ thanh ghi RSR vào thanh ghi RCREG sẽ bị gián đoạn Trong trường hợp này cần lấy hết dữ liệu ở thanh ghi RSREG vào trước khi tiếp tục nhận byte dữ liệu tiếp theo Bit OERR phải được xóa bằng phần mềm và thực hiện bằng cách clear bit RCEN rồi set lại Bit FERR (RCSTA<2>) sẽ được set khi phát hiện bit Stop dủa dữ liệu được nhận vào Bit dữ liệu thứ 9 sẽ được đưa vào bit RX9D (RCSTA<0>) Khi đọc dữ liệu từ thanh ghi RCREG, hai bit FERR và RX9D sẽ nhận các giá trị mới Do đó cần đọc dữ liệu
từ thanh ghi RCSTA trước khi đọc dữ liệu từ thanh ghi RCREG để tránh bị mất dữ liệu
Tóm lại, khi sử dụng giao diện nhận dữ liệu USART bất đồng bộ cần tiến hành tuần tự các bước sau:
1 Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và bit BRGH
2 Cho phép cổng giao tiếp USART bất đồng bộ (clear bit SYNC và set bit SPEN)
3 Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE
Trang 224 Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9.
5 Cho phép nhận dữ liệu bằng cách set bit CREN
6 Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích hoạt (nếu bit RCIEđược set)
7 Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình nhận
dữ liệu có bị lỗi không
8 Đọc 8 bit dữ liệu từ thanh ghi RCREG
9 Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit CREN
10 Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON)
Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART bất đồng bộ:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép toàn
bộ các ngắt (bit GIER và PEIE)
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE
Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận dữ liệu
Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được
Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH
Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud
Trang 233.4 Ngôn ngữ lập trình CCS
Công cụ lập trình CCS:
GIỚI THIỆU CCS :
trình đầy sức mạnh, giúp bạn nhanh chóng trong việc viết chương trình hơn so với ngônngữ Assembly Mã lệnh được tối ưu khi biên dịch
Tuy nhiên C không phải là vạn năng, có thể thực hiện mọi thứ như ý muốn Trong
1 số trường hợp, nó có thể sinh mã chạy sai (tham khảo các cải tiến ở các version CCStrên web : info.CCS.com hoặc trang web đi kèm )
CCS chứa rất nhiều hàm phục vụ cho mọi mục đích và có rất nhiều cách lập trình mã chocùng 1 vấn đề dẫn đến khác nhau tốc độ thực thi mã, độ dài chương trình Sự tối ưu là do
kỹ năng lập trình C của bạn
Trang 24CCS C có đủ khả năng để bạn không cần phải chèn thêm bất kỳ dòng lệnhASSEMBLY nào, và mặc dù vẫn cho phép bạn phối hợp ASSEMBLY cùnh với C, tuynhiên CCS sẽ không bảo đảm chương trình chạy chính xác.
CCS cung cấp các công cụ tiện ích giám sát hoạt động chương trình như: C/ASMlist: cho phép xem mã ASM của file bạn biên dịch, giúp bạn quản lý mã và nắm được cácthức mã sinh ra và nó chạy như thế nào, là công cụ rất quan trọng, bạn có thể gỡ rốichương trình và nắm được hoạt động của nó; SYMBOL hiển thị bộ nhớ cấp phát chotừng biến, giúp quản lý bộ nhớ các biến chương trình, CallTree hiển thị phân bổ bộnhớ
Chọn “Compiler” để biên dịch chương trình bạn đang viết
tiết và cụ thể , sử dụng Project -> New -> PIC Wizard Sau đó chọn tên project sẽ lưu ,nhấn save Bảng sau hiện ra :
Trang 25Nếu sử dụng mạch dao động thạch anh ngoài thì điền giá thị xung clock vào ô sau :
Phải nhấp kép vào mới hiệu chỉnh được
Chọn con PIC muốn lập trình :
Muốn xem trước mã sinh ra khi hiệu chỉnh bất kỳ điều gì , chọn :
Trang 26
Tuỳ thuộc loại PIC muốn lập trình mà mục FUSES sẽ có thêm nhiều hay ít tuỳ chọn, VD 18F4431:
Để ý bên dưới là 1 dãy tab các lựa chọn các thông số khác:
chú ý 2 nút mũi tên có thể mở thêm nhiều mục khác
Sau khi hiệu chỉnh như ý muốn , OK để hoàn thành
VIẾT 1 CHƯƠNG TRÌNH TRONG CCS :
Sau đây là ví dụ về cấu trúc 1 chương trình trong CCS :
Trang 27Các khai báo biến
Các hàm con do ta viết : xu_ly_ADC () ,
Các hàm phục vụ ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào
Chương trình chính
Một chương trình C có thể được viết luôn tuồn trong hàm main () , nếu chúng rấtngắn và đơn giản Nhưng khi chương trình bắt đầu dài ra , phức tạp lên 1 chút thì phảiphân chia trong các hàm con
Trang 28chứa trong file x sẽ được biên dịch vào file hex chung Các ví dụ trong thư mục của CCSnếu có sử dụng LCD sẽ chèn 1 dòng #include < lcd.c> và do đó sẽ gọi được các hàmtrong file này mà không cần phải viết lại điều này có nghĩa là ta có thể viết các file cchứa mã tổng quát có thể dùng chung cho nhiều project , tức là tái sử dụng mã , thay vìphải viết lại chuyên biệt cho từng project Đây là cách làm chuyên nghiệp cho nhữngproject lớn
3.5 Vi điều khiển pic 16f877a và Ic ghi dịch 74hc595
Trang 29Thay vì phải truy xuất trực tiếp một giá trị nào đó ra các PORT I/O, ta có thể truy xuấtgián tiếp thông qua IC 74HC595 Tuy nhiên việc trước tiên là phải tìm hiểu xem IC74HC595 hoạt động như thế nào và cách điều khiển nó ra sao Hình sau là sơ đồ khối củaIC:
Sơ đồ khối IC 74HC595
chỉ được đưa vào qua 1 pin SER và được điều khiển bởi các pin RCK (pin điều khiển
Trang 30chốt dữliệu), SCK (pin điều khiển việc dịch dữ liệu vào IC thông qua các xung clock), SCLR (pin tác động mức thấp dùng để xóa dữ liệu) và pin Q’H (pin đưa dữ liệu nối tiếp
ra ngoài, pin này dùng để nối nhiều IC 74HC595 lại với nhau) và pin G (pin cho phép ngõ ra) Ta có thể điều khiển một IC 74HC595 hoặc nhiều IC ghép với nhau thông qua 4 pin RCK, SCK, SER và SCLR Điều này cho phép mở rông một cách vô hạn số lượng pin output cho vi điều khiển, tất nhiên với một nhược điểm là thời gian truy xuất chậm do
dữ liệu phải được dịch từng bit vào IC
thông qua từng cạnh dương tác động vào pin SCK trước khi đưa dữ liệu rangoài thông qua các pin QH:QA Sau đây là sơ đồ chân và bảng sự thật của IC 74HC595:
Sơ đồ chân và bảng sự thật của 74HC595Hình sau thể hiện cách nối nhiều IC 74HC595 lại với nhau:
Cách nối nhiều IC 74HC595
Trang 31Như ta thấy trong hình trên, các pin SCK, RCK và SCLR được nối chung lại với nhau, trong khi pin SDO của IC trước sẽ nối với pin SDI của IC sau Tất cả các IC này sẽ đượcđiều khiển thông qua 4 pin SCK,RCK, SCLR và SDI, như vậy ta có thể tiết kiệm đượcmột số lượng đáng kể số lượng pin điều khiển của vi điều khiển
Cách điều khiển IC được thể hiện thông qua bảng sự Trước tiên đưa 1 bit dữ liệuvào pin SDI, tạo ra một cạnh dương ở pin SCK để dịch bit dữ liệu đó vào, quá trình nàylặp đi lặp lại liên tục cho đến khi toàn bộ dữ liệu được dịch vào các IC 74HC595 (IC tiếptheo cùng sẽ dịch dữ liệu được đưa ra thông qua pin SDO của vi điều khiển trước) Sau
đó tạo một cạnh dương ở pin RCK để đưa dữ liệu từ chốt dữ liệu ra các pin output
IC 74HC595 và cách điều khiển.
Trong ứng dụng này ta sẽ đưa dữ một liệu 8 bit bất kì ra thông qua IC 47HC595 Dữ liệu
sẽ được kiểm tra thông qua các LED được gắn vào các pin output của IC Các pin điềukhiển của 74HC595 được gắn vào các pin RB3:RB0 của PORTB Cụ thể như sau:
Pin RB0: nối với pin SDI
Pin RB1: nối với pin SCK
Pin RB2: nối với pin SCLR
Pin RB3: nối với pin RCLK
Các thứ tự này không bắt buôc phải được tuân thủ một cách nghiêm ngặt, tùy theo mạchphần cứng mà ta có sự điều chỉnh tương ứng trong phần mềm Ngoài ra ta có thể sử dụngbất cứ pin nào của PORT I/O nào để điều khiển IC này
Mạch test cho ứng dụng này được thiết kế như sau: