Lời nói đầu:
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 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 điều khiển tự động đã có sự phát triển mạnh mẽ, phục vụ những đòi hỏi không ngừng của con người về một cuộc sống tiện nghi hiện đại.
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 “Mô Hình Ngôi Nhà Tự Động” 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.
MỤC LỤC
Lời nói đầu
Lời cảm ơn
Chương I: Dẫn Nhập....................................................................................... Trang 5
Chương II: Vi Điều Khiển PIC 16F877A....................................................... Trang 6
2.1 Giới thiệu chung về PIC 16F877A ................................................ Trang 6
2.2 Vi Điều Khiển Pic 16F877A....................................................... Trang 8
Chương III: Trình Biên Dịch PCWH 3.227 Và CCS................................. Trang 22
3.1 Giới Thiệu Chung...................................................................... Trang 22
3.2 Cách Viết Một Chương Trình CCSC......................................... Trang 25
3.3 Chương Trình Nạp Vi Điều Khiển WinPic 800......................... Trang 35
Chương IV: Module Tinh Thể Lỏng LCD................................................... Trang 40
4.1 Giới Thiệu Chung....................................................................... Trang 40
4.2 Hiển Thi ký Tự Theo Dong LM 162ACB ................................. Trang 41
4.3 Sơ đồ Kết Nối Ứng Dụng Với PIC............................................ Trang 49
Chương V: Cảm Biến Hồng Ngoại ............................................................... Trang 50
Chương VI: Cảm Biến Nhiệt Độ LM35....................................................... Trang 51
Chương VII: IC giải mã led 7 đoạn – 74247................................................ Trang 52
Chương VIII: IC ổn áp................................................................................ Trang 58
Chương IX: 2SC1815.................................................................................. Trang 60
Chương X: Thiết Kế & Thi Công Mạch Điện Tử Trong Mô Hình ........... Trang 61
10.1 Hệ Thống Cửa Tự Động....................................................... Trang 61
10.1.1 Sơ Đồ Nguyên Lý............................................................. Trang 62
10.1.2 Sơ Đồ Khối ...................................................................... Trang 63
10.1.3 Nguyên Lý Hoạt Động...................................................... Trang 64
10.1.4 Lưu Đồ Giải Thuật............................................................ Trang 70
10.1.5 Chương Trình Viết .......................................................... Trang 71
10.2 Mạch Hiển Thị Nhiệt Độ Điều Khiển Và Cảnh Báo........... Trang 76
10.2.1 Ứng Dụng Module ADC................................................... Trang 76
10.2.2 Sơ Đồ Nguyên Lý............................................................. Trang 79
10.2.3 Sơ Đồ Khối ..................................................................... Trang 80
10.2.4 Nguyên Lý Hoạt Động ..................................................... Trang 81
10.2.5 Lưu Đồ Giải Thuật............................................................ Trang 82
10.2.6 Chương Trình Viết ........................................................... Trang 83
Kết Luận ...................................................................................................... Trang 88
Tài liệu Tham Khảo....................................................................................... Trang 89
CHƯƠNG I : DẪN NHẬP
I. Đặt vấn đề:
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống điều khiển dần được tự động hóa.Với các kỹ thuật tiên tiến như vi xử lý, vi mạch số…được ứng dụng vào lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử lý chậm chạm ít chính xác được thay thế bằng các hệ thống điều khiển tự động với các lệnh chương trình đã được thiết lập trước.
Sau thời gian học tập ở trường, với sự chỉ dẫn tận tình của Thầy, Cô. Và Được sự đồng ý của khoa Điện Tử - Tin Học Trường Cao Đẳng Kỹ Thuật Cao Thắng nhằm ứng dụng những kiến thức đã học vào thực tế qua đồ án tốt nghiệp của mình,nhóm chúng em quyết định thực hiện đề tài “ NGÔI NHÀ TỰ ĐỘNG”.
II. Giới hạn đề tài:
Với thời gian gần năm tuần thực hiện đề tài cũng như trình độ chuyên môn có hạn, chúng em đã cố gắng hết sức để hoàn thành đồ án này nhưng chỉ giải quyết được những vấn đề sau:
- Hệ thống cửa tự động, khóa cửa tự động.
- Đo nhiệt độ trong phòng hiển thị bằng LCD, điều khiển thiết bị và cảnh báo.
- Tự động bật đèn ngoài sân khi trời tối.
III. Mục đích nghiên cứu :
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để đủ điều kiện ra trường. Cụ thể khi nghiên cứu đề tài là chúng em muốn phát huy những thành quả ứng dụng của vi điều khiển vào một mạch thực tế. Nó còn là tập tài liệu tham khảo cho các bạn sinh viên khóa sau.
Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lại những kiến thức đã học ở trường. Đồng thời phát huy tính sáng tạo, khả năng giải quyết những vấn đề do nhu cầu đặt ra.
IV. Đối tượng nghiên cứu
- Các phương án điều khiển và xử lý dữ liệu cho hệ thống cửa tự động
-Tìm hiểu về vi xử lý PIC16F877A
- Tìm hiểu phương pháp lập trình CCS
- Tìm hiểu về cảm biến nhiệt độ LM35
CHƯƠNG II
VI ĐIỀU KHIỂN PIC16F877A
- I : Giới Thiệu Chung Về Pic 16FXXX
- II : Vi Điều Khiển Pic 16F877A
2.1: Giới Thiệu Chung Về Pic 16FXXX
2.1.1 : Pic là gì ?
Pic là viết tắt của” Promgramable Intelligent Computer’’,có thể tạm dịch là “ máy tính thông minh khả trình “ do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ. Pic 1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600 .Vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay .
2.1.2:Tại sao dùng Pic ?
Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam .Giá thành không quá đắt . Có đầy đủ tính năng của một vi điều khiển khi hoạt động độc lập .Là một sự bổ xung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển mang tính truyền thống họ vi điều khiển 8051.Số lượng người sử dụng vi điều khiển Pic hiện nay tại Việt Nam cũng như trên thế giới khá rộng rãi.Điều này tạo nhiều thuận lợi cho quá trình tìm hiểu và phát triển các ứng dụng như:số lượng các tài liệu ,số lượng các ứng dụng mở đã được phát triển thành công ,dễ dàng trao đổi, học tập ,dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,.... Sự hỗ trợ nhà sản xuất về trình biên dịch ,các công cụ lập trình ,nạp chương trình từ đơn giản đến phức tạp,...Các tính năng đa dạng của vi điều khiển Pic ,và các tính năng này không ngừng được phát triển.
2.1.3:Các dòng Pic và cách lựa chọn vi điều khiển Pic
Các ký hiệu của vi đìề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 : Pic có bộ nhớ flash hoạt động ở điện áp thấp.
LV : tương tự như LF , đây là ký hiệu cũ.
Bên cạnh đó một số vi điều khiển có ký hiệu là xxFxxx là EEPROM, nếu như có thêm chữ A ở cuối là flash, (ví dụ như PIC 16F877 là EEPROM ,còn PIC 16F877A là flash).
Ở 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. Cách lựa chọn một vi điều khiển Pic phù hợp : Trước hết cần chú ý đến số chân của vi điều khiển phù hợp với ứng dụng .Có nhiều vi điều khiển Pic với số lượng chân khác nhau,thậm chí có vi điều khiển chỉ có 8 chân .Ngoài ra còn có vi điều khiển 28 ,40,44,...chân. Cần chọn vi điều khiển Pic có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần . Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển , các chuẩn giao tiếp bên trong.Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.
2.1.4: Ngôn ngữ lập trình cho Pic
Ngôn ngữ lập trình cho Pic rất đa dạng .Ngôn ngữ lập trình cấp thấp có MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip ),các ngôn ngữ lập cấp cao hơn bao gồm C, Basic, Pascal ,.... Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho Pic như PicBasic, MkroBasic......
2.1.5: Mạch nạp Pic
Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển Pic .Có thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II. Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB .Dòng sản phẩm chính thống này có ưu thế là nạp được cho tất cả các vi điều khiển Pic ,tuy nhiên giá thành cao và thường gặp nhiều khó khăn trong quá trình mua sản phẩm.
2.2: Vi Điều Khiển Pic 16F877A
2.2.1.Sơ đồ chân
Hình 2.1:vi điều khiển Pic 16F8774A/16F877A và các dạng chân
2..2.2 Một vài thông số về Pic 16F877A
Đây là vi điều khiển thuộc họ Pic16Fxxx với tập lệnh hơn 35 lệnh có độ dài 14 bit .Mỗi lệnh đều được thực thi trong mỗi 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 368 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256 byte .Số port I/O là 5 với 33 pin I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- Timer 0: bộ đếm 8 bit với bộ chia tần số 8 bit
- Timer 1: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.
- Timer 2: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 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 (Paraller 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 1000.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 hai chân.
- Watch Dog 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.
2.2.3: Sơ đồ khối của Pic 16F877A
2.2.4 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC 16F877A bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu (Data memory ).
- Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển Pic 16F877A 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ừ page 0 đến page 3) .Như vậy bộ nhớ chương trình có khả năng chứa được 8 x 1024 =8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit).
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ớ dữ liệu
Bộ nhớ dữ liệu của Pic là bộ nhớ EEPROM được chia ra thành nhiều bank .Đối với Pic 16F877A 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 SFR (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 Pic 16F877A như sau :
a\Thanh ghi chức năng đặt biệt SFR :
Đây là 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 loại :Thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SFR 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,...)
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.
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP |
RP1 |
RP0 |
___ TO |
___ PD |
Z |
DC |
C |
Bit 7 Bit 0
Thanh ghi OPTION –REG (81h,181h): thanh ghi cho phép đọc và ghi ,cho phép điều khiển chức năng full-up của các chân trong PORT B ,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à timer 0.
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
_____ RBPU |
INTEDG |
TOCS |
TOSE |
PSA |
PS2 |
PS1 |
PS0 |
Bit 7 Bit 0
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 timer 0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrputon- change tại các chân của PORT B.
R/W-0 R/W-X R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
GIE |
PEIE |
TMR0IE |
INTE |
RBIE |
TMR0IF |
INTF |
RBIF |
Bit 7 Bit 0
Thanh ghi PIE1 (8Ch) :chứa các bit điều khiển chi tiết các ngắt của khối chức năng ngoại vi.
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/ W-0 R/W-0 R/W-0
PSPIE(1) |
ADIE |
RCIE |
TXIE |
SSPIE |
CCP1IE |
TMR2IE |
TMR1IE |
Bit 7 Bit
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.
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PSPIF(1) |
ADIF |
RCIF |
TXIF |
SSPIF |
CCP1IF |
TMR2IF |
TMR1IF |
Bit 7 Bit 0
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.
U-0 R/W-X U-0 R/W-0 R/W-0 U-0 U-0 R/W-0
─ |
CMIE |
─ |
EEIE |
BCLIE |
─ |
─ |
CCP2IE |
Bit 7 Bit 0
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.
U-0 R/W-X U-0 R/W-0 R/W-0 U-0 U-0 R/W-0
─ |
CMIF |
─ |
EEIF |
BCLIF |
─ |
─ |
CCP2IF |
Bit 7 Bit 0
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 .
R/W-0 R/W-1 U-0 U-0 U-0 U-0 U-0 U-0
─
|
─ |
─ |
─
|
─ |
─ |
____ POR |
____ RBIF
|
Bit 7 Bit 0
b)Thanh ghi mục đích chung GPR
Các thanh ghi này có thể truy xuất trực tiếp hoặc gián tiếp thông qua các thanh ghi FSR (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ố của chương trình.
c) 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 CaII đượ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 một bộ biến chương trình PC sẽ tự động được vi điều khiển cất vào trong Stack. Khi một trong các lệnh Return, Retlw hay Retfie được thực thi, giá trị PC sẽ tự động được lấy ra từ trong Stack, vi điều khiển tự động thực hiện tiếp chương trình theo đúng quy 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 trong 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á trị cất vào Stack lần thứ 2.
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 bị 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 điều khiển bởi CPU.
2.2.5: Các cổng xuất nhập của PIC 16F877A.
Các 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. Bên cạnh đó, 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 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.
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm Port A, Port B, Port C, Port D và Port E.
PORT A:
Port A (RPA) bao gồm 6 I/0 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 Tris A ( địa chỉ 85 h).Muốn xác lập chức năng của một chân Port A là input,ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi Tris A và ngược lại ,muốn xác lập chức năng của một chân trong Port A là ouput ,ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi Tris A .Thao tác này hoàn toàn tương tự với các Port và các thanh ghi điều khiển tương ứng Tris (đối với Port A là Tris A,đồi với Port B là Tris B ,đối với Port C là Tris C,đối với Port D là Tris D và đối với Port E là Tris E ). Bên cạnh đó Port A còn là ngõ ra của bộ ADC,bộ so sánh ,ngõ vào Analog ngõ vào xung clock của Timer 0 và ngõ vào của bộ giao tiếp MSSP (master synchronous serial Port ).
Các thanh ghi SFR liên quan đến Port A bao gồm :
Port A(địa chỉ 05h):chứa giá trị các pin trong Port A.
Tris A (đị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.
PORT B :
Port B (RP B) gồm 8 pin I/O .Thanh ghi điều khiển xuất nhập tương ứng là Tris B .Bên cạnh đó một số chân của Port B. 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 .Port B còn liên quan đến ngắt ngoại vi và bộ Timer 0 . Port B 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 Port B bao gồm :
Port B (địa chỉ 06h ,106h) :chứa giá trị các pin trong Port B.
Tris B ( đị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ộ timer 0.
PORT C:
Port C (RPC) gồm 8 pin I/O ,thanh ghi điều khiển xuất nhập tương ứng là Tris C.Bên cạnh đó Port C còn chứa các chân chức năng của bộ so sánh ,bộ Timer 1,bộ PWM và các chuẩn giao tiếp nối tiếp I2C,SPI,SSP,USART.
Các thanh ghi điều khiển liên quan đến Port C:
Port C(địa chỉ 07h )P:chứa giá trị các pin trong Port C .
Tris C (địa chỉ 87h):điều khiển xuất nhập .
PORT D :
Port D (RPD) gồm 8 chân I/O ,thanh ghi điều khiển xuất nhập tương ứng là Tris D.Port D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Paraller Slave Port ).
Các thanh ghi liên quan đến Port D bao gồm :
Thanh ghi Port D :chứa giá trị các pin trong Port D.
Thanh ghi Tris D :điều khiển xuất nhập .
PORT E :
Port E (RPE) gồm 3 chân I/O.Thanh ghi điều khiển xuất nhập tương ứng là Tris E.Các chân của Port E có ngõ vào analog .Bên cạnh đó Port E còn là các chân điều khiển của chuẩn giao tiếp PSP.
Các thanh ghi liên quan đến Port E bao gồm :
Port E :chứa giá trị các chân trong Port E.
TRIS E điều khiển xuất nhập PORT E 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.
2.2.6: Timer 0
Đây là 1 trong 3 bộ đếm hoặc bộ định thời của vi điều khiển PIC 16F877A. Timer 0 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 bộ Timer 0 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 Timer 0 sẽ xuất hiện khi timer 0 bị tràn.
Muốn Timer 0 hoạt động ở chế độ Timer ta clear bit TOSC(OPTION-REG <5>),khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kỳ đồng hồ (tần số vào Timer 0 bằng ¼ tần số oscillator).Khi giá trị thanh ghi TMR0 từ FFh trở về 00h,ngắt Timer 0 sẽ xuất hiện .Thanh ghi TMR 0 cho phép ghi và xóa được giúp ta ấn định thời gian ngắt Timer 0 xuất hiện một cách linh động.Muốn Timer 0 hoạt động ở chế độ counter ta set bit TOSC (OPTION-REG<5>).Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1.Bit TOSE (OPTION-REG<4>)cho phép lựa chọn cạnh tác động vào bộ đế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<2>) sẽ được set .Đây chính là cờ ngắt của Timer 0.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 Timer 0 không thể” đánh thức “vi điều khiển từ chế độ Sleep.
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à Timer 0, 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 Timer 0 bao gồm :
TMR0 (địa chỉ 01h,101h):chứa giá trị đếm của Timer 0.
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.
2.2.7:Timer 1
Timer 1 là bộ định thời 16 bit ,giá trị của Timer 16 sẽ được lưu trong hai thanh ghi (TMR1H:TMR1L).Cờ ngắt của Timer 1 là bit TMR1IF (PIR<0>). Bit điều khiển của Timer 1 sẽ là TMR1IE(PIE<0>).Tương tự như Timer 0,Timer 1 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ố 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<1>).
Các thanh ghi liên quan đến Timer 1 bao gồm:
INTCON(địa chỉ 0Bh,8Bh,10Bh,18Bh): cho phép ngắt hoạt động (GIE PEIE).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer 1 (TMR1IF).
PIE1 (địa chỉ 8Ch ): cho phép ngắt Timer 1 (TMR1IE).
TMR1R (địa chỉ 0Eh) : chứa giá trị 8 bit thấp của bộ đếm Timer 1.
TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer 1.
T1CON (địa chỉ 10h ): xác lập các thông số cho Timer 1.
2.2.8 :Timer 2
Timer 2 là bộ định thời 8 bit và được hỗ trợ hai bộ chia tần số prescaler và postcaler. Thanh ghi chứa giá trị đếm của timer 2 là TMR2 .Bit cho phép ngắt Timer 2 tác động là TMR2ON (T2CON<2>). Cờ ngắt của Timer 2 là bit TMR2IF (PIR1<1>). 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 T2CKPS0 (T2CON <1:0>).
Ngoài ra ngõ ra của timer 2 còn được kết nối với khối SSP ,do đó Timer 2 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 Timer 2 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 Timer 2 (TMR2IF).
PIE1 (địa chỉ 8Ch ): chứa bit điều khiển Timer 2 (TMR2IE).
TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer 2.
T2CON (địa chỉ 12h):xác lập các thông số cho Timer 2.
PR2 (địa chỉ 92h ):thanh ghi hổ trợ cho Timer 2.
Timer 0 và Timer 2 là bộ đếm 8 bit (giá trị tối đa là FFh) ,trong khi Timer 1 là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh0. Timer 0 ,Timer 1 và Timer 2 đều có 2 chế độ hoạt động là Timer và counter. Xung clock có tần số bằng ¼ tần số của ossillator. Xung tác động lên Timer 0 đượ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 Timer 1 là cố định . Timer 2 được hổ trợ bởi hai bộ chia tần số prescilator và postcaler độc lập,tuy nhiên cạnh tác động vẫn được cố định là cạnh lên .Timer 1 có quan hệ với khối CCP,trong khi Timer 2 được kết nối với khối SSP.
2.2.9: 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ố. Pic 16f877A 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 và VSS hay hiệu điện thế chuẩn được xác lập trên hai chân RA2 va RA3. Kết quả chuyển đổi từ tín hiệ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.
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 (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.
Port A (địa chỉ 05h và Tris A (địa chỉ 85h): liên quan đến các ngõ vào analog ở Port A.
Port E(địa chỉ 09h) và Tris E(địa chỉ 89h ): liên quan đến các ngõ vào analog ở Port E.
2.2.10 : Giao tiếp nối tiếp
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một trong hai chuẩn giao tiếp nối tiếp .USART còn gọi là giao diện giao tiếp nối tiếp SCI (Serial Communication Interface ). Có thể sử dụng giao diện này cho các giao tiếp với các thiết bị ngoại vi ,với các vi điều khiển hay với máy tính .Các dạng của giao diện USART ngoại vi bao gồm:
- Bất đồng bộ (Asynchronous).
- Đồng bộ _ master mode.
- Đồng bộ _slave mode.
Pic 16f877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate Genetator) 8 bit dùng cho giao diện USART.BRG thực chất là một bộ đếm có thể được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh ghi PSBRG. Ở dạng bất đồng bộ,BRG còn được điều khiển bởi bit BRGH (TXSTA<2>). Ở dạng đồng bộ tác động của bit BRGH được bỏ qua.Tốc độ baud do BRG tạo ra được tính theo công thức sau:
|
|
|
SYNC |
Brgh =0 (low speed) |
Brgh=1 (high speed)) |
0
1 |
(Asynchronous)BaudRate=Fosc/(64(x+1))
(Asynchronous)Baud Rate=Fosc/(4(x+1)) |
BaudRate=Fosc/(16(x+1))
N/A |
Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và 0<X<255).
Các thanh ghi liên quan đến BRG bao gồm:
TXSTA (địa chỉ 98h):chọn chế độ bộ hay bất đồng bộ(bit SYNC) và chọn mức tốc độ Baud bitBRGH)
RCSTA (địa chỉ 18h):cho phép họat động cổng nối tiếp (bit SPEN).
RSBRG (địa chỉ 99h): quyết định tốc độ Baud.
-USART bất đồng bộ:ở chế độ truyền này USART hoạt động theo chuẩn NRZ (None-Return-to-Zero),nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start , 8 hay 9 bit dữ liệu (thông thường là 8 bit) và một bit stop.Bit LSB sẽ được truyền đi trước. Các khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị của bit BRGH),và đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận phải dùng chung một định dạng dữ liệu.
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART bất đồng bộ:
Thanh ghi INTCON (địa chỉ 0Bh,8Bh,10Bh, 18Bh): cho phép tất cả các ngắt.
Thanh ghi PIR1 (địa chỉ 0Ch):chứa cờ hiệu TXIF.
Thanh ghi PIE1 (địa chỉ 8Ch) :chứa bit cho phép ngắt truyền TXIE.
Thanh ghi RCSTA (địa chỉ 18Ch):chứa bit cho phép cổng truyền dữ liệu (hai pin RC6/TX/CK/ và RC7/RX/DT).
Thanh TXREG (địa chỉ 19h) : thanh ghi chứa dữ liệu cần truyền.
Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ Baud.
-USART đồng bộ:
Giao diện USART đồng bộ được kích họat bằng cách set bit SYNC.Cổng giao tiếp nối tiếp vẫn là hai chân RC7/RX/DT/,RC6/TX/CK và được cho phép bằng cách set bit SPEN.USART cho phép hai chế độ truyền nhận dữ liệu là Master mode và Slave mode.Master mode được kích họat bằng cách set bit CSRC (TXSTA<7>), Slave mode được kích họat bằng cách clear bit CSRC.Điểm khác biệt duy nhất của hai chế độ này là Master mode sẽ lấy xung clock đồng bộ từ bộ tạo xung Baud BRG còn Slave mode lấy xung đồng bộ từ bên ngoài qua chân RC6/TX/CK.Điều này cho phép Slave mode họat động ngay cả vi điều khiển đang ở chế độ Sleep.
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART đồng bộ Master mode:
Thanh ghi INTCON (địa chỉ 0Bh,8Bh,10Bh,18Bh):cho phép tất cả các ngắt .
Thanh ghi PIR1 (địa chỉ 0Ch):chứa cờ hịêu TXIF.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
Thanh ghi RCSTA (địa chỉ 18h):chứa bit cho phép cổng truyền dữ liệu (hai pin RC6/TX/CK và RC7/RX/DT).
Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
Thanh ghi SPBRG (địa chỉ 99h): quyềt định tốc độ Baud.
2.2.11: Cổng giao tiếp song song PSP (parallel slave port)
Ngoài các cổng nối tiếp và các giao diện nối tiếp được trình bày ở phần trên ,vi điều khiển Pic 16f877a còn được hỗ trợ một cổng giao tiếp song song thông qua Port D và Port E, do cổng song song chỉ hoạt động ở chế độ Slave Mode nên vi điều khiển khi giao tiếp qua giao diện này sẽ chịu sự điều khiển của thiết bị bên ngoài thông qua các pin và Port E, trong khi dữ liệu sẽ được đọc hoặc ghi theo dạng bất đồng bộ thông qua 8 pin của Port D.
-Các thanh ghi liên quan đến PSP bao gồm:
Thanh ghi Port D (địa chỉ 08h): chứa dữ liệu cần đọc hoặc ghi.
Thanh ghi Port E (địa chỉ 09h): chứa giá trị các pin của Port E.
Thanh ghi Tris E (địa chỉ 89h) : chứa các bit điều khiển Port E và PSP.
Thanh ghi Pir 1 (địa chỉ 0Ch): chứa cờ ngắt PSPIF.
Thanh ghi Pie 1 (địa chỉ 8CH): chứa bit cho phép ngắt PSP
Thanh ghi adcon 1(địa chỉ 9Fh): điều khiển khối ADC tại Port E
2.2.12:Các đặc tính của Oscillator
Pic 16f877a có khả năng sử dụng một trong 4 loại oscillator, đó là:
LP:(low power crysal)
XT:thạch anh bình thường
HS:(high-speed crystal)
RC:(resistor/capacitor) dao động do mạch RC tạo ra đối với các lọai oscillator LP, HS, XT , Oscillator được gắn vào vi điều khiển thông qua các pin Osc /Clki và Osc2/Clko,đối với các ứng dụng không cần các lọai oscillator tốc độ cao,ta có thể sử dụng mạch dao động RC làm nguồn cung cấp xung họat động cho vi điều khiển, tần số tạo ra phụ thuộc vào các giá trị điện áp, giá trị điện trở và tụ điện,bên cạnh đó có sự ảnh hưởng của các yếu tố như nhiệt độ, chất lượng của các linh kiện.
Các linh kiện sử dụng cho mạch RC oscillator phải đảm bảo các giá trị sau:
3k<rext <100k
Cext >20pf
XIII:Các chế độ Reset
Có nhiều chế độ reset vi điều khiển , bao gồm:
Power-on Reset POR (Reset khi cấp nguồn họat động cho vi điều khiển).
Reset trong quá trình họat động.
Từ chế độ sleep.
WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động).
WDT wake up từ chế độ sleep.
Brown-oat reset (BOR).
-Power-on reset (POR):đây là xung reset do vi điều khiển tạo ra khi phát hịên nguồn cung cấp VDD.Khi họat động ở chế độ bình thường, vi điều khiển cần được đảm bảo các thông số về dòng điện, điện áp để hoạt động bình thường. Nhưng nếu các tham số này không được đảm bảo, xung reset do POR tạo ra sẽ đưa vi điều khiển về trạng thái reset và chỉ tiếp tục hoạt động khi nào các tham số trên được bảo đảm.
-Power-up Timer (PWRT): đây là bộ định thời hoạt động dựa vào mạch RC bên trong vi điều khiển.Khi PWRT được kích hoạt, vi điều khiển sẽ được đưa về trạng thái reset.PWRT sẽ tạo ra một khoảng thời gian delay (khoảng 72 ms) để VDD tăng đến giá trị thích hợp.
-Oscillator Start-up Timer (OST):OST cung cấp một khoảng thời gian delay bằng 1024 chu kỳ xung của oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủ điều kiện hoạt động) để ảm bảo sự ổn định của xung do oscillator tạo ra. Tác động của OST còn xảy ra đối với POR reset khi vi điều khiển được đánh thức từ chế độ sleep. OST chỉ tác động đối với các loại oscillator là XT, HS và LP.
-Brown-out reset (BOR):Nếu VDD hạ xuống thấp hơn giá trị VBOR (khoảng 4v) và kéo dài trong khoảng thời gian lớn hơn TBOR (khoảng 100us),BOR được kích hoạt và vi điều khiển được đưa về trạng thái BOR reset. Nếu điện áp cung cấp cho vi điều khiển hạ xuống thấp hơnVBOR trong khoảng thời gian ngắn hơn TBOR, vi điều khiển sẽ không được reset. Khi điện áp cung cấp đủ cho vi điều khiển họat động, PWRT được kích hoạt để tạo ra một khoảng thời gian delay (khoảng 72 ms).Nếu trong khoảng thời gian này điện áp cung cấp cho vi điều khiển lại tiếp tục hạ xuống dước mức điện áp VBOR,BOR reset sẽ lại được kích hoạt khi vi điều khiển đủ điện áp hoạt động. Một điểm cần chú ý là khi BOR reset được cho phép, PWRT cũng sẽ được bất chấp trạng thái của bit PWRT.
-Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bước sau:POR tác động . PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay TPWRT để ổn định nguồn cung cấp.
OST (nếu được cho phép ) tạo ra khoảng thời gian delay bằng 1024 chu kỳ xung của oscillator để ổn định tần số của oscillator.
Đến thời điểm này vi điều khiển mới bắt đầu hoạt động bình thường.Thanh ghi điều khiển và chỉ thị trạng thái nguồn cung cấp cho vi điều khiển là thanh ghi PCON
2.2.13: Ngắt
PIC 16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh ghi INTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng.Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE , tuy nhiên hoạt động ngắt vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON , thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2.Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.
Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h. Lệnh RETFIE được dùng để thoát khỏi chương trình và quay trở về chương trình chính , đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại.Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.
Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của Port B (Port B Interrup on change), việc xác định ngắt này xảy ra cần 3 hoặc 4 chu kỳ lệnh tùy thuộc vào thời điểm xảy ra ngắt.
Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack , trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt. Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra.
CHƯƠNG III
TRÌNH BIÊN DỊCH PCWH 3.227 SỬ DỤNG NGÔN NGỮ LẬP TRÌNH C (CCSC):
3.1:Giới thiệu chung: Dưới đây là khung cửa sổ chính của chương trình CCSC
Trình biên dịch PCWH sử dụng ngôn ngữ lập trình C còn gọi là chương trình CCSC, gồm: PCB, PCM, và PCH. Phiên bản hiện dùng là 3.227 có nhiều hàm và chức năng mới cập nhật, lập trình cho các họ PIC 12 bit, 14 bit, 16 bit.
Việc cài đặt chương trình tạm thời không đề cập ở đây, có thể tham khảo dùng dung tin trên các diễn đàn như diendandientu.com hay picvietnam.com Giả sử quá trình cài đặt chương trình mặc định đã hoàn tất và không bị giới hạn sử dụng.
Để bắt đầu chương trình, nhấp trái chuột lên biểu tượng Pcw bên cạnh để kích hoạt. Cửa sổ chương trình xuất hiện như trên
/.....................................................................
10.2 MẠCH HIỂN THỊ NHIỆT ĐỘ ĐIỀU KHIỂN QUẠT, CẢNH BÁO CHÁY,LÒ SƯỞI.
10.2.1 Ứng Dụng Module ADC.
10.2.1.1 Cơ bản về ADC.
Trong cuộc sống của chúng ta, những tín hiệu mà chúng ta thường tiếp cận là tín hiệu tương tự , ví dụ như tiếng nói, dung điện thoại, vv... Nếu chúng ta xử lý trực tiếp tín hiệu tương tự này thì rất khó, vì vậy cần thiết phải chuyển đổi chúng sang dạng số.
Biến đổi tương tự – số (analog – digital) là thành phần cần thiết trong việc xử lý Dung tin và các cách điều khiển sử dụng phương pháp số. Tín hiệu thực ở Analog. Một hệ thống tiếp nhận dữ liệu phải có các bộ phận giao tiếp Analog – Digital (A/D).
Các bộ chuyển đổi tương tự số, viết tắt là ADC thực hiện hai chức năng cơ bản là lượng tử hóa và mã hóa. Lượng tử hóa là gán cho những mã nhị phân cho từng giá trị rời rạc sinh ra trong quá trình lượng tử hóa .
Biến đổi AD có tính chất tỉ lệ. Tín hiệu vào Analog được biến đổi thành một phân số X bằng cách so sánh với tín hiệu tham chiếu Vref. Đầu ra của bộ ADC là mã của phân số này. Bất kỳ một sai số tín hiệu Vref nào cũng sẽ dẫn đến sai số mức ra, vì vậy người ta cố gắn giữ cho Vref càng ổn định càng tốt.
Nếu bộ ADC xuất mã ra gồm n bit thì số mức ra rời rạc là 2n. Đối với quan hệ tuyến tính, tần vào được lượng tử hóa theo đúng mức này. Mỗi mức như vậy là một tín hiệu Analog được phân biệt với hai mã kế tiếp nhau, nó chính là kích thước của LSB (Least Significant Bit).
Q=LSB=
Trong đó : Q : Lượng tử
LSB : Bit có trọng số thấp nhất
FS : Giá trị toàn thang
Tất cả các giá trị Analog của lượng tử Q được biểu diễn bởi mã số, mà mã này tương ứng với giá trị trung bình của lượng tử (có thể hiểu là giữa khoảng LSB) gọi là mức ngưỡng. Các giá trị Analog nằm trong khoảng từ mức ngưỡng sai biệt đi ± ½ LSB vẫn được thể hiện bằng cùng một mã, đó là sai số lượng tử hóa. Sai số này có thể sẽ giảm đi bằng cách tăng số bit trong mã ra bộ ADC.
Sau đây tôi sẽ trình bày nguyên tắc chuyển đổi:
10.2.1.2 Bước 1 : Lấy mẫu tín hiệu tương tự ( tức là rời rạc hóa tín hiệu tương tự )
cụ thể là điều chế biên độ pha (PWM)
ADOUTPUT_a(0B111110);CTần số lẫy mẫu càng cao thì độ chính xác của rời rạc hóa là càng cao và ngược lại, nếu tần số lấy mẫu càng lớn thì cần lượng dữ liệu lớn do đó cần bộ nhớ lớn và khi đó xử lý sẽ rất phức tạp.
Tần số lẫy mẫu >= 2 lần tần số cao nhất của tín hiệu ( tránh hiện tượng gập phổ ) – Bước 2 : Lượng tử hóa các xung được lấy mẫu .( mã hóa ) tức là điều chế xung PCM. Lượng tử hóa ở đây có nghĩa là dùng một thước đo với k bậc nhị phân ( tức là 2^k khoảng bằng nhau ) để đo các xung được lấy mẫu ví dụ
Từ đó ta được các số tương ứng với xung và nó được thể hiện qua các số nhị phân ví dụ với k = 8 ( tức là biểu diễn số này dựa vào 8bit ) ta muốn biểu diễn số 9 số nhị phân tương ứng là: 0 0 0 0 1 0 0 1 trong đó bít đầu tiên là MSB làm dấu Máy tính sẽ thu nhận giá trị này rồi thực hiện việc lưu trữ , xử lý.
10.2.1.3 ADC trong PIC 16F877A
Trên VĐK có một bộ biến đổi ADC 10bit, 8 ngõ vào Analog, 8 ngõ vào này được nối với ngõ vào của bộ chuyển đổi. Sau đó bộ chuyển đổi sẽ tạo ra một kết quả 10 bit tương ứng với giá trị Ananlog đầu vào. Điện thế tham chiếu đầu vào sẽ được lựa chọn bằng phần mềm (từ Vdd, Vss hoặc 2 chân AN2, AN3. Module ADC là module duy nhất có khả năng hoạt động trong chế độ ngủ. Để hoạt động trong chế độ ngủ Sleep, xung clock cung cấp cho ADC phải được nhận từ dao động nội RC của ADC.
Một bộ ADC cơ bản gồm có:
• Ngõ vào VIN.
• Điện áp chuẩn VREF.
• Các bit ngõ ra.
Quan hệ các đại lượng này có thể mô tả như sau:
N=(VIN / VREF).NMax
Với:
N : Chuyển đổi thập phân của các bit ngõ ra
NMax :Giá trị thập phân lớn nhất tại ngõ ra .
Nmax phụ thuộc vào số lượng bit tại ngõ ra của ADC
Ví dụ :sử dụng ADC 8 bit thì giá trị Nmax =28 – 1 =255
Khi đó : N=(VIN / VREF).255
10.2.2 Sơ Đồ Nguyên Lý
10.2.4 Nguyên lý hoạt động
- Mạch sử dụng cảm biến nhiệt độ LM35 DZ, khoảng nhiệt đo được từ -55 C đến 100 C. Đáp ứng ngõ ra của cảm biến là điện áp, khi Lm 35 DZ được phân cực thì ngõ ra là 10 mV/ 1C tương ứng với nhiệt độ môi trường.
- Mạch sử dụng bộ ADC 10 bit trong PIC 16f877A:
- ADC ( Analog digital convert ) là bộ chuyển đổi tín hiệu tương tự sang tín hiệu số.
- ADC có nhiều độ phân giải khác nhau, tùy thuộc vào số bít mà nó biến đổi sang digital mà ta có ADC 8bit, ADC 10bit….. số bít càng lớn thì độ phân giải của nó càng cao , tín hiệu chuyển đổi càng chính xác . ADC thường sử dụng là 8bit và 10 bit.
- Cách chuyển đổi: trong mạch sử dụng ADC 10 bit thì nó được mã hoá bằng 1023 khoảng lượng tử.giá trị mỗi bậc lượng tử phụ thuộc vào điện áp tham chiếu.Trong mạch sử dụng điện áp tham chiếu là 5V, nên giá trị của mỗi bậc bằng 1023/5=5mV. Vậy ứng với khi nhiệt độ tặng 1 C thì ADC tăng 2 bậc lượng tử.
- Giá trị nhiệt của môi trường được cảm biến LM35DZ chuyển thành tín hiệu điện tương ứng ở dạng tương tự và được chuyển thành tín hiệu số qua bộ chuyển đổi ADC . tín hiệu ngõ ra được hiển thi len màn hình LCD .
- Với việc đặt trước giá trị cho ADC ( tương ứng với nhiệt độ ) để PIC xuất ra các tín hiệu điều khiển quạt và cảch báo.Trong mạch đặt giá trị nhiệt độ trên 55C thí phát tín hiệu cảch báo,Nhiệt độ từ 32 C đến 55 C thì bật quạt, nhiệt độ thấp dưới 18C là bật lò sưởi……..
.......................................................................
KẾT LUẬN
1. Kết Quả Thực Hiện Được
Sau 4 Tuần thực hiện đề tài, tập đồ án của chúng em đã được hoàn tất,cửa tự động và khóa bàn phím hoạt động khá ổn định.Còn nhiệt độ trong phòng đo được tương đối chuẩn xác nhưng còn sai số lớn. Điều này có thể khắc phục được bằng cách sử dụng ADC ngoài có số bít cao hơn.
- Thuận lợi:
Sau khi kết thúc một khóa học tại trường Cao Đẳng Kỹ Thuật Cao Thắng ,chúng em đã được các thầy cô tận tình giảng dạy cho những kiến thức chuyên môn ,đây là những kiến thức vô cùng quý báu cho chúng em thực hiện đồ án tốt nghiệp . Trong suốt quá trình thực hiện chúng em đã được Thầy Nguyễn Phú Quới tận tình chỉ dạy.Hướng dẫn giải đáp những thắc mắc cũng như sai lầm mắc phải.Đó là những kinh nghiệm vô cùng quý báu sau này cho chúng em vào đời.
- Khó khăn :
Do kiến thức còn hạn chế nên việc hoàn thành đồ án chưa được tốt đặc biệt là cuốn báo cáo.Việc tìm hiểu các linh kiện còn nhiều hạn chế trong đó việc tìm hiểu về ngôn ngữ lập trình CCS còn gặp nhiều khó khăn.
Mong thầy cô bỏ qua những sai sót và chỉ bảo thêm cho chúng em.
2. Hướng Phát Triển của Đề Tài:
Ứng dụng vi xử lý vào điều khiển các thiết bị trong nhà ,có thể giao tiếp với máy tính để hiện thị các thông số cần đo, quan sát được không gian xung quanh trong nhà. Và qua đó đưa ra các lệnh điều khiển trực tiếp hoặc qua mạng internet.
Mạch đo nhiệt độ và cảnh báo được ứng dụng rộng rãi trong cuộc sống , nhất là trong các nhà máy sản xuất bia,các hệ thống làm lạnh trong việc kiểm soát nhiệt độ.
TÀI LIỆU THAM KHẢO
- Nguyễn Phú Quới-bài giảng Mạch Điện Tử 1,2 -Trường Cao Đẳng Kỷ Thuật Cao Thắng
- Dương Minh Trí- Linh Kiện Quang Điện Tử-Nhà Xuất Bản Khoa Học Kỷ Thuật-1998
- Phan Vinh Hiếu -Cấu trúc phần cứng PIC16F877A - Trường Đại Học Khoa Học Tự Nhiên
- Thượng Văn Bé -Bài Giảng Điện Tử Căn Bản-Trường Cao Đẳng Kỷ Thuật Cao Thắng
- Trần xuân Thường -Tài liệu sử dụng CCS tiếng việt –Trường Đại Học Khoa Học Tự Nhiên