Phân tích nhiệm vụ
Để có thể thiết kế và xây dựng đợc hệ thống nh trên cần phải thực hiện các bớc sau :
Nghiên cứu và tìm hiểu bộ vi xử lý AT90S8535.
Tìm hiểu sự hoạt động của module LCD và cảm biến nhiệt LM 335.
Tìm hiểu sự hoạt động và phơng pháp mã hoá keypad để có thể ghÐp nèi víi C.
Tìm hiểu phơng pháp truyền thông sử dụng chuẩn RS 232.
Thiết kế sơ đồ mạch nối ghép giữa C với LCD, keypad, IC LM335 và giữa C với máy tính thông qua cổng RS 232.
Lập trình phần mềm nạp cho C để thực hiện các kết nối trên.
Viết phần mềm trên PC để giao tiếp với C qua cổng RS 232.
Lắp giáp mạch đã thiết kế, chạy kiểm thử và đánh giá kết quả.
Viết báo cáo tốt nghiệp.
Phơng hớng thực hiện
Lựa chọn linh kiện thiết kế Và một số lý thuyết về chuyển đổi A/D 2.1 Lựa chọn linh kiện thiết kế
Giới thiệu vi mạch điều khiển AT90S8535
AT90S8535 là một vi mạch điều khiển năng lợng thấp 8 bit (công nghệ chíp CMOS) trên cơ sở cấu trúc RICS của hãng ATMEL, nó thuộc họ vi điều khiển AT90S/LS8535 Bằng cách thực hiện mỗi lệnh trong một đơn chu kỳ, AT90S8535 có thể đạt tới 1 MIPS cho mỗi MHz cho phép hệ thống có thể đợc thiết kế một cách tối u nhất sự tiêu thụ năng lợng làm tăng tốc độ xử lý Về mặt cấu tạo C này cũng tơng tự nh C AT90S8515 với 4 cổng I/O lập trình đợc, tuy nhiên về mặt chức năng thì C AT90S8535 đợc tích hợp thêm nhiều tính năng mới mà C AT90S8515 không có Các đặc trng chính của C AT90S8535 đợc tr×nh bÇy díi ®©y :
8KB bộ nhớ chơng trình
32 line (4 cổng) I/O lập trình đợc
8 kênh đầu vào ADC riêng biệt với 10 bit kết quả
2 bộ Timer/Counter 8 bit với bộ đếm độc lập và chế độ so sánh
1 bộ Timer/Counter 16 bit với bộ đếm độc lập và các chế độ PWM
1 bộ UART lập trình trao đổi thông tin nối tiếp
1 bộ Watchdog Time lập trình đợc với bộ tạo giao động trong
1 cổng phối ghép nối tiếp thiết bị ngoại vi SPI
3 chế độ làm việc là : Idle, Power-Save và Power-down
Nguồn cung cấp từ 4.0 - 6.0 V , tần số làm việc 0 - 8MHz.
Vi mạch điều khiển AT90S8535 đợc chế tạo theo công nghệ chíp nhớ cố định với mật độ cao Bộ nhớ Flash ISP trên chíp cho phép bộ nhớ chơng trình có thể đợc lập trình lại thông qua một cổng SPI phối ghép nối tiếp với thiết bị ngoại vi Ngoài ra, C AT90SS8535 còn hỗ trợ cho việc lập trình thông qua các công cụ pháp triển hệ thống nh C, assemblers
Vi điều khiển AT90S8535 có 4 cấu hình chân khác nhau là : PDIP (Có
40 chân), PLCC, TQFP, MLF (Có 44 chân) Sơ đồ chân của mỗi loại nh sau.
Hình 2.1 : Cấu hình chân của C AT90S8535
Chức năng các chân của C AT90S8535 nh sau :
RESET : Là đầu vào reset Tín hiệu reset ở bên ngoài sẽ tạo ra bởi mức thấp của trở kháng trên chân Reset Xung reset dài quá 50ns sẽ tạo ra tín hiệu reset Xung ngắn hơn sẽ không đảm bảo phát sinh tín hiệu reset
XTAL1 : Là một đầu vào có tác dụng đảo chiều bộ khuếch đại tạo dao động và là đầu vào của mạch điều khiển đồng hồ bên trong.
XTAL2 : Là đầu ra của tín hiệu đảo từ bộ khuếch đại tạo dao động
AVCC : Là chân cung cấp điện áp cho cổng A và bộ chuyển đổi Đệm ra của cổng A có khả năng kéo dòng lên tới 20mA và có thể điều khiển trực tiếp sự hiển thị LED Khi các chân PA0 đến PA7 đợc sử dụng nh các cổng vào và ở mức thấp, chúng sẽ là đầu vào hiện thời nếu các điện trở trong đợc kích hoạt Cổng A cũng có thể đợc sử dụng nh những đầu vào analog để đa tín hiệu tới bộ bộ chuyển đổi ADC Các chân của cổng A ở trạng thái không xác định khi reset, ngay cả khi đồng hồ không hoạt động.
Port B (PB7 BP0) : Là một cổng vào ra hai chiều 8 bit với các trở kháng trong Đệm ra của cổng B có khả năng kéo dòng lên tới 20mA. Khi là đầu vào, các chân của cổng B trong trạng thái trở kháng thấp sẽ là đầu vào hiện thời nếu các điện trở trong đợc kích hoạt Cổng B là cổng cung cấp các chức năng khác nhau với những đặc tính đặc biệt của C AT90S8535 Các chân của cổng B ở trạng thái không xác định khi reset, ngay cả khi đồng không hoạt động
Port C (PC0 PC7) : Là một cổng vào ra hai chiều 8 bit với các trở kháng trong Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA. Khi là đầu vào, các chân của cổng C trong trạng thái trở kháng thấp sẽ là đầu vào hiện thời nếu các điện trở đợc kích hoạt Hai chân của cổng C có thể đợc lựa chọn để sử dụng giống nh bộ tạo dao động cho bộ Timer/Counter2 Các chân của cổng C ở trạng thái không xác định khi reset, ngay cả khi đồng không hoạt động.
Port D (PD0 PD7) : Là một cổng vào ra hai chiều 8 bit với các trở kháng trong Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA. Khi là đầu vào, các chân của cổng D trong trạng thái trở kháng thấp sẽ là đầu vào hiện thời nếu các điện trở đợc kích hoạt Cổng D cũng cung cấp những chức năng có đặc tính đặc biệt của C AT90S8535 Các chân của cổng D ở trạng thái không xác định khi reset, ngay cả khi đồng không hoạt động.
Hình 2.2 : Sơ đồ khối vi mạch điều khiển AT90S8535
2.1.1.1 Cấu trúc của vi mạch AT90S8535.
Vi mạch điều khiển AT90S8535 có những phơng thức truy cập nhanh tới tâp thanh ghi đa năng bao gồm 32 thanh ghi 8 bit với thời gian truy cập trong một đơn chu kỳ đồng hồ Điều này có nghĩa trong một đơn chu kỳ, một thao tác của bộ ALU đợc thực hiện sẽ lấy hai toán hạng từ hai thanh ghi trong tập thanh ghi, sau khi thao tác đợc thực hiện và kết qua trả sẽ đợc lu trở lại tập thanh ghi trong một chu kỳ đồng hồ
Sáu trong số 32 thanh ghi đa năng này có thể đợc sử dụng nh 3 thanh ghi địa chỉ gián tiếp 16 bit trỏ đến không gian địa chỉ dữ liệu, làm cho phép tính địa chỉ đạt đợc hiệu quả cao Một trong 3 con trỏ địa chỉ này cũng đợc sử dụng giống nh con trỏ địa chỉ tới vùng nhớ dữ liệu cố định Các thanh ghi địa chỉ này là các thanh ghi 16 bit X, Y, Z.
Hình 2.3 : Sơ đồ khối kiến trúc của C AT90S8535
Không gian vùng nhớ I/O bao gồm 64 địa chỉ ($20 $5F) dành cho các chức năng điều khiển thiết bị ngoại vi của C nh : Các thanh ghi điều khiển, bộ Timer/Couter, bộ chuyển đổi ADC và các chức năng I/O khác Vùng nhớ I/O có thể đợc truy nhập trực tiếp hoặc gián tiếp thông qua tập các thanh ghi.
C AT90S8535 sử dụng kiến trúc Harvard - với bộ nhớ và bus độc lập cho chơng trình và dữ liệu Bộ nhớ chơng trình đợc thực hiện với một
“pipeline” hai trạng thái Trong khi một lệnh đang đợc thực hiện, lệnh tiếp theo đợc nạp trớc từ bộ nhớ chơng trình Cách thức này cho phép các lệnh liên tiếp đợc thực hiện trong từng đơn chu kỳ đồng hồ Bộ nhớ chơng trình là bộ nhớ Flash cho phép nạp dữ liệu trong hệ thống
Với những lệnh nhẩy và lệnh gọi, toàn bộ không gian địa chỉ 4K đợc truy nhập trực tiếp Hầu hết các lệnh của AVR đều có độ dài 16 bit Mỗi địa chỉ bộ nhớ chơng trình bao gồm một lệnh 16 bit hoặc 32 bit
Mỗi một module ngắt có những thanh ghi điều khiển trong không gian I/
O với một bit cho phép ngắt chung đợc đặt trong thanh ghi trạng thái Mỗi ngắt khác nhau có một vector ngắt độc lập trong bảng vector ngắt ở tại vị trí bắt đầu của bộ nhớ chơng trình Mỗi ngắt khác nhau đều có mức độ u tiên tuân theo vị trí vector ngắt của chúng Địa chỉ của vector ngắt càng thấp, mức độ u tiên càng cao Khi xẩy ra ngắt, một chơng trình con phụ vụ ngắt đợc gọi, địa chỉ trở về PC đợc đẩy vào ngăn xếp Vùng nhớ ngăn xếp đợc cấp phát trong vùng nhớ dữ liệu của SRAM và do đó, dung lợng của ngăn xếp bị giới hạn bởi tổng dung lợng của SRAM và cách sử dụng thông thờng của SRAM. Tất cả các chơng trình của ngời sử dụng phải đợc khởi đầu bằng con trỏ ngăn xếp (SP) trong thủ tục reset (trớc khi các chơng trình con hoặc các ngắt đợc thực thi) Con trỏ stack sử dụng 10 bit để truy nhập ghi/đọc trong không gian I/O 512 byte dữ liệu SRAM có thể đợc truy cập dễ dàng bởi 5 chế độ địa chỉ khác nhau đợc cung cấp bởi C AT90S8535.
Hình 2.4 : Bản đồ bộ nhớ của C AT90S8535
2.1.1.2 Tập thanh ghi đa năng của C AT90S8535.
Tất cả các thanh ghi trong tập thanh ghi của C AT90S8535 khi thực một hiện lệnh trong tập lệnh đều có thể đợc truy cập trực tiếp trong một đơn chu kỳ đồng hồ Ngoại trừ 5 lệnh trực tiếp SBCI, SUBI, CPI, ANDI, ORI giữa một hằng số và một thanh ghi và lệnh LDI sử dụng để nạp tức thì hằng dữ liệu, những lệnh này phải sử dụng các thanh ghi của nửa thứ hai trong tập thanh ghi (từ R16 R31) Các lệnh còn lại đều có thể sử dụng bất kỳ thanh ghi nào trong tËp thanh ghi.
Hình 2.5 : Địa chỉ 32 thanh ghi đa năng của C
Qua hình 2.5 có thể thấy, mỗi thanh ghi đều đợc gán một địa chỉ trong không gian địa chỉ dữ liệu, chúng đợc đặt trong 32 vị trí đầu tiên của không gian dữ liệu sử dụng Mặc dù không đợc thực hiện một cách vật lý nh trong SRAM, việc tổ chức bộ nhớ này cung cấp sự linh hoạt lớn trong việc truy nhập tới các thanh ghi, nh các thanh ghi X, Y, Z có thể đợc thiết lập để trỏ tới bất kỳ thanh ghi nào trong tập thanh ghi.
Module LCD (20x4 characters)
Module LCD 20x4 characters đợc xây dựng dựa trên vi mạch điều khiển HD44780 của hãng Hitachi hoặc các vi mạch điều khiển tơng thích của các hãng khác Hầu nh không có sự khác biệt nào trong các vi mạch điều khiển module LCD giữa các nhà cung cấp
Thông thờng module LCD có 3 bộ nhớ chính là CGROM (Character
DDRAM : Bộ nhớ này lu trữ tất cả các ký tự đang đợc hiển thị trên màn hình của LCD Toạ độ của ký tự đợc hiển thị tơng ứng với địa chỉ trong DDRAM nơi mà ký tự đợc lu trữ Điều này làm cho thao tác điều khiển hiển thị của module LCD rất linh hoạt, vì ngời sử dụng có thể xuất dữ liệu ra bất kỳ vị trí nào trên màn hình LCD thông qua việc ghi ký tự cần hiển thị vào địa chỉ tơng ứng trong DDRAM
Bảng 2.35 : Địa chỉ bộ nhớ DDRAM
Hình 2.31 : Giao diện hiển thị dữ liệu của LCD Đa số các module LCD có 14 chân và thứ tự các chân đợc đánh số trên bo mạch in Ngoài ra, một số module LCD còn có thêm 2 chân 15 và 16 tơng ứng với các chân A và K đợc sử dụng để điều khiển LED BackLight của LCD
Hình 2.32 : Sơ đồ chân của module LCD 20x4
Chức năng các chân của module LCD
Chân 1 (Vss) : Chân nối đất.
Chân 2 (Vdd) : Chân cấp nguồn 5 V
Chân 3 (V 0 ) : Chân điều khiển độ tơng phản của giao diện hiển thị LCD.
Chân 4 (RS) : Tín hiệu lựa chọn thanh ghi lệnh (IR) hay thanh ghi dữ liệu
(DR) của LCD Khi chân nay ở mức thấp thanh ghi lệnh đợc lựa chọn, khi chân này ở mức cao thanh ghi dữ liệu đợc lựa chọn.
Chân 5 (R/W) : Tín hiệu ghi/đọc dữ liệu của LCD controller Khi chân này ở mức thấp một thao tác ghi dữ liệu tới LCD đợc thực hiện Khi chan này ở mức thấp một thao tác đọc dữ liệu từ LCD đợc thực hiện.
Chân 6 (E) : Tín hiệu cho phép LCD controller thực hiện thao tác ghi/đọc.
Khi chân này ở mức cao LCD đợc cho phép ghi/đọc.
Chân 7 14 (DB0 DB7) : 8 bit dữ liệu của LCD controller.
Chân 15 (A) : Chân cấp nguồn 5 V cho LED Backlight.
Chân 16 (K) : Chân nối đất của LED Backlight
Các lệnh điều khiển LCD controller
Tâp lệnh điều khiển LCD controller đợc mô tả đầy đủ trong bảng 2.36.
Bảng 2.36 : Tập lệnh điều khiển của LCD controller
Clear display 0 0 0 0 0 0 0 0 0 1 Xoá toàn bộ vùng hiển thị, đặt lại địa chỉ DDRAM là 00H 1.53 ms
Return home 0 0 0 0 0 0 0 0 1 * Đặt địa chỉ DDRAM là 00H và đ- a con trỏ về vị trí hiển thị đầu tiên.
Thiết lập chế độ làm việc của
AC (Address Counter), và điều khiển dịch chuyển màn h×nh
OFF 0 0 0 0 0 0 1 D C B Bật/tắt chế độ hiển thị (D), con trỏ (C) hoặc nhấp nháy
C R/L * * Đặt chế độ dịch chuyển con trỏ và dịch chuyển màn hình mà không làm thay đổi nội dung DDRAM
Function set 0 0 0 0 1 DL N F * * Đặt chế độ giao tiếp dữ liệu của LCD là 4 bit hay 8 bit 39s Set CGRAM address 0 0 0 1 ACG Đặt địa chỉ CGRAM trong AC 39s
Set DDRAM address 0 0 1 ADD Đặt địa chỉ DDRAM trong AC 39s
Read Busy flag and address 0 1 BF AC Check cờ BF và đọc nội dung
M 1 0 Write data Ghi dữ liệu vào
1 1 Read data Đọc dữ liệu từ DDRAM/CGRAM 39s
I/D 0 : AC tự động giảm 1 : AC tự động tăng
SH 0 : Cấm dịch chuyển vùng hiển thị 1 : Cho phép dịch chuyển vùng hiển thị
D 0 : Tắt màn hình hiển thị 1 : Bật màn hình hiển thị
C 0 : Tắt con trỏ 1 : Bật con trỏ
B 0 : Tắt nhấp nháy ký tự 1 : Bật nhấp nháy ký tự
S/C 0 : Dịch chuyển con trỏ 1 : Dịch chuyển vùng hiển thị
R/L 0 : Dịch sang trái 1 : Dịch sang phải
DL 0 : Giao tiếp 4 bit dữ liệu 1 : Giao tiếp 8 bit dữ liệu
N 0 : Hiển thị trên một hàng 1 : Hiển thị trên 2 hàng
F 0 : sử dụng font 5x8 dots 1 : Sử dụng font 5x11 dots
BF 0 : LCD contrroller sẵn sàng thao tác mới 1 : LCD contrroller đang thực hiện thao tác trong
Các chế độ khởi tạo LCD controller Để module LCD làm việc theo đúng yêu cầu, cần phải thực hiện khởi tạo cho LCD controller trớc khi thực hiện các thao tác hiển thị dữ liệu Hầu hết các module LCD đều có hai chế độ giao tiếp với MPU Chế độ giao tiếp 4 bit bus và chế độ giao tiếp 8 bit bus Sự lựa chọn giữa hai chế độ làm việc này đợc
Cơ chế khởi tạo chế độ giao tiếp 8 bit bus
Cơ chế khởi tạo chế độ giao tiếp 4 bit bus
IC Max232
Ghép nối qua cổng nối tiếp RS232 là một trong những kỹ thuật đợc sử dụng rộng rãi nhất để ghép nối các thiết bị ngoại vi và PC còn đợc gọi là cổng COM1, COM2 Qua cổng nối tiếp có thể ghép nối chuột, modem, bàn phím và đợc ứng dụng rất nhiều trong các kỹ thuật đo lờng và điều khiển Số lợng và chủng loại đợc ghép nối qua cổng nối tiếp đứng hàng đầu trong số các khả năng phối ghép với máy tính u điểm chính của phơng pháp ghép nối này là sử dụng hai đờng dây độc lập để truyền và nhận tín hiệu, do đó giảm thiểu đợc chi phí khi lắp đặt và hạn chế tối đa nhiễu do các tín hiệu khác gây ra đồng thời tín hiệu có khả năng truyền xa hơn rất nhiều so với phơng pháp truyền song song Tuy nhiên, phơng pháp này cũng có nhợc điểm là tốc độ truyền dữ liệu thấp do dữ diệu đợc truyền theo từng bit Phiên bản giao diện nối tiếp RS232 đang đợc sử dụng rộng rãi nhất hiện nay là RS232C, thờng đợc gọi là chuÈn RS232 hay chuÈn V24.
Các kỹ thuật đặc trng của giao diện nối tiếp RS232
Giao diện nối tiếp RS232 sử dụng 9 chân tín hiệu, tuy nhiên trên thực tế có hai cổng giao diện nối tiếp thờng đợc dùng là cổng 9 chân và cổng 25 chân, trong đó cổng 9 chân là cổng đang đợc sử dụng phổ biến nhất hiện nay
Hình 2.33 : Sơ đồ chân của cổng giao diện nối tiếp RS232
Chức năng và vị trí của từng chân áp dụng cho cả hai loại cổng 9 chân và 25 chân đ- ợc trình bầy chi tiết trong bảng 2.37.
Bảng 2.37 : Vị trí và chức năng tơng ứng của các chân
Cổng chân 25 Tên chân Chức năng I/O
1 8 Data Carier Detect (DCD) Phát hiện có cáp dẫn Input
2 3 Receive Data (RxD) Nhận dữ liệu Input
3 2 Transmit Data (TxD) Phát dữ liệu Outpu t
(DTR) Tín hiệu sẵn sàng Outpu t
6 6 Data Set Ready (DSR) Sẵn sàng nhận dữ liệu Input
7 4 Request To Send (RTS) Yêu cầu phát dữ liệu Outpu t
8 5 Clear To Send (CTS) Yêu cầu nhận dữ liệu Input
9 22 Ring Indicator (RI) Báo máy chủ đợc goi Input
Tốc độ truyền dữ liệu
Do phơng thức trao đổi dữ liệu theo giao diện nối tiếp RS232 đợc thực hiện theo từng bit Dữ liệu đợc chuyển từ dạng song song sang dạng nối tiếp ở đầu phát để thực hiện truyền nối tiếp từng bit, sau đó dữ liệu đợc chuyển ngợc lại từ dạng nối tiếp sang dạng song song ở phía đầu thu Công việc này đợc thực hiện thông qua vi mạch nhận phát không đồng bộ vạn năng UART, đợc tích hợp trong các C sử dụng giao diện nối tiếp RS232 Chính vì điều này làm cho phơng pháp trao đổi dữ liệu theo chuẩn RS232 có tốc độ truyền dữ liệu xác định, điều này có nghĩa là thiết bị nhận và thiết bị phát đều phải làm việc trên cùng một tần số (cùng tốc độ Baud) Các giá trị tốc độ truyền dữ liệu có thể đợc sử dụng trong thực tế là : 300, 600, 1.200, 2.400, 4.800, 9.600, 19.200 và 115.200 baud.
Hình 2.34 : Dạng thức truyền 1 byte dữ liệu theo chuẩn RS232
Định dạng khuôn dữ liệu
Trong phơng pháp truyền không đồng bộ, dữ liệu đợc đồng bộ theo từng ký tự Do đó, ký tự cần truyền phải đợc gắn thêm 1 bit Start để báo bắt đầu ký tự và 1 hoặc 2 bit Stop để báo kết thúc ký tự Vì mỗi ký tự đợc nhận dạng một cách riêng biệt nên giữa các ký tự truyền đi có thể có khoảng cách về thời gian
DCD luôn ở trạng thái không tích cực vì thiết bị ngoại vi chỉ nhận dữ liệu Tín hiệu DSR luôn ở trạng thái tích cực.
Truyền hai chiều riêng biệt (Half-duplex) : Dữ liệu đợc truyền theo cả hai chiều giữa PC và thiết bị ngoại vi Trong trờng hợp này chỉ có đờng TxD hoặc RxD làm việc tại một thời điểm Tín hiệu bắt tay RTS và CTS đợc sử dụng Néu PC muốn truyền dữ liệu nó đa tín hiệu RTS lên trạng thái tích cự và đợi thiết bị ngoại vi trả lời qua tín hiệu CTS Nếu thiết bị ngoại vi muốn truyền dữ liệu nó đa tín hiệu DCD về PC, tín hiệu DSR không đợc sử dụng PC báo sẵn sàng nhận dữ liệu qua DTR và cho phép hay cấm thiết bị ngoại vi (PC luôn đảm nhiệm vai trò chủ trong quá trình trao đổi dữ liệu) Hớng truyền dữ liệu đợc thay đổi bằng cách chuyển hai tín hiệu RTS và CTS.
Truyền hai chiều đồng thời (Full-duplex) : Dữ liệu đợc truyền theo cả hai chiều cùng một lúc Trong trờng hợp này, PC và thiết bị ngoại vi có thể đồng thời đảm nhiệm chức năng máy phát và máy thu tại cùng một thời điểm. Tín hiệu RTS và CTS không có ý nghĩa, DTR đảm nhiệm việc chuyển mạch.
Hiện nay, trên các PC đều đợc trang bị hai cổng giao diện tuần tự RS232 hay còn gọi là COM1 và COM2 Khi PC muốn trao đổi thông tin với các thiết bị ngoại vi thông qua giao diện tuần tự RS232, vấn đề đặt ra là các thiết bị ngoại vi cần phải có một bộ UART đảm nhiệm việc truyền dữ liệu qua giao diện tuần tự Tuy nhiên, giao diện RS232 cần điện thế tín hiệu cao hơn mức TTL (0 V và 5 V ) để truyền tín hiệu đợc xa Tham số điện áp tín hiệu của giao diện RS232 đợc quy định nh sau :
Mức logic 0 : + 3 đến + 25 V (gọi là Space)
Mức logic 1 : - 3 đến - 25 V (gọi là Mark)
Mọi điện áp tín hiệu giữa mức - 3 V và + 3 V đềukhông có ý nghĩa Vì các mức điện áp bên trong các thiết bị ngoại vi chỉ có điện thế từ 0 đến 5 V (TTL) hay thấp hơn, nên tín hiệu từ bộ UART của thiết bị ngoại vi ra giao diện RS232 và ngợc lại phải qua bộ chuyển mức tín hiệu IC Max232 là một bộ chuyển mức tín hiệu đợc sử dụng nhiều nhất hiện nay, vi mạch này chỉ cần nguồn nuôi 5 V Bộ bơm điện tích bên trong vi mạch có khả năng tạo điện áp tín hiệu mức + 10 V và - 10 V từ5 V
Hình 2 35 : Sơ đồ chân và sơ đồ nguyên lý của IC Max232
Các thông số của vi mạch
Điện áp nguồn nuôi : VCC = 5 V
Dải nhiệt độ làm việc : 0 0 C - 70 0 C
Từ sơ đồ chân và sơ đồ nguyên lý của IC Max232 có thể thấy vi mạch này cung cấp hai bộ chuyển mức điện áp cho mỗi chiều, đó là các cặp chân tín hiệu (T1IN,T1OUT), (T2IN,T2OUT), (R1IN,R1OUT) và (R2IN,R2OUT) Ngoài ra, để IC Max232 có thể hoạt động đợc nó cần 4 tụ điện ngoài sử dụng trong bộ bơm điện tích, các tụ này có điện dung 10uF hoặc thấp hơn và đợc nối mạch theo sơ đồ nguyên lý
Khi ghép nối IC Max232 với vi mạch thu phát không đồng bộ vạn năng UART và cổng giao diện nối tiếp RS232, chân tín hiệu TxD của UART có thể đợc nối trực tiếp tới chân 11 (T1IN) hoặc chân 10 (T2IN) của IC Max232 Trong khi đó bộ đệm ở lối ra của IC Max232 trên chân 14 (T1OUT) hoặc chân 7(T2OUT) đợc nối trực tiếp với chân 3 (RxD) của cổng giao diện nối tiếp RS232.Tơng tự, chân tín hiệu RxD của UART có thể đợc nối trực tiếp tới chân 12(R1OUT) hoặc chân 9 (R2OUT) của IC Max232, đồng thời chân 13 (R1IN) hoặc chân 8 (R2IN) của IC Max 232 đợc nối trực tiếp tới chân 2 (TxD) của cổng giao diện nối tiếp RS232.
Cảm biến nhiệt LM335
Để có thể chuyển đổi nhiệt độ môi trờng sang dạng điện áp làm đầu vào cho bộ chuyển đổi A/D, ta cần phải sử dụng một IC cảm biến nhiệt (Temperature sensor) Trên thị trờng hiện nay có rất nhiều loại cảm biến nhiệt với giải đo rộng và độ chính xác rất cao Tuy nhiên, trong đồ án sử dụng cảm biến nhiệt LM335 do IC này có giá thành tơng đối rẻ và rất dễ sử dụng với giải nhiệt độ đo đợc từ 0 0 C đến 100 0 C và tỷ lệ chuyển đổi 10mV/ 0 C Khi nhiệt độ ở 0 0 C thì điện áp tơng ứng đầu ra của IC LM335 là 2.73 V , điều này đợc xác định từ hàm thể hiện mối quan hệ giữa nhiệt độ và điện áp ra của IC
Hình 2.36 : Sơ đồ chân và sơ đồ nguyên lý của IC LM335
Trong thực tế, tất cả các đại lợng của thế giới tơng tự (thế giới thực) đợc chuyển đổi qua các bộ phận cảm biến đều là những đại lợng liên tục về mặt thời gian và giá trị, chúng đợc gọi là nhng giá trị tơng tự (Analog) Trongkhi đó, C hay PC đều hoạt động với tín hiệu số, mặc dù tập các giá trị đợc biểu diễn trong PC là rất lớn nhng vẫn có những giới hạn không thể vợt qua Nh vậy, để thuận tiện và đơn giản hoá việc biểu diễn và xử lý các tín hiệu thu đ ợc từ các bộ cảm biến bằng các C hay PC ta cần phải thực hiện rời rạc hoá các tín hiệu Analog về mặt thời gian (quá trình lấy mẫu) và rời rạc hoá về mặt giá trị (biến đổi AD). Để phối ghép giữa nguồn tín hiệu tơng tự với các hệ thống vi xử lý số ng- ời ta sử dụng các mạch chuyển đổi tơng tự-số còn gọi là các mạch ADC (Analog Digital Converter) để thực hiện việc biến đổi tín hiệu từ dạng tơng tự sang dạng số (rời rạc hoá).
Hình 2.37 : Đặc tuyến truyền đạt của mạch ADC
Qua đặc tuyến truyền đạt của mạch ADC ta thấy, tín hiệu tơng tự UAna đ- ợc chuyển thành tín hiệu bậc thang đều Phạm vi giá trị của UAna đợc biểu diễn bởi các giá trị rời rạc đại diện số thích hợp Thông thờng sau khi qua bộ biến đổi A/D tín hiệu thờng đợc biểu diễn theo cơ số 2.
Gọi tín hiệu tơng tự là SA(UA) và tín hiệu số là SD(UD), khi đó SD đợc biểu diễn dới dạng nhị phân nh sau :
SD = bn-1.2 n-1 + bn-2.2 n-2 + + b02 0 Trong đó, các hệ số bk = 0 hoặc 1 (với k = 0 n-1) tuỳ thuộc vào giá trị của kết quả của bộ chuyển đổi A/D Với bộ ADC có N bit tức là có N số hạng trong dẫy nhị phân thì mỗi bậc thang chiếm một giá trị tơng ứng là:
Do tín hiệu đợc rời rạc hoá nên sau quá trình chuyển đổi AD xuất hiện một sai số, sai số này đợc gọi là sai số lợng tử hoá và nó đợc xác định nh sau:
2.2.2 Một số phơng pháp chuyển đổi AD.
Hiện nay có rất nhiều phơng pháp chuyển đổi AD khác nhau, mỗi phơng pháp đều có những u nhợc điểm riêng Tuy nhiên, ở đây chỉ giới thiệu 3 phơng pháp có nguyên tắc thực hiện khác nhau đang đợc sử dụng khá phổ biến hiện nay là :
Phơng pháp chuyển đổi song song
Phơng pháp chuyển đổi xấp xỉ liên tiếp
Với UAna là giá trị max của điện áp đầu vào ADC
ULSB hoặc Q gọi là mức lợng tử
2.2.2.1 Phơng pháp chuyển đổi song song.
Theo phơng pháp này tín hiệu analog UA đợc dồng thời đa đến các bộ so sánh S1 Sn Điện áp chuẩn UR đợc đa đến đầu voà thứ hai của các bộ so sánh qua thanh điện trở R Điều này làm cho mức điện áp chuẩn tại đầu vào của các bộ so sánh cạnh nhau sẽ khác nhau một đại lợng không đổi và giảm dần từ S1 đến Sn Khi đó, đầu ra của bộ so sánh nào có mức điện áp vào lớn hơn điện áp chuẩn UR lấy trên thang điện trở sẽ có mức logic 1 còn các đầu ra còn lại sẽ có mức logic 0 Tất cả các đầu ra của bộ so sánh đợc nối với mạch AND, đầu vào còn lại của tất cả các mạch AND này đợc nối với bộ tạo xung nhịp Nh vậy, sau một chu kỳ xung sẽ có một tín hiệu đợc chuyển đổi đa đến đầu ra.
Hình 2.38 : Sơ đồ nguyên lý của bộ ADC chuyển đổi song song
Phơng pháp chuyển đổi song song có tốc độ chuyển đổi rất nhanh, vì vậy phơng pháp này còn đợc gọi là phơng pháp mã hoá Flash Thời gian trễ từ đầu vào tới đầu ra bằng tổng thời gian trễ của bộ mã hoá và bộ so sánh Tuy nhiên, tổng số bộ so sánh cần dùng cần dùng là 2 n -1 bộ Số lợng bộ so sánh sẽ tăng lên khi số mức chuyển đổi tăng Vì vậy kết cấu của bộ ADC này khá phức tạp và có giá thành cao Vì vậy, phơng pháp này chỉ đợc sử dụng trong các ứng dụng có yêu cầu mức chuyển đổi nhỏ với tốc độ nhanh
2.2.2.2 Phơng pháp xấp xỉ liên tiếp
Phơng pháp này hoạt động theo nguyên lý, mã đầu ra khác nhau đợc đi qua một bộ chuyển đổi A/Dvà so sánh với đầu vào Analog qua bộ so sánh Tất cả các bit ban đầu đợc đặt là 0, sau đó nó sẽ đặt bit có trọng số cao nhất là 1, còn lại là 0 và tiếp tục với các bit tiếp theo cho đến khi hết một chu kỳ chuyển đổi.
Hình 2.39 : Sơ đồ nguyên lý ADC xẫp xỉ liên tiếp
Với phơng pháp này, điện áp vào đợc tích phân trong một khoảng thời gian không đổi Ti, sau khoảng thời gian tích phân đó bộ đếm đợc reset lại và đầu ra của bộ tích phân giảm một cách tuyến tính cho đến khi bằng 0 và bộ đếm dừng lại, quá trình tích phân đợc reset.
Lợng điện tích nạp cho tụ trong quá trình tích phân phải bằng lợng điện đợc giải phóng trong quá trình giải tích phân.
Hoạt động của mạch đợc chia thành 3 pha nh sau:
Phase 1 (Zeroing phase) : K1 đóng sang 3, K2 và K3 đóng Lợng trôi một chiều của bộ tích phân đợc ghi nhận trong tụ Cz và sẽ đợc bù trừ ở nh÷ng phase tiÕp theo.
Phase 2 (Intergration) : K2 và K3 mở, K1 đóng vào 1 tín hiệu đầu vào Ux(t) đợc tích phân bởi mạch tích phân theo công thức.
Phase 3 (De-intergration) : K2, K3 đóng, K1 đóng sang 2
Do đó, đặt Uref = K ta có Ux * = K(t2- t1) Với Ux * làgiá trị trung bình của tích phân Ux trong khoảng t1 đến t2
Hình 2.40 : Sơ đồ nguyên lý ADC tích phân hai sờn dốc Đặc điểm chính của bộ ADC theo phơng pháp tích phân hai sờn dốc là rẻ tiền, có khả năng phân ly cao và cho kết quả chính xác Tuy nhiên nó có nhợc điểm là chậm do đó nó thờng đợc sử dụng để xử lý các tín hiệu có mức biến đổi chậm Trong thực tế, các bộ ADC theo phơng pháp này nh ICL7109, ICL7135
Một số lý thuyết về chuyển đổi A/D
Thiết kế hệ thống phần cứng 3.1 Sơ đồ cấu trúc phần cứng của hệ thống
Sơ đồ ghép nối C với module LCD
Với nguyên lý hoạt động và sơ đồ chân của module LCD và C AT90S8535 đã đợc trình bầy trong chơng 2, ta có thể thực hiện ghép nối C AT90S8535 với module LCD theo sơ đồ sau :
Hình 3.2 : Sơ đồ ghép nối C với module LCD
PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
Vss Vdd V0 RS R/W E BD7 BD6 BD5 BD4 BD3 BD2 BD1 BD0 A K
Sơ đồ trên đợc ghép nối để LCD controller làm việc ở chế độ 4 bit bus.Các chân điều khiển RS, R/W và E của LCD controller đợc nối với các chânPD6, PD5 và PD4 của C, chân PD7 của C đợc cấu hình là cổng vào để kiểm tra cờ BF (cờ busy) của LCD controller Chân V0 của LCD controller đợc nối qua biến trở R1 để điều chỉnh độ tơng phản của giao diện LCD 4 bit dữ liệu của LCD controller (BD7 BD4) đợc nối với các chân PC0 PC3 của CAT90S8535.
Sơ đồ ghép nối C với module KeyPad
Module KeyPad đợc ghép nối với C là loại 16 phím, đợc thiết kế theo kiểu ma trận hàng và cột Nh vậy với 16 phím ta chỉ cần 8 đờng điều khiển (4 đờng điều khiển hàng và 4 đờng điều khiển cột) là có thể xác định đợc bất kỳ phím nào đợc ấn mà không cần sử dụng tới 16 đờng điều khiển riêng cho từng phím Để đơn giản hoá việc lập trình điều khiển module KeyPad tất cả 8 đờng điều khiển này đều đợc kết nối tới cùng một cổng I/O của C Sơ đồ ghép nối module KeyPad đợc trình bầy trong hình 3.3.
Hình 3.3 : Sơ đồ ghép nối C với module KeyPad
Nh đã trình bầy, ở trên toàn bộ 8 đờng điều khiển của ma trận bàn phím đợc ghép nối với 8 bit (PB0 PB7) của cổng B của C Trong đó, 4 đờng điều khiển hàng của ma trận bàn phím đợc nối với 4 bit cao của cổng B (PB4 PB7), 4 đờng điều khiển cột của ma trận bàn phím đợc nối với 4 bit thấp của cổng B (PB0 PB3) Để có thể xác định đợc thời điểm một phím bất kỳ đợc ấn, 4 cột của ma trận bàn phím đợc nối với chân INT0 (chân 2 của cổng D) để phát sinh một yêu cầu ngắt bàn phím Các diode D1 D4 đợc sử dụng để đảm bảo chắc chắn rằng ngắt sẽ đợc phát sinh khi một phím bất kỳ đợc ấn Các điện trở R1 R12 đợc chọn 470 là những điện hạn dòng nhằm bảo vệ C trong trờng hợp hai hay nhiều phím cùng đợc ấn Để có thể xác định đợc một phím trên bàn phím đợc ấn, đầu tiên thiết lập
4 bit thấp của cổng B ở mức cao để xác định toạ độ hàng của phím, sau đó đảo mức điện áp của cổng B để xác định toạ độ cột của phím đợc ấn Nh vậy, một phím bất kỳ trên bàn phím sẽ đợc xác định bởi ngắt INT0 của C Giải thuật của ngắt INT0 sẽ đợc trình bầy cụ thể trong chơng sau.
Sơ đồ ghép nối C với cảm biến nhiệt LM335
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7
LM 335 Để có thể đo đợc nhiệt độ, C AT90S8535 phải đợc ghép nối với cảm biến nhiệt LM335 Cảm biến này có nhiệm vụ biến đổi nhiệt độ môi trờng sang dạng điện áp để làm đầu vào cho bộ ADC của C thực hiện thao tác chuyển đổi A/D
Hình 3.4 : Sơ đồ nối ghép C với LM335
Vì khoảng biến thiên điện áp đầu ra của cảm biến nhiệt LM335 tơng ứng với dải nhiệt độ đầu vào từ 0 0 C đến 100 0 C là 1 V (từ 2.73 V đến 3.73 V ) Trong khi đó, bộ ADC của C AT90S8535 yêu cầu mức điện so sánh trên chân AREF trong khoảng từ 2 V đến 5 V Do đó, để kết quả đầu ra số của bộ ADC điền đầy thang đo (10 bit) với điện áp so sánh trên chân AREF là 2 V , thì điện áp đầu ra của cảm biến LM335 phải đợc nối qua một khối khuyếch đại để mở rộng khoảng biến thiên điện áp cho đầu vào tơng tự của bộ ADC từ 0 V đến 2 V Mức điện áp -2.73 V đợc đặt tại đầu ra của cảm biến LM335 nhằm xác định lại khoảng biến thiên điện áp đầu ra của cảm biến trong khoảng 0 V đến 1 V , tơng ứng với dải nhiệt độ từ 0 0 C đến 100 0 C để đa qua bộ khuếch đại Để thoả mãn các điều kiện kỹ thuật của các thiết bị và đặc tính của OpAmp, ta có thể lựa chọn giá trị các điện trở và biến trở tơng ứng là :
Biến trở điều chỉnh R* = 10K và R5 = 5K
Sơ đồ ghép nối C với IC Max232
Để hệ thống có thể giao tiếp đợc với PC qua giao diện nối tiếp RS232, thì phải có sự chuyển đổi mức điện áp tín hiệu từ mức TTL sang mức điện áp tín hiệu RS232 nh đã trình bầy trong chơng trớc Trong C AT90S8535 đợc tích hợp một bộ UART, mạch thu phát không đồng bộ vạn năng này có thể giao
Vi mạch Max232 cung cấp hai bộ chuyển mức tín hiệu cho mỗi chiều. Trong ứng dụng ta chỉ cần dùng một bộ chuyển mức từ tín hiệu điện áp TTL sang tín hiệu điện áp RS232 Các chân TxD (PD1) và RxD (PD0) của bộ UART trong C đợc ghép nối theo thứ tự tới các chân T1IN (chân 11) và R1OUT (chân 12) của IC Max232 Tơng tự, các chân T1OUT (chân 14) và R1IN (13) của IC Max232 đợc nối trực tiếp với các chân tín hiệu RxD (chân
2) và TxD (chân 3) của cổng nối tiếp RS232
3.5 Sơ đồ kết nối nguồn nuôi cho vi mạch điều khiển.
Do mức điện áp cần cung cấp cho mạch là điện áp một chiều ổn định có mức điện áp nhỏ hơn hoặc bằng 5 V Do vậy, ta cần phải thiết kế một nguồn cung cấp các mức điện áp cần thiết cho mạch từ điện áp xoay chiều 220 V
Hình 3.5 : Sơ đồ mạch nguồn cung cấp
Trong sơ đồ thiết kế nguồn cung cấp cho mạch, diode cầu có tác dụng nắn dòng điện xoay chiều 220 V thành dòng điện một chiều 9 V Các tụ C1 và C2 có tác dụng san phẳng dòng điện một chiều trớc khi đa qua các IC ổn áp. Nguồn 5 V đợc ổn định bởi IC LM7805 và LM7905, điện áp chuẩn +2 V của bộ ADC và điện áp -2.73 V sử dụng để tạo điện áp đầu vào bộ ADC đợc lấy từ
2 mạch phân áp nh trong sơ đồ với các giá trị điện trở R1 = R3 = 2K và biến trở R2 = R4 = 10K
Hình 3.6 : Sơ đồ kết nối nguồn với C AT90S8535
Sơ đồ kết nối nguồn cho vi mạch điều khiển
Xử lý kết quả ADC
thiết kế hệ thống phần mềm cho C AT90S8535 4.1 Biểu đồ chức năng của chơng trình điều khiển C
Lu đồ thuật toán của các chức năng chính
4.2.1 Chức năng giao tiếp với LCD controller. Để C có thể giao tiếp đợc với LCD controller, ta cần thực hiện khởi tạo LCD controller ngay sau khi nguồn đợc bật Do mục đích của đồ án, ta sử dụng cơ chế khởi tạo LCD controller ở chế độ giao tiếp 4 bit bus 3 chơng trình con đợc sử dụng để giao tiếp với LCD controller là LCD_BUSY, LCD_INSTR và
LCD_DATA Lệnh đợc đặt trong thanh ghi Instr và dữ liệu trong thanh ghi Data.
Hình 4.3 : Lu đồ chơng trình kiểm tra LCD busy
Hình 4.4 : Lu đồ chơng trình ghi lệnh và dữ liệu tới LCD controller
L u lại trạng thái MCU Lấy kết quả chuyển đổi A/D
L u lại các thanh ghi cần sử dụng
Gửi ký hiệu truyền dữ liệu ( # ) sang PC
Lấy phần nguyên của kết quả ADC đặt vào ResultADCH
Thực hiện ch ơng trình MULL_RESULT_CONVER với số nhân = 100 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255
Gửi phần nguyên của kết quả ADC sang PC
Lấy phần thập phân của kết quả ADC đặt vào ResultADCL
Thực hiện ch ơng trình MULL_RESULT_CONVER với số nhân = 10 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255
Gửi phần thập phân của kết quả ADC sang PC
Dựng cờ báo cần hiển thị kết quả ADC ra giao diện LCD
Lấy lại giá trị các thanh ghi sử dụng Lấy lại trạng thái MCU
4.2.2 Chức năng điều khiển và hiển thị kết quả ADC.
Khi bộ ADC thực hiện xong một chu kỳ chuyển đổi, kết quả chuyển đổi sẽ đợc lu vào thanh ghi ADCL và ADCH, tiếp sau đó cờ ngắt kết thúc chuyển đổi A/D đợc dựng và chơng trình con phục vụ ngắt tơng ứng là
Hình 4.6 : Lu đồ chơng trình con phục vụ ngắt END_CONVERT
Trong ngắt END_CONVERT có sử dụng hai module
MULL_RESULT_CONVER và DIVIDE_TO_GET_TEMPR đợc sử dụng để chuyển kết quả ADC sang số thập phân Trớc khi thực hiện các module này cần phải xác định số nhân hoặc số chia trong thanh ghi Data Chơng trình
MULL_RESULT_CONVER sẽ thực hiện nhân nội dung hai thanh ghi
ResultADCL và Data, kết quả đặt trong thanh ghi ResultADCH và
Khởi tạo các thanh ghi tạm R11 0, R12 0
ResultADCL ResultADCL - Data ResultADCH ResultADCH - R11 - C
Lấy phần nguyên của kết quả
Lấy toạ độ đầu Instr $CB
Show_CK = 1? Y Đổi giá trị nhiệt độ sang 0K
Lấy số hàng trăm để hiển thị
Gọi ch ơng trình DIVIDE_TO_GET_TEMPR với Data = $64
Hình 4.8 : Lu đồ chơng trình DIVIDE_TO_GET_TEMPR
Ngoài hai module trên, để hiển thị kết quả chuyển đổi A/D tới giao diện LCD, cần sử dụng chơng trình con DISPLAY_TEMPR_TO_LCD chơng trình này đợc gọi từ chơng trình điều khiển khi cờ báo có kết quả ADC cần đ- ợc hiển thị Dữ liệu đầu vào của chơng trình này là nội dung hai thanh ghi chứa kết quả A/D dới dạng số hệ 10 sau khi thực hiện ngắt END_CONVERT, trong đó phần nguyên chứa trong thanh ghi ResultADCH và phần thập chứa trong thanh ghi ResultADCL
Hình 4.9 : Lu đồ chơng trình con DISPLAY_TEMPR_TO_LCD
Không hiển thị số hàng trăm
Lấy số hàng chục để hiển thị
ResultADCH 0 Gọi ch ơng trình DIVIDE_TO_GET_TEMPR với Data = $0A
ResultADCH = 0? N Lấy mã ASCII của số cần hiển thị
Hiện số hàng đơn vị
Hiện dấu chấm thập phân
Lấy lại nội dung ResultADCL Data ResultADCL Data Data + $30
L u lại trạng thái MCU Keypress 0
Câm ngắt bàn phím Đợi 0.2ms cho cổng ổn định
KeyPress 12 Đảo 4 bit của cổng B Đ a 0 ra các cột vào đ a 1 ra các hàng Đợi 0.2ms cho các cột ổn định
4.2.3 Chức năng giao tiếp với KeyPad.
Chức năng giao tiếp với bàn phím đợc bắt đầu bằng việc giải mã ma trận bàn phím để xác định phím nào trên bàn phím đợc ấn Để C nhận biết có phím ấn, một yêu ngắt ngoài đợc xác định bằng mức thấp trên chân INT0 (PD2) đợc phát sinh và ngắt bàn phím SCAN_CODE đợc thực hiện Trớc khi bắt thực hiện chơng trình con phục vụ ngắt, cần đặt 0 trên các hàng và đặt 1 trên các cột
Hình 4.10 : Lu đồ ngắt SCAN_CODE giải mã ma trận bàn phím
Y Dựng cờ báo phím điều khiển
Dựng cờ báo có phím ấn
Cấn ngắt KEY_RATE Lấy lại trạng thái MCU
Cấn ngắt KEY_RATE Lấy lại trạng thái MCU
Do mỗi một phím thờng trên bàn phím đợc mã hoá nhiều hơn một ký tự, vì vậy để xác định đợc chính xác ký tự nào đợc mã hoá của phím bị ấn đợc lựa chọn một thanh ghi OldKey đợc sử dụng Nội dung của thanh ghi này chứa giá trị của phím đợc ấn và đợc dùng để so sánh với giá trị của phím đợc ấn trong thanh ghi KeyPress ở lần tiếp theo Nếu hai thanh ghi này có giá trị bằng nhau thì tổng số lần ấn phím tăng lên 1 và ký tự tiếp theo đợc mã hoá bởi phím sẽ đợc chọn, ngợc lại phím đợc coi là ấn lần đầu tiên Nội dung thanh ghi OldKey sẽ đợc ghi nhớ trong một khoảng thời gian 200ms, nếu sau khoảng thời gian này mà phím không đợc ấn lại nội dung thanh ghi OldKey đợc xác lập lại trang thái không phím nào đợc ấn (OldKey = -1) Việc này đợc thực hiện bởi chơng trình phục vụ ngắt KEY_RATE của ngắt tràn TC1.
Hình 4.11 : Lu đồ ngắt KEY_RATE
Tuỳ thuộc vào phím đợc ấn là phím điều khiển hay phím thờng mà chơng
Hiện thông báo tràn bộ đệm TxBuff
Hiện 15 ký tự cuối trong bộ đệm Gọi ch ơng trình SHOW_CHAR_IN_TxBuff
Xác định vị trí hiển thị tiếp theo Hiện ký tự t ơng ứng phím ấn
L u ký tự vào bộ đệm TxBuff
Giảm con trỏ cuối bộ đệm TxBuff
Tăng tổng số lần ấn phím Xác định vị trí hiển thị và con trỏ LPtrTx
OldKey KeyPress Tổng số lần ấn phím = 0
Tổng số lần ấn phím = 0 CtrlReg CtrlReg$0F
Lấy tổng số lần ấn phím
Temp CtrlReg swap Temp Temp Temp$0F
Chơng trình con FIND_ASCII_CODE có chức năng tìm mã ascii tơng ứng với ký tự đợc lựa chọn và lu kết quả vào thanh ghi Data với số lần phím đợc ấn lu trong 4 bit cao của thanh ghi điều khiển CtrlReg.
Hình 4.13 : Lu đồ chơng trình FIND_ASCII_CODE
Lấy mã ASCII của ký tự t ơng ứng ch ơng trình GET_ASCII_CODE Kết thúc
Position Position + Temp Data Postion
Gọi ch ơng trình BACK_SPACE
Y Xoá cờ báo phím điều khiển
Gọi ch ơng trình SHIFT_LEFT N
Y Gọi ch ơng trình SEND_TxBUFF_TO_PC
Gọi ch ơng trình SELECT_TxRx Y
Gọi ch ơng trình SHIFT_RIGHT N
Y Gọi ch ơng trình CLEAR_Tx_OR_Rx
Chơng trình con GET_ASCII_CODE có chức năng lấy mã ascii và lu vào trong thanh ghi Data Đầu vào của chơng trình là thanh ghi Data chứa mã ascii của chữ số và thanh ghi Position chứa mã ascii của ký tự đứng ngay trớc ký tự đầu tiên đợc mã hoá bởi phím Ví dụ, phím số 1 mã hoá các ký tự 1, D,E và F, khi đó nếu phím số 1 đợc ấn thì Data chứa giá trị $30 (mã ascii của số 1) còn Position chứa giá trị $43 (mã ascii của ký tự đứng trớc chữ D) Tổng số lần ấn phím đợc đặt trong thanh ghi Temp.
Hình 4.14 : Lu đồ chơng trình GET_ASCII_CODE
Trớc khi hiển thị ký tự của phím đợc ấn ra màn hình LCD, chơng trình
DISPLAY_KEY, gọi chơng trình con SHOW_CHAR_IN_TxBuff để hiện thị lại 15 ký tự cuối cùng đợc lu trong bộ đệm TxBuff, nếu tổng số ký tự đang có trong bộ đệm TxBuff lớn hơn 15 ký tự
Ngoài chơng trình DISPLAY_KEY đợc thực hiện khi một phím thờng đợc ấn Một chơng trình khác là chơng CONTROL_KEY sẽ đợc chơng trình điều khiển thực hiện mỗi khi một phím chức năng đợc ấn Trên bàn phím có tất cả 6 phím chức năng nh trình bầy ở các phần trớc Tuỳ thuộc vào việc giải mã bàn phím các chơng trình con tơng ứng với phím chức năng bị ấn sẽ đợc thực hiện.
Hình 4.15 : Lu đồ chơng trình CONTROL_KEY
L u thanh ghi cần sử dụng Đọc dữ liệu nhận đ ợc Data URD
Xác định địa chỉ cần l u ký tù võa nhËn trong RxBuff
Ghi ký tù võa nhËn vào bộ đệm RxBuff
Xác định con trỏ hiển thị của chuỗi ký tự
Lấy mã lệnh Implement Data Xoá cờ báo nhận mã lệnh
Dựng cờ báo nhận mã lệnh
Dựng cờ báo cần hiển thị dữ liệu nhận đ ợc
4.2.4 Chức năng truyền nhận dữ liệu nối tiếp với PC.
Khi PC thực hiện truyền dữ liệu cho C, thì mỗi khi C hoàn thành việc nhận một byte dữ liệu từ cổng nối tiếp, cờ ngắt kết thúc nhận của bộ UART trên C AT90S8535 đợc dựng Chơng trình con phục vụ ngắt tơng ứng là
Rx_COMPELET đợc thực hiện Chơng trình này có nhiệm vụ phân biệt dạng dữ liệu nhận đợc từ PC là mã lệnh hay chuỗi ký tự hiển thị để báo cho chơng trình điều khiển thực hiện những tác vụ tơng ứng
Hình 4.16 : Lu đồ ngắt Rx_COMPELET
Xác lập lại nội dung thanh ghi mã lệnh
Dựng cờ cho phép hiển ký hiệu dạng nhiệt độ hiển thị
N Hiện thông báo truyền dữ liệu
Lấy địa chỉ đầu của bộ đệm
Truyền dữ liệu sang PC
Không chỉ có khả năng nhận dữ liệu từ PC, mà C AT90S8535 cũng có thể gửi một chuỗi dữ liệu trong bộ đệm TxBuff sang PC tại bất kỳ thời điểm nào mỗi khi phím Send trên bàn phím đợc ấn.
Hình 4.18 : Lu đồ chơng trình SEND_TxBUFF_TO_PC
Truyền thông tin sang C qua cổng RS232
Nhận dữ liệu từ giao diện nối tiếp RS232
Xử lý dữ liệu nhận đ ợc
Hiện thông tin nhận đ ợc từ C Hiện dữ liệu nhận đ ợc từ C
Thiết kế hệ thống phần mềm trên PC 5.1 Mục đích của phần mềm trên PC
Một số chức năng chính của chơng trình
Sau khi kết nối đợc thực hiện, kết quả chuyển đổi A/D của C sẽ đợc gửi liên tục sang PC Khi nhận đợc dữ liệu, chơng trình sẽ thực hiện phân tích dữ liệu nhận đợc Nếu nhận đợc ký tự "#" thì hai byte dữ liệu tiếp theo sẽ đợc nhận dới dạng giá trị của kết quả chuyển đổi A/D Chơng trình sẽ thực hiện hiển thị giá trị nhiệt độ vừa nhận đợc lên đồ thị nhiệt độ tức thời Trong khoảng thời gian 1 phút, giá trị nhiệt độ trung bình sẽ đợc lu lại cơ sở dữ liệu để có thể xử lý lại đồng thời giá trị này cũng đợc hiển thị trên đồ thị nhiệt độ trung b×nh
Hình 5.3 : Giao diện nhận và hiển thị kết quả ADC
Bất kỳ byte dữ liệu nào nhận đợc mà trớc đó chơng trình không nhận đợc ký tự "#" đều đợc coi là ký tự hiển thị và sẽ đợc hiển thị trên cửa sổ truyền nhận thông tin giữa PC và C Đồng thời chơng trình cũng có thể gửi một chuỗi thông tin sang C để hiển thị trên giao diện LCD Thao tác này có thể đợc thực hiện đồng thời với thao tác truyền dữ liệu của C do vi mạch UART của C hoạt động ở chế độ chuyền song công Chơng trình cũng có thể gửi lệnh để C thực hiện thông qua việc lựa chọn thang nhiệt độ hiển thị là 0 C hay
0K trong hộp thoại điều khiển và truyền nhận thông tin của chơng trình
Hình 5.4 : Giao diện truyền nhận thông tin
Ngoài các chức năng trên chơng trình cũng cho phép xem lại dữ liệu đợc thu thập từ trớc thông qua chức năng File\View data from list của Menu chơng trình Chức năng này không chỉ cho phép xem lại dữ liệu mà nó có thể dựng lại đồ thị diễn biến của nhiệt độ đợc lu trong cơ sở dữ liệu theo thời gian giá trị nhiệt độ đợc cập nhật
Hình 5.5 : Giao diện xem lại dữ liệu đợc lu trữ
Nhận xét và đánh giá
Nhìn chung, phần mềm trên máy tính và chơng trình điều khiển C chạy thử nghiệp cho kết quả tốt Hai chơng trình này hoạt động một cách đồng bộ trong việc truyền nhận dữ liệu, do đó kết nối thành một hệ thống hoàn chỉnh. Phần mềm trên PC không chỉ biểu diễn đợc các giá trị nhiệt độ dạng đồ thị theo thời gian mà còn có thể lu trữ các thông tin cần thiết trong quá trình thu thập dữ liệu và các thông tin lu trữ này có thể đợc xem lại khi cần thiết Kết quả ADC đợc truyền sang máy tính để máy tính thực hiện các thao tác phức tạp nh dựng đồ thị và lu trữ, điều này giúp cho công việc lập trình trở nên đơn giản và đỡ tốn thời gian cũng nh chi phí so với việc thực hiện công việc này trên C.
Về cơ bản mạch phần cứng đã đợc lắp rắp hoàn chỉnh và chạy thử cho kết quả tốt đáp ứng đợc yêu cầu đề ra của đồ án Song do điều kiện về thời gian nên không kịp thiết kế mạch in theo kỹ thuật có nên cũng phần nào ảnh hởng đến chất lợng kỹ thuật cũng nh chất lợng về mặt cảm quan của sản phẩm Ngoài ra, do kinh nghiệm trong việc thiết kế phần cứng còn nhiều hạn chế nên việc ghép nối giữa C với các modul khác qua các cổng I/O của
C AT90S8535 cha thùc sù tèi u
Trong bản báo có đồ án tốt nghiệp này, em đã nêu ra một số lý thuyết sử dụng để thiết kế và quy trình công việc phải thực hiện trong thực tế Nói chung công việc đã hoàn thành theo đúng tiến độ đề ra, tuy nhiên do năng lực cũng nh kinh nghiệm về lĩnh vực công nghệ phần cứng còn nhiều yếu kém nên đồ án không thể tránh đợc những thiếu sót Tuy nhiên, trong thời gian thực hiện đồ án, em cũng đã rút ra đợc một số kinh nghiệm quý báu, điều này rất cần thiết cho em khi ra làm việc thực tế
Nói chung, hệ thống cần thiết kế đã hoàn thành và chạy thử nghiệp cho kết quả tốt Do mục đích của đồ án là tìm hiểu nguyên lý hoạt động và thực hiện điều khiển một bộ vi xử lý AT90S8535, đây là một C còn rất mới của hãng ATMEL nên sản phẩm đợc thiết kế hầu nh không đợc ứng dụng trong thực tế mà chỉ mang tính thử nghiệm Tuy nhiên, thông qua quá trình tìm hiệu và sử C AT90S8535 để thiết kế, có thể giúp em hiểu phần nào về công nghệ phần cứng ứng dụng trong các lĩnh vực khác nhau trong cuộc sống Sau khi hoàn thành đồ án, em sẽ tìm hiểu thêm các kiến thức về kỹ thuật phối ghép để có thể thực hiện thiết kế những mạch điện tử có khả năng ứng dụng cao trong thùc tÕ
Một lần nữa em xin chân thành cảm ơn thầy giáo hớng dẫn Bùi Quốc Anh đã tận tình hớng dẫn và giúp đỡ em rất nhiều trong suốt thời gian thực hiện đồ án này Em cũng xin chân thành sự giúp đỡ của các anh làm việc ở trung tâm NET.JSC đã giúp đỡ em hoàn thành bản đồ án này
Chơng trình điều khiển C AT90S8535
include "\AVR\AvrAssembler\Appnotes\8535def.inc"
equ INTRATE = 4 ;INT rate keypress
equ EnInstroduc = 2 ldi Instr,@1 ;Display on line @1 ldi Temp,@2 ;Total char of string @2 ldi ZL,LOW(@3