Tải bản đầy đủ (.docx) (27 trang)

HỆ THỐNG NHÚNG Đề Tài: Hiển Thị Nhiệt Độ Đọc Được Từ Cảm Biến Lên Led Ma Trận Và BậtTắt Thiết Bị Ổn Định Nhiệt Độ

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

TRƯỜNG ĐẠI HỌC KỸ THUẬT CƠNG NGHIỆP
KHOA : CƠ KHÍ
Bộ môn: CƠ ĐIỆN TỬ

BÁO CÁO TIỂU LUẬN
Môn học: HỆ THỐNG NHÚNG
Đề Tài: Hiển Thị Nhiệt Độ Đọc Được Từ Cảm Biến Lên Led
Ma Trận Và Bật/Tắt Thiết Bị Ổn Định Nhiệt Độ

Giáo viên hướng dẫn : Tăng Cẩm Nhung
Sinh viên thực hiện

: 1. Đặng Thành Thái
MSSV :K175520114047

2. Nguyễn Chí Thanh(NT)
MSSV :K175520114050

Lớp

: K53CDT01

Thái Nguyên – 2021

1


MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU YÊU CẦU – GIỚI HẠN CỦA ĐỀ TÀI

4



1.1

Giới thiệu

4

1.2

Giới hạn

5

CHƯƠNG 2: THIẾT KẾ

6

2.1

Giới thiệu (tóm tắt)

6

2.2

Sơ đồ khối

6

a. Khối nguồn


7

b. Nút bấm

7

c. Cảm biến nhiệt độ LM35

7

d. Khối đệm dữ liệu

8

e. Khối hiển thị

9

f. Bộ ổn định nhiệt độ

11

g. Vi điều khiển

12

h. Sơ đồ mạch nguyên lý

13


2.3

Lưu đồ và chương trình

14

a. Giới thiệu yêu cầu điều khiển.

14

b. Lưu đồ

14

c. Chương trình và giải thích các lệnh

15

CHƯƠNG III: KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN

26

1. Kết luận

26

2. Hướng phát triển

27


TÀI LIỆU THAM KHẢO

27

2


DANH MỤC HÌNH ẢNH
Hình 1: Cảm Biến LM35
Hình 2: Led ma trận 8*8
Hình 3: Sơ đồ khối đề tài
Hình 4: LM35 trong proteus
Hình 5: Sơ đồ chân của vi mạch 74HC245
Hình 6: Bảng hoạt động của IC 74HC245
Hình 7: Led matrix 8*8
Hình 8: Màn hình LCD 16*2
Hình 9: Quạt tản nhiệt
Hình 10: Đèn cấp nhiệt
Hình 11: PIC16F877A
Hình 12: Cấu tạo chung của PIC16F877A
Hình 13: Sơ đồ mạch hệ thống
Hình 14: Lưu đồ và trình tự điều khiển của hệ thống
Hình 15: Cách lấy mã hex của các kí tự

3

4
5
6

7
8
9
10
10
11
12
12
13
14
15
26


CHƯƠNG 1: GIỚI THIỆU YÊU CẦU – GIỚI HẠN CỦA ĐỀ TÀI
1.1 Giới thiệu
- Hiện nay, cảm biến được sử dụng vô cùng thông dụng trong đời sống hằng ngày
của chúng ta. Có rất nhiều loại cảm biến với chức năng đa dạng khác nhau nhưng
hôm nay chúng ta sẽ bàn về cảm biến nhiệt độ LM35.

Hình 1: Cảm Biến LM35
-

Cảm biến LM35 là một cái cảm biến nhiệt độ giá rẻ được sử dụng để đo nhiệt độ
(theo ° C). Nó với thể đo nhiệt độ chính xác hơn so với một điện trở nhiệt
(thermistor) cùng tầm giá. LM35 có độ chuẩn xác hơn kém 0,4 ° C ở nhiệt độ
phịng bình thường và hơn kém 0,8 ° C trong khoảng 0 ° C đến + 100 ° C. Một đặc
tính quan trọng hơn của cảm biến này là rằng nó chỉ thu được 60 microamps từ
nguồn cung ứng và có khả năng tự sưởi ấm thấp. LM35 là IC cảm biến nhiệt độ có
điện áp đầu ra thay đổi, dựa trên nhiệt độ xung quanh nó. Nó là một vi mạch có thể

được sử dụng để đo nhiệt độ ở bất kỳ đâu trong khoảng từ -55 ° C đến 150 ° C.

-

Led ma trận hay còn gọi là Led matrix được cấu thành từ những bóng Led, được
xếp thành các hàng và các cột (dạng Module) rồi ghép lại với nhau. Dạng bố trí
này giống như một ma trận nên người ta gọi là Led ma trận. Led ma trận rất đa
dạng từ màu sắc đến kích thước nhưng trong đề tài này này chúng ta sẽ sử dụng
Led ma trận kích thước 8*8.

4


Hình 2: Led ma trận 8*8
-

-

Thiết bị ổn định nhiệt độ của chúng ta sẽ là quạt tản nhiệt và đèn cấp nhiệt. Chúng
ta sẽ cài đặt 2 ngưỡng nhiệt độ cảnh báo là T1 và T2. Khi nhiệt độ cảm biến đo
được nhỏ hơn T1 thì đèn cấp nhiệt sẽ được bật, khi nhiệt độ nằm trong khoảng
giữa của T1 và T2 thì 2 thiết bị ổn định nhiệt độ đều tắt và khi nhiệt độ lớn hơn T2
thì quạt tản nhiệt sẽ được bật.
Đề tài này khi hoàn thành có thể áp dụng được vào rất nhiều việc khác nhau trong
cuộc sống hằng ngày, ví dụ như ổn định nhiệt độ cho: bể cá cảnh, khu nuôi thủy
hải sản, phịng thí nghiệm, trang trại ấp trứng gia cầm hoặc cũng có thể thiết kế vào
lồng sấy lơng cho chó mèo cảnh đang hot trend như hiện tại.

1.2 Giới hạn
Các tính năng của cảm biến nhiệt độ LM35

- Nguyên lý làm việc của cảm biến nhiệt độ LM35Được hiệu chuẩn trực tiếp bằng
độ C(độ C)
-

Hệ số tỷ lệ tuyến tính + 10 mV / ° C
0,5 ° C Độ chính xác được đảm bảo (ở 25 ° C)
Đánh giá cho phạm vi Full -55 ° C đến 150 ° C
Thích hợp cho các ứng dụng từ xa
Hoạt động từ 4 V đến 20 V
Dịng xả ít hơn 60-µA
Đầu ra trở kháng thấp, 0,1 Ω cho tải 1 mA
Có 3 nút bấm để tăng, giảm và xác nhận 2 ngưỡng nhiệt độ tùy chọn theo nhu cầu
dùng khác nhau để điều khiển quạt và đèn 1 cách chính xác.

5


CHƯƠNG 2: THIẾT KẾ
2.1 Giới thiệu (tóm tắt)
-

Chúng ta cấp nguồn từ 4 đến 20V cho cảm biến LM35,chân giữa của cảm biến là
chân output được nối với chân analog của pic 16F877A. Trong các tính năng của
LM35 nó được đưa ra là 10 minivolt mỗi độ C. Nó có nghĩa là khi tăng công suất
10 mills volt bởi chân cảm biến, giá trị nhiệt độ sẽ tăng lên một. Ví dụ: nếu cảm
biến đang xuất ra 100 mills volt ở chân Vout, nhiệt độ tính bằng độ C sẽ là 10 độ
C. Tương tự đối với việc đọc độ âm. Nếu cảm biến xuất ra -100 mills volt, nhiệt độ
sẽ là -10 độ C. Sau khi qua khối giải mã nhiệt độ sẽ hiển thị lên 2 Led ma trận đặt
cạnh nhau.


- Hệ thống sẽ có 3 nút bấm để tăng, giảm và xác nhận 2 ngưỡng nhiệt độ đó là T1 và
T2 từ đó so sánh để điều khiển bộ ổn định nhiệt độ là đèn và quạt.

2.2 Sơ đồ khối
-

Theo yêu cầu của đề tài thiết kế, nhóm em có sơ đồ khối dưới đây:

Hình 3: Sơ đồ khối đề tài

6


a.
-

Khối nguồn
Cảm biến nhiệt độ yêu cầu nguồn từ 4-20 VDC.
LCD 16*2 điện áp hoạt động từ 2.5-6 VDC.
Quạt tản nhiệt và đèn cấp nhiệt chung điện áp 12 VDC.
74HC245 điện áp hoạt động từ 2-6VDC.
Ta sẽ phải cấp 2 nguồn là 5VDC và 12VDC.

b. Nút bấm
-

Thiết kế yêu cầu xét 2 ngưỡng nhiệt độ T1 và T2 nên chúng ta sẽ có 3 nút bấm: nút
tăng, nút giảm và nút OK tương ứng để tăng giảm và xác nhận nhiệt độ muốn cài
đặt ở tửng ngưỡng.


c. Cảm biến nhiệt độ LM35

Hình 4: LM35 trong proteus
-

-

-

Cảm biến nhiệt độ LM35 có 2 chân ngồi để kết nối với nguồn từ 4-20V, chân giữa
để xuất tín hiệu đo được dạng analog. Chân tín hiệu này sẽ được kết nối với port A
của PIC 16F877A để đọc.
Ta có: U= t.k
+ u là điện áp đầu ra.
+ t là nhiệt độ môi trường đo k.
Là hệ số theo nhiệt độ của LM35 10mV/1 độ C
Giả sử điện áp Vcc cấp cho LM35 là 5V ADC 10bit

7


-

Vậy bước thay đổi của LM35 sẽ là 5/(2^10) = 5/1024
Giá trị ADC đo được thì điện áp đầu vào của LM35 là (t*k)/(5/1024) = ((10^2)*1024*t)/5 = 2.048*t
Vậy nhiệt độ ta đo được t = giá trị ADC/2.048

d. Khối đệm dữ liệu
- Do thiết kế đề tài có 3 Led matrix nên chúng ta sử dụng IC đệm dữ liệu là vi mạch
-


74HC245
Vi mạch 74HC245 có chức năng tái tạo lại tín hiệu điều khiển từ vi điều khiển khi
những tín hiệu này bị suy giảm do chiều dài các bus kết nối quá xa làm tín hiệu
điều khiển bị sụt áp và có khả năng chống nhiễu.
IC có sơ đồ chân như hình ở dưới:

Hình 5: Sơ đồ chân của vi mạch 74HC245
- A0 ->A7: Dữ liệu đầu vào, data in/output phụ thuộc vào chân DIR
- OE: chân cho phép tích cực ở mức 0 .nếu 0E=0 thì ic xuất dữ liệu ngược lại OE=1
- DIR: Quy định đầu ra, nếu DIR=1 thì input A và output B và ngược lại với DIR=0
- B0 -> B7: 8 đầu ra, data in/output phụ thuộc vào chân DIR
- Vcc: Điện áp dương (5V)
- GND: 0V

8


Hình 6: Bảng hoạt động của IC 74HC245
-

H: mức cao
L: mức thấp
Z: trở kháng cao
X: khơng quan tâm

Giải thích hoạt động của IC 74HC245:
- Vì dịng điện ra của các port vi điều khiển là rất nhỏ chỉ cỡ vài mA không đủ cho
Led matrix sáng cho nên cần bộ đệm dòng cho Led matrix hoạt dộng ổn định.
- IC 74HC245 có điện áp đầu ra là 5V, dịng 20mA và cơng suất 500mW rất thích

hợp cấp cho Led matrix.
- Chân DIR sẽ nhận tín hiệu:
● Nếu tín hiệu tích cực mức 1, dữ liệu sẽ đi từ A sang B
● Nếu tín hiệu tích cực mức 0, dữ liệu đi từ B sang A.

e. Khối hiển thị
-

Với đề tài thiết kế này, nhóm chúng em sử dụng Led matrix để hiển thị nhiệt độ mà
cảm biến đo được và sử dụng thêm LCD 16*2 để hiển thị các tác vụ khi mình cài
đặt ngưỡng nhiệt độ.

9


Hình 7: Led matrix 8*8
-

-

Led ma trận được xếp thành các hàng, các cột nối tiếp nhau tạo thành một màn
hình, độ phân giải khơng cao q, được sử dụng để làm màn hình cơng nghiệp
hoặc thương mại. Bên trong nó là ma trận diode hai chiều có cực dương sắp theo
hàng và cực âm sắp theo cột. Tất cả các led được nối với nhau bằng dây đồng trần.
Có thể điều khiển từng điểm của led ma trận bằng cách điều khiển dòng điện đi
qua mỗi cặp diode theo cột hoặc hàng. Loại ma trận này rất phổ biến trong sử dụng
hiển thị thơng tin, nó cho phép hiển thị hình ảnh và văn bản dạng tĩnh hoặc động.
Trên thị trường có Led matrix rất đa dạng từ 1 màu, 3 màu đến full màu nhưng
trong proteus chúng ta chỉ có loại Led matrix 1 màu và hoạt động ở điện áp 5V.


Hình 8: Màn hình LCD 16*2

10


LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thơng số.
- LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS,
RW, EN).
-

5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.

-

Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ
liệu.

-

Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

-

LCD 16*2 hoạt động ổn định ở điện áp 5V.

f. Bộ ổn định nhiệt độ
- Bộ ổn định nhiệt độ gồm có quạt tản nhiệt và đèn cấp nhiệt, 2 thiết bị được điều
khiển bởi bộ vi điều khiển thơng qua chương trình code được nạp.

Hình 9: Quạt tản nhiệt

-

Khi nhiệt độ lên cao quá ngưỡng cài đặt, quạt sẽ hoạt động để làm giảm bớt nhiệt
độ xuống. Quạt tản nhiệt hoạt động ổn định ở điện áp 12V.

Hình 10: Đèn cấp nhiệt

11


-

Khi nhiệt độ hạ xuống mức thấp vượt ngưỡng cài đặt thì đèn sẽ được bật lên để
cung cấp thêm nhiệt. Đèn cấp nhiệt hoạt động ổn định ở điện áp 12v.

g. Vi điều khiển
-

PIC16F877A là một Vi điều khiển PIC 40 chân và được sử dụng hầu hết trong các
dự án và ứng dụng nhúng. Nó có năm cổng bắt đầu từ cổng A đến cổng E. Nó có
ba bộ định thời trong đó có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit. Nó hỗ
trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức song song, giao thức
I2C. PIC16F877A hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời.

Hình 11: PIC16F877A
-

PIC 16F877A có 5port A,B,C,D,E thì port A và E là nhận tín hiệu analog; cịn
3port B,C,D sẽ nhận tín hiệu digital.
Pic16F877A là một bộ vi điều khiển 8 bit dựa trên kiến trúc RISC bộ nhớ chương

trình 8KB ISP flash có thể ghi xóa hàng nghìn lần, 256B EEPROM, một bộ nhớ
RAM vô cùng lớn trong thế giới vi xử lý 8 bit. Với 33 chân có thể sử dụng cho các
kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các gắt
nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thơng nối tiếp USART,
SPI, I2C. Ngồi ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở
rộng tới 11 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ
nguồn, có thể sử dụng tới 2 kênh điều chế độ rộng xung (PWM).

12


Hình 12: Cấu tạo chung của PIC16F877A

h. Sơ đồ mạch nguyên lý
- Nhiệt độ đo được ở cảm biến sẽ đi qua bộ điều khiển, được xử lý rồi hiển thị lên
-

led matrix.
Dùng 3 nút bấm để cài đặt ngưỡng nhiệt độ tùy chọn, khi xong ngưỡng 1 ấn ok, sẽ
sang cài ngưỡng 2, khi xong ngưỡng 2 ấn ok hệ thống sẽ chạy theo chương trình đã
viết để điều khiển quạt và đèn.
Màn hình LCD sẽ hiển thị các ngưỡng nhiệt độ trong và sau khi cài đặt.

Hình 13: Sơ đồ mạch hệ thống

13


2.3 Lưu đồ và chương trình
a. Giới thiệu yêu cầu điều khiển.

⮚ Mục đích
● Ổn định nhiệt độ
● Biết rõ nhiệt độ thời điểm hiện tại
⮚ Yêu cầu
● Nguồn DC 5V và 12V
● An toàn sử dụng
● Tiết kiệm điện năng
● Hoạt động ổn định
⮚ Chức năng
● Có thể xác lập ngưỡng nhiệt độ bằng nút bấm
● Quạt và đèn chạy đúng theo ngưỡng cài đặt để ổn định được nhiệt độ
● Xác định được chính xác nhiệt độ
● Hiển thị được nhiệt độ lên Led ma trận
⮚ Input
● Nút bấm
● Cảm biến nhiệt độ
⮚ Output
● Tín hiệu điều khiển quạt và đèn
● Tín hiệu hiển thị Led matrix
● Tín hiệu hiển thị LCD

b. Lưu đồ

Hình 14: Lưu đồ và trình tự điều khiển của hệ thống

14


c. Chương trình và giải thích các lệnh
#include <16f877a.h> // khai báo thư viện

#device ADC=10; // chọn ngõ vào 10bit cho ADC
#use delay(clock=20M)
unsigned int8 Ma_Hang[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe };
unsigned int8 Ma_Cot[10][8]={{0x3c,0x7e,0xc3,0xc3,0xc3,0xc3,0x7e,0x3c}, //0
{0x30,0x70,0xf0,0xb0,0x30,0x30,0x30,0x30},//1
{0x38,0x7c,0xcc,0x8c,0x18,0x30,0x7e,0xfe},//2
{0x7e,0xc6,0x86,0x1c,0x1e,0x06,0x66,0x7c},//3
{0x18,0x30,0x66,0xc6,0xfe,0xfe,0x06,0x06},//4
{0x7e,0x40,0x40,0x7e,0x06,0x46,0x7e,0x3c},//5
{0x3e,0x7e,0xe0,0xfc,0xfe,0xc6,0xe6,0x7c},//6
{0xfe,0xfe,0x06,0x0c,0x18,0x30,0x30,0x30},//7
{0x7e,0xc3,0xc3,0xff,0xff,0xc3,0xc3,0x7e},//8
{0x3c,0x42,0x42,0x7e,0x02,0x02,0x42,0x7c}//9
};
//////////////////////////////
#define LCD_RS_PIN PIN_D0 /* khai báo các chân LCD
#define LCD_RW_PIN PIN_D1
#define LCD_ENABLE_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include<lcd.c>

khai báo thư viện LCD */

///////////////////////////
float nhietdo;
int t=0;


15


int8 l=0;
int8 h=0;
void ADC_Init()
{
setup_adc_ports(AN0); // chọn chân A0 để đọc giá trị vào
setup_adc(ADC_CLOCK_DIV_32); //thời gian lấy mẫu bằng xung clock / 32 ( 6.4 us )
set_adc_channel(0); // chọn kênh ADC
delay_us(100);}
int8 j,a,b,x;
//////////////////////////////////
void hthi2()
{
output_B(0x00); /* code hiển thị ” ” ra Led matrix
delay_ms(1);
output_low(pin_A5);
output_high(pin_A2);
output_high(pin_A1);
delay_ms(1);
Output_B(0xE6);
Output_C(0x7f);
delay_ms(1);
output_B(0x00);
delay_ms(1);
Output_B(0xA9);
Output_C(0xbf);
delay_ms(1);
output_B(0x00);

delay_ms(1);

16


Output_B(0xE8);
Output_C(0xdf);
delay_ms(1);
OUTPUT_B(0x00);
delay_ms(1);
Output_B(0x08);
Output_C(0xef);
delay_ms(1);
OUTPUT_B(0x00);
delay_ms(1);
Output_B(0x08);
Output_C(0xF7);
delay_ms(1);
OUTPUT_B(0x00);
delay_ms(1);
Output_B(0x08);
Output_C(0xfb);
delay_ms(1);
OUTPUT_B(0x00);
delay_ms(1);
Output_B(0x09);
Output_C(0xfd);
delay_ms(1);
OUTPUT_B(0x00);
delay_ms(1);

Output_B(0x06);
Output_C(0xFE);
delay_ms(1);

17


OUTPUT_B(0x00);
delay_ms(1); */
}
//////////////////////////////////////
void hthi()
{
hthi2();
nhietdo=0; /* đọc dữ liệu từ LM35 ra led matrix
nhietdo=nhietdo+read_adc();
nhietdo=(nhietdo/2);
x=(int16)nhietdo; */
////////////////////////////
a=x/10; /* code hiển thị nhiệt độ ra Led matrix
b=x%10;
for(j=0; j<=7;j++){
output_c(ma_hang[j]);
output_high(pin_A2);
output_low(pin_A1);
output_high(pin_A5);
output_b(ma_cot[a][j]);
delay_ms(1);
}
for(j=0; j<=7;j++){

output_c(ma_hang[j]);
output_high(pin_A1);
output_low(pin_A2);
output_high(pin_A5);
output_b(ma_cot[b][j]);

18


delay_ms(1); */
}
}
////////////////////////////////////////
void main()
{
set_tris_B(0x00);
set_tris_C(0xff);
set_tris_D(0x00);
set_tris_E(0xff);
set_tris_A(0x00);
lcd_init();
OUTPUT_d(0x00);
ADC_Init();
hthi2();
while(true)
{
hthi();
hthi2();
lcd_gotoxy(1,1); /* hiển thị nhiệt độ lên LCD
lcd_putc("Nhietdo:");

lcd_putc(t/10+0x30);
lcd_putc(t%10+0x30);
lcd_putc("-" );
lcd_putc(l/10+0x30);
lcd_putc(l%10+0x30);
lcd_gotoxy(14,1);
lcd_putc("oC");

19


lcd_gotoxy(1,2);
lcd_putc("Tang");
lcd_gotoxy(13,2);
lcd_putc("Giam");
lcd_gotoxy(8,2);
lcd_putc("OK"); */
hthi();
///////////////////////////////
if(h==0); /* chương trình cài đặt ngưỡng nhiệt độ T1 và hiển thị lên LCD
{
if(input(pin_E0)==0)
{
delay_ms(100);
while(input(pin_E0)==0);
t=t+1;
}
if(input(pin_E1)==0)
{
delay_ms(100);

while(input(pin_E1)==0);
t=t-1;
}
if(input(pin_E2)==0)
{
while(input(pin_E2)==0);
OUTPUT_LOW(pin_A3);
OUTPUT_LOW(pin_D3);
hthi();

20


lcd_putc('\f');
lcd_gotoxy(2,1);
lcd_putc("Setup muc 1");
lcd_gotoxy(1,2);
lcd_putc("nhiet do ");
printf(lcd_putc,"%i"t);
lcd_gotoxy(14,2);
lcd_putc("oC");
delay_ms(1000);
lcd_putc('\f');
hthi();
h++;
}

*/

//////////////////////////////////////////////

{while(h==1)

/* chương trình cài ngưỡng nhiệt độ T2 và hiển thị lên LCD

{lcd_gotoxy(1,1);
lcd_putc("Nhietdo:");
lcd_putc(t/10+0x30);
lcd_putc(t%10+0x30);
lcd_putc("-" );
lcd_putc(l/10+0x30);
lcd_putc(l%10+0x30);
lcd_gotoxy(14,1);
lcd_putc("oC");
lcd_gotoxy(1,2);
lcd_putc("Tang");
lcd_gotoxy(13,2);
lcd_putc("Giam");

21


lcd_gotoxy(8,2);
lcd_putc("OK");
hthi();
if(input(pin_E0)==0)
{
delay_ms(100);
while(input(pin_E0)==0);
l++;
}

if(input(pin_E1)==0)
{
delay_ms(100);
while(input(pin_E1)==0);
l--;
}
if(input(pin_E2)==0)
{
while(input(pin_E2)==0);
lcd_putc('\f');
lcd_gotoxy(2,1);
lcd_putc("Setup muc 2");
lcd_gotoxy(1,2);
lcd_putc("nhiet do ");
printf(lcd_putc,"%i"l);
lcd_gotoxy(14,2);
lcd_putc("oC");
delay_ms(1000);
lcd_putc('\f');

22


hthi();
h++;
}

*/

/////////////////////////////////

while(h==2) /* khi đã cài xong 2 ngưỡng nhiệt độ bắt đầu so sánh để chạy bộ ổn định
nhiệt độ
{
lcd_gotoxy(1,1);
lcd_putc("Nhietdo:");
lcd_putc(t/10+0x30);
lcd_putc(t%10+0x30);
lcd_putc("-" );
lcd_putc(l/10+0x30);
lcd_putc(l%10+0x30);
lcd_gotoxy(14,1);
lcd_putc("oC");
lcd_gotoxy(1,2);
lcd_putc("Tang");
lcd_gotoxy(13,2);
lcd_putc("Giam");
lcd_gotoxy(8,2);
lcd_putc("OK");
hthi();
{ if(x{
OUTPUT_LOW(pin_A3);
OUTPUT_HIGH(pin_D3);
delay_ms(10);

23


}
if(x>=t&&x<=l)

{
OUTPUT_LOW(pin_A3);
OUTPUT_LOW(pin_D3);
delay_ms(10);
}
if(x>l)
{
OUTPUT_LOW(pin_D3);
OUTPUT_HIGH(pin_A3);
delay_ms(10);
}
if(input(pin_E2)==0)
cài lại từ đầu

/* khi cài xong 2 ngưỡng nhiệt độ mà bấm OK 1 lần nữa thì sẽ

{
while(input(pin_E2)==0);
OUTPUT_LOW(pin_A3);
OUTPUT_LOW(pin_D3);
lcd_putc('\f');
lcd_gotoxy(4,1);
lcd_putc("Setup lai");
delay_ms(1000);
lcd_putc('\f');
hthi();
l=0;
t=0;
h=0;


*/

24


}
}
}
}
}
}
}
}
- Để hiển thị nhiệt độ lên Led matrix ta tiến hành:
● Hiển thị hàng chục của nhiệt độ lên Led matrix 8x8 thứ 1.
● Hiển thị hàng đơn vị của nhiệt độ Led matrix 8x8 thứ 2.
● Hiển thị chữ độ C Led matrix 8x8 thứ 3.
Tiếp theo ta tiến hành xây dựng mã hex hiển thị từ số 0 đến 9 để hiện thị nhiệt độ lên Led
matrix và xây dựng mã hex hiển thị chữ lên Led matrix. Sử dụng website tạo mã hex để
tạo mã hex cho Led matrix 8x8 để chuyển đổi online.
Cột đầu tiên bên tay phải là giá trị nhị phân của số 01 hiển thị lên Led matrix 8x8.
Cột thứ hai bên tay phải là giá trị mã Hex của số 01 hiển thị lên Led matrix 8x8.

Hình 15: Cách lấy mã hex của các kí tự
lcd_gotoxy(); //đưa con trỏ chuột tới vị trí cần hiển thị
lcd_putc();//hiển thị giá trị ra màn hình
Sử dụng lệnh sau để hiển thị ra Led matrix theo phương pháp quét Led:
output_c(ma_hang[j]);
output_b(ma_cot[c][j]);


25


×