LỜI NÓI ĐẦU
Khoa học kỹ thuật ngày càng phát triển mạnh mẽ, kỹ thuật điện tử cũng được chú trọng phát triển nhiều hơn. Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đời sống xã hội ngày càng phát triển dựa trên những ứng dụng của khoa học vào đời sống. Vì vậy mà công nghệ điện tử mang tính tự động ngày càng được ứng dụng rộng rãi. Sự phát triển của máy tính đã mở rộng các ứng dụng của vi điều khiển. Các bộ vi điều khiển với đa tính năng đang đựơc ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị được điều khiển tự động, từ các thiết bị văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiện nghi cho con người trong thời đại công nghiệp hoá, hiện đại hoá. Vì vậy việc ghép nối giữa máy tính và vi điều khiển ngày càng trở lên quan trọng.
Để ứng dụng môn Ghép nối máy tính và giao diện vào thực tế, sau một thời gian nghiên cứu học tập dưới sự giảng dạy của các thầy cô giáo trong khoa về kiến thức chuyên ngành, đồng thời cùng với sự giúp đỡ nhiệt tình của thầy Phạm Ngọc Hưng, chúng em đã tiến hành thiết kế và hoàn thành đề tài: “Mạch điều khiển các thiết bị trong nhà”.
Với sự lỗ lực của bản thân nhưng do thời gian, kiến thức và kinh nghiệm của chúng em còn hạn chế nên không thể tránh khỏi những sai xót. Chúng em rất mong nhận được sự giúp đỡ và đóng góp ý kiến của thầy cô cùng các bạn để đồ án được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Hưng Yên, tháng 12 năm 2008
Nhóm sinh viên thực hiện: 1. Trần Thị Hạt
2. Nguyễn Thị Thắm
3. Bùi Quyết Thắng
4. Phạm Thị Xoa
MỤC LỤC
Phần I: Lý thuyết tổng quan 5
I.Tổng quan về VĐK PIC16F876A .5
1. Giới thiệu họ vi điều khiển PIC 5
2. Vi điều khiển PIC 16F876A .5
II.Giao tiếp cổng nối tiếp 19
1. Cấu trúc cổng nối tiếp .19
2. Truyền thông giữa hai nút .22
3. Truy xuất trực tiếp thông qua cổng 24
Phần II. Thiết kế phần cứng .28
I.Sơ đồ khối và chức năng các khối 28
1. Sơ đồ khối 28
2. Chức năng các khối 28
II.Sơ đồ nguyên lý 31
Kết luận .32
41 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3676 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Mạch điều khiển các thiết bị trong nhà, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜI NÓI ĐẦU
Khoa học kỹ thuật ngày càng phát triển mạnh mẽ, kỹ thuật điện tử cũng được chú trọng phát triển nhiều hơn. Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đời sống xã hội ngày càng phát triển dựa trên những ứng dụng của khoa học vào đời sống. Vì vậy mà công nghệ điện tử mang tính tự động ngày càng được ứng dụng rộng rãi. Sự phát triển của máy tính đã mở rộng các ứng dụng của vi điều khiển. Các bộ vi điều khiển với đa tính năng đang đựơc ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị được điều khiển tự động, từ các thiết bị văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiện nghi cho con người trong thời đại công nghiệp hoá, hiện đại hoá. Vì vậy việc ghép nối giữa máy tính và vi điều khiển ngày càng trở lên quan trọng.
Để ứng dụng môn Ghép nối máy tính và giao diện vào thực tế, sau một thời gian nghiên cứu học tập dưới sự giảng dạy của các thầy cô giáo trong khoa về kiến thức chuyên ngành, đồng thời cùng với sự giúp đỡ nhiệt tình của thầy Phạm Ngọc Hưng, chúng em đã tiến hành thiết kế và hoàn thành đề tài: “Mạch điều khiển các thiết bị trong nhà”.
Với sự lỗ lực của bản thân nhưng do thời gian, kiến thức và kinh nghiệm của chúng em còn hạn chế nên không thể tránh khỏi những sai xót. Chúng em rất mong nhận được sự giúp đỡ và đóng góp ý kiến của thầy cô cùng các bạn để đồ án được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Hưng Yên, tháng 12 năm 2008
Nhóm sinh viên thực hiện: 1. Trần Thị Hạt
2. Nguyễn Thị Thắm
3. Bùi Quyết Thắng
4. Phạm Thị Xoa
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Hưng Yên,tháng 12 năm 2008
Giáo viên hướng dẫn
................................
MỤC LỤC
Phần I: Lý thuyết tổng quan................................................................................................5
I.Tổng quan về VĐK PIC16F876A.........................................................................5
1. Giới thiệu họ vi điều khiển PIC................................................................5
2. Vi điều khiển PIC 16F876A.....................................................................5
II.Giao tiếp cổng nối tiếp ......................................................................................19
1. Cấu trúc cổng nối tiếp.............................................................................19
2. Truyền thông giữa hai nút.......................................................................22
3. Truy xuất trực tiếp thông qua cổng..........................................................24
Phần II. Thiết kế phần cứng .............................................................................................28
I.Sơ đồ khối và chức năng các khối......................................................................28
1. Sơ đồ khối..............................................................................................28
2. Chức năng các khối................................................................................28
II.Sơ đồ nguyên lý..................................................................................................31
Kết luận.............................................................................................................................32
Ý TƯỞNG THIẾT KẾ
Thiết kế hệ thống điều khiển các thiết bị trong nhà(quạt, máy bơm nước, tivi, đèn) dùng vi điều khiển thông qua máy vi tính. Hệ thống bao gồm: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Khi tác động vào các nút ON hoặc OFF trên khối điều khiển thì tương ứng với nó là việc cấp hoặc ngắt nguồn cho các thiết bị sử dụng. Khi tín hiệu được truyền đi, sau một thời gian cảm biến sẽ nhận tác động và báo lại cho máy tính biết là vi điều khiển đã nhận được thông tin hay chưa. Nếu chưa nhận được máy tính sẽ truyền lại thông tin đó lần nữa, khi nào vi điều khiển nhận được mới thôi.
Quy trình thực hiện ý tưởng
Bước 1:
Nghiên cứu & khảo sát PIC16F876A, tạo giao diện trên Visuabasic 6.0.
Bước 2:
Sau khi đã nghiên cứu và khảo sát xong chúng ta bắt đầu thực hiện xây dựng mạch theo đúng nhiệm vụ của đề tài. Xây dựng các khối: Khối nguồn, khối xử lý trung tâm dùng PIC16F876A, khối điều khiển, khối hiển thị và cuối cùng là khối truyền thông. Việc truyền và nhận dữ liệu từ máy tính và vi điều khiển như thế nào chính là vấn đề mà chúng ta cần quan tâm.
Bước 3:
Vẽ mạch thực hiện thiết kế mạch in (board) mục đích bố trí linh kiện hợp lý từ sơ đồ trải (sơ đồ nguyên lý ) mục đích giảm kích thước mô hình, đề tài được thực hiện trên phần mềm Eagle. Từ các bước trên ta có thể bắt đầu tiến hành thực hiện viết thuyết minh và thực hiện ý tưởng.
PHẦN I: LÝ THUYẾT TỔNG QUAN
I. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
1. Giới thiệu họ vi điều khiển PIC
PIC là viết tắt của” Programable Intelligent Computer”, tạm dịch là “ máy tính thông minh khả trình” của hãng Microchip. Hiện tại ở Việt Nam và trên thế giới sử dụng PIC khá rộng rãi. Các tính năng đa dạng họ vi điều khiển PIC cũng như các công cụ hỗ trợ lập trình cho họ vi điều khiển PIC không ngừng được cải tiến và phát triển đã tạo ra những ứng dụng vượt trội của PIC so với các họ vi điều khiển khác.
Các kí hiệu của họ vi điều khiển PIC:
PIC 12xxxx: độ dài lệnh 12 bit
PIC 16xxxx: độ dài lệnh 14 bit
PIC 18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM ( chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ Flash
LF: PUC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF
Bên cạnh đó có một số vi điều khiển có kí hiệu 16Fxxx là EEPROM, nếu có thêm chữ A ở cuối là flash (ví dụ 16F877 là EEPROM, 16F877A là flash). Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC. Ở Việt Nam phổ biến nhất là các họ Vi điều khiển PIC do hãng Microchip sản xuất.
2. Vi điều khiển PIC 16F876A
2.1. Mô tả cấu trúc
PIC 16F876A thuộc họ 16F87x sử dụng công nghệ tích hợp cao RISC CPU, có thể lập trình với 35 câu lệnh đơn giản. Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ một số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh. Tốc độ hoạt động xung đồng hồ vào là DC-20MHz với chu kì lệnh thực hiện trong 200ns. Bộ nhớ chương trình Flash 8Kx14 words. Bộ nhớ Ram là 368x8 bytes, bộ nhớ dữ liệu EFPROM 256x8 bytes.
Khả năng của bộ vi xử lí này :
+ Khả năng ngắt (lên tới 14 nguồn ngắt trong và ngắt ngoài)
+ Ngăn nhớ Stack được phân chia làm 8 mức
+ Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp.
+ Nguồn khởi động lại (POR).
+ Bộ tạo xung thời gian (PWRT) và bộ tạo dao động (OST)
+ Bộ đếm xung thời gian (WDT) với nguồn dao động trên chip (nguồn dao động RC) hoạt động đáng tin cậy.
+ Có mã chương trình bảo vệ. Có bảng lựa chọn dao động
+ Phương thức cất giữ SLEEP.
+ Công nghệ CMOS FLASH/EEPROM nguồn mức thấp, tốc độ cao.
+ Thiết kế hoàn toàn tĩnh. Mạch chương trình nối tiếp có hai chân.
+ Xử lý đọc/ghi tới bộ nhớ chương trình.
+ Dải điện thế hoạt động rộng: 2.0V ÷ 5.5V. Nguồn sử dụng hiện tại 25mA.
+ Dãy nhiệt độ công nghiệp và thuận lợi.
+ Công suất tiêu thụ thấp: < 0.6mA với 5V, 4MHz
20µA với 3V, 32 kHz
< 1µA nguồn dự phòng.
Các đặc tính nổi bật của thiết bị ngoại vi trên chip:
+ Timer0: 8 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước
+ Timer1:16 bít của bộ định thời, bộ đếm với hệ số tỷ lệ trước, có khả năng tăng trong khi ở chế độ Sleep qua xung đồng hồ được cung cấp bên ngoài.
+ Timer2: 8 bít của bộ định thời, bộ đếm với 8 bít của hệ số tỷ lệ trước, hệ số tỷ lệ sau.
+ Có 2 chế độ bắt giữ, so sánh, điều chế độ rộng xung (PWM)
+ Chế độ bắt giữ 16 bít, tốc độ 12,5 ns, chế độ so sánh với 16 bít, tốc độ giải quyết cực đại là 200ns, chế độ điều chế độ rộng xung với 10 bít.
+ Bộ chuyển đổi tín hiệu số sang tương tự với 10 bít.
+ Cổng truyền thông nối tiếp SSP với SPI phương thức chủ và I2C(chủ/phụ)
+ Bộ truyền nhận thông tin đồng bộ, dị bộ(USART/SCL) có khả năng phát hiện 9 bít địa chỉ.
+ Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR, và CS điều khiển.
Sơ đồ các chân của PIC 16F876:
2.2. Sự tổ chức bộ nhớ PIC 16F876A
PIC 16F87A có 3 khối bộ nhớ: bộ nhớ chương trình FLASH, bộ nhớ dữ liệu RAM, bộ nhớ EEPROM.
a) Tổ chức bộ nhớ chương trình FLASH và Stack nhớ
PIC 16F876 có một bộ đếm chương trình 13 bít và có 8Kx14 từ mã của bộ nhớ chương trình FLASH, được chia thành 4 trang mỗi trang 2Kx14 từ mã.
Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, vectơ ngắt bắt đầu 0004h. Stack có 8 mức dùng để lưu địa chỉ lệnh thực hiện tiếp theo sau lệnh CALL và khi xảy ra ngắt.
Bản đồ bộ nhớ chương trình và các ngăn xếp:
Sơ đồ khối chức năng của PIC 16F876:
b) Tổ chức bộ nhớ dữ liệu RAM
RAM là bộ nhớ có thể đọc và ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ RAM của PIC 16F876A có 4 bank, mỗi bank có dải địa chỉ 0-7FH(128 byte) trên các bank những thanh ghi đa mục đích, hoạt động như một RAM tĩnh (General purpose register), và những thanh ghi chức năng đặc biệt (Special function registers) ở vùng địa chỉ thấp. Bít RP1(Status ) và bit RP0(Status ) dùng để lựa chọn bank làm việc.
Các thanh ghi đa mục đích (General purpose register): các thanh ghi này được truy cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR, tổng cộng có 368 byte.
Các thanh ghi chức năng đặc biệt: các thanh ghi này được dùng bởi CPU và các khối ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị.
Sau đây là một số thanh ghi đặc biệt quan trọng:
Các thanh ghi trạng thái STATUS: có 4 thanh ghi trạng thái trên 4 dãy, tại các địa chỉ 03h, 83h, 103h, 183h. Các thanh ghi này cho biết trạng thái của phần tử logic toán học ALU, trạng thái Reset, trạng thái của các bít lựa chọn dãy thanh ghi cho bộ nhớ dữ liệu
Các thanh ghi lựa chọn OPTION_REG: có 2 thanh ghi lựa chọn tại các địa chỉ 81h và 181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều bit điều khiển khác nhau để xác định hệ số định trước TMR0/hệ số định sau WDT, ngắt ngoài INT, TMR0, các điện áp treo trên cổng B
Các thanh ghi INTCON: có 4 thanh ghi INTCON tại các địa chỉ 0Bh, 8Bh, 10Bh, 18Bh. Các thanh ghi này có thể đọc và ghi, chứa đựng nhiều sự cho phép và các bit cờ cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB và chân các ngắt ngoài RB0/INT.
Thanh ghi PIE1: Tại địa chỉ 8Ch, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi.
Thanh ghi PIR1: Tại địa chỉ 0Ch, chứa đựng các bit cờ riêng lẻ cho các ngắt ngoại vi.
Thanh ghi PIE2: Tại các địa chỉ 8Dh, chứa đựng các bit cho phép riêng lẻ cho các ngắt ngoại vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt động ngắt
Thanh ghi PCON (Power Control): Chứa bit cờ cho phép phân biệt giữa việc Reset hệ thống để Reset MCLR ngoại với Reset WDT
PCL và PCLATH: Chương trình đếm chỉ rõ địa chỉ của lệnh tiếp theo được thực hiện. PC có độ rộng 13 bit, byte thấp được gọi là thanh ghi PCL (có thể đọc hoặc ghi), byte cao được gọi là thanh ghi PCH .
c) Các trang bộ nhớ chương trình
PIC16F876A có 8Kx14 PLASH các lệnh CALL, GOTO chỉ cung cấp 11 bit địa chỉ cho phép rẽ nhánh được 2K của một trang bộ nhớ chương trình, 2 bit cao được cung cấp bởi 2 bit 3,4 của PCLATH do vậy tuỳ việc thiết lập các bit 3,4 của PCLATH trước khi lệnh CALL, GOTO thực hiện cho phép rẽ nhánh tới các trang bộ nhớ khác nhau
Chú ý các lệnh RETURN, RETFIE không làm thay đổi PCLATH
2.3. Các cổng vào/ra
PIC16F876A có 3 cổng vào/ra là Port A, Port B, Port C. Một số chân của cổng vào/ra được tích hợp với một số hàm có thể thay đổi để phù hợp với những thiết bị ngoại vi.
a) Cổng A và thanh ghi TRISA
Cổng A là cổng hai chiều với độ rộng đường truyền là 6 bit. Để điều khiển việc truy xuất dữ liệu người ta dùng thanh ghi TRISA. Nếu đặt bit TRISA = 1 thì cổng A sẽ tương ứng có các chân là chân vào. Nếu xoá bít TRISA = 0 thì cổng A sẽ tương ứng có các chân là chân ra. Việc đọc cổng A chính là đọc trạng thái của các chân, việc viết phải qua các chốt của cổng. Các chân của cổng A chủ yếu sử dụng nhận tín hiệu tương tự hoặc các chân vào/ra. Riêng chân RA4 có thể đa hợp với chân vào bộ Timer 0 và khi đó nó trở thành chân RA4/T0CKI. Chân này như một đầu vào của Trigger Schmitt và nó mở đầu ra. Các chân khác của cổng A là chân vào bộ TTL. Việc điều khiển các chân này thông qua việc đặt hay xoá các bít của thanh ghi ADCON1. Thanh ghi TRISA điều khiển trực tiếp các chân của cổng A, khi sử dụng các chân này để nhận tín hiệu tương tự vào ta phải chắc chắn rằng các bít của thanh ghi TRISA đã được đặt rồi.
Sơ đồ khối chân RA3:RA0, chân RA5, và chân RA4/TOCK1 của cổng A
b) Cổng B và thanh ghi TRISB
Cổng B là cổng hai chiều với độ rộng đường truyền là 8 bit. Tương ứng với nó để điều khiển trực tiếp dữ liệu ta sử dụng thanh ghi TRISB. Nếu đặt bít TRISB = 1 thì cổng B được định nghĩa là chân vào. Nếu xoá bít TRISB = 0 thì cổng B được định nghĩa là chân ra. Nội dung của chốt ra có thể chọn trên mỗi chân.
Có 3 chân của cổng B có thể đa hợp với các chương trình vận hành bằng điện áp thấp. Đó là các chân sau: RB3/PGM, RB6/PGC, RB7/PGD. Sự thay đổi hoạt động của những chân này được miêu tả ở trong phần đặc tính nổi bật. Mỗi chân của cổng B có khả năng dừng bên trong nhưng yếu. Điều này được trình bày bởi việc xoá bit RBPU (bit 7 của thanh ghi OPTION_REG). Khả năng dừng này sẽ tự động tắt đi khi các chân của cổng được định nghĩa là chân ra. Khả năng dừng này sẽ tự động mất đi khi ta RESET. Bốn chân của cổng B, từ RB7÷ RB4 có đặc tính là ngắt khi thay đổi trạng thái. Chỉ những chân được định dạng là những chân vào thì ngắt này mới tồn tại. Một vài chân RB7:RB4 được định dạng như chân ra nó thi hành ngắt trên sự thay đổi so sánh. Chân vào RB7:RB4 được so sánh với giá trị cũ của chốt ở lần đọc cuối cùng của cổng B. Sự ghép đôi không khớp chân ra của RB7:RB4 bằng lệnh OR làm phát ra ngắt với cờ bit RBIF của thanh ghi INTCON. Ngắt này có thể khởi động thiết bị từ trạng thái SLEEP.
Sơ đồ khối của chân RB3÷RB0, và chân RB7÷RB4 của cổng B:
c) Cổng C và thanh ghi TRISC
Cổng C là cổng 2 chiều với độ rộng đường truyền là 8 bit. Tương ứng với việc điều khiển nó là thanh ghi TRISC. Nếu đặt bit TRISC=1 thì tương ứng với chân của cổng C là chân vào. Nếu xoá bit TRISC=0 thì tương ứng với chân của cổng C là chân ra. Đặt nội dung của chốt ra có thể đặt trên chân chọn. Cổng C đa hợp với việc vận hành thiết bị ngoại vi. Chân của cổng C thông qua bộ đệm Trigger Schmitt đầu vào.
Khi chế độ I2C hoạt động, thì các chân cổng PORTC (4:3) có thể được sắp xếp với mức I2C thường hoặc với mức SMBUS bằng cách sử dụng bit CKE (SSPSTART) là bit 6 của thanh ghi SSPSTART.
Khi vận hành các thiết bị ngoại vi bằng việc xác định bit TRIS của mỗi chân cổng C. Một số phần phụ có thể ghi đè lên bit TRISC làm cho chân này trở thành chân ra, trong khi đó thì một số phần phụ khác lại ghi đè lên bit TRIS làm cho nó trở thành chân vào. Từ khi những bit TRIS ghi đè thì trong việc tác động trong các thiết bị ngoại vi là có thể, những lệnh đọc-sửa–ghi (BSF, BCF, XORWF) với thanh ghi TRISC như là nơi gửi tới sẽ được tránh. Người sử dụng nên đề cập tới việc phân chia kết nối các thiết bị ngoại vi cho việc set chính xác các bit TRIS
Sơ đồ khối chân RC RC và chân RC của cổng C
2.4. Các bộ Timer của chip
Bộ vi điều khiển PIC 16F876 có 3 bộ Timer đó là: Timer 0, Timer 1, Timer2.
a) Bộ Timer0
Là bộ định thời hoặc bộ đếm có những ưu điểm nổi bật sau:
+ 8 bit cho timer hoặc bộ đếm.
+ Có khả năng đọc và viết.
+ Có thể dùng đồng hồ bên trong hoặc bên ngoài.
+ Có thể chọn cạnh xung của xung đồng hồ.
+ Có hệ số chia cho xung đầu vào có thể lập trình lại bằng phần mềm.
+ Ngắt tràn.
Hoạt động của bộ Timer0:
Timer 0 có thể hoạt động như một bộ định thời hoặc một bộ đếm. Viêc chọn bộ định thời hoặc bộ đếm có thể được xác lập bằng việc xoá hoặc đặt bit TOSC của thanh ghi OPTION_REG.
Nếu dùng hệ số chia xung đầu vào thì xoá bit PSA của thanh ghi OPTION_REG.
Trong chế độ bộ định thời được lựa chọn bởi việc xoá bit T0CS (OPTION_REG), nó sẽ được tăng giá trị sau một chu kỳ lệnh nếu không chọn hệ số chia xung đầu vào. Và giá trị của nó được viết tới thanh ghi TMR0.
Chế độ đếm được lựa chọn bởi việc set bit T0CS (OPTION_REG).
Trong chế độ bộ đếm, nó sẽ được tăng ở xung đi xuống nếu xoá bit T0SE (OPTION_REG) hoặc ở xung đi lên nếu set bit T0SE. Và giá trị của nó được viết tới thanh ghi TMR0.
Khi dùng xung clock bên ngoài cho bộ định thời Timer 0 và không dùng hệ số chia clock đầu vào Timer 0 thì phải đáp ứng các điều kiện cần thiết để có thể hoạt động đó là phải đảm bảo xung clock bên ngoài có thể đồng bộ với pha xung clock bên trong (TOSC).
Các hệ số chia:
Hệ số chia dùng cho Timer 0 hoặc bộ WDT. Các hệ số này không có khả năng đọc và khả năng viết. Để chọn hệ số chia xung vào Timer 0 hoặc cho bộ WDT ta tiến hành xoá hoặc đặt bit PSA của thanh ghi OPTION_REG.
Những bit PS2, PS1, PS0 của thanh ghi OPTION_REG dùng để xác lập các hệ số chia.
Ngắt của bộ Timer0:
Ngắt của bộ Timer 0 được phát sinh ra khi thanh ghi TMR0 bị tràn tức từ FFh quay về 00h. Khi đó bit T0IF của thanh ghi INTCON sẽ được đặt. Bit này phải được xoá bằng phần mềm nếu cho phép ngắt bit T0IE của thanh ghi INTCON được set. Timer 0 bị dừng hoạt động ở chế độ SLEEP ngắt Timer 0 không đánh thức bộ xử lý ở chế độ SLEEP.
* Thanh ghi OPTION_REG
Bit 5 TOCS lựa chọn nguồn clock
1= Clock ngoài từ chân T0CKI 0= Clock trong Focs/4
Bit 4 T0SE bit lựa chọn sườn xung clock
1= Timer 0 tăng khi chân T0CKI từ cao xuống thấp (sườn xuống)
0= Timer 0 tăng khi chân T0CKI từ thấp lên cao (sườn lên)
Bit 3 PSA bit gán bộ chia xung đầu vào
1= gán bộ chia Prescaler cho WDT
0=gán bộ chia Prescaler cho Timer 0
Bit 2:0 PS2:PS1 lựa chọn hệ số chia xung đầu vào theo bảng sau:
PS2:PS0 Timer 0 WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:32 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
b) Bộ Timer1
Bộ Timer1 có thể là bộ đếm hoặc bộ định thời với ưu điểm sau:
+ 16 bit cho bộ đếm hoặc bộ định thời (gồm 2 thanh ghi TMR1H:TMR1L).
+ Có khả năng đọc và viết.
+ Có thể chọn xung đồng hồ bên trong hoặc bên ngoài.
+ Có thể ngắt khi tràn FFFFh về 0000h.
Timer1 có 1 thanh ghi điều khiển, đó là thanh ghi T1C0N. Bộ Timer1 có hoạt động hay không hoạt động là nhờ việc đặt hoặc xoá bit TMR1ON (T1CON).
Hoạt động của Timer1:
Nó có thể hoạt động ở một trong các chế độ sau:
+ Là một bộ định thời 16 bit.
+ Là một bộ đếm có đồng bộ.
+ Là một bộ đếm không có đồng bộ.
Phương thức hoạt động của bộ này được xác định bởi việc chọn nguồn xung vào Timer1. Nguồn xung đồng hồ được chọn bởi việc đặt xoá bit TMR1CS (T1CON). Ở chế độ bộ định thời, đầu vào là clock trong Fosc/4, bit đồng bộ T1SYNC (T1CON) không có tác dụng vì clock trong luôn đồng bộ. Chế độ bộ đếm hoạt động hai chế độ. Có đồng bộ xung vào xoá bit T1SYNC (T1CON), không đồng bộ xung vào set bit T1SYNC (T1CON) Timer1 tăng ở sườn lên xung đầu vào.
Khi bộ dao động Timer1 cho phép hoạt động thì các chân RC1/T1OSI/CCP2, RC0/T1OSO/T1CKI trở thành chân vào.
Ở chế độ đếm có đồng bộ bộ đếm tăng mỗi khi sườn lên ở chân RC0 hoặc ở chân RC1 nếu bit T1OSEN xoá và xung vào phải đồng bộ với clock trong, ở chế độ này bộ đếm không tăng trong trạng thái SLEEP.
Ở chế độ đếm không đồng bộ Timer1 tăng mỗi khi sườn lên ở chân RC0 hoặc ở chân RC1 nếu bit T1OSCEN xoá, ở chế độ này bộ đếm tiếp tục tăng trong trạng thái SLEEP và có khả năng tràn gây ra ngắt khi đó bộ xử lý được đánh thức.
Dao động của Timer1:
Mạch dao động thạch anh được xây dựng giữa 2 chân TiOSI và T1OS0. Khi dao động được cung cấp ở chế độ công suất thấp thì tần số cực đại của nó sẽ là 200kHz và trong nó ở chế độ SLEEP nó cung cấp ở tần số 32kHz.
Ngắt của bộ Timer1:
Cặp thanh ghi TMR1H và TMR1L tăng từ giá trị 0000h đến FFFFh đến giá trị này tiếp tục tăng thì tràn và quay lại giá trị 0000h. Và ngắt xuất hiện khi tràn quá giá trị FFFFh khi này cờ ngắt TMR1IF sẽ được đặt. Ngắt có thể hoạt động hoặc không hoạt động nhờ việc đặt hoặc xoá bit TMR1IE.
* Thanh ghi điều khiển Timer 1 T1CON:
Bit 7,6 không sử dụng
Bit 5,4 T1CKPS1:T1CKPS0 lựa chọn hệ số chia xung đầu vào
T1CKPS1:T1CKPS0
1:1
1:2
1:4
1:8
Bit 3 T1OSEN bit điều khiển bộ dao động Timer1
1= Bộ dao động hoạt động 0= Bộ dao động không hoạt động
Bit 2 Bit điều khiển xung clock ngoài đồng bộ khi TMRCS=1
Bit 2=0 có đồng bộ clock ngoài Bit 2=1 không đồng bộ clock ngoài
Khi TMR1CS=0 bit này không tác dụng
Bit 1 TMR1CS bit lựa chọn nguồn xung clock vào
TMR1CS=1 clock từ chân RC0/T1OSO/T1CKI (sườn lên)
TMR1CS=0 clock trong Fosc/4
Bit 0 Bit bật tắt Timer
1= Timer 1 enable 0= Timer 1 Disable
c) Bộ Timer2
Bộ Timer2 có những đặc tính sau đây:
+ 8 bit cho bộ định thời (thanh ghi TMR2)
+ 8 bit vòng lặp (thanh ghi PR2)
+ Có khả năng đọc và viết ở cả 2 thanh ghi nói trên
+ Có khả năng lập trình bằng phần mềm tỷ lệ trước
+ Có khả năng lập trình bằng phần mềm tỷ lệ sau
Chế độ SSP dùng đầu ra của TMR2 để tạo xung clock. Timer2 có một thanh ghi điều khiển đó là thanh ghi T2CON.
Timer2 có thể tắt bằng việc xoá bit TMR2CON của thanh ghi T2CON.
Hoạt động của bộ Timer2:
Timer 2 được dùng chủ yếu ở phần điều chế xung của bộ CCP, thanh ghi TMR2 có khả năng đọc và viết, nó có thể xoá bằng việc reset lại thiết bị. Đầu vào của xung có thể chọn các tỷ lệ sau: 1:1, 1:2 hoặc 1:16 việc chọn các tỷ lệ này có thể điều khiển các bit sau T2CKPS1 và bit T2CKPS0
Ngắt của bộ Timer2:
Bộ Timer 2 có 1 thanh ghi 8 bit PR2. Timer 2 tăng từ giá trị 00h cho đến khớp với PR2 và tiếp theo nó sẽ reset lại giá trị 00h và lệnh kế tiếp thực hiện. Thanh ghi PR2 là một thanh ghi có khả năng đọc và viết. Thanh ghi PR2 bắt đầu từ giá trị FFh đầu ra của TMR2 là đường dẫn cổng truyền thông đồng bộ, nó được dùng để phát các xung đồng bộ.
* Thanh ghi T2CON
Bit 7 không sử dụng
Bit 6-3 TOUTPS3:TOUTPS0 bit lựa chọn hệ số đầu ra Timer2
0000 = 1:1
0001 = 1:2
0010 = 1:3
…
1111 = 1:16
Bit 2 TMR2ON bit bật tắt hoạt động Timer2
1 = Enable
0 = Disable
Bit 1-0 2CKPS1:T2CKPS0 chọn hệ chia đầu vào
00 = 1:1
01 = 1:4
1x = 1:16
II. GIAO TIẾP CỐNG NỐI TIẾP
1. Cấu trúc cổng nối tiếp
Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có các ưu điểm sau:
- Khoảng cách truyền xa hơn truyền song song.
- Số dây kết nối ít.
- Có thể truyền không dây dùng hồng ngoại.
- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device).
- Cho phép nối mạng.
- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
- Có thể cung cấp nguồn cho các mạch điện đơn giản
Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE (Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay (handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.
Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations). Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.
Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps.
Các phương thức nối giữa DTE và DCE:
- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
- Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng.
- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Start
D0
D1
D2
D3
D4
D5
D6
D7
P
Stop
0 1
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Chiều dài cable cực đại
15m
Tốc độ dữ liệu cực đại
20 Kbps
Điện áp ngõ ra cực đại
± 25V
Điện áp ngõ ra có tải
± 5V đến ± 15V
Trở kháng tải
3K đến 7K
Điện áp ngõ vào
± 15V
Độ nhạy ngõ vào
± 3V
Trở kháng ngõ vào
3K đến 7K
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps,
9600 bps và 19200 bps
Sơ đồ chân
Cổng COM dạng đầu nối DB9 (9 chân) mô tả như hình 4.2. Ý nghĩa của các chân mô tả như sau:
D9
Tín
hiệu
Hướng truyền
Mô tả
1
-
-
Protected ground: nối đất bảo vệ
3
TxD
DTEÆDCE
Transmitted data: dữ liệu truyền
2
RxD
DCEÆDTE
Received data: dữ liệu nhận
7
RTS
DTEÆDCE
Request to send: DTE yêu cầu truyền dữ liệu
8
CTS
DCEÆDTE
Clear to send: DCE sẵn sàng nhận dữ liệu
6
DSR
DCEÆDTE
Data set ready: DCE sẵn sàng làm việc
5
GND
-
Ground: nối đất (0V)
1
DCD
DCEÆDTE
Data carier detect: DCE phát hiện sóng mang
4
DTR
DTEÆDCE
Data terminal ready: DTE sẵn sàng làm việc
9
RI
DCEÆDTE
Ring indicator: báo chuông
2. Truyền thông giữa hai nút
Các sơ đồ khi kết nối dùng cổng nối tiếp:
TxD
RxD GND
TxD
RxD GND
TxD
RxD GND
TxD
RxD GND
DTE1 DTE2
DTE DCE
Hình 4.3 – Kết nối đơn giản trong truyền thông nối tiếp
Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.
Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:
TxD RxD GND RTS CTS DSR DCD DTR
TxD RxD GND RTS CTS DSR DCD DTR
DTE1 DTE2
Hình 4.4 – Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay
Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực Æ tác động lên DSR của DTE2
cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 có thể nhận dữ liệu. Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể thực hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff.
Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.
3. Truy xuất trực tiếp thông qua cổng
Tên
Địa chỉ
Ngắt
Vị trí chứa địa chỉ
COM1
3F8h
4
0000h:0400h
COM2
2F8h
3
0000h:0402h
COM3
3E8h
4
0000h:0404h
COM4
2E8h
3
0000h:0406h
Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4 với các địa chỉ như sau
Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho trong bảng sau:
Offset
DLAB
R/W
Tên
Chức năng
0
0
W
THR
Transmitter Holding Register (đệm truyền)
0
R
RBR
Receiver Buffer Register (đệm thu)
1
R/W
BRDL
Baud Rate Divisor Latch (số chia byte thấp)
1
0
R/W
IER
Interrupt Enable Register (cho phép ngắt)
1
R/W
BRDH
Số chia byte cao
2
R
IIR
Interrupt Identification Register (nhận dạng ngắt)
W
FCR
FIFO Control Register
3
R/W
LCR
Line Control Register (điều khiển đường dây)
4
R/W
MCR
Modem Control Register (điều khiển MODEM)
5
R
LSR
Line Status Register (trạng thái đường dây)
6
R
MSR
Modem Status Register (trạng thái MODEM)
7
R/W
Scratch Register (thanh ghi tạm)
Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ cổng (ví dụ như thanh ghi cho phép ngắt của COM1 có địa chỉ là BACOM1 + 1 = 3F9h).
IIR (Interrupt Identification):
IIR xác định mức ưu tiên và nguồn gốc của yêu cầu ngắt mà UART đang chờ phục vụ. Khi cần xử lý ngắt, CPU thực hiện đọc các bit tương ứng để xác định nguồn gốc của ngắt. Định dạng của IIR như sau:
D7 D6 D5 D4 D3 D2 D1 D0
00: không có
FIFO
11: cho phép
FIFO
Cho phép FIFO 64
byte (trong 16750)
-
1: ngắt time-out
(trong 16550)
Xác định nguồn
gốc ngắt
0: có
ngắt
1: không ngắt
D2
D1
Ưu
tiên
Tên
Nguồn
D2 – D0 bị xoá
khi
0
0
4
Đường
truyền
Lỗi khung, thu đè, lỗi parity, gián đoạn
khi thu
Đọc LSR
0
1
3
Đệm thu
Đệm thu đầy
Đọc RBR
1
0
2
Đệm phát
Đệm phát rỗng
Đọc IIR, ghi
THR
1
1
1
Modem
CTS, DSR, RI, RLSD
Đọc MSR
(mức 1 ưu tiên cao nhất)
IER (Interrupt Enable Register):
IER cho phép hay cấm các nguyên nhân ngắt khác nhau (1: cho phép, 0: cầm ngắt)
MCR (Modem Control Register):
BI: Break Interrupt (=1 khicó sự gián đoạn khi truyền, nghĩa là tồn tại mức logic 0
trong khoảng thời gian dài hơn khoảng thời gian truyền 1 byte và bị xoá khi CPU đọc LSR) FE: Frame Error (=1 khi có lỗi khung truyền và bị xoá khi CPU đọc LSR)
PE: Parity Error (=1 khi có lỗi parity và bị xoá khi CPU đọc LSR)
OE: Overrun Error (=1 khi có lỗi thu đè, nghĩa là CPU không đọc kịp dữ liệu làm cho quá trình ghi chồng lên RBR xảy ra và bị xoá khi CPU đọc LSR)
RxDR: Receiver Data Ready (=1 khi đã nhận 1 ký tự và đưa vào RBR và bị xoá khi CPU đọc RBR).
LCR (Line Control Register):
D7 D6 D5 D4 D3 D2 D1 D0
DLAB
SBCB
PS2
PS1
PS0
STB
WLS1
WLS0
DLAB (Divisor Latch Access Bit) = 0: truy xuất RBR, THR, IER, = 1 cho phép đặt bộ chia tần trong UART để cho phép đạt tốc độ truyền mong muốn.
UART dùng dao động thạch anh với tần số 1.8432 MHz đưa qua bộ chia 16 thành tần số 115,200 Hz. Khi đó, tuỳ theo giá trị trong BRDL và BRDH, ta sẽ có tốc độ mong muốn.
Ví dụ như đường truyền có tốc độ truyền 2,400 bps có giá trị chia 115,200 / 2,400 = 48d = 0030h Æ BRDL = 30h, BRDH = 00h.
Một số giá trị thông dụng xác định tốc độ truyền cho như sau:
Tốc độ (bps)
BRDH
BRDL
1,200
00h
60h
2,400
00h
30h
4,800
00h
18h
9,600
00h
0Ch
19,200
00h
06h
38,400
00h
03h
57,600
00h
02h
115,200
00h
01h
SBCB (Set Break Control Bit) =1: cho phép truyền tín hiệu Break (=0) trong khoảng thời gian lớn hơn một khung PS (Parity Select):
PS2
PS1
PS0
Mô tả
X
X
0
Không kiểm tra
0
0
1
Kiểm tra lẻ
0
1
1
Kiểm tra chẵn
1
0
1
Parity là mark
1
1
1
Parity là space
STB (Stop Bit) = 0: 1 bit stop, =1: 1.5 bit stop (khi dùng 5 bit dữ liệu) hay 2 bit stop (khi dùng 6, 7, 8 bit dữ liệu).
WLS (Word Length Select):
WLS1
WLS0
Độ dài dữ liệu
0
0
5 bit
0
1
6 bit
1
0
7 bit
1
1
8 bit
PHẦN II: THIẾT KẾ PHẦN CỨNG
I.SƠ ĐỒ KHỐI VÀ CHỨC NĂNG CÁC KHỐI
1. Sơ đồ khối:
Khối nguồn
Khối điều khiển
Khối xử lý trung tâm
Khối hiển thị
Khối truyền thông
2. Chức năng các khối:
2.1. Khối nguồn
- Nguồn đầu vào là nguồn xoay chiều được đưa qua biến áp sau đó cho qua cầu chỉnh lưu đưa vào chân IN của IC7805 để lấy ra nguồn 5V cung cấp cho toàn mạch.
2.2. Khối điều khiển
- Khối này có tác dụng điều khiển bật, tắt các thiết bị:
+ Khi ON1 được nhấn, chân B0 của VĐK được nối xuống mass => quạt được cấp nguồn để hoạt động. Khi nhấn OFF1 thì chân B1 của VĐK được nối xuống mass => tắt quạt.
+ Khi ON2 được nhấn, chân B2 của V ĐK được nối xuống mass => Tivi được bật. Khi nhấn OFF2 thì chân B3 của VĐK được nối xuống mass => tắt Tivi.
+ Khi nhấn ON3, chân B4 của VĐK được nối xuống mass => đèn được cấp nguồn và sáng. Khi nhấn OFF3 thì chân B5 của VĐK đợc nối xuống mass => đèn tắt.
+ Khi nhấn ON4, chân B6 của VĐK được nối xuống mass => máy bơm được cấp nguồn và hoạt động. Khi nhấn OFF4 thì chân B7 của VĐK đợc nối xuống mass => máy bơm ngừng hoạt động.
2.3. Khối xử lý trung tâm
Khối xử lý trung tâm có tác dụng điều khiển hoạt động của tất cả các thiết bị. Khi VĐK nhận được tín hiệu tác đông thì nó sẽ xử lý và điều khiển các thiết bị hoạt động.
2.4. Khối truyền thông
- Khối này có tác dụng là cầu nối để truyền tín hiệu giữa VĐK và máy tính qua RS232. Max232 có tác dụng tương thích nguồn giữa VĐK với máy tính.
2.5. Khối hiển thị
- Khối này có tác dụng báo các thiết bị đã được bật tắt.
II. SƠ ĐỒ NGUYÊN LÝ
Lưu đồ vi điều khiển
Chương trình
// TEN CHUONG TRINH: Dieu khien cac thiet bi
// MO TA PHAN CUNG: DUNG PIC 16F876A - THACH ANH 4 MHz
// : Dau vao PortB su dung cac phim nhan lam nhiem vu ON, OFF
// : Dau vao RA0 ket noi voi cam bien nhan biet thiet bi da hoat dong hay chua
// : Dau ra PortC su dung 4 led mo phong 4 thiet bi
#include
#include
#device *=16 ADC=8
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
char ma;
void RDA_ISR();
#INT_RDA
VOID RDA_ISR(){
RA0=1;RB0=1;RB1=1;RB2=1;RB3=1;RB4=1;RB4=1;RB5=1;RB6=1;RB7=1;
ma=getc();
{
if((ma==0x71)||(rb0==0))
{
delay_us(500);
output_high(pin_a5); // Bat quat
}
}
{
if((ma==0x70)||(rb1==0))
{
delay_us(500);
output_low(pin_a5); // Tat quat
}
}
{
if((ma==0x74)||(rb2==0))
{
delay_us(500);
output_high(pin_a3); // Bat Tivi
}
}
{
if((ma==0x76)||(rb3==0))
{
delay_us(500);
output_low(pin_a3); //Tat Tivi
}
}
{
if((ma==0x64)||(rb4==0))
{
delay_us(500);
output_high(pin_a2); // Bat Den
}
}
{
if((ma==0x65)||(rb5==0))
{
delay_us(500);
output_low(pin_a2); //Tat den
}
}
{
if((ma==0x6d)||(rb6==0))
{
delay_us(500);
output_high(pin_a1); // Bat may bom
}
}
{
if((ma==0x6e)||(rb7==0))
{
delay_us(500);
output_low(pin_a1); //Tat may bom
}
}
}
// Chuong trinh chinh
main()
{
set_tris_a(0b000001);
set_tris_b(0b11111111);
set_tris_c(0x80);
enable_interrupts(int_RDA);
enable_interrupts(global);
while(true)
{ if(ra0==0) {putc('y');delay_ms(5);}
else {}
}
}
Giao diện người dùng
Lưu đồ VB
Chương trình
Option Explicit
Dim tv As Boolean
Dim i As Long
Dim j As Long
Dim path
'******************* Mo cong ****************************
Private Sub cmdopenport_Click()
On Error GoTo loi
If MSComm1.PortOpen Then MSComm1.PortOpen = False
Me.MSComm1.CommPort = 1
MSComm1.PortOpen = True
Me.lblPortstatus.Caption = "Status: Port da duoc mo !"
Me.frmcong.Enabled = True
Me.frmden.Enabled = True
Me.frmmaybom.Enabled = True
Me.frmquat.Enabled = True
Me.frmtivi.Enabled = True
Exit Sub
loi:
MsgBox "khong mo duoc cong"
Me.lblPortstatus.Caption = "Status: Chua co Port nao duoc mo !"
Me.frmden.Enabled = False
Me.frmmaybom.Enabled = False
Me.frmquat.Enabled = False
Me.frmtivi.Enabled = False
End Sub
Private Sub Form_Load()
path = App.path
If Right(path, 1) "\" Then path = path & "\"
Me.frmden.Enabled = False
Me.frmmaybom.Enabled = False
Me.frmquat.Enabled = False
Me.frmtivi.Enabled = False
End Sub
'********************* Dieu khien may bom ************************
Private Sub cmdonmaybom_Click()
If cmdonmaybom = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrmaybom.Enabled = True
MSComm1.Output = Chr(&H6D)
Me.tmrmaybom.Interval = 100
End Sub
Private Sub cmdoffmaybom_Click()
If cmdoffmaybom = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrmaybom.Enabled = True
MSComm1.Output = Chr(&H6E)
Me.tmrmaybom.Interval = 0
End Sub
'********************* Dieu khien quat ************************
Private Sub cmdonq_Click()
If cmdonq = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrquat.Enabled = True
MSComm1.Output = Chr(&H71)
Me.tmrquat.Interval = 10
End Sub
Private Sub cmdoffq_Click()
If cmdoffq = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrquat.Enabled = True
MSComm1.Output = Chr(&H70)
Me.tmrquat.Interval = 0
End Sub
'********************* Dieu khien den ************************
Private Sub cmdonden_Click()
tmrxuly.Enabled = False
If cmdonden = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H64)
Me.imgDen.Picture = LoadPicture(path & 11 & ".bmp")
tmrxuly.Enabled = True
End Sub
Private Sub cmoffden_Click()
tmrxuly.Enabled = False
If cmoffden = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H65)
Me.imgDen.Picture = LoadPicture(path & 10 & ".bmp")
tmrxuly.Enabled = True
End Sub
'********************* Dieu khien tivi ************************
Private Sub cmdontv_Click()
If cmdontv = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H74)
WindowsMediaPlayer1.URL = path & "Proud of You.MPE"
End Sub
Private Sub cmdofftv_Click()
If cmdofftv = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H76)
WindowsMediaPlayer1.Close
End Sub
Private Sub Timer1_Timer()
Me.lblht.Caption = Mid(lblht.Caption, 2) & Mid(lblht.Caption, 1, 1)
End Sub
Private Sub tmrmaybom_Timer()
j = j + 1
If j = 3 Then j = 1
Me.imgmaybom.Picture = LoadPicture(path & j & ".JPG")
End Sub
Private Sub tmrQuat_Timer()
i = i + 1
If i = 6 Then i = 1
Me.imgQuat.Picture = LoadPicture(path & i & ".bmp")
End Sub
'******************XU LY THONG TIN NHAN LEN***************
Private Sub tmrxuly_Timer()
Dim dulieunhan As String
If MSComm1.InBufferCount 0 Then
dulieunhan = MSComm1.Input
End If
If dulieunhan = "" Then
txtnhan.Text = "thiet bi khong hoat dong"
Else
txtnhan.Text = "thiet bi da hoat dong"
End If
End Sub.
Kết luận
Sau một thời gian tìm hiểu và nghiên cứu đề tài, cùng với sự giúp đỡ nhiệt tình của các thầy cô giáo trong khoa Điện-Điện tử và đặc biệt được sự giúp đỡ của thầy Phạm Ngọc Hưng khoa Công nghệ thông tin, chúng em đã hoàn thành đề tài của mình. Qua đây phần nào cũng giúp bạn đọc được hiểu rõ về ứng dụng của Ghép nối máy tính và giao diện trong thực tế, đồng thời hiểu được những kiến thức cơ bản của môn Visuabasic6.0.
Qua quá trình thiết kế, chế tạo không thể tránh khỏi những sai sót và khuyết điểm. Vì vậy chúng em rất mong được sự đóng góp ý kiến của các thầy cô và các bạn để đề tài được hoàn thiện hơn.
Các file đính kèm theo tài liệu này:
- Mạch điều khiển các thiết bị trong nhà.doc