Tải bản đầy đủ (.doc) (90 trang)

Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.47 MB, 90 trang )

Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
LỜI CẢM ƠN
Lời đầu tiên của bản khóa luận này cho phép em được bày tỏ lời cảm ơn
sâu sắc tới PGS. TS Ngô Diên Tập, người đã tận tình hướng dẫn chỉ bảo em
trong suốt thời gian em làm khóa luận.
Em xin chân thành cảm ơn sâu sắc tới các thầy cô giáo trong Trường Đại
học Công Nghệ - ĐHQGHN đã chỉ bảo, dạy dỗ và cung cấp những kiến thức
cơ bản và chuyên môn trong suốt 4 năm qua và tạo điều kiện thuận lợi để em
hoàn thành bản khóa luận này.
Cuối cùng em xin gửi lời cảm ơn tới gia đình, bạn bè đã nhiệt tình giúp
đỡ và động viên em hoàn thành khóa luận này.
Xin chúc thầy cô giáo và các bạn sức khỏe, hạnh phúc.
Hà nội, tháng 05 năm 2008
Sinh viên: Nguyễn Văn Cường
Trường ĐH Công nghệ - ĐHQGHN 1 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
TÓM TẮT NỘI DUNG
Khóa luận đã xây dựng được hệ thống thu thập số liệu đo lường trên cở sở
dùng vi điều khiển PIC18F458. Với ứng dụng cụ thể là thu thập dữ liệu nhiệt độ
môi trường. Hệ thống được xây dựng dựa trên việc kết hợp nhiều khối thiết bị
ngoại vi khác, bao gồm bàn phím PS/2 cho phép nhập dữ liệu có thể là địa điểm
của khu vực đặt hệ thống.v.v., đồng hồ thời gian thực dựa trên vi mạch DS1307
cho phép cập nhật thời gian cho hệ thống với đồng hồ này thông chỉ cần cài đặt
một lần đồng hồ sẽ chạy cho tới khi không còn một nguồi nuôi nào, khối giao tiếp
thẻ nhớ MMC lưu trữ tất cả dữ liệu mà người sử dụng cần với mục đích sử dụng
hệ thống ví dụ địa điểm đặt hệ thống, thông tin về nhiệt độ đo được cập nhật cùng
thời gian của hệ thống, và cuối cùng là khối hiển thị dùng LCD 16 cột 2 dòng
hiển thị cùng lúc 32 ký tự, thể hiện những thông tin người thiết lập hệ thống
muốn thông báo trong quá trình kiểm tra hoặc khi sử dụng…. Tất cả hệ thống
được lắp ráp trên một bo mạch tương đối nhỏ gọn.
Trường ĐH Công nghệ - ĐHQGHN 2 Nguyễn Văn Cường_K49Đ


Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
MỤC LỤC
Trường ĐH Công nghệ - ĐHQGHN 3 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
CHƯƠNG 1: TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU
1.1 Tổng quan về hệ thống đo lường và điều khiển.
Hệ thông đo lường và điều khiển là một hệ thống tập hợp các thiết bị kỹ thuật có cùng
một nhiệm vụ, cùng một thuật toán chức năng làm sao để thu nhận được thông tin, biến đổi
nó, gia công và chuyển nó thành một dạng mà con người có thể thu nhận được và đưa đến
bộ điều khiển.
Hình 1.1: Sơ đồ khối của hệ thống
Để có một hệ thống đo đạt hiệu quả và phù hợp với công việc thì việc thiết kế một mô
hình ban đầu rất quan trọng nó ảnh hưởng đến toàn bộ công việc sau này của chúng ta.
Trong thực tế có nhiều mô hình cấu trúc như là mô hình nối tiếp, mô hình song song,
mô hình nối tiếp song song.v.v.. Mỗi mô hình được ứng dụng trong từng trường hợp nhưng
tùy thuộc vào yêu cầu của công việc chúng ta phải lựa chọn một mô hình cho phù hợp.
Yêu cầu về một hệ thống đo và thu thập thông tin trong công nghiệp là cần phải đạt độ
chính xác cao, khả năng đo được nhiều kênh, có thể kết nối được với nhiều thiết bị khác,
Trường ĐH Công nghệ - ĐHQGHN 4 Nguyễn Văn Cường_K49Đ
Thiết
bị thu
nhận
và đo
Thiết bị
gia công
và biến
đổi
thông
tin đo
Thiết

bị lưu
trữ
thông
tin đo
Thiết
bị thể
hiện
thông
tin đo
Bộ điều khiển
Đối
tượng
nghiê
n cứu
Ngườ
i
quan
sát
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
lượng dữ liệu lưu trữ được trong quá trình đo phải lớn để có thể đánh giá được sự biến đổi
của đối tượng trong một thời gian dài từ đo đưa ra được những phương án điều khiển phù
hợp.
1.2 Hệ thống đo lường nhiệt độ.
Hình 1.2: Sơ đồ khối của hệ thống đo lường nhiệt độ.
Khóa luận đã khảo sát đối tượng là nhiệt độ môi trường. Một sensor nhiệt độ được sử
dụng với mục đích cảm nhận. Đầu ra là giá trị điện áp tùy thuộc vào sự biến đổi của đối
tượng, được đưa vào bộ biến đổi ADC chuyển thành các giá trị số. Tiếp tục vi điều khiển
đảm nhận làm nhiệm vụ tính toán và xử lý, kết quả của quá trình này được hiển thị thông
qua LCD để quan sát.
Trong khóa luận này đã ứng dụng thêm mạch giao tiếp với thẻ nhớ MMC qua đó ta có

thể lưu trữ nhiều giá trị nhiệt độ đo được mà ít phải quan tâm đến việc đầy bộ nhớ như việc
ghép nối với các EPROM truyền thống. Thêm một lợi điểm nữa của việc dùng thẻ nhớ là ta
có thể tháo lắp và đọc các giá trị đã ghi được một cách rất đễ dàng.
Trường ĐH Công nghệ - ĐHQGHN 5 Nguyễn Văn Cường_K49Đ
Môi
trường
Senso
r
LM35
Vi điều
khiển PIC
Hiển thị LCD
MMC
Lấy
mẫu
Đồng hồ thời gian
thực
Bàn phím
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
Không chỉ là đo nhiệt độ hiển thị, và lưu giá trị nhiệt độ. Khóa luận đã phát triển thêm
các giao tiếp với bàn phím PS/2 và đồng hồ thời gian thực. Với ghép nối PS/2 cho phép ta
nhập các dữ liệu, thông tin về địa điểm đặt đầu đo, thông tin về hệ thống.v.v..Còn đồng hồ
sẽ cho biết thông tin về thời gian mà nhiệt độ được đo. Tất cả dữ liệu nhập từ bàn phím và
thông tin về thời gian cũng như nhiệt độ đo được sẽ được lưu vào thẻ nhớ. Với một hệ
thống với nhiều đầu đo đặt tại nhiều vị trí hoặc khi triển khai hệ thống trên một phạm vi
rộng, thì việc kết hợp những giao tiếp như trên sẽ rất có lợi cho việc quản lý và giám sát các
thiết bị.
=================================================
Trường ĐH Công nghệ - ĐHQGHN 6 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính

CHƯƠNG 2: VI ĐIỀU KHIỂN PIC18F458
2.1 Tổng quan về vi điều khiển PIC.
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola 68HC,
AVR, ARM,... Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học,
bản thân em đã chọn họ vi điều khiển PIC để mở rộng vốn kiến thức và phát triển các ứng
dụng trên công cụ này vì các nguyên nhân sau:
• 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 đủ các 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ổ sung 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 họ vi điều khiển PIC. Hiện nay tại Việt Nam cũng như trên
thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều này tạo nhiều thuận lợi
trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng 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ợ của 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.
Trường ĐH Công nghệ - ĐHQGHN 7 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
2.1.1 Sơ đồ chân của vi điều khiển PIC18F458.
Hình 2.1: Sơ đồ chân vi điều khiển PIC18F458.
2.1.2 Một vài thông số về vi điều khiển PIC18F458.
2.1.2.1 CPU theo kiến trúc RISC
• Bộ nhớ chương trình 32 Kbyte.
• Bộ nhớ dữ liệu (RAM) 1536 Byte.
• Hệ thống có thể hoạt động với tốc lên tới 10 triệu lênh trên giây.
• Tần số thạch anh tối đa là 40 MHz.

• Các lệnh có độ dài 16 bit và các đường dữ liệu rộng 8 bit.
• Có các mức độ ưu tiên ngắt khác nhau.
2.1.2.2 Các đặc tính ngoại vi.
• Dòng sinh cao khoảng 25 mA.
• Có 3 chân ngắt ngoài.
• Khối Timer0 có thể là 8 bit hoặc 16 bit timer/counter với bộ chia tần 8 bit.
• Khối Timer1 là 16 bit timer/counter.
Trường ĐH Công nghệ - ĐHQGHN 8 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• Khối Timer2 8 bit timer/counter vói thanh ghi chu kỳ 8 bit (ứng dụng với
PWM).
• Khối Timer3 16 bit timer/counter.
• Các khối Capture/Compare/PWM.
• Truyền dữ liệu nối tiếp đồng bộ với khối
o SPI 3 đường dây, hỗ trợ cả 4 chế độ SPI
o I2C cho cả chế độ Master và Slave.
• Khối UART truyền dữ liệu nối tiếp.
• 8 kênh chuyển đổi AD 10 bit.
2.2 Các ứng dụng được sử dụng trong khóa luận.
2.2.1 Bộ chuyển đổi tương tự số 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ố. PIC18F458 có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hiệu điện thế chuẩn
VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được xác lập trên hai
chân RA2 và RA3. Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số
tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL. Khi không sử dụng bộ
chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường
khác. Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi
ADRESH:ADRESL, bit GO/DONE (ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được
thiết lập.
Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:

1.Thiết lập các thông số cho bộ chuyển đổi ADC:
• Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi
ADCON1)
• Chọnh kênh chuyển đổi AD (thanh ghi ADCON0).
• Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0).
• Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0).
2.Thiết lập các cờ ngắt cho bộ AD
• Clear bit ADIF.
• Set bit ADIE.
Trường ĐH Công nghệ - ĐHQGHN 9 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• Set bit PEIE.
• Set bit GIE.
3.Đợi cho tới khi quá trình lấy mẫu hoàn tất.
4.Bắt đầu quá trình chuyển đổi (set bit GO/DONE).
5.Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
• Kiểm tra bit GO/DONE. Nếu = 0, quá trình chuyển đổi đã hoàn tất.
• Kiểm tra cờ ngắt.
6.Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit GO/DONE (nếu cần tiếp tục chuyển
đổi).
7.Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo.
Hình 2.2: Cách lưu kết quả chuyển đổi AD.
Trường ĐH Công nghệ - ĐHQGHN 10 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
Hình 2.3: Sơ đồ khối bộ chuyển đổi AD
Cần chú ý là có hai cách lưu kết quả chuyển đổi AD, việc lựa chọn cách lưu được
điều khiển bởi bit ADFM và được minh họa cụ thể ở hình 2.2.
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
• INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE,
PEIE).

• PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).
• PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).
• ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả
chuyển đổi AD.
• ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho
bộ chuyển đổi AD.
• PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào
analog ở PORTA.
Trường ĐH Công nghệ - ĐHQGHN 11 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào
analog ở PORTE.
2.2.2 Truyền nối tiếp đồng bộ SPI.
Chuẩn giao tiếp SPI cho phép truyền nhận đồng bộ.
Hình 2.4: Sơ đồ khối SPI
Ta cần sử dụng 4 pin cho chuẩn giao tiếp này:
• RC5/SDO: ngõ ra dữ liệu dạng nối tiếp (Serial Data output).
• RC4/SDI/SDA: ngõ vào dữ liệu dạng nối tiếp (Serial Data Input).
• RC3/SCK/SCL: xung đồng bộ nối tiếp (Serial Clock).
• RA5/AN4/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) khi giao tiếp ở
chế độ Slave mode.
Các thanh ghi liên quan đến MSSP khi hoạt động ở chuẩn giao tiếp SPI bao gồm:
• Thanh ghi điều khiển SSPCON, thanh ghi này cho phép đọc và ghi.
Trường ĐH Công nghệ - ĐHQGHN 12 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• Thanh ghi trạng thái SSPSTAT, thanh ghi này chỉ cho phép đọc và ghi ở 2 bit
trên, 6 bit còn lại chỉ cho phép đọc.
• Thanh ghi đóng vai trò là buffer truyền nhận SSPBUF, dữ liệu truyền đi hoặc
nhận được sẽ được đưa vào thanh ghi này. SSPBUF không có cấu trúc đệm hai
lớp (doubled buffer), do đó dữ liệu ghi vào thanh ghi SSPBUF sẽ lập tức được

ghi vào thanh ghi SSPSR.
• Thanh ghi dịch dữ liệu SSPSR dùng để dịch dữ liệu vào hoặc ra. Khi 1 byte dữ
liệu được nhận hoàn chỉnh, dữ liệu sẽ từ thanh ghi SSPSR chuyển qua thanh
ghi SSPBUF và cờ hiệu được set, đồng thời ngắt sẽ xảy ra.
Khi sử dụng chuẩn giao tiếp SPI trước tiên ta cần thiết lập các chế độ cho giao diện
bằng cách đưa các giá trị thích hợp vào hai thanh ghi SSPCON và SSPSTAT. Các thông số
cần thiết lập bao gồm:
• Master mode hay Slave mode. Đối với Master mode, xung clock đồng bộ sẽ đi
ra từ chân RC3/SCK/SCL. Đối với Slave mode, xung clock đồng bộ sẽ được
nhận từ bên ngoài qua chân RC3/SCK/SCL.
• Các chế độ của Slave mode.
• Mức logic của xung clock khi ở trang thái tạm ngưng quá trình truyền nhận
(Idle).
• Cạnh tác động của xung clock đồng bộ (cạnh lên hay cạnh xuống).
• Tốc độ xung clock (khi hoạt động ở Master mode).
• Thời điểm xác định mức logic của dữ liệu (ở giữa hay ở cuối thời gian 1 bit dữ
liệu được đưa vào).
Master mode, Slave mode và các chế độ của Slave mode được điều khiển bởi các bit
SSPM3:SSPM0 (SSPCON<3:0>).
MSSP bao gồm một thanh ghi dịch dữ liệu SSPSR và thanh ghi đệm dữ liệu SSPBUF.
Hai thanh ghi này tạo thành bộ đệm dữ liệu kép (doubled-buffer). Dữ liệu sẽ được dịch vào
hoặc ra qua thanh ghi SSPSR, bit MSB được dịch trước. Đây là một trong những điểm khác
biệt giữ hai giao diện MSSP và USART (USART dịch bit LSB trước).
Trong quá trình nhận dữ liệu, khi dữ liệu đưa vào từ chân RC4/SDI/SDA trong thanh
ghi SSPSR đã sẵn sàng (đã nhận đủ 8 bit), dữ liệu sẽ được đưa vào thanh ghi SSPBUF, bit
Trường ĐH Công nghệ - ĐHQGHN 13 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
chỉ thị trạng thái bộ đệm BF (SSPSTAT<0>) sẽ được set để báo hiệu bộ đệm đã đầy, đồng
thời cờ ngắt SSPIF (PIR1<3>) cũng được set. Bit BF sẽ tự động reset về 0 khi dữ liệu trong
thanh ghi SSPBUF được đọc vào. Bộ đệm kép cho phép đọc tiếp byte tiếp theo trước khi

byte dữ liệu trước đó được đọc vào. Tuy nhiên ta nên đọc trước dữ liệu từ thanh ghi
SSPBUF trước khi nhận byte dữ liệu tiếp theo.
Quá trình truyền dữ liệu cũng hoàn toàn tương tự nhưng ngược lại. Dữ liệu cần truyền
sẽ được đưa vào thanh ghi SSPBUF đồng thời đưa vào thanh ghi SSPSR, khi đó cờ hiệu BF
được set. Dữ liệu được dịch từ thanh ghi SSPSR và đưa ra ngoài qua chân RC5/SDO. Ngắt
sẽ xảy ra khi quá trình dịch dữ liệu hoàn tất. Tuy nhiên dữ liệu trước khi được đưa ra ngoài
phải được cho phép bởi tín hiệu từ chân RA5/SS . Chân này đóng vai trò chọn đối tượng
giao tiếp khi SPI ở chế độ Slave mode.
Khi quá trình truyền nhận dữ liệu đang diễn ra, ta không được phép ghi dữ liệu vào
thanh ghi SSPBUF. Thao tác ghi dữ liệu này sẽ set bit WCON (SSPCON<7>). Một điều
cần chú ý nữa là thanh ghi SSPSR không cho phép truy xuất trực tiếp mà phải thông qua
thanh ghi SSPBUF. Cổng giao tiếp của giao diện SPI được điều khiển bởi bit SSPEN
(SSPSON<5>). Bên cạnh đó cần điều khiển chiều xuất nhập của PORTC thông qua thanh
ghi TRISC sao cho phù hợp với chiều của giao diện SPI. Cụ thể như sau:
• RC4/SDI/SDA sẽ tự động được điều khiển bởi khối giao itếp SPI.
• RS5/SDO là ngõ ra dữ liệu, do đó cần clear bit TRISC<5>.
• Khi SPI ở dạng Master mode, cần clear bit TRISC<3> để cho phép đưa xung
clock đồng bộ ra chân RC3/SCK/SCL.
• Khi SPI ở dạng Slave mode, cần set bit TRISC<3> để cho phép nhận xung
clock đồng bộ từ bên ngoài qua chân RC3/SCK/SCL.
• Set bit TRISC<4> để cho phép chân RA5/AN4/SS/C2OUT nhận tín hiệu điều
khiển truy xuất dữ liệu khi SPI ở chế độ Slave mode.
Trường ĐH Công nghệ - ĐHQGHN 14 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
Hình 2.5: Sơ đồ ghép nối theo chuẩn SPI.
Theo sơ đồ kết nối này, khối Master sẽ bắt đầu quá trình truyền nhận dữ liệu bằng
cách gửi tín hiệu xung đồng bộ SCK. Dữ liệu sẽ dịch từ cả hai thanh ghi SSPSR đưa ra
ngoài nếu có một cạnh của xung đồng bộ tác động và ngưng dịch khi có tác động của cạnh
còn lại. Cả hai khối Master và Slave nên được ấn định chung các qui tắc tác động của xung
clock đồng bộ để dữ liệu có thể dịch chuyển đồng thời.

2.2.3 Truyền nối tiếp đồng bộ I2C.
Đây là một dạng khác của MSSP. Chuẩn giao tiếp I2C cũng có hai chế độ Master,
Slave và cũng được kết nối với ngắt. I2C sẽ sử dụng 2 pin để truyền nhận dữ liệu:
• RC3/SCK/SCL: chân truyền dẫn xung clock.
• RC4/SDI/SDA: chân truyền dẫn dữ liệu.
Các khối cơ bản trong sơ đồ khối của I2C không có nhiều khác biệt so với SPI. Tuy
nhiên I2C còn có thêm khối phát hiện bit Start và bit Stop của dữ liệu (Start and Stop bit
detect) và khối xác định địa chỉ (Match detect).
Các thanh ghi liên quan đến I2C bao gồm:
• Thanh ghi SSPCON và SSPCON2: điều khiển MSSP.
• Thanh ghi SSPSTAT: thanh ghi chứa các trạng thái hoạt động của MSSP.
Trường ĐH Công nghệ - ĐHQGHN 15 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• Thanh ghi SSPBUF: buffer truyền nhận nối tiếp.
• Thanh ghi SSPSR: thanh ghi dịch dùng để truyền nhận dữ liệu.
• Thanh ghi SSPADD: thanh ghi chứa địa chỉ của giao diện MSSP.
Các thanh ghi SSPCON, SSPCON2 cho phép đọc và ghi. Thanh ghi SSPSTAT chỉ
cho phép đọc và ghi ở 2 bit đầu, 6 bit còn lại chỉ cho phép đọc. Thanh ghi SSPBUF chứa dữ
liệu sẽ được truyền đi hoặc nhận được và đóng vai trò như một thanh ghi đệm cho thanh
ghi dịch dữ liệu SSPSR.
Thanh ghi SSPADD chứa địa chỉ của thiết bị ngoại vi cần truy xuất dữ liệu của I2C
khi hoạt động ở Slave mode. Khi hoạt động ở Master mode, thanh ghi SSPADD chứa giá
trị tạo ra tốc độ baud cho xung clock dùng để truyền nhận dữ liệu.
Trong quá trình nhận dữ liệu, sau khi nhận được 1 byte dữ liệu hoàn chỉnh, thanh ghi
SSPSR sẽ chuyển dữ liệu vào thanh ghi SSPBUF. Thanh ghi SSPSR không đọc và ghi
được quá trình truy xuất thanh ghi này phải thông qua thanh ghi SSPBUF.
Trong quá trình truyền dữ liệu, dữ liệu cần truyền khi được đưa vào thanh ghi
SSPBUF cũng sẽ đồng thời đưa vào thanh ghi SSPSR.
I2C có nhiều chế độ hoạt động và được điều khiển bởi các bit SSPCON<3:0>, bao
gồm:

• I2C Master mode, xung clock = fosc/4*(SSPADD+1).
• I2C Slave mode, 7 bit địa chỉ.
• I2C Slave mode, 10 bit địa chỉ.
• I2C Slvae mode, 7 bit địa chỉ, cho phép ngắt khi phát hiện bit Start và bit Stop.
• I2C Slave mode, 10 bit địa chỉ, cho phép ngắt khi phát hiện bit Start và bit
Stop.
• I2C Firmware Control Master mode.
Trên đây là những tóm lược về vi điều khiển PIC18F458 và các ngoại vi của nó được
ứng dụng trong khóa luận. Các modul được dùng sẽ được nói rõ hơn ở các chương tiếp
theo với các ứng dụng cụ thể.
===================================================
Trường ĐH Công nghệ - ĐHQGHN 16 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
CHƯƠNG 3: CẢM BIẾN NHIỆT ĐỘ VÀ VI MẠCH LM35
3.1 Nhiệt độ và ý nghĩa của đo nhiệt độ.
Nhiệt độ là một tham số vật lý quan trọng, thường hay gặp trong kỹ thuật, công
nghiệp, nông nghiệp và trong đời sống sinh hoạt hàng ngày. Nó là tham số có liên quan đến
tính chất của rất nhiều vật chất, thể hiện hiệu suất của các máy nhiệt và là nhân tố trọng yếu
ảnh hưởng đến sự truyền nhiệt. Vì lẽ đó mà trong các nhà máy, trong hệ thống nhiệt... đều
phải dùng nhiều dụng cụ đo nhiệt độ khác nhau. Chất lượng và số lượng sản phẩm sản xuất
được đều có liên quan tới nhiệt độ, nhiều trường hợp phải đo nhiệt độ để đảm bảo cho yêu
cầu thiết bị và cho quá trình sản xuất. Hiện nay yêu cầu đo chính xác nhiệt độ từ xa cũng là
một việc rất có ý nghĩa đối với sản xuất và nghiên cứu khoa học....
3.2 Cảm biến nhiệt độ LM35.
Trong đề tài này ứng dụng cụ thể một loại sensor để khảo sát nhiệt độ môi trường.
LM35 được chọn cho mục đích này.

Hình 3.1: LM35.
3.3.1 Một số đặc tính của LM35.
Một số đặc tính của LM35 có thể chỉ ra như sau:

• Chuẩn đo được lấy trực tiếp theo thang bách phân

o
C
• Tuyến tính với độ thay đổi 10mV/
0
C
Trường ĐH Công nghệ - ĐHQGHN 17 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• Độ chính xác là 0.5
o
C khảo sát ở nhiệt độ 25
o
C
• Có thể đo trong khoảng nhiệt độ -55 đến 150
o
C
• Điện thế cung cấp có thể từ 4-30V
• Dòng tiêu thụ nhỏ hơn 60mA
• …
3.3.2 Sơ đồ ghép nối với vi điều khiển.
Với ứng dụng trong đề tài chỉ là khảo sát nhiệt độ môi trường. Kết hợp với điều kiện
khí hậu của Việt Nam việc giá trị nhiệt độ nhỏ hơn 0
o
C là hiếm gặp do vậy em đã chọn
cách mặc LM35 cụ thể như sau:
Hình 3.2: Ghép nối LM35 với vi điều khiển.
3.3.3 Xử lý và tính toán kết quả
Với cách mắc như trên khoảng nhiệt độ mà sensor có thể đo được là từ 2-150
0

C. Khi
sử dụng LM35 việc xử lý tính toán rất đơn giản do điện thế đầu ra thay đổi 10mV/
0
C, giả
sử với nhiệt độ môi trường là 25
0
C thì thế đầu ra của LM35 tại chân Output (chân 2) là
25*10 = 250mV = 0,25V so với đất. Khi ghép nối với vi điều khiển PIC, giả sử thiết lập
ADC là 10 bit thì ta có sẽ 1023 mức, ứng với các điện thế tham chiếu Vref+ = 5V và Vref-
= 0V (GND). Giả sử nhiệt độ môi trường là 25
o
C như trên, khi đó điện áp chân 2 của LM35
so với đất sẽ là 0,25V. Từ đây tính ra được giá trị mức trên thang ADC 10 bit nhận được
Trường ĐH Công nghệ - ĐHQGHN 18 Nguyễn Văn Cường_K49Đ
Vcc (+5V)
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
là: (1023 * 0,25)/5 =~ 51. Từ đây ta dễ dàng tính được ngược lại nhiệt độ môi trường khi
đọc được giá trị ADC qua bộ biến đổi AD của PIC. Và nhiệt độ sẽ được tính theo công thứ
sau:
temp = 5 * value * 100 /1023
Với value là giá trị nhận được từ việc đọc giá trị của ADC từ thanh ghi
ADRESH:ADRESL.
Quá trình xử lý và tính toán để có được nhiệt độ môi trường ở trên vi điều khiển thực
hiện theo các bước sau:
• Thiết lập kênh ADC trên PIC để đọc giá trị tại đầu ra của LM35
setup_port_a(ALL_ANALOGS);
setup_adc(ADC_CLOCK_INTERNAL); //xung lấy mẫu nội
setup_adc_channel(0); //kênh AN0 là đầu vào ADC
• Đọc ADC và chuyển đổi sang nhiệt độ tương ứng theo thang bách phân Celcius
Value = read_adc();

temp = 5 * value * 100 /1023; //đã thiết lập ADC 10 bit
từ trước.
Printf (lcd_putc, “Nhiet do: %d”,temp);
=======================================================
Trường ĐH Công nghệ - ĐHQGHN 19 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
CHƯƠNG 4: BÀN PHÍM PS/2 VÀ GIAO TIẾP BÀN PHÍM VỚI VI
ĐIỀU KHIỂN
4.1 Bàn phím PS/2.
Bàn phím là một ma trận lớn của các phím. Tất cả được giám sát bởi 1 bộ xử lý ở trên
bo mạch gọi là bộ mã hóa bàn phím (keyboard encoder). Bộ xử lý cụ thể có thể thay đổi tùy
loại bàn phím nhưng chúng đều phải thực hiện công việc cơ bản là: Giám sát mỗi khi có 1
hoặc nhiều phím được nhấn/thả và gửi dữ liệu tương ứng tới host. Bộ xử lý này sẽ cho phép
dữ liệu được gửi đi hoặc gữi lại thông qua 16byte bộ đêm (buffer).
Mạch điều khiển bàn phím (keyboard contrllor) lưu trữ toàn bộ bộ giải mã dữ liệu
nhận đựợc từ bàn phim và những thông tin sẽ phục vụ mục đích điều khiển. Việc truyền
thông giữa host và keyboard thông qua giao thức “IBM protocol”.
4.2 Giao diện vật lý.
Có 2 kiểu đầu cắm PS/2 là loại 5 chân DIN và loại 6 chân mini-DIN. Hai loại kết nối
này cho giống nhau hoàn toàn về mặt tín hiệu điện. Chỉ khác nhau ở cách bố trí các chân.
Chúng có thể chuyển đổi thông qua một thiết bị phần cứng đơn giản. Chuẩn DIN được xây
dựng bởi German Standardization Organization.
Hình sau chỉ rõ sơ đồ chân của mỗi loại kết nối:
Male
(Plug)
Female
(Socket)
5-pin DIN (AT/XT):
1 - Clock
2 - Data

3 - Not Implemented
4 - Ground
5 - Vcc (+5V)
Male Female 6-pin Mini-DIN (PS/2):
Trường ĐH Công nghệ - ĐHQGHN 20 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
(Plug) (Socket)
1 - Data
2 - Not Implemented
3 - Ground
4 - Vcc (+5V)
5 - Clock
6 - Not Implemented
Hình 4.1: Đầu cắm PS/2
4.3 Truyền nhận dữ liệu.
Dòng điện cung cấp cho bàn phím không đươc lớn hơn 275mA. Điện áp cung cấp
nằm trong khoảng +4,5 đến +5,5V.
Các đường dữ liệu và clock của bàn phím là những đường collector hở. Cần phải có
điện trở kéo trong giao tiếp, trong sơ đồ ghép nối với PIC điện trở kéo này không cần thiết
vì RB0 của vi điều khiển đã có trở kéo nội. Khi nối với “host” có những trạng thái trên Bus
như sau:
• Data = high, Clock = high: Trạng thái thả nổi,
• Data = high, Clock = low: Tryền nhận dữ liệu
• Data = low, Clock = high: Host Request-to-Send
Dữ liệu có độ dài 1 byte, và mỗi byte được gửi trên khung truyền có độ dài 11-12 bit.
Những bit trong khung dữ liệu gồm:
o Một bit “start”, Bit nay luôn có giá trị bằng 0, 8 bit dữ liệu, 1 bit kiểm tra chẳn
lẻ, 1 bit stop, 1 bit acknowledge (ack) chỉ truyền từ host tới keyboard.
4.2.1 Thông tin từ bàn phím tới host.
Khi keyboard muốn gửi thông tin, đầu tiên nó sẽ kiểm tra tín hiệu xung Clock, phải

đảm bảo là đang ở mức cao. Nếu không host sẽ ngăn chặn viêc truyền nhận và thiết bị (bàn
phím) phải đệm dữ liệu, cho đến khi host phát Clock. Tín hiệu này đảm bảo ở mức cao
trong vòng 50us trước khi bàn phím bắt đầu truyền dữ liệu.
Khung dữ liệu gồm 11 bit trong đó có:
• 1 start bit. Luôn luôn là 0This is always 0.
• 8 data bits, bit LSB là bit đầu tiên
Trường ĐH Công nghệ - ĐHQGHN 21 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
• 1 parity bit, kiểm tra chăn lẻ.
• 1 stop bit. Luôn luôn là 1.
Đường dữ liệu sẽ thay đổi trạng thái khi Clock ở mưc cao và dữ liệu là hợp lệ khi
Clock ở mức thấp.
Hình 4.2: Giản đồ xung
Mã quét của phím “Q”(15h) gửi từ bàn phím tới máy tính. Kênh A là tín hiệu Clock,
kênh B là tín hiệu của dữ liệu.
---
Hình 4.3: Giản đồ xung chi tiết
Tần số clock nằm trong khoảng 10 – 16,7kHz. Thời gian từ sườn lên của xung clock
tới khi có 1 dữ liệu được truyền nhỏ nhất 5us. Còn thời gian của tín hiệu từ khi 1 dữ liệu
truyền tới sườn xuống của xung clock nhỏ nhất là 5us và không lớn hơn 25us.
4.2.2 Thông tin từ host tới bàn phím.
Trường ĐH Công nghệ - ĐHQGHN 22 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
Các thiết bị PS/2 luôn có 1 máy phát xung. Nếu host muốn gửi dữ liệu thì trước tiên
phải đặt các đường Data và Clock trong trạng thái “Request to send” khi đó:
• Ngăn chăn truyền nhận bằng việc ghim Clock ở mưc thấp trong vòng nhỏ nhât
là 100us.
• Cho phép “Request to send” bằng việc giữ đường Data ở mưc thấp, sau đó
phát xung Clock.
Bàn phím kiểm tra trạng thái trong vòng không quá 10ms. Khi phát hiện thấy trạng

thái này, nó sẽ bắt đầu phát xung Clock , 8 bit dữ liệu và 1 bít stop. Host chỉ thay đổi đường
dữ liệu khi đường Clock ở mức thấp, và dữ liệu được bàn phím đọc khi Clock ở mưc cao.
Cái này ngược hoàn toàn với quá trình từ bàn phím tới host.
Sau khi nhận được bit stop, bàn phím báo đã nhận được byte bằng cách đưa đường dữ
liệu xuông thấp và phát thêm 1 xung nữa. Nếu host không nhả đường dữ liệu sau 11 xung
thì bàn phím sẽ tiếp tục xung quá trình chỉ kêt thúc khi đường dữ liệu được giải phóng.
Tóm lại các bước mà host phải thực hiện để truyền dữ liệu đến PS/2 keyboard là
1. Đưa đường Clock xuống thấp ít nhất là 100us.
2. Đường dữ liệu xuống thâp.
3. Giải phóng đường Clock.
4. Đợi để bàn phím đưa đường Clock của nó xuống thâp.
5. Set/reset đường dữ liệu để gửi bit đầu tiên.
6. Đợi bàn phím đưa Clock lên mưc cao.
7. Đợi bàn phím đưa Clock xuống thấp.
8. Lặp lại bước 5-7 cho các bit dữ liệu khác và bit kiểm tra lỗi.
9. Giải phóng đường dữ liệu.
10.Đợi bàn phím đưa Data xuống thấp.
11.Đợi bàn phím đưa Clock xuống thấp.
12. Đợi bàn phím giải phóng Data và Clock.
Trường ĐH Công nghệ - ĐHQGHN 23 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
Hình mô tả xung khi host gửi tới bàn phím:
Hình 4.3: Giản đồ xung
Chi tiết quá trình trình truyền nhận host tới bàn phím.
Hình 4.4: Chi tiết quá trình truyền nhận từ host tời bàn phím
Hình 4.4 có 2 thông số là a,b trong đó. (a) là khoảng thời gian để bàn phím bắt đầu
phát xung sau khi host khởi tạo với đường Clock ở mức thấp, khoảng thời gian này không
lớn hơn 15 ms. (b) là khoảng thời gian để gói dữ liệu được gửi thời gian này không lớn hơn
2ms.
4.3 Mã quét.

Bộ xử lý bàn phím sử dụng phần lớn thời gian vào việc quét, hoặc giám sát ma trận
phím. Nếu tìm thấy phím được ấn, thả, hoặc giữ, bàn phím sẽ gửi một gói tin chứa thông tin
về mã quét (scan code) được tới host. Có hai loại mã quét là make code và break code. Một
make code sẽ được gửi đi khi có một phím được ấn hoặc giữ. Break code sẽ được gửi tiếp
Trường ĐH Công nghệ - ĐHQGHN 24 Nguyễn Văn Cường_K49Đ
Khóa luận tốt nghiệp Điện tử và kỹ thuật máy tính
đi khi có một phím được nhả. Mỗi phím được gán cho một make code và break code duy
nhất vì thế host có thể quyết định chính xác cái gì đã xảy ra. Việc gán make code và brake
code cho mỗi phím cho ta chuẩn mã quét phím (scan code set). Có 3 chuẩn scan code set là
1,2, và 4. Bàn phím hiện nay mặc định cài đặt theo loại 2. Chi tiết các bảng chuẩn mã quét
bàn phím xem phần phụ lục.
Không có công thức tính toán cho việc tìm ra mã của một phím bất kỳ. Muốn biết
make code và break code chỉ còn cách tra bảng.
4.4.1 Make Codes, Break Codes, và Typematic Repeat
4.4.1.1 Make code.
Khi nhấn 1 phím sẽ có một mã make code gửi tới host. Không hề có mối liên hệ nào
giữa make code và ASCII code. Khi tới host, scan code sẽ được dịch ra ký tự hoặc lệnh
tương ứng.
Mặc dù phần lớn các make code theo chuẩn 2 (set 2) có độ rộng là 1 byte, tuy nhiên
có một số phím mở rông (extended key) có make code là 2 hoặc 4 byte. Những make code
này có thể được nhân biệt thông qua byte đầu tiên có giá trị là E0h.
4.4.1.2 Break code.
Khi nhấn một phím thì có một make code gửi tới host còn khi nhả ra thì có thêm một
mã nữa được gửi đó là break code. Với mỗi phím thì có một make code và break code duy
nhất. Không hề mối liên hệ nào giữa make code và break code. Hầu hết các break code
chuẩn 2 có độ dài 2 byte trong đó byte đầu có giá trị là F0h byte thứ 2 có giá trị đúng bằng
giá trị của make code của phím đó. Break code của các phím mở rộng thông thường là 3
byte với giá trị của 2 byte đầu là E0h, F0h và byte thư 3 là byte cuối cùng của make code
của phím đó. Bảng sau là một ví dụ:
Trường ĐH Công nghệ - ĐHQGHN 25 Nguyễn Văn Cường_K49Đ

×