Hai thanh ghi ADRESH và ADRESL chứa giá trị 10 bit của kết quả ADC. Khi quá trình chuyển đổi hoàn tất, kết quả ADC sẽ được lưu lại trong cặp thanh ghi này. Bit GO/DONE bị xóa và cờ ngắt ADIF được bật lên.
Sau khi module ADC đã được cấu hình như mong muốn, chúng ta phải lựa chọn kênh chuyển đổi A/D trước khi chuyển đổi ADC xảy ra. Các chân Analog phải được chọn là ngõ vào bằng cách set các bit trong thanh ghi TRIS tương ứng.
Để tiến hành chuyển đổi ADC, tiến hành theo các bước sau: Bước 1: Cấu hình cho module ADC:
- Cấu hình cho các chân ngõ vào/ điện thế chuẩn và I/O số (ADCON1) - Lựa chọn kênh ngõ vào A/D (ADCON0)
- Lựa chọn tần số chuyển đổi (ADCON0) - Cấp nguồn cho module ADC (ADCON0) Bước 2: Cấu hình các ngắt ADC (nếu cần):
- Xóa cờ ngắt ADIF
- Set bit GIE (Cho phép ngắt toàn cục)
- Set bit ADIE (Cho phép ngắt chuyển đổi ADC) Bước 3: Đợi thời gian Acquisition (lấy mẫu) cần thiết Bước 4: Bắt đầu quá trình chuyển đổi ADC:
Set bit GO/ DONE (ADCON0) Bước 5: Đợi quá trình ADC hoàn tất:
Chạy vòng lập đợi bit GO/DONE bị xóa hoặc cờ ngắt ADIF bật lên
Bước 6 : Đọc kết quả trong 2 thanh ghi ADRESH và ADRESL, xóa bit ADIF ( nếu cần thiết)
Bước 7: Nếu muốn tiếp tục thực hiện chuyển đổi ADC trong chu kỳ kế tiếp thì quay lại bước 1 hoặc bước 2.
Sơđồ khối của bộ biến đổi ADC 10 bit:
Thời gian lấy mẫu bao gồm hai giai đoạn:
Thời gian acquition: Là thời gian cần để tụđiện của bộ sample and hold (tạm dịch là bộ lấy mẫu và giữ) nạp điện để có giá trị điện thế bằng với giá trị của nguồn analog cần lấy mẫu.
Thời gian chuyển đổi từ tương tự sang số: Vào khoảng 12 chu kỳ của bộ ADC. Tổng 2 thời gian đó ta được thời gian lấy mẫu
Cách tính thời gian acquition:
TACQ = Thời gian ổn định của phần cứng khuếch đại + Thời gian nạp của tụ + hệ
số nhiệt độ
TACQ = TAMP + TC + TCOFF
= 2µs + TC +[(Nhiệt độ - 250C)(0.05/0C)] = 19.72 µs
4.5 Lựa chọn xung clock cho biến đổi A/D:
Thời gian chuyển đổi 1 bit được định nghĩa là chu kỳ TAD. Để biến đổi 10 bit chúng ta cần thời gian xấp xỉ 12TAD . Nguồn xung clock cung cấp cho ADC được lựa chọn bằng phần mềm. Có 4 giá trị để lựa chọn:
- 2 Tosc
- 8 Tosc
- 32 Tosc
- Dao động nội RC của module ADC (2-6µs)
Để đảm bảo quá trình ADC chính xác thì xung clock ADC (TAD) phải được lựa chọn đểđảm bảo rằng giá trị tối thiểu của TAD là 1.6µs.
4.6 Cấu hình các chân Analog:
Các thanh ghi ADCON1 và TRIS điều khiển hoạt động của các chân ADC. Đối với các chân cần được quy định là ngõ vào Analog thì các bit tương ứng trong thanh ghi TRIS phải được set, nếu các bit trong thanh ghi TRIS bị xóa (output) thì các ngõ ra số
(VOH hoặc VOL) sẽ được chuyển đổi. Hoạt động của bộ ADC sẽ phụ thuộc vào trạng thái của các bit CHS2:CHS0 và các bit trong thanh ghi TRIS.
4.7 Chuyển đổi ADC:
Việc xóa bit GO/DONE trong quá trình chuyển đổi sẽ bỏ qua chuyển đổi hiện tại. Cặp thanh ghi kết quả chuyển đổi ADC sẽ không được cập nhật những mẫu chuyển đổi ADC đã hoàn tất. Do đó, cặp thanh ghi ADRESH và ADRESL sẽ chứa giá trị của lần chuyền đổi hoàn tất cuối cùng ( hoặc giá trị được ghi cuối cùng vào 2 thanh ghi này).
Sau khi một chuyển đổi ADC bị bỏ qua, việc lấy mẫu tiếp theo dựa trên kênh ADC
đã chọn sẽ tựđộng diễn ra. Sau đó bit GO/DONE có thểđược set để bắt đầu chuyển đổi ADC.
Chú ý: Bit GO/DONE không nên được set trong cùng một lệnh với lệnh mở
module ADC.
Cặp thanh ghi ADRESH và ADRESL dùng để lưu kết quả ADC 10 bit. Module ADC cho phép ta lựa chọn việc canh trái hay canh phải kết quả 10 bit trong thanh ghi kết quả bằng cách xóa hoặc set bit ADFM. Các bit còn lại mang giá trị là 0.
4.8 Hoạt động của module ADC trong chếđộ ngủ:
Module ADC có thể hoạt động trong chếđộ ngủ (Sleep). Điều này yêu cầu nguồn xung clock cung cấp cho ADC phải từ dao động RC (ADCS1:ADCS0 = 11). Khi xung clock RC được chọn, module ADC sẽ đợi một chu kỳ máy trước khi bắt đầu tiến hành chuyển đổi ADC. Điều này cho phép lệnh SLEEP có thể được thực thi mà không gây nhiễu đến quá trình ADC. Khi chuyển đổi ADC hoàn tất, bit GO/DONE sẽ bị xóa và kết quảđược lưu vào cặp thanh ghi ADRESH, ADRESL. Nếu ngắt ADC được cho phép, nó sẽ làm VĐK thoát khỏi chếđộ ngủ. Nếu ngắt không được cho phép, module ADC sau đó sẽ bị tắt mặc dù bit ADCON vẫn còn ở mức cao.
Khi nguồn xung clock khác được chọn chứ không phải RC, lệnh SLEEP sẽ làm cho chuyển đổi ADC hiện tại bị bỏ qua và module ADC sẽ bị tắt dù bit ADCON vẫn còn
đang ở mức 1.
4.9 Ảnh hưởng của Reset:
Một reset thiết bị sẽ buộc tất cả các thanh ghi rơi vào trạng thái Reset của chúng.
Điều này buộc module ADC bị tắt và bất kỳ chuyển đổi ADC nào cũng bị bỏ qua. Tất cả
các chân ngõ vào A/D sẽđược cấu hình là các ngõ vào Analog.
Giá trị trong cặp thanh ghi ADRESH:ADRESL không bị thay đổi trong một Reset Power-on. Cặp thanh ghi này sẽ chứa một giá trị không biết trước sau reset Power-on.
CHƯƠNG V : ĐIỆN THẾ THAM CHIẾU VÀ CÁC BỘ SO
SÁNH ĐIỆN
5.1 Module Comparator:
5.1.1 Giới thiệu module comparator :
Module so sánh (Compararor) chứa 2 bộ so sánh tương tự. Ngõ vào của bộ so sánh
được đa hợp với các chân xuất nhập từ RA0 đến RA3 trong khi ngõ ra lại đa hợp với các chân RA4 và RA5. Điện thế trên chip cũng có thểđưa vào ngõ vào của bộ so sánh.
Thanh ghi CMCON điều khiển ngõ vào và ngõ ra của bộ so sánh.
Bit 7 C2OUT: Bit cho biết kết quả ngõ ra của bộ so sánh 2 Khi C2INV = 0: 1: Nếu C2Vin+ > C2Vin- 0: Nếu C2Vin+ < C2Vin- Khi C2INV = 1: 1: Nếu C2Vin+ < C2Vin- 0: Nếu C2Vin+ > C2Vin- Bit 6 C1OUT : Bit ngõ ra bộ so sánh 1
Khi C1INV = 0: 1: Nếu C1Vin+ > C1Vin- 0: Nếu C1Vin+ < C1Vin- Khi C1INV = 1: 1: Nếu C1Vin+ < C1Vin- 0: Nếu C1Vin+ > C1Vin- Bit 5 C2INV : Bit đảo ngõ ra bộ so sánh 2
1: Ngõ ra C2 đảo
0: Ngõ ra C2 không đảo Bit 4 C1INV: Bit đảo ngõ ra bộ so sánh 1
1: Ngõ ra C1 đảo
0: Ngõ ra C1 không đảo
Bit 3 CIS: Bit chuyển đổi ngõ vào bộ so sánh Khi CM2:CM0 = 110:
1: C1 Vin- nối với chân RA3/AN3 C2 Vin- nối với chân RA2/AN2 0: C1 Vin- nối với chân RA0/AN0 C1 Vin- nối với chân RA1/AN1
Bit 2-0 CM2:CM0: Bit chọn chếđộ hoạt động của bộ so sánh.
5.1.2 Cài đặt chếđộ cho bộ so sánh:
Có 8 chế độ hoạt động của bộ so sánh, thanh ghi CMCON được sử dụng để lựa chọn những chế độ này. Thanh ghi TRIS điều khiển các chân I/O của bộ so sánh trong mỗi chế độ. Nếu chế độ so sánh bị thay đổi, ngõ ra của bộ so sánh sẽ không còn chính xác nữa.
Lưu ý: Các ngắt do bộ so sánh sinh ra nên được cấm trong suốt quá trình thay đổi chếđộ hoạt động, nếu không các ngắt ngoài ý muốn có thể sinh ra.
Một bộ so sánh đơn được trình bày trong hình bên cạnh đây, nó cho chúng ta biết sự thay đổi trạng thái logic ngõ ra tương ứng với trạng thái tín hiệu Analog ngõ vào.
Khi VIN+ > VIN- thì ngõ ra lên mức cao và ngược lại.
Tại những cạnh này ngõ ra không biết chắc chắn.
5.1.3 Nguồn tham chiếu của bộ so sánh:
Một nguồn tham chiếu nội hoặc ngoại có thể được sử dụng. Việc lựa chọn nguồn nội hay ngoại tùy thuộc vào chếđộ hoạt động của bộ so sánh.
5.1.3.1 Tín hiệu điện thế tham chiếu ngoại:
Khi sử dụng nguồn tham chiếu ngoại, module so sánh có thể được cấu hình hoạt
động từ một hoặc 2 nguồn so sánh khác nhau. Điện thế so sánh phải nằm trong khoảng từ
Vss đến Vdd và điện áp này có thểđược đưa vào bất cứ một chân nào của bộ so sánh.
5.1.3.2 Tín hiệu điện thế tham chiếu nội:
Module so sánh cũng cho phép lựa chọn một điện thế so sánh nội dùng cho các bộ
so sánh. Tín hiệu tham chiếu nội được sử dụng trong chế độ so sánh CM2:CM0 = 010. Trong chếđộ này tín hiệu so sánh nội được đưa vào chân VIN+ của 2 bộ so sánh.
5.1.4 Thời gian đáp ứng:
Thời gian đáp ứng là thời gian tính từ khi lựa chọn một điện thế tham chiếu hoặc một tín hiệu ở ngõ vào cho đến khi có một giá trịđiện áp hợp lý ở ngõ ra.
5.1.5 Tín hiệu ngõ ra của các bộ so sánh:
Tín hiệu ngõ ra của các bộ so sánh được đọc thông qua thanh ghi CMCON khi các bit này đã sẵn sàng. Ngõ ra của các bộ so sánh có thể được nối trực tiếp với các chân xuất nhập RA4 và RA5, các chân này phải được cấu hình là ngõ ra trong chếđộ này.
Chú ý:
- Khi các chân port được cấu hình là các chân ngõ vào Analog, việc đọc các thanh ghi port sẽ cho giá trị là “0”
5.1.6 Ngắt của các bộ so sánh:
Cờ ngắt CMIF của các bộ so sánh được bật lên khi giá trị ngõ ra của các bộ so sánh thay đổi so với giá trị của bit CMxOUT. Cờ ngắt này phải được xóa bằng phần mềm để
một ngắt kế tiếp có thể xảy ra.
Ngoài ra để một ngắt có thể xảy ra chúng ta cần phải set các bit CMIE, PEIE, GIE lên 1
5.1.7 Hoạt động của các bộ so sánh trong chếđộ ngủ:
Các bộ so sánh vẫn hoạt động trong chếđộ ngủ và các ngắt vẫn có thể xảy ra nếu
được cho phép. Do đó các ngắt này sẽđánh thức VĐK.
5.1.8 Ảnh hưởng của Reset:
Khi một Reset thiết bị xảy ra, nó sẽ buộc thanh ghi CMCON về trạng thái reset của nó, làm cho module rơi vào chếđộ tắt, CM2:CM0 = 111.
Các thanh ghi liên quan đến module so sánh:
5.2 Module điện áp tham chiếu :
5.2.1 Giới thiệu module điện thế tham chiếu
Module điện áp tham chiếu so sánh được sử dụng chủ yếu với module so sánh khi cần sử dụng nguồn so sánh là nguồn nội.
Module điện áp tham chiếu bao gồm một hệ thống 16 điện trở, hệ thống điện trở
này sẽ cung cấp cho chúng ta một điện áp tham chiếu có thề lập trình được .
Dãy điện trở này được chia nhỏ ra để cung cấp cho chúng ta các điện thế tham chiếu khác nhau.
5.2.2 Thanh ghi điều khiển CVRCON:
Bit 7 CVREN: Bit cho phép CVR hoạt động. 1: Cung cấp nguồn cho CVR
0: Ngưng cấp nguồn cho CVR.
Bit 6 CVROE: Cho phép ngõ ra CVR
1: Điện áp CVREF là ngõ ra trên chân RA2 0: Điện áp CVREF không kết nối với chân RA2 Bit 5 CVRR: Bit lựa chọn dãi giá trị hoạt động cùa CVREF
1: 0 đến 0.75 CVRSRC, với kích thước mỗi buớc là CVRSRC/24
0: 0.25 CVRSRC đến 0.75 CVRSRC, với kích thuớc bước là CVRSRC/32 Bit 4 Không sử dụng, giá trị là 0
Bit 3-0 CVR3:CVR0: Các bit lựa chọn giá trị VREF ( 0 <= VR3:VR0 <= 15) Khi VRR =1:
VREF = ( VR<3:0>/24) * Vdd Khi VRR = 0:
VREF = ¼ * VDD + ( VR<3:0>/32) * Vdd Bảng điện thế tham chiếu tiêu biểu với VDD=5.0V
VREF CVR3:CVR0 CVRR =1 CVRR =0 0000 0.00V 1.25V 0001 0.21V 1.14V 0010 0.42V 1.56V 0011 0.63V 1.72V 0100 0.83V 1.88V 0101 1.04V 2.03V 0110 1.25V 2.19V 0111 1.46V 2.34V 1000 1.67V 2.50V 1001 1.88V 2.66V 1010 2.08V 2.81V 1011 2.29V 2.97V 1100 2.50V 3.13V 1101 2.71V 3.28V 1110 2.92V 3.44V 1111 3.13V 3.59V
5.2.3 Độ chính xác của điện thế tham chiếu:
Giá trị điện thế VREF không thể bằng Vdd hay Vss được vì có hai con transistor ở
hai đầu.
5.2.4 Hoạt động của module VREF trong trạng thái ngủ
Khi VĐK thoát khỏi trạng thái ngủ hay watchdog timer, nội dung của thanh ghi CVRCON sẽ không còn tác dụng. Để hạn chế công suất tiêu thụ, trong chế độ ngủ
module điện thế tham chiếu nên cấm.
5.2.5 Trạng thái của module khi reset:
Khi VĐK được reset nó sẽ xóa bit CVREN, bit CVROE, bit CVRR và các bit CVRCON<3:0>
5.2.6 Sử dụng module với các mạch ngoài :
Nên nhớ rằng module VREF hoạt động độc lập với module comparator. Ngõ ra của module này có thểđược kết nối với chân ngõ ra nếu bit tương ứng trong thanh ghi TRIS
được xóa. Việc cho phép module VREF cung cấp điện thế cho các mạch ngoài sẽ làm tăng công suất của VĐK. Ngoài ra module này có thể dùng như bộ biến đổi D/A đơn giản. Do sự giới hạn về dòng điện ngõ ra nên một Bufer điện thếđược sử dụng để đảm bảo độ chính xác của tín hiệu điện thế.
PHẦN II
CÁC THÀNH PHẦN CỦA KIT
THỰC TẬP PIC 16F877A
¾ CHƯƠNG I: HIỂN THỊ LED ĐƠN.
¾ CHƯƠNG II: HIỂN THỊ LED 7 ĐOẠN.
¾ CHƯƠNG III: ĐÈN GIAO THÔNG.
¾ CHƯƠNG IV: CHẠY CHỮ LED MATRẬN.
¾ CHƯƠNG V: HIỂN THỊ LCD.
¾ CHƯƠNG VI: ADC
¾ CHƯƠNG VII: BÀN PHÍM GIAO TIẾP LCD.
¾ CHƯƠNG VIII: GIAO TIẾP I2C
CHƯƠNG I : HIỂN THỊ LED ĐƠN 1.1 Giới Thiệu Chung:
LED (viết tắt của Light Emitting Diode, có nghĩa là điốt phát quang) là các điốt có khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại. Cũng giống nhưđiốt, LED được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán dẫn loại n.
Hoạt động của LED giống với nhiều loại điốt bán dẫn. Khối bán dẫn loại p chứa nhiều lỗ trống tự do mang điện tích dương nên khi ghép với khối bán dẫn n (chứa các
điện tử tự do) thì các lỗ trống này có xu hướng chuyễn động khuếch tán sang khối n. Cùng lúc khối p lại nhận thêm các điện tử (điện tích âm) từ khối n chuyển sang. Kết quả
là khối p tích điện âm (thiếu hụt lỗ trống và dư thừa điện tử) trong khi khối n tích điện dương (thiếu hụt điện tử và dư thừa lỗ trống).
Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khi chúng tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành các nguyên tử trung hòa.
Quá trình này có thể giải phóng năng lượng dưới dạng ánh sáng (hay các bức xạ điện từ có bước sóng gần đó).
Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sáng phát ra khác nhau (tức màu sắc của LED sẽ khác nhau). Mức năng lượng (và màu sắc của LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các nguyên tử chất bán dẫn.
LED thường có điện thế phân cực thuận cao hơn điốt thông thường, trong khoảng 1,5
đến 3 V. Nhưng điện thế phân cực nghịch ở LED thì không cao. Do đó, LED rất dễ bị hư
hỏng do điện thế ngược gây ra.
Loại LED Điện thế phân cực thuận
Đỏ 1,4 - 1,8V
Vàng 2 - 2,5V
1.2 Mạch Nguyên Lý L7 1 2 L5 1 2 L3 1 2 VCC L6 1 2 4R2 330 1 2 3 4 5 6 7 8 9 L2 1 2 LEDDON 1 2 3 4 5 6 7 8 L4 1 2 L0 1 2 L1 1 2
Với VCC = 5VDC , điện áp trung bình trên mỗi LED là 2V, dòng qua LED là 10mA thì điện trở hạn dòng cho LED là:
Rled = mA VDC VDC 10 2 5 − = 300Ω Chọn Rled = 330 Ω
CHƯƠNG II : HIỂN THỊ LED 7 ĐOẠN
2.1 Các khái niệm cơ bản
Trong các thiết bị, để báo trạng thái hoạt động của thiết bịđó cho người sử dụng với thông số chỉ là các dãy sốđơn thuần, thường người ta sử dụng "led 7 đoạn". Led 7 đoạn