1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

90 1,8K 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 90
Dung lượng 2,27 MB

Nội dung

Tài liệu tham khảo chuyên ngành viễn thông Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458

Trang 1

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

Trang 2

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

Trang 3

MỤC LỤC

Trang 4

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,

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ượngnghiên cứu

Người quan

sát

Trang 5

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

Môi trường

Vi điều khiển PICHiển thị LCD

Lấy mẫu

Đồng hồ thời gian thực

Bàn phím

Trang 6

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ị.

=================================================

Trang 7

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.

Trang 8

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.

Trang 9

• 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ế độ SPIo 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

Trang 10

• 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.

Trang 11

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

Trang 12

• 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

Trang 13

• 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)

Trang 14

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.

Trang 15

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

Trang 16

• 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ể.

===================================================

Trang 17

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

Trang 18

• Độ chính xác là 0.5oC khảo sát ở nhiệt độ 25oC• Có thể đo trong khoảng nhiệt độ -55 đến 150oC• Đ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 0oC 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 0C 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/0C, giả sử với nhiệt độ môi trường là 250C 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à 25oC 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

Vcc (+5V)

Trang 19

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:

Trang 20

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:

5 - Vcc (+5V)

Male Female 6-pin Mini-DIN (PS/2):

Trang 21

(Plug) (Socket)

1 - Data

2 - Not Implemented 3 - Ground

4 - Vcc (+5V) 5 - Clock

• 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ó:

Trang 22

• 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.

Trang 23

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.

Trang 24

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

Trang 25

đ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ụ:

Trang 26

Ví dụ: chuỗi make code và break code khi gửi tới host (chẳng hạn máy tính ) là như thế nào khi ký tự “G” xuất hiện Để có được một chữ hoa như trên thì chuỗi sự kiện được thực hiện là: ấn phím “shift”, ấn phím “G” (trên bàn phím là chữ hoa), nhả phím “G”, nhả phím “shift” Mã quét được theo chuỗi sự kiên đó sẽ là: make code cho phím “shift”(12h), make code cho phím “G”(34h), break code phím “G”(F0h,34h), break code phím “shift”(F0h,12h) Vậy kết quả dữ liệu được gửi tới host sẽ là: 12h, 34h, F0h, 34h, F0h, 12h.

4.4.1.3 Typematic.

Khi ấn 1 phím một make code sẽ được gửi tới host Khi nhấn và giữ một phím thì phím đó trở thành typematic, điều này có nghĩa là bàn phím sẽ vẫn tiếp tục gửi make code của phím đó cho tới khi phím đó được nhả hoặc phím khác được bấm Có thể kiểm tra lại điều này khi ta mở một trình soạn thỏa và giữ phím “A” Khi ấn phím ký tự “a” xuất hiện ngay trên màn hình Sau một khoảng thời gian ngắn những chữ “a” khác sẽ xuất hiện tiếp theo, chuỗi ký tự “a” này chỉ kết thúc khi ta nhả phím “A” Có hai tham số quan trọng ở đây là:

Typematic delay: là khoảng trễ ngắn giữa chữ “a” đầu tiên và thứ 2

Typematic rate: là số ký tự xuất hiện trong 1 giây trên màn hình (đối với máy

tính) sau khoảng thời gian typematic delay

Typematic delay nằm trong khoảng từ 0,25 đến 1 giây Còn typematic rate có thể thay trong khoảng 2-30 ký tự trên giây Có thể thay đổi 2 thông số này bằng lệnh “Set typematic rate/delay”(0xF3).

Trong trường hợp có nhiều hơn 1 phím được giữ chỉ có phím ấn sau mới trở thành typematic

Trang 27

Chú ý: Trên thực tế phím “Pause/Break” không có break code đối với cả chuẩn mã quét 1 và 2 Khi phím được bấm thì nó gửi make code còn khi nhả ra nó không gửi gì cả.

4.4 Cài đặt.

4.4.1 Quá trình khởi động.

Khi bật nguồn hoặc reset bằng phần mềm (lệnh reset) thì bàn phím sẽ thực thi kiểm tra chuẩn đoán độ tin cậy gọi là BAT( Basic Assurance Test) và sau đó là tải các giá trị mặc định bao gồm:

4.4.2 Các lệnh thiêt lập.

Các lệnh được nêu sau đây được gửi từ host tới bàn phím.

1 0xFF ( Reset): bàn phím đáp ứng với “ack” (0xFA), sau đó vào quá trình reset.2 0xFE (Resend): bàn phím sẽ đáp ứng bằng việc gửi lại byte cuối cùng Trường

hợp ngoại lệ nếu byte cuối cùng cùng là 0xFE khi đó bàn phím gửi lại byte cuối với giá trị không phải lài 0xFE Lệnh resend được sử dụng khi host phát hiện có lội trong quá trình nhận.

3 0xF6 (Set default): tải nhưng thông số mặc định của typematic rate/delay (10.9cps/500ms), loại phím (tất cả các phím typematic/make/break), và loại quét bàn phím là 2 (scan code set 2).

4 0xF5 (Disable) dừng quá trình quét phím, tải lại các giá trị mặc định (Set default), và đợi trong vài chu kỳ lệnh.

Trang 28

6 0xF3 (Set typematic rate/delay) thiết lập các thông số typematic rate/delay) Host sẽ gửi lệnh này với đối số là 1 byte định nghĩa các thông số trên Các giá trị được cho trong bảng sau:

7 0xF2 (Read ID) bàn phím sẽ đáp ứng bằng việc gửi trở lại 2 byte là 0xAB và 0x84.

8 0xF0 (Set scan code set) bàn phím sẽ đáp ứng với “ack”, sau khi đọc được byte đối số được gửi từ host Byte đối số này có thể là 0x01, 0x02, 0x03 tương ứng với lựa chọn scan code set là 1, 3, hay là 4

9 0xEE (Echo) bàn phím cũng đáp ứng lài là “Echo”(0xEE).

10 0xED (Set/Reset LEDs) host sẽ gửi kèm theo lệnh này 1 byte đối số chỉ rõ trạng thái đèn của các phím Num Lock, Caps Lock, và Scroll Lock Byte đối số đó như sau:

Các trạng thái on/off tương ứng với giá trị là 1/0.

4.5 Mạch điều khiển bàn phím i8042.

Trang 29

Một vi điều khiển intel 8042 hoặc tương thích sẽ được sử dụng trong mạch điều khiển bàn phím của máy tính Với những máy tính hiện nay những vi điều khiển loại này được tích hợp trên chipset của bo mạch chính

Tùy thuộc vào bo mạch chủ mà mạch điều khiển bàn phím có thể là 1 trong 2 loại là: tương thích với AT hay là tương thích với PS/2 Ngày nay cả chuột PS/2 cũng được hỗ trợ luôn trên bo mạch chính Khi đó 8042 cũng đảm nhận luôn cả việc điều khiển chuột.

4.6 PIC điều khiển bàn phím.

Trong khóa luận sử dụng vi điều khiển PIC làm mạch điều khiển bàn phím theo chuẩn PS/2 Tuy đây không phải là loại IC chuyên dụng dùng điều khiển bàn phím tuy nhiên nó hoàn toàn đảm nhận được việc này, khi ta thực hiện được đúng ghép nối phần cứng theo chuẩn PS/2 và xây dựng được firmware để thực hiện đọc ghi lệnh và dữ liệu.

4.6.1 Sơ đồ ghép nối Keyboard PS/2 với PIC 18F452.

Hình 4.5: Ghép nối bàn phím với vi điều khiển.

Trang 30

Để thực hiện được giao tiếp giữa bàn phím và PIC cần có quá trình khởi tạo để 2 thiết bị nhận nhau Quy trình khởi tạo thực hiện qua các bước:

• Xóa bộ đệm vào ra

• Thiết lập đầu vào dữ liệu và xung• Cấu hình ngắt ngoài

• Cho phép ngắt

Qúa trình khởi tạo được minh họa bằng đoạn code sau:

//////////////khoi tao keyboard/////////////////////////void PS2KeyInit(void){

PS2KeyNRead =0; //xoa viec doc nhung phim so PS2KeyBufInIx =0; //xoa bo dem vao

PS2KeyBufOutIx =0; //xoa bo dem ra

PS2_BREAKCODE =FALSE; //khong nhan breakcode PS2_SHIFT =FALSE; //khong nhan shift

PS2Key_DataTris =1; //thiet lap dau vao du lieu PS2Key_ClkTris =1; //thiet lap dau vao xung clock ext_int_edge(0, H_TO_L); //ngat theo suon xuong

enable_interrupts(INT_EXT); //cho phep ngat ngoai tai RB0 }

4.6.2.2 Các hàm chức năng sử dụng trong chương trình.

Một số hàm sử dụng trong chương trình phục vụ cho quá trình giao tiếp giữa vi điều khiển và bàn phím.

- INT8U PS2KeyGetKey(void);

Nhận 1 mã quét từ bàn phím hàm trả về giá trị 1 nếu đang xứ lý, còn -1 nếu qúa trình không kết thúc.

- Void PS2SendComm(INT8U cmd); Gửi 1 byte lệnh tới bàn phím

Trang 31

Chèn 1 ký tự vào bộ nhớ đệm của bàn phím.

=====================================================CHƯƠNG 5: ĐỒNG HỒ THỜI GIAN THỰC

5.1 Mô tả chung về DS1307

DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và ngày tháng với 56 bytes NVRAM, với loại bộ nhớ này dữ liệu sẽ không bị xóa khi mất nguồn nuôi Địa chỉ và dữliệu được truyền nối tiếp với giao diện ghép nối I2C qua 2 đường, truyền song công Nó cung cấp thông tin về giờ, phút, giây, thứ, ngày, tháng, năm

Đồng hồ có thể hoạt động ở dạng 24 giờ hoặc 12giờ với chỉ thị AM/PM DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động chuyến sang dùng nguồn cung cấp từ pin.

Trong ghép nối với vi điều khiển DS1307 hoạt động với vai trò của một slave Việc truy cập được thi hành với chỉ thị START và một mã nhậ dạng thiết bị Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi.

Sơ đồ khối của DS1307

Trang 32

Hinh 5.1: Sơ đồ khối của DS1307

5.2 Hoạt động của các chân.

Vcc,GND: nguồn một chiều được cung cấp tới các chân này Vcc là đầu vào 5V Khi được cấp nguồn 5V thì IC có thể được truy xuất cách đây đủ, dữ liệu có thể đọc và viết Khi pin 3V được nối tới thiết bị này và Vcc nhỏ hơn 1,25 x Vbat thì quá trình đọc và viết không được thực thi, tuy nhiên chức năng đồng hồ không bị ảnh hưởng Khi Vcc nhỏ hơn Vbat thì RAM và đồng hồ sẽ chuyển sang dùng nguồn cùng câp ngoài (thường là nguồn 1 chiều 3V) từ pin

Vbat: Đầu vào pin cho bất kỳ chuẩn pin lithium 3V hoặc nguồn năng lượng khác Điện áp này phải được giữ trong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị

SCL (serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên giao diện nối tiếp

SDA(serial data input/out): là chân vào ra của giao dien I2C Chân SDA thiết kế theo kiểu cực máng hở, đòi hỏi phải có một điện trở kéo trong khi hoạt động

SQW/OUT (square wave/output driver): khi được kích hoạt thì bit SQWE được thiết lập bằng 1, chân SQW/OUT phát ra 1 trong 4 tần số (1Hz,4kHz,8kHz,32kHz) Chân này cũng cần có trở kéo lên trong quá trình hoạt động Hoạt động trong cả chế độ nguồn Vcc và Vbat.

X1,X2: được nối với một thạch anh tần số 32,768kHz Là một mạch tạo dao động ngoài.

5.3 Tổ chức bộ nhớ RAM của DS1307

Trang 33

Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte trong thanh ghi thích hợp Thời gian và ngày tháng được thiết lập cũng thông qua các thanh ghi này bằng cách viết vào đó những giá trị thích hợp Nội dung của các thanh ghi dưới dạng mã BCD (binary coded decreaseimal) Bit 7 của thanh ghi 0 là bit clock halt (CH), khi bit này được thiết lập bằng 1 thì không cho phép dao động, khi được xoá về 0 thì dao động được cho phép Chú ý khi mới bắt đầu bật nguồn thì các thanh ghi chưa được định nghĩa, do đó một điều quan trọng trong khi khởi tạo cấu hình là phải cho phép dao động bit CH xóa về 0 (CH=0)

5.3.1 Các thanh ghi thời gian của DS1307.

Trang 34

Hình 5.2: Thanh ghi thời gian của DS1307.

DS1307 có thể chạy ở chế độ 24h cũng như 12h Bit thứ 6 của thanh ghi hours là bit chọn chế độ 24h hoặc 12h Khi bit này ở mức cao thì chế độ 12h được chọn Ở chế độ 12h thì bit 5 là bit AM/PM với mức cao là PM Ở chế độ 24h thì bit 5 là bit chỉ 20h (từ 20h đến 23h)

5.3.2 Thanh ghi điều khiển.

DS1307 có thanh ghi 7 dùng để điều khiển hoạt động của chân SQW/OUT

• OUT (output control): bit điều khiển mức lối ra của chân SQW/OUT khi đầu ra xung vuông là disable

• Nếu SQWE = 0, thì mức logic ở chân SQW/OUT sẽ là 1 nếu OUT = 1, và là 0 nếu OUT = 0

• Nếu SQWE = 1, cho phép đầu ra của bộ tạo dao động Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0 được cho ở bảng dưới:

Giao diện truyền nối tiếp trên 2 đường

Trang 35

Hinh 5.3: Giao diện ghép nối theo chuẩn I2C.

Trang 36

5.4 Truyền dữ liệu theo chuẩn I2C.

Tuỳ thuộc vào bit R/W mà có 2 loại truyền dữ liệu sẽ được thực thi:

Hình 5.4: Truyền tín hiệu trên 2 đường dây.

Truyền dữ liệu từ master tới slave : Master sẽ truyền byte đầu tiên là địa chỉ của slave Tiếp sau đó là các byte dữ liệu Slave sẽ gửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữ liệu nhận được Dữ liệu sẽ truyền từng bit từ bit có ý nghĩa nhất (MSB)

Truyền dữ liệu từ slave tới master : byte đầu tiên (địa chỉ của slave) được truyền tới slave bởi master Sau đó slave sẽ gửi lại master bit acknowledge Tiếp theo đó slave sẽ gửi các byte dữ liệu tới master Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ byte cuối cùng, sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi

Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP Quá trình truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START Khi chỉ thị START quay vòng thì qúa trình truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng Dữ liệu truyền luôn bắt đầu bằng bit MSB DS1307 có thể hoạt động ở 2 chế độ

5.5.1 Ghi dữ liệu vào DS1307.

Chế độ slave receiver (ghi vào DS1307) : chuỗi dữ liệu và chuỗi xung clock sẽ được nhận thông qua SDA và SCL Sau mỗi byte được nhận thì1 bit acknowledge sẽ được truyền ngược trở lại master Các chỉ thị START và STOP dùng để nhận biết khi bắt đầu và kết thúc một khung truyền Nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit dẫn hướng Byte địa chỉ là byte đầu tiên nhận được sau khi

Trang 37

điều kiện START được phát ra từ master Byte địa chỉ có chứa 7 bit (0b1101000) là địa chỉ của DS1307 bit dẫn hướng (R/W) cho phép ghi khi nó bằng 0 Sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát đi 1 tín hiệu acknowledge lên đường SDA Sau khi nhận được địa chỉ master sẽ gửi địa chỉ thanh ghi sẽ được ghi vào tới DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được Sau đó master sẽ truyền điều kiện STOP khi việc ghi hoàn thành

Hinh 5.5: Quá trình ghi dữ liệu vào DS1307.

Giá trị 0xD0 được gửi từ master bao gồm 7 bit 0b1101000 là địa chỉ của DS1307 giá trị này được quy định từ trước và bit cuối cùng là 0 cho phép ghi vào DS1307.

5.5.2 Đọc dữ liệu từ DS1307.

Chế độ slave transmitter (đọc từ DS1307) : byte đầu tiên slave nhận được tương tự như chế độ slave nhận Tuy nhiên trong chế độ này thì bit dẫn hướng lại chỉ chiều truyền ngược lại Chuỗi dữ liệu được phát đi trên chân SDA của DS1307, trong khi chuỗi xung clock vào đi chân SCL Các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc khung truyền một chuỗi Byte địa chỉ nhận được đầu tiên khi master phát đi điều kiện START Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit đẫn hướng cho phép đọc là 1 Sau khi nhận và giải mã byte địa chỉ thì thiết bị phát 1 ack lên đường SDA Đữ liệu về địa chỉ đọc được gửi tới DS1307, chờ tín hiệu ack phản hồi, quá trình đọc DS1307 bắt đầu DS1307 sẽ nhận được một tín hiệu Not Acknowledge khi kết thúc quá trình đọc.

Trang 38

Hình 5.6: Ghép nối PIC và DS1307.

Trang 39

5.6 Sơ đồ khối qúa trình khởi tạo và các hàm chức năng cho DS1307.

5.6.1 Khởi tạo đồng hồ thời gian thực.

Hình 5.7: Sơ đồ khối cơ bản việc cài đặt đồng hồ thời gian thực.

5.6.2 Các hàm chức năng.

Qúa trình cài đặt thời gian bao gồm giờ, phút, giây, ngày, thứ, tháng, năm, thực hiện dựa vào chế độ slave receiver của DS1307 Các giá trị cài đặt được thực hiện ngay trong chương trình hoặc sử dụng các phím bấm từ khối giao tiếp bên ngoài.

Công việc kiểm tra cài đặt có thể sử dụng ngắt ngoài của vi điều khiển, khi đó chỉ còn là quá trình cập nhật thời gian rồi hiển thị Các giá trị về thời gian trong DS1307 sẽ luôn

Bắt đầu

Cài đặt thời gian (ghi vào DS1307)

Cập nhật thời gian (đọc ra từ DS1307)

Hiển thị

Kiểm tra cài đặt

KhôngCó

Trang 40

Đoạn code sau viết bằng ngôn ngữ C trên trình dịch CCS v5.068 cho ta quá trình cài đặt thời gian ban đầu cho đồng hồ

/////////////// Cai thoi gian ////////////// i2c_start(); //bắt đầu

i2c_write(0xD0); //Cho phép ghi vào DS1307 i2c_write(0x00); //Bắt đầu từ thành ghi 0 i2c_write(set_sec(sec)); // thanh ghi 0 i2c_write(set_min(min)); // thanh ghi 1 i2c_write(set_hour(hr)); // thanh ghi 2 i2c_write(set_dow(dow)); // thanh ghi 3 i2c_write(set_day(day)); // thanh ghi 4 i2c_write(set_mth(mth)); // thanh ghi 5 i2c_write(set_year(year)); // thanh ghi 6

i2c_write(0x80); //thanh ghi7 -bo qua phat xung i2c_stop();

5.6.2.2 Hàm cập nhật thời gian từ đồng hồ.

Sau khi cài đặt thời gian, đồng hồ bên trong DS1307 đã chạy Muốn cập nhật thông tin từ đồng hồ, cần phải truy xuất tới IC đọc các giá trị trong các thanh ghi, các giá trị này sẽ cho ta các thông số chính xác về thời gian Để làm được điều này phải sử dụng chế độ “slave transmitter” Vi điều khiển gửi chỉ thị START sau đó là giá trị 0xD1, khi giá trị này tới DS1307, IC cho phép đọc các thanh ghi bắt đầu tư địa chỉ được đưa tới cho tới khi có chỉ thị STOP dừng quá trình đọc.

Đoạn code sau sẽ cho ta thực hiên thao tác đó.

///////////////Doc dữ liệu DS1307/////////// i2c_start();

i2c_write(0xD0); //Gui dia chi cua slave i2c_write(0x00); //thiet lap lai con

i2c_stop(); I2C_start();

I2C_write(0xD1); /* gui lenh doc du lieu */ sec = i2c_read(1); /* bat dau tu thanh ghi 0*/ min = i2c_read(1);

hour = i2c_read(1); //che do 24h ko can AND

Ngày đăng: 20/11/2012, 11:37

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Adam Chapweske, The PS/2 Mouse/Keyboard Protocol, http://www.Computer- Engineering.org, 2003 Link
[1] Nguyễn Đình Việt, Kiến trúc máy tính, Nhà xuất bản Đại học Quốc Gia, 2005 Khác
[2] GS. Nguyễn Văn Ất, Kỹ thuật lập trình C, Nhà xuất bản Thống Kê, 2003. Tài liệu Tiếng Anh Khác
[1] AN1045a, Implementing File I/O Functions Using Microchip’s Memory Disk Drive File System Library, Microchip Technology Inc, 2007 Khác
[3] Datasheet LM35DZ, CD4050, LM1117-3.3V, DS1307, PIC18F458 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Sơ đồ khối của hệ thống - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 1.1 Sơ đồ khối của hệ thống (Trang 4)
Hình 1.1: Sơ đồ khối của hệ thống - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 1.1 Sơ đồ khối của hệ thống (Trang 4)
Hình 1.2: Sơ đồ khối của hệ thống đo lường nhiệt độ. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 1.2 Sơ đồ khối của hệ thống đo lường nhiệt độ (Trang 5)
Hình 1.2: Sơ đồ khối của hệ thống đo lường nhiệt độ. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 1.2 Sơ đồ khối của hệ thống đo lường nhiệt độ (Trang 5)
Hình 2.1: Sơ đồ chân vi điều khiển PIC18F458. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.1 Sơ đồ chân vi điều khiển PIC18F458 (Trang 8)
Hình 2.1: Sơ đồ chân vi điều khiển PIC18F458. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.1 Sơ đồ chân vi điều khiển PIC18F458 (Trang 8)
Hình 2.3: Sơ đồ khối bộ chuyển đổi AD - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.3 Sơ đồ khối bộ chuyển đổi AD (Trang 11)
Hình 2.3: Sơ đồ khối bộ chuyển đổi AD - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.3 Sơ đồ khối bộ chuyển đổi AD (Trang 11)
Hình 2.4: Sơ đồ khối SPI - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.4 Sơ đồ khối SPI (Trang 12)
Hình 2.5: Sơ đồ ghép nối theo chuẩn SPI. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.5 Sơ đồ ghép nối theo chuẩn SPI (Trang 15)
Hình 2.5: Sơ đồ ghép nối theo chuẩn SPI. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 2.5 Sơ đồ ghép nối theo chuẩn SPI (Trang 15)
Hình 3.2: Ghép nối LM35 với vi điều khiển. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 3.2 Ghép nối LM35 với vi điều khiển (Trang 18)
Hình 3.2: Ghép nối LM35 với vi điều khiển. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 3.2 Ghép nối LM35 với vi điều khiển (Trang 18)
Hình 4.3: Giản đồ xung chi tiết - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.3 Giản đồ xung chi tiết (Trang 22)
Hình 4.3: Giản đồ xung chi tiết - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.3 Giản đồ xung chi tiết (Trang 22)
Hình 4.2: Giản đồ xung - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.2 Giản đồ xung (Trang 22)
Hình 4.3: Giản đồ xung - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.3 Giản đồ xung (Trang 24)
Hình 4.3: Giản đồ xung - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.3 Giản đồ xung (Trang 24)
Hình 4.5: Ghép nối bàn phím với vi điều khiển. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.5 Ghép nối bàn phím với vi điều khiển (Trang 29)
Hình 4.5: Ghép nối bàn phím với vi điều khiển. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 4.5 Ghép nối bàn phím với vi điều khiển (Trang 29)
Sơ đồ khối của DS1307 - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Sơ đồ kh ối của DS1307 (Trang 31)
Hình 5.4: Truyền tín hiệu trên 2 đường dây. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.4 Truyền tín hiệu trên 2 đường dây (Trang 36)
Hình 5.4: Truyền tín hiệu trên 2 đường dây. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.4 Truyền tín hiệu trên 2 đường dây (Trang 36)
Hình 5.6: Ghép nối PIC và DS1307. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.6 Ghép nối PIC và DS1307 (Trang 38)
Hình 5.6: Ghép nối PIC và DS1307. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.6 Ghép nối PIC và DS1307 (Trang 38)
Hình 5.7: Sơ đồ khối cơ bản việc cài đặt đồng hồ thời gian thực. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.7 Sơ đồ khối cơ bản việc cài đặt đồng hồ thời gian thực (Trang 39)
Hình 5.7: Sơ đồ khối cơ bản việc cài đặt đồng hồ thời gian thực. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 5.7 Sơ đồ khối cơ bản việc cài đặt đồng hồ thời gian thực (Trang 39)
Hình 6.4: Sơ đồ ghép nối modun MMC với PIC - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.4 Sơ đồ ghép nối modun MMC với PIC (Trang 48)
Hình 6.4: Sơ đồ ghép nối modun MMC với PIC 6.2.2 CD4050 và LM1117-3.3V. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.4 Sơ đồ ghép nối modun MMC với PIC 6.2.2 CD4050 và LM1117-3.3V (Trang 48)
Hình 6.5: Mô hình vi mạch CD4050. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.5 Mô hình vi mạch CD4050 (Trang 48)
Hình 6.7: Cách ghép nối cho chức năng chuyển đổi mức điện áp. 6.2.2.2 LM1117-3.3V. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.7 Cách ghép nối cho chức năng chuyển đổi mức điện áp. 6.2.2.2 LM1117-3.3V (Trang 49)
Hình 6.7: Cách ghép nối cho chức năng chuyển đổi mức điện áp. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.7 Cách ghép nối cho chức năng chuyển đổi mức điện áp (Trang 49)
Hình 6.9: Cách ghép nối cho điện thế đầu ra ổn ap 3,3V - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.9 Cách ghép nối cho điện thế đầu ra ổn ap 3,3V (Trang 49)
Hình 6.10: Truyền nhận dữ liệu theo chuẩn SPI. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.10 Truyền nhận dữ liệu theo chuẩn SPI (Trang 50)
6.3.3 Các lệnh được sử dụng. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
6.3.3 Các lệnh được sử dụng (Trang 52)
Hình 6.12: Sơ đồ khối khởi tạo MMC - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.12 Sơ đồ khối khởi tạo MMC (Trang 56)
Hình 6.12: Sơ đồ khối khởi tạo MMC - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.12 Sơ đồ khối khởi tạo MMC (Trang 56)
Hình 6.13: Đọc ghi dữliệu theo từng block. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.13 Đọc ghi dữliệu theo từng block (Trang 58)
Hình 6.13: Đọc ghi dữ liệu theo từng block. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.13 Đọc ghi dữ liệu theo từng block (Trang 58)
n: số bảng FAT - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
n số bảng FAT (Trang 60)
Thông tin về một phân vùng trên thẻ được chứa trong mục bảng phân vùng trên - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
h ông tin về một phân vùng trên thẻ được chứa trong mục bảng phân vùng trên (Trang 61)
6.6.2 Sector khởi động. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
6.6.2 Sector khởi động (Trang 62)
10h Số bảng phân bố dữliệu (FAT) 1 byte - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
10h Số bảng phân bố dữliệu (FAT) 1 byte (Trang 62)
6.6.4 Bảng phân bố dữ liệu. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
6.6.4 Bảng phân bố dữ liệu (Trang 64)
Bảng phân bố dữ liệu (File Allocation Table) FAT :là một danh sách móc nối sử dụng  cựng với bảng thư mục để theo dừi sỏt vị trớ của dữ liệu ( file) trờn thẻ và để sắp xếp chỗ  trống để lưu trữ các file mới - 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ảng ph ân bố dữ liệu (File Allocation Table) FAT :là một danh sách móc nối sử dụng cựng với bảng thư mục để theo dừi sỏt vị trớ của dữ liệu ( file) trờn thẻ và để sắp xếp chỗ trống để lưu trữ các file mới (Trang 64)
Hình 6.16: Vi dụ phân bố dữliệu của 1 file. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.16 Vi dụ phân bố dữliệu của 1 file (Trang 65)
Hình 6.16: Vi dụ phân bố dữ liệu của 1 file. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 6.16 Vi dụ phân bố dữ liệu của 1 file (Trang 65)
Hình 7.1: Ảnh LCD1602. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 7.1 Ảnh LCD1602 (Trang 69)
7.1.1 Bảng mô tả các chân của LCD: - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
7.1.1 Bảng mô tả các chân của LCD: (Trang 70)
Hình 7.3: Bảng các ký tự hiển thị trên LCD. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 7.3 Bảng các ký tự hiển thị trên LCD (Trang 71)
Hình 7.3: Bảng các ký tự hiển thị trên LCD. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 7.3 Bảng các ký tự hiển thị trên LCD (Trang 71)
Hình 7.4: Quá trình khởi tạo LCD. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 7.4 Quá trình khởi tạo LCD (Trang 74)
Sơ đồ ghép nối: - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Sơ đồ gh ép nối: (Trang 79)
Hình 8.1: Bo mạch sau thi công và hàn linh kiện - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.1 Bo mạch sau thi công và hàn linh kiện (Trang 82)
Hình 8.1: Bo mạch sau thi công và hàn linh kiện - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.1 Bo mạch sau thi công và hàn linh kiện (Trang 82)
Hình 8.2: Kết quả thức hiện giao tiếp với bàn phím PS/2. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.2 Kết quả thức hiện giao tiếp với bàn phím PS/2 (Trang 83)
Hình 8.2: Kết quả thức hiện giao tiếp với bàn phím PS/2. - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.2 Kết quả thức hiện giao tiếp với bàn phím PS/2 (Trang 83)
Hình 8.3: Kết quả hiển thị đồng hồ thời gian thực và nhiệt độ - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.3 Kết quả hiển thị đồng hồ thời gian thực và nhiệt độ (Trang 84)
Hình 8.3: Kết quả hiển thị đồng hồ thời gian thực và nhiệt độ - Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458
Hình 8.3 Kết quả hiển thị đồng hồ thời gian thực và nhiệt độ (Trang 84)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w