You are on page 1of 35

Chương 5

LCD, ADC, và SENSORS


Giao tiếp LCD với 8051
• LCD đang được sử dụng rộng rãi thay thế đèn LED
– Giá LCD ngày càng giảm
– Khả năng hiển thị số, ký tự, và đồ họa
– Kết hợp bộ điều khiển dễ dàng để đáp ứng nhu cầu của
người lập trình
– Dễ dàng lập trình cho các ký tự và đồ họa
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
• I/D: 1 =Increment *, 0=Decrement
S: 1 = Display shift on, 0 = Display shift off *
D: 1 = Display on, 0 = Diaplay off *
U: 1 = Cursor underline on, 0=Underline off *
B: 1 = Cursor blink on, 0 = cursor blink off *
D/C: 1 = Display shift, 0 = cursor move
R/L: 1 = Right shift, 0 = Left shift
8/4: 1 = 8 bit interface *, 0 = 4 bit interface
2/1: 1 = chế độ 2 hàng, 0 = chế độ 1 hàng *
10/7: 1=5x10 dot format, 0=5x7 dot format *
x = don’t care * = đặt ban đầu
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051
Giao tiếp LCD với 8051

• Người ta có thể đặt dữ liệu ở bất kỳ vị trí nào trong


màn hình LCD và phần sau hiển thị các vị trí địa chỉ
và cách chúng được truy cập

• AAAAAAA=000_0000 to 010_0111 for line1


• AAAAAAA=100_0000 to 110_0111 for line2
Giao tiếp LCD với 8051
• Viết chương trình hiển thị “Hello World” lên
màn hình LCD
• B1: viết ct chính
Giao tiếp LCD với 8051
• Chương trình chình
ORG 2000H
EN BIT P3.4
RS BIT P3.5
MOV TMOD, #01H
LCALL LCD_INIT
MOV R1, #0
HTHI:
MOV A, R1
MOV DPTR, #MESSAGE
MOVC A, @A+DPTR
CALL WR_DATA
CALL DELAY_400MS
INC R1
CJNE R1, #12, HTHI
SJMP $
MESSAGE:
DB 'Hello World!'
Giao tiếp LCD với 8051
;; Chuong trinh con khoi dong LCD
LCD_INIT:
CLR EN
CLR RS
CALL DELAY_1S
MOV DPTR, #8000H
MOV A, #38H ; 8bit data + 2line + 5*7
LCALL WR_INSTR
MOV A, #0EH ; Display on + Cursor on
LCALL WR_INSTR
MOV A, #06H ; Increase the cursor after each byte written to display
LCALL WR_INSTR
MOV A, #80H ; Cursor to addr 0
LCALL WR_INSTR
MOV A, #01H ; Clear display
LCALL WR_INSTR
LCALL DELAY_4MS
RET
Giao tiếp LCD với 8051
; Chuong trinh con write instruction ; Chuong trinh con write data
WR_INSTR: WR_DATA:
CLR RS SETB RS
SETB EN SETB EN
MOVX @DPTR, A MOV DPTR, #8000H
ACALL DELAY_160US MOVX @DPTR, A
CLR EN ACALL DELAY_160US
RET CLR EN
RET
Giao tiếp LCD với 8051
• ; Chuong trinh con tao DELAY
DELAY_160US: DELAY_400MS:
PUSH 03 PUSH 04
MOV R3, #80 MOV R4, #100
DJNZ R3, $ LOOP1:
POP 03 CALL DELAY_4MS
RET DJNZ R4, LOOP1
DELAY_4MS: POP 04
CLR TR0 RET
MOV TH0, #HIGH(-4000) DELAY_1S:
MOV TL0, #LOW(-4000) PUSH 04
SETB TR0 MOV R4, #250
JNB TF0, $ LOOP2:
CLR TF0 CALL DELAY_4MS
RET DJNZ R4, LOOP2
POP 04
RET
Giao tiếp LCD với 8051
• Write an 8051 C program to send letters ‘M’, ‘D’, and ‘E’ to
the LCD
using the busy flag method.
Giao tiếp LCD với 8051
• #include <reg51.h>
sfr ldata = 0x90; //P1=LCD data pins
sbit rs = P2^0;
sbit rw = P2^1;
sbit en = P2^2;
sbit busy = P1^7;
void main(){
lcdcmd(0x38);
lcdcmd(0x0E);
lcdcmd(0x01);
lcdcmd(0x06);
lcdcmd(0x86); //line 1, position 6
lcdcmd(‘M’);
lcdcmd(‘D’);
lcdcmd(‘E’);
}
Giao tiếp LCD với 8051
.....
void lcdcmd(unsigned char value){
lcdready(); //check the LCD busy flag
ldata = value; //put the value on the pins
rs = 0;
rw = 0;
en = 1; //strobe the enable pin
MSDelay(1);
en = 0;
return;
}
void lcddata(unsigned char value){
lcdready(); //check the LCD busy flag
ldata = value; //put the value on the pins
rs = 1;
rw = 0;
en = 1; //strobe the enable pin
MSDelay(1);
en = 0;
return;}
Giao tiếp LCD với 8051
• .....
void lcdready(){
busy = 1; //make the busy pin at input
rs = 0;
rw = 1;
while(busy==1){ //wait here for busy flag
en = 0; //strobe the enable pin
MSDelay(1);
en = 1;
}
void lcddata(unsigned int itime){
unsigned int i, j;
for(i=0;i<itime;i++)
for(j=0;j<1275;j++);
}
Thiết bị ADC
• ADC (bộ chuyển đổi tương tự sang kỹ thuật số) là
một trong số các thiết bị được sử dụng rộng rãi
nhất để thu thập dữ liệu
– Một đại lượng vật lý, như nhiệt độ, áp suất, độ ẩm và
vận tốc, v.v., được chuyển đổi thành tín hiệu điện (điện
áp, dòng điện) bằng cách sử dụng thiết bị được gọi là
bộ chuyển đổi, hoặc cảm biến
• Cần một bộ chuyển đổi tương tự sang số → dịch
các tín hiệu tương tự sang số → vi điều khiển có
thể đọc chúng
Thiết bị ADC-ADC804 Chip
• IC ADC804 là một bộ chuyển đổi tương tự → số
– Nó hoạt động với +5 volt và có độ phân giải 8 bit
– Thời gian chuyển đổi là một trong những chức năng được
quan tâm của ADC
• ADC dùng để chuyển đổi đầu vào tương tự thành số (Số
nhị phân)
• Trong ADC804 thời gian chuyển đổi thay đổi tùy thuộc
vào các tín hiệu xung nhịp được áp dụng cho chân CLK
R và CLK IN, nhưng nó không thể nhanh hơn 110 µs
Thiết bị ADC-ADC804 Chip
Thiết bị ADC-ADC804 Chip
• CLK IN và CLK R
– CLK IN là chân đầu vào được kết nối với nguồn đồng hồ bên
ngoài
– Để sử dụng bộ tạo xung nhịp bên trong (còn được gọi là tự
đồng hồ), CLK IN và Chân CLK R được kết nối với tụ điện
và một điện trở, với tần số đồng hồ được xác định bởi

– Giá trị điển hình là R = 10K ohms và C = 150 pF


– Ta nhận được f = 606 kHz và thời gian chuyển đổi là 110 µs
Thiết bị ADC-ADC804 Chip
• Vref / 2
– Nó được sử dụng cho điện áp tham chiếu
• Nếu chân này đang hở (không được kết nối), kim điện
áp đo đầu vào nằm trong khoảng 0 đến 5V (giống như
chân Vcc)
• Nếu điện áp đầu vào tương tự cần từ 0 đến 4V, Vref / 2
được kết nối với 2V

Kích thước bước là thay đổi nhỏ nhất có thể được ADC nhận thấy
Thiết bị ADC-ADC804 Chip
• D0-D7
– Các chân đầu ra dữ liệu số
– Đây là bộ đệm ba trạng thái
• Dữ liệu đã chuyển đổi chỉ được truy cập khi CS =0 và
RD buộc phải ở mức thấp
– Để tính toán điện áp đầu ra, hãy sử dụng công thức sau

• Dout = đầu ra dữ liệu kỹ thuật số (ở dạng thập phân),


• Vin = điện áp tương tự, và
• kích thước bước (độ phân giải) là thay đổi nhỏ nhất
Thiết bị ADC-ADC804 Chip
• Nối đất cho tín hiệu tương tự và số
– Chân đất tương tự được nối với chân đất của tín hiệu tương
tự Vin
– Chân đất số được kết nối với chân đất của chân Vcc
• Lý do mà ta phải có hai đất là để cách ly tín hiệu tương tự Vin
từ các điện áp ký sinh tạo ra việc chuyển mạch số được chính
xác.
• Điều này góp phần vào độ chính xác của đầu ra dữ liệu kỹ
thuật số
Thiết bị ADC-ADC804 Chip
• Từ những điều trên ta kết luận rằng các bước cần phải thực hiện khi
chuyển đổi dữ liệu bởi ADC 804 là:
– 1. Bật CS = 0 và gửi một xung thấp lên cao tới chân WR để bắt
đầu chuyển đổi.
– 2. Duy trì hiển thị chân INTR. Nếu INTR xuống thấp thì việc
chuyển đổi được hoàn tất và ta có thể sang bước kế tiếp. Nếu
INTR cao tiếp tục thăm dò cho đến khi nó xuống thấp.
– 3. Sau khi chân INTR xuống thấp, ta bật CS = 0 và gửi một xung
cao -xuống -thấp đến chân RDđể lấy dữ liệu ra khỏi chíp ADC
804.
• Phân chia thời gian cho quá trình này được trình bày trên hình
Thiết bị ADC-ADC804 Chip

Hãy thử nối ghép ADC 804 với 8051


theo sơ đồ. Viết một chương trình để
hiển thị chân INTR và lấy đầu vào
tương tự vào thanh ghi A. Sau đó gọi
một chương trình chuyển đổi mã
Hex ra ASCII và một chương trình
hiển thị dữ liệu. Thực hiện điều này
liên tục.
Thiết bị ADC-ADC804 Chip
Đặt P2.6 = WR (bắt đầuchuyển đổi cần 1 xung thấp lên cao)
Đặt chân P2.7 = 0 khi kết thúc chuyển đổi
Đặt P2.5 = RD (xung cao -xuống -thấp sẽ đọc dữ liệu từ ADC)
P1.0 –P1.7 của ADC 804
MOV P1, # 0FFH ; Chọn P1 là cổng đầu vào
BACK: CLR P2.6 ; Đặt WR = 0
SETB P2.6 ; Đặt WR = 1 để bắt đầu
chuyển đổi
HERE: JB P2.7, HERE ; Chờ cho P2.7 to để kết thúc
chuyển đổi
CLR P2.5 ; Kết thúc chuyển đổi, cho phép
đọc RD
MOV A, P1 ; Đọc dữ liệu vào thanh ghi A
ACALL CONVERSION ; Chuyển đổi số Hex ra mã ASCII
ACALL DATA-DISPLAY ; Hiển thị dữ liệu
SETB P2.5 ; Đưa RD = 1 để cho lần đọc sau.
SJMP BACK
Thiết bị ADC-ADC804 Chip
Thiết bị ADC-ADC804 Chip
Cảm biến nhiệt độ
• Chuyển đổi nhiệt độ có thể là một cảm biến hoặc đầu dò có
khả năng biến đổi một loại giá trị vật lý thành loại tín hiệu
thông dụng. Cụ thể ở đây là chuyển đổi nhiệt độ thành tín
hiệu điện
• Các giá trị như : Nhiệt độ, áp suất, lưu lượng, v.v., là một
giá trị vật lý và hiện thực, chúng là đặc điểm vật lý của thế
giới thực của chúng ta.
• Với công nghệ hiện đại và những tiến bộ của công nghệ
điện trong thế kỷ qua, chúng ta muốn biến đổi mọi giá trị
vật lý có thể đo thành tín hiệu điện và cảm biến nhiệt độ là
một thiết bị sẽ biến Nhiệt độ thành tín hiệu điện, cho dù tín
hiệu này có nhỏ đến đâu thì vẫn có thể cho ra tín hiệu cụ thể

You might also like