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Đ
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ó
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.
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).
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
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:
• 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
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
đả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
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Đ