SlideShare a Scribd company logo
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA : ĐIỆN TỬ
ĐỒ ÁN
MÔN
HỌC
ĐỀ TÀI:
THIẾT KẾ
BỘ ĐO
ĐIỆN ÁP
Ở 3 DẢI
ĐO 0-
2.5V, 0-
25V, 0-
250V
HIỂN THỊ
TRÊN
LCD.
“Sai số cho
phép là ±
10%”
Giáo viên hướng dẫn:
Nhóm sinh viên thực hiện:
1.Nguyễn Duy Hân
2.Trịnh Đình Thắng
3.Nguyễn Hữu Từ
Mục lục
Trang
Mục lục……………………………………………………………………………2
Lời nói đầu………………………………………………………………………..2
Chương I
Mô tả ý tưởng: mô hình ý niệm, xây dựng sơ đồ khối…………………...4
I. Sơ đồ khối,sơ đồ mạch nguyên lý và mạch in …………….....................4
II. Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động
của từng khối…………………………………………………………….….6
Chương II
Quá trình thực hiện……………………………………………………………..17
I. Code lập trình C cho vi điều khiển…………….………………………..18
II. Hình dạng sản phẩm thưc tế hoàn thành…………………...................19
III.Tóm tắt bản báo cáo, những vấn đề chưa làm được……….……..20
LỜI NÓI ĐẦU
Sự ra đời của các bộ vi xử lí nói chung,các bộ vi điều khiển nói riêng đã tạo ra một bước
ngoặt lớn trong việc thiết kế các hệ thống xử lí thông tin,đo lường điều khiển và truyền
thông.Kết quả là đã tạo ra được những sản phẩm như máy ảnh số,máy chơi nhạc
MP3,đầu dĩa DVD,các bộ biến tần,PLC…ngày càng rẻ hơn,nhỏ gọn hơn,thông minh hơn
và tiện dụng hơn.
Hơn nữa,kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất
nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều
lĩnh vực khác nữa. So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất
nhiều do nó được tích hợp lại và có khả năng lập trình được để điều khiển. Nên rất
tiện dụng và cơ động.
Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, chúng em chỉ
dùng vi điều hiển để đo điện áp ở ba dải đo 0-2.5V , 0-25 , 250V , đồng thời cho hiển
thị lên LCD.
Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những
ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều
ứng dụng khác trong đời sống hằng ngày cần đến.
Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham
khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì vậy
nhóm rất mong được sự góp ý của thầy cô và các bạn.
Chương I
Mô tả ý tưởng,mô hình ý niệm,xây dựng sơ đồ khối
I. Sơ đồ khối tổng quát,sơ đồ nguyên lý và mạch in
1.Sơ đồ khối tổng quát:
2. Sơ đồ nguyên lý mô phỏng dùng proteus:
KHỐI ĐIỀU
CHẾ VÀ
KHUẾCH ĐẠI
KHỐI XỬ LÝ TRUNG
TÂM: 8051
KHỐI
CHUYỂN ĐỒI
TƯƠNG TỰ
SANG SỐ:
ADC0804
KHỐI NGUỒN
ỔN ÁP SỬ
DỤNG IC7805
KHỐI HIỂN THỊ:
SỬ DỤNG LCD
ĐẦU RA ỨNG
DỤNG
(đo điện áp ở ba
thang đo: 0-2.5 V,
0-25V va 0-250V)
3. sơ đồ mạch in :
II . Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động của
từng khối
1. Các vi mạch chính sử dụng trong từng khối
1. Khối xử lý trung tâm: AT89C52
2. Trong khối điều chế và khuếch đại: LM358
3. Khối chuyển đổi: ADC 0804
4. Khối hiển thị: LCD
5. Trong Khối ổn áp: IC7805
2. Cấu tạo và nguyên lý hoạt động cơ bản của từng vi mạch
2.1 Vi điều khiển AT89C52:
2.1.2 cấu tạo và chức năng các khối của AT89S52.
• CPU( CPU centralprocessing unit) bao gồm:
 Thanh ghi tích lũy A
 Thanh ghi tích lũy phụ B
 Đơn vị logic học (ALU)
 Thanh ghi từ trạng thái chương trình
 Bốn băng thanh ghi
 Con trỏ ngăn xếp
• Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash.
• Bộ nhớ dữ liệu( RAM) gồm 256 byte.
• Bộ UART, có chức năng truyền nhận nối tiếp.
• 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
• Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong.
• Bộ lập trình( ghi chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương
trình cho chíp mà không cần các bộ nạp chuyên dụng.
• Bộ chia tần số với hệ số chia là 12.
• 4 cổng xuất nhập với 32 chân.
b, chức năng các chân của AT89C52
 Port 0( P0.0=>P0.7)
Port 0 gồm 8 chân, ngoài chức năng xuất nhập, port 0 còn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7),
chức năng này sẽ được sử dụng khi 89c52 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi
mạch nhớ, mạch PIO…
 Port 1( P1.0=>P1.7)
Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác. Port1 có thể xuất nhập
theo bit và theo byte.
 Port 2( P2.0=>P2.7)
Port 2 ngoài chức năng là cổng vào/ra như Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ
nhớ ngoài.
Port 3
Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể như sau:
Bit Tên Chức năng
P3.0 RXD Dữ liệu nhận cho Port nối tiếp
P3.1 TXD Dữ liệu truyền cho Port nối tiếp
P3.2 INT0 Ngắt bên ngoài 0
P3.3 INT1 Ngắt ngoài 1
P3.4 TO Ngõ vào của Timer/counter0
P3.5 T1 Ngõ vào của Timer/counter1
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài.
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài.
 Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài.
 Chân ALE.
ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển. Tín hiệu
ALE được dùng để cho phép vi mạch chốt bên ngoài như 7473.
 Chân /EA.
Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài. EA=1 thì thực hiện chương
trình trong RAM nội. EA=0 thực hiện ở RAM ngoài.
 RST( reset)
Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu.
 XTAL1, XTAL2
2 chân này được nối song song với thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều
khiển.
 Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển. cấp qua chân 20 và 40.
2.1.3 nguyên lý hoạt động
+Chân 9 được nối với mạch reset. Khi nhấn SW1 thì bộ vi điều khiển sẽ được khởi động lại từ đầu.
+điện trở băng U1: có tác dụng làm điện trở kéo lên nguồn.
+ chân 18-19 được nối // với thạch anh 12Mhz. mạch có nhiệm vụ tạo dao động cho vi điều khiển.
+từ chân P2.0=>P2.2 lần lượt được nối với Vee, RS, RW của LCD. Có nhiệm vụ điều khiển hoạt động của
LCD.
+chân P2.3=>P2.5 : 3 chân này được nối với lần lượt 3 chân của ADC : chân RD (Read),
chân WR (Write) và chân Ngắt INTR (Interupt). Nhiệm vụ điều khiển hoạt động của bộ
chuyển đổi số - tương tự.
+ chân P3.0=>P3.7. giao tiếp với ADC0804. Cổng P3 này có nhiệm vụ đọc điện áp thu được từ bộ chuyển
đổi.
+P0.0=>P0.7. Lần lượt được nối với đầu vào dữ liệu từ DB0=> DB7 của LCD. Có chức năng điều khiển
hiển thị việc đo điện áp trên LCD .
+P1.0=>P1.2 : được nối với switch kép để điều khiển chọn thang đo phù hợp.
2.2 Khuếch đại LM358:
a, cấu tạo
LM358 gồm có 2 con khuếch đại thuật toán:
Con thứ 1: chân 2 ,3 vào, chân 1ra
Con thứ 2: chân 5,6 vào, chân 7 ra
Công dụng: khuếch đại điện áp và dòng điện nhận được từ LM35 để sau đó chuyển tiếp đến đầu vào IN của
ADC 0804
Sơ đồ cấu tạo:
Tính toán và cân chỉnh:
+tại OA2:
Xét tại: N2:
3
0
R
Un−
=
4R
UrUn −
=>Ur=Un .
3
43
R
RR +
.
Xét tại P2:
1R
UpUv −
=
2R
Up
.
=> Up=Uv .
21
2
RR
R
+
Mà coi như OA lý tưởng.
Uv=Up;
 Ur=Uv.
3
43
R
RR +
.
21
2
RR
R
+
;
Do điện áp đầu ra của bộ khuếch đại chỉ giới hạn trong khoảng từ 0-5V khi dùng nguồn đơn. Nên
chọn giá trị R2= R4=3,9 K
R1=R3= 1 K Ω;Khi đó Ur=Vin ≈ 4Uv;
2.3 Bộ chuyển đổi tương tự-số: ADC 0804:
2.3.1 Cấu tạo:
ADC 0804 là một bộ chuyển đổi tương tự số. Gồm có 20 chân.
DB0-DB7: là 8 chân ra dữ liệu.
RD: lối vào đọc
WR :lối vào ghi.
INTR: lối ra ngắt.
CLKR/CLKIN: các lối vào điều khiển xung nhịp.
VIN: lối vào analog dương
2.3.2 sơ đồ:
Chip ADC0804 là bộ chuyển đổi tương tự số thuộc họ ADC800 của h ãng National
Semiconductor. Chip này cũng được nhiều hãng khác sản xuất. Chip có điện áp nuôi +5V và
độ phân giải 8 bit. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan
trọng khi đánh giá bộ ADC. Thời gian chuyển đổi đ ược định nghĩa là thời gian mà bộ ADC
cần để chuyển một đầu vào tương tự thành một số nhị phân. Đối với ADC0804 thì thời gian
chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN và không bé hơn
110µs. Các chân khác của ADC0804 có chức năng như sau:
• CS (Chip select)
Chân số 1, là chân chọn Chip, đầu vào tích cực mức thấp được sử dụng để kích hoạt
Chip ADC0804. Để truy cập ADC0804 thì chân này phải ở mức thấp.
• RD (Read)
Chân số 2, là một tín hiệu vào, tích cực ở mức thấp. Các bộ chuyển đổi đầu v ào tương
tự thành số nhị phân và giữ nó ở một thanh ghi trong. RD đ ược sử dụng để có dữ liệu
đã được chyển đổi tới đầu ra của ADC0804.
Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng số 8
bit được đưa tới các chân dữ liệu (DB0 – DB7).
• WR (Write)
Chân số 3, đây là chân vào tích cực mức thấp được dùng để báo cho ADC biết bắt đầu
quá trình chuyển đổi. Nếu CS = 0 khi WR tạo ra xung cao xuống thấp th ì bộ
ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8
bit. Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống thấp.
• CLK IN và CLK R
CLK IN (chân số 4), là chân vào nối tới đồng hồ ngoài được sử dụng để tạo thời gian.
Tuy nhiên ADC0804 cũng có một bộ tạo xung đồng hồ riêng. Để dùng đồng hồ riêng
thì các chân CLK IN và CLK R (chân s ố 19) được nối với một tụ điện và một điện trở
(như hình vẽ). Khi ấy tần số được xác định bằng biểu thức:
Với R=10 kΩ, C=150pF và tần số f=606 kHz và thời gian chuyển đổi là 110 µs.
• Ngắt INTR (Interupt)
Chân số 5, là chân ra tích cực mức thấp. Bình thường chân này ở trạng thái cao và khi
việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết l à dữ liệu chuyển đổi
sẵn sàng để lấy đi. Sau khi INTR xuống thấp, cần đặt CS = 0 v à gửi một xung cao
xuống thấp tới chân RD để đưa dữ liệu ra.
• Vin (+) và Vin (-)
Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai, trong đó Vin = Vin (+) – Vin (-).
Thông thường Vin (-) được nối tới đất và Vin (+) được dùng làm đầu vào tưộng tự và sẽ được
chuyển đổi về dạng số.
• Vcc
Chân số 20, là chân nguồn nuôi +5V. Chân này còn được dùng làm điện áp tham chiếu
khi đầu vào Vref/2 để hở.
• Vref/2
Chân số 9, là chân điện áp đầu vào được dùng làm điện áp tham chiếu. Nếu chân này
hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải 0 - +5V. Tuy nhiên, có
nhiều ứng dụng mà đầu vòa tương tự áp đến Vin khác với dải 0 - +5V. Chân Vref/2
được dùng để thực hiện các điện áp đầu ra khác 0 - +5V.
Bảng quan hệ điện áp Vref/2 với Vin
Vref/2 (V) Vin (V) Kích thước bước (mV)
Hở 0 – 5 5/256 = 19.53
2.0 0 – 4 4/256 = 15.62
1.5 0 – 3 3/256 = 11.71
1.28 0 – 2.56 2.56/256 = 10
1.0 0 – 2 2/256 = 7.81
0.5 0 – 1 1/256 = 3.90
. D0 - D7
D0 - D7, chân số 18 – 11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là
bit thấp nhất LSB). Các chân này được đệm ba trạng thái và dữ liệu đã được chuyển
đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp.
.CÁC BƯỚC CỦA QUÁ TRÌNH CHUYỂN ĐỔI.
• Đặt WR =RD=1;
• Bắt đầu biến đổi. Đặt WR=0, trễ( )ms.
• Đặt lại WR=1;
• Phát hiện điểm kết thúc của quá trình biến đổi khi INTR xuống mức thấp. (được sử dụng
bởi ngắt)
• Đặt RD=0 và đọc dữ liệu từ DB0=>DB7.
• Đặt RD=1. => kết thúc chu trình.
2.4 Hiển thị ( LCD 16x2)
2.4.1 cấu tạo
Chức năng các chân của Module LCD 16x2:
Chân số Ký hiệu Mức logic I/O Chức năng
1 Vss - - Nguồn cung cấp(GND)
2 Vdd - - Nguồn cung cấp(+5V)
3 Vee - I Điện áp để điều chỉnh độ tương phản
4 RS 0/1 I Lựa chọn thanh ghi
0= thanh ghi lệnh
1=thanh ghi dữ liệu
5 R/W 0/1 I 0=ghi vào LCD module
1=đọc từ LCD module
6 E 1,1=>0 I Tín hiệu cho phép
7 DB1 0/1 I/O Data bus line 0(LSB)
8 DB2 0/1 I/O Data bus line1
9 DB3 0/1 I/O Data bus line2
10 DB4 0/1 I/O Data bus line3
11 DB5 0/1 I/O Data bus line4
12 DB6 0/1 I/O Data bus line5
13 DB7 0/1 I/O Data bus line6
14 DB8 0/1 I/O Data bus line7(MSB)
15 Vcc - - Nguồn cung cấp
16 GND - - mass
2.4.2 mạch trong đồ án:
2.4.3 nguyên tắc hiển thị ký tự trên LCD
một chương trình hiển thị ký tự trên LCD sẽ đi theo bốn bước sau:
1) Xóa toàn bộ màn hình.
2) Đặt chế độ hiển thị.
3) Đặt vị trí con trỏ (nơi bắt đầu của ký tự hiển thị).
4) Hiển thị ký tự.
Chú ý:
+Các bước 3, 4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự.
+ Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD cần phải kiểm tra cờ bận trước. Vì vậy, cần
phải chủ động phân phối thời gian khi ra lệnh cho LCD( ví dụ sau khi xóa màn hình sau khoảng 2ms mới ra
lệnh khác vì thời gian để LCD xóa màn hình là 1,64ms).+chế độ hiển thị mặc định sẽ là hiển thị dịch, vị trí
con trỏ mặc định sẽ là đầu dòng thứ nhất.
2.4.4 mã lệnh của LCD HD4480
Lệnh Mã lệnh Mô tả Thời
gian thi
hành
RS R/
W
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
Xóa màn hình 0 0 0 0 0 0 0 0 0 1 Xóa màn hình đưa con
trỏ về vị trí đầu
1.64ms
Đưa con trỏ về
vị trí đầu
0 0 0 0 0 0 0 0 1 x Đưa con trỏ về vị trí
đầu
1.64ms
Thiết lập chế
độ
0 0 0 0 0 0 0 1 I/D S Thiết lập hướng dịch
chuyển con trỏ(I/D),
dịch hiển thị(S)
40us
Bật tắt hiển thị 0 0 0 0 0 0 1 D C B Bật tắt hiển thị, con trỏ;
bật tắt chế độ nhấp
nháy con trỏ
40us
Dịch con trỏ
hiển thị
0 0 0 0 0 1 S/C R/L * * Thiết lập chiều dịch
chuyển của con trỏ và
hiển thị
40us
Thiết lập chức
năng
0 0 0 0 1 DL N F * * Thiết lập độ dài của dữ
liệu, số dòng và font
chữ
40us
Thiết lập địa
chỉ CGRAM
0 0 0 1 CGRAM address Thiết lập địa chỉ
CGRAM
40us
Thiết lập địa
chỉ DDRAM
0 0 1 DDRAM address Thiết lập địa chỉ
DDRAM
40us
Đọc cờ báo
bận và địa chỉ
CGRAM/
DDRAM
0 1 BF CGRAM/ DDRAM address Đọc cờ báo bận và địa
chỉ của CGRAM hoặc
DDRAM( tùy vào lệnh
trước đó)
40us
Ghi CGRAM/
DDRAM
1 0 Write data Ghi dữ liệu vào
CGRAM hoặc
DDRAM.
40us
Đọc CGRAM/
DDRAM
1 1 Read data Đọc dữ liệu từ CGRAM
hoặc DDRAM
40us
2.4.5 các bit viết tắt trong mã lệnh:
Tên bit Mô tả
I/D 0=không dịch chuyển vị trí con
trỏ
1=dịch chuyển vị trí con trỏ
S =0 không dịch chuyển hiển thị =1 dịch chuyển hiển thị
D 0=tắt hiển thị =1 bật hiển thị
C 0=tắt con trỏ =1 bật con trỏ
B 0=con trỏ không nhấp nháy =1 con trỏ nhấp nháy
S/C 0=di chuyển con trỏ =1 dịch chuyển hiển thị
R/L 0= dịch trái =1 dịch phải
DL 0=chế độ 4bit dữ liệu =1 chế độ 8bit dữ liệu
N 0=1 dòng 1= 2 dòng
F 0= font 5x7 1= font 5x10
BF 0= không bận 1= đang bận
2.5 Khối ổn áp dùng IC 7805:
Chương II
Quá trình thực hiện
I. Lập trình cho vi điều khiển:
#include<REGX51.H>
#include<stdio.h>
sbit int_adc=P2^3;
sbit rw_adc=P2^4;
sbit rd_adc=P2^5;
sbit EN_lcd=P2^2;
sbit RW_lcd=P2^1;
sbit RS_lcd=P2^0;
sbit THANG1=P1^0;
sbit THANG2=P1^1;
sbit THANG3=P1^2;
unsigned char x;
float volt;
void delay(unsigned int time)
{
unsigned int i;
for(i=0;i<time;++i);
}
void busy_flag(void)
{
P0=0xff;
RW_lcd=1;
RS_lcd=0;
do
{
EN_lcd=1;
delay(50);
EN_lcd=0;
x=P0;
x=x&&0x80; //giu lai bit D7 de so sanh
}
while(x==0x80);// cho bit D7 bang 0 thi thoat
}
void write_command( unsigned char lcd_command)
{
busy_flag();
P0=lcd_command;
RW_lcd=0;
RS_lcd=0;
EN_lcd=1;
delay(50);
EN_lcd=0;
delay(50);
}
void write_data(unsigned char lcd_data)
{
busy_flag();
P0=lcd_data;
RW_lcd=0;
RS_lcd=1;
EN_lcd=1;
delay(50);
EN_lcd=0;
delay(50);
}
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}
void thiet_lap_ban_dau(void)
{
write_command(0x03);//dua con tro ve vi tri dau dong
write_command(0x038);//2dong,font 5*7
write_command(0x06);//dich con tro sang phai
write_command(0x0e);//bat hien thi,con tro nhap nhay
}
void hienthi()
{
int tram,chuc,donvi,phan,phan1,phan2;
int n;
n=(int)(volt*100);
tram=n/10000;
chuc=(n%10000)/1000;
donvi=((n%10000)%1000)/100;
phan=((n%10000)%1000)%100;
phan1=phan/10;
phan2=phan%10;
if(tram!=0)
write_data(48+tram);
if((tram!=0)&&(chuc==0)&&(donvi==0))
write_data(48);
if((tram!=0)&&(chuc==0)&&(donvi!=0))
write_data(48);
if(chuc!=0)
write_data(48+chuc);
if((donvi!=0)||(phan1!=0)||(phan2!=0))
{
write_data(48+donvi);
write_data('.');
write_data(48+phan1);
write_data(48+phan2);
}
if((donvi==0)&&(phan1==0)&&(phan2==0))
write_data(48);
}
void main(void)
{
thiet_lap_ban_dau();
P3=0xff;
while(1)
{
write_command(0x01);//xoa man hinh
write_command(0x80);//tro ve dau dong thu nhat
write_string("DIEN AP:");
rd_adc=0;//cong dem 3 trang thai o dau ra Dout luon mo
rw_adc=0;//bat dau bien doi
delay(3);
rw_adc=1;
while(int_adc==0);
x=P3;
if(THANG1==0)
{
volt=(float)(x*5)/255;
if((volt<0)||(volt>2.5))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
if(THANG2==0)
{
volt=(float)(x*50)/255;
if((volt<0)||(volt>25))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
if(THANG3==0)
{
volt=(float)(x*500)/255;
if((volt<0)||(volt>250))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
}
}

More Related Content

PDF
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
PDF
Các chức năng chuyên dùng trên PLC S7- 200 - bộ môn tự động đo lường
DOC
Tài liệu PCL tổng hợp
DOC
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
PDF
96904122 analog
PDF
Tự học PLC CP1L
PDF
Chuong3 khoinguon
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
Các chức năng chuyên dùng trên PLC S7- 200 - bộ môn tự động đo lường
Tài liệu PCL tổng hợp
Đề tài: Thiết kế hệ thống đo nhiệt độ, HAY, 9đ
96904122 analog
Tự học PLC CP1L
Chuong3 khoinguon

What's hot (20)

PDF
Cau truc phan cung pic16 f8xx
DOCX
đê Cương vi mach sô
DOC
Chương 2: Sơ đồ khối điện thoại di động
PPT
xử lí module analog trong s7 300
PDF
Cac lenh lap trinh ladder
PPT
Cổng logic
PDF
8051 giao tiep lcd
PDF
Bài tập và ứng dụng PLC
PDF
Giáo trình vi điều khiển avr
PDF
Giáo trình plc omron cp1 l 1h [unlockplc.com]
PDF
Chuong2 taplenh-s7300
DOC
Chương 5: Khối thu phát
PPTX
Giao tiếp TTL-CMOS
PDF
Nhập môn Mạch số, Hà Lê Hoài Trung
PDF
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
DOCX
DOC
Co ban ve msp430
Cau truc phan cung pic16 f8xx
đê Cương vi mach sô
Chương 2: Sơ đồ khối điện thoại di động
xử lí module analog trong s7 300
Cac lenh lap trinh ladder
Cổng logic
8051 giao tiep lcd
Bài tập và ứng dụng PLC
Giáo trình vi điều khiển avr
Giáo trình plc omron cp1 l 1h [unlockplc.com]
Chuong2 taplenh-s7300
Chương 5: Khối thu phát
Giao tiếp TTL-CMOS
Nhập môn Mạch số, Hà Lê Hoài Trung
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
Co ban ve msp430
Ad

Similar to Tailieu.vncty.com do-an-vi-dieu-khien (20)

PDF
[123doc] - bao-cao-bai-tap-lon-mon-thiet-ke-he-thong-nhung.pdf
PDF
Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas
DOCX
BAOCAOTHUCTAPCOBAN.docx
DOC
Đồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.doc
PDF
Thiết-kế-IC-74HC595.pdf
PDF
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
DOC
Thiết kế biển quảng cáo, biển vẫy
PPTX
CR361-Bài 3. Vi điều khiển PIC - IO - Led_But.pptx
PDF
Thiết kế mạch đo và hiển thị nhiệt độ trên lcd
PDF
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
PDF
418 giaotrinh avr
PDF
Giaotrinh avr tech24.vn
PDF
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
PDF
Tailieu.vncty.com dong-ho-thoi-gian-thuc-ds1307-pic16 f87
DOCX
mạch cảm biến âm thanh sử dụng IC số.docx
PDF
Msptieuluan
DOC
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
PPT
BGKTMT Ch3 mức logic số
DOC
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
DOCX
chuong 1 KEM 2.docx de tai ve at89c52 led 7 thanh
[123doc] - bao-cao-bai-tap-lon-mon-thiet-ke-he-thong-nhung.pdf
Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas
BAOCAOTHUCTAPCOBAN.docx
Đồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.doc
Thiết-kế-IC-74HC595.pdf
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
Thiết kế biển quảng cáo, biển vẫy
CR361-Bài 3. Vi điều khiển PIC - IO - Led_But.pptx
Thiết kế mạch đo và hiển thị nhiệt độ trên lcd
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
418 giaotrinh avr
Giaotrinh avr tech24.vn
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
Tailieu.vncty.com dong-ho-thoi-gian-thuc-ds1307-pic16 f87
mạch cảm biến âm thanh sử dụng IC số.docx
Msptieuluan
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
BGKTMT Ch3 mức logic số
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
chuong 1 KEM 2.docx de tai ve at89c52 led 7 thanh
Ad

More from Trần Đức Anh (20)

PDF
Tailieu.vncty.com 5275 1261
PDF
Tailieu.vncty.com 5249 5591
PDF
Tailieu.vncty.com 5219 0449
PDF
Tailieu.vncty.com 5208 2542
PDF
Tailieu.vncty.com 5145 0887
PDF
Tailieu.vncty.com 5142 5647
PDF
Tailieu.vncty.com 5138 529
PDF
Tailieu.vncty.com 5125 4608
PDF
Tailieu.vncty.com 5117 1019
PDF
Tailieu.vncty.com 5106 4775
PDF
Tailieu.vncty.com 5089 2417
PDF
Tailieu.vncty.com 5088 8018
PDF
Tailieu.vncty.com 5067 1967
PPT
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
PPTX
Tailieu.vncty.com nhom 6-de_tai_flo_9602
PPT
Tailieu.vncty.com lai phan-tu_2413
PPTX
Tailieu.vncty.com duong hoa-hoc_3666
PDF
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
DOC
Tailieu.vncty.com tieu luanc4v-1324
DOCX
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com 5275 1261
Tailieu.vncty.com 5249 5591
Tailieu.vncty.com 5219 0449
Tailieu.vncty.com 5208 2542
Tailieu.vncty.com 5145 0887
Tailieu.vncty.com 5142 5647
Tailieu.vncty.com 5138 529
Tailieu.vncty.com 5125 4608
Tailieu.vncty.com 5117 1019
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com 5089 2417
Tailieu.vncty.com 5088 8018
Tailieu.vncty.com 5067 1967
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366

Tailieu.vncty.com do-an-vi-dieu-khien

  • 1. BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA : ĐIỆN TỬ ĐỒ ÁN MÔN HỌC ĐỀ TÀI: THIẾT KẾ BỘ ĐO ĐIỆN ÁP Ở 3 DẢI ĐO 0- 2.5V, 0- 25V, 0- 250V HIỂN THỊ TRÊN LCD. “Sai số cho phép là ± 10%” Giáo viên hướng dẫn: Nhóm sinh viên thực hiện: 1.Nguyễn Duy Hân 2.Trịnh Đình Thắng 3.Nguyễn Hữu Từ Mục lục Trang Mục lục……………………………………………………………………………2
  • 2. Lời nói đầu………………………………………………………………………..2 Chương I Mô tả ý tưởng: mô hình ý niệm, xây dựng sơ đồ khối…………………...4 I. Sơ đồ khối,sơ đồ mạch nguyên lý và mạch in …………….....................4 II. Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động của từng khối…………………………………………………………….….6 Chương II Quá trình thực hiện……………………………………………………………..17 I. Code lập trình C cho vi điều khiển…………….………………………..18 II. Hình dạng sản phẩm thưc tế hoàn thành…………………...................19 III.Tóm tắt bản báo cáo, những vấn đề chưa làm được……….……..20 LỜI NÓI ĐẦU Sự ra đời của các bộ vi xử lí nói chung,các bộ vi điều khiển nói riêng đã tạo ra một bước ngoặt lớn trong việc thiết kế các hệ thống xử lí thông tin,đo lường điều khiển và truyền thông.Kết quả là đã tạo ra được những sản phẩm như máy ảnh số,máy chơi nhạc
  • 3. MP3,đầu dĩa DVD,các bộ biến tần,PLC…ngày càng rẻ hơn,nhỏ gọn hơn,thông minh hơn và tiện dụng hơn. Hơn nữa,kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa. So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và có khả năng lập trình được để điều khiển. Nên rất tiện dụng và cơ động. Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, chúng em chỉ dùng vi điều hiển để đo điện áp ở ba dải đo 0-2.5V , 0-25 , 250V , đồng thời cho hiển thị lên LCD. Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến. Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì vậy nhóm rất mong được sự góp ý của thầy cô và các bạn. Chương I Mô tả ý tưởng,mô hình ý niệm,xây dựng sơ đồ khối I. Sơ đồ khối tổng quát,sơ đồ nguyên lý và mạch in
  • 4. 1.Sơ đồ khối tổng quát: 2. Sơ đồ nguyên lý mô phỏng dùng proteus: KHỐI ĐIỀU CHẾ VÀ KHUẾCH ĐẠI KHỐI XỬ LÝ TRUNG TÂM: 8051 KHỐI CHUYỂN ĐỒI TƯƠNG TỰ SANG SỐ: ADC0804 KHỐI NGUỒN ỔN ÁP SỬ DỤNG IC7805 KHỐI HIỂN THỊ: SỬ DỤNG LCD ĐẦU RA ỨNG DỤNG (đo điện áp ở ba thang đo: 0-2.5 V, 0-25V va 0-250V)
  • 5. 3. sơ đồ mạch in : II . Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động của từng khối 1. Các vi mạch chính sử dụng trong từng khối
  • 6. 1. Khối xử lý trung tâm: AT89C52 2. Trong khối điều chế và khuếch đại: LM358 3. Khối chuyển đổi: ADC 0804 4. Khối hiển thị: LCD 5. Trong Khối ổn áp: IC7805 2. Cấu tạo và nguyên lý hoạt động cơ bản của từng vi mạch 2.1 Vi điều khiển AT89C52: 2.1.2 cấu tạo và chức năng các khối của AT89S52. • CPU( CPU centralprocessing unit) bao gồm:  Thanh ghi tích lũy A  Thanh ghi tích lũy phụ B  Đơn vị logic học (ALU)  Thanh ghi từ trạng thái chương trình  Bốn băng thanh ghi  Con trỏ ngăn xếp • Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash. • Bộ nhớ dữ liệu( RAM) gồm 256 byte. • Bộ UART, có chức năng truyền nhận nối tiếp. • 3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện. • Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong. • Bộ lập trình( ghi chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương trình cho chíp mà không cần các bộ nạp chuyên dụng. • Bộ chia tần số với hệ số chia là 12. • 4 cổng xuất nhập với 32 chân. b, chức năng các chân của AT89C52  Port 0( P0.0=>P0.7) Port 0 gồm 8 chân, ngoài chức năng xuất nhập, port 0 còn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7), chức năng này sẽ được sử dụng khi 89c52 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch PIO…  Port 1( P1.0=>P1.7) Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác. Port1 có thể xuất nhập theo bit và theo byte.  Port 2( P2.0=>P2.7) Port 2 ngoài chức năng là cổng vào/ra như Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài. Port 3 Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể như sau:
  • 7. Bit Tên Chức năng P3.0 RXD Dữ liệu nhận cho Port nối tiếp P3.1 TXD Dữ liệu truyền cho Port nối tiếp P3.2 INT0 Ngắt bên ngoài 0 P3.3 INT1 Ngắt ngoài 1 P3.4 TO Ngõ vào của Timer/counter0 P3.5 T1 Ngõ vào của Timer/counter1 P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài. P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài.  Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài.  Chân ALE. ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 7473.  Chân /EA. Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài. EA=1 thì thực hiện chương trình trong RAM nội. EA=0 thực hiện ở RAM ngoài.  RST( reset) Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu.  XTAL1, XTAL2 2 chân này được nối song song với thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều khiển.  Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển. cấp qua chân 20 và 40. 2.1.3 nguyên lý hoạt động +Chân 9 được nối với mạch reset. Khi nhấn SW1 thì bộ vi điều khiển sẽ được khởi động lại từ đầu. +điện trở băng U1: có tác dụng làm điện trở kéo lên nguồn. + chân 18-19 được nối // với thạch anh 12Mhz. mạch có nhiệm vụ tạo dao động cho vi điều khiển. +từ chân P2.0=>P2.2 lần lượt được nối với Vee, RS, RW của LCD. Có nhiệm vụ điều khiển hoạt động của LCD. +chân P2.3=>P2.5 : 3 chân này được nối với lần lượt 3 chân của ADC : chân RD (Read), chân WR (Write) và chân Ngắt INTR (Interupt). Nhiệm vụ điều khiển hoạt động của bộ chuyển đổi số - tương tự. + chân P3.0=>P3.7. giao tiếp với ADC0804. Cổng P3 này có nhiệm vụ đọc điện áp thu được từ bộ chuyển đổi. +P0.0=>P0.7. Lần lượt được nối với đầu vào dữ liệu từ DB0=> DB7 của LCD. Có chức năng điều khiển hiển thị việc đo điện áp trên LCD . +P1.0=>P1.2 : được nối với switch kép để điều khiển chọn thang đo phù hợp. 2.2 Khuếch đại LM358: a, cấu tạo LM358 gồm có 2 con khuếch đại thuật toán: Con thứ 1: chân 2 ,3 vào, chân 1ra Con thứ 2: chân 5,6 vào, chân 7 ra Công dụng: khuếch đại điện áp và dòng điện nhận được từ LM35 để sau đó chuyển tiếp đến đầu vào IN của ADC 0804 Sơ đồ cấu tạo:
  • 8. Tính toán và cân chỉnh: +tại OA2: Xét tại: N2: 3 0 R Un− = 4R UrUn − =>Ur=Un . 3 43 R RR + . Xét tại P2: 1R UpUv − = 2R Up . => Up=Uv . 21 2 RR R + Mà coi như OA lý tưởng. Uv=Up;  Ur=Uv. 3 43 R RR + . 21 2 RR R + ; Do điện áp đầu ra của bộ khuếch đại chỉ giới hạn trong khoảng từ 0-5V khi dùng nguồn đơn. Nên chọn giá trị R2= R4=3,9 K R1=R3= 1 K Ω;Khi đó Ur=Vin ≈ 4Uv; 2.3 Bộ chuyển đổi tương tự-số: ADC 0804: 2.3.1 Cấu tạo: ADC 0804 là một bộ chuyển đổi tương tự số. Gồm có 20 chân. DB0-DB7: là 8 chân ra dữ liệu. RD: lối vào đọc WR :lối vào ghi. INTR: lối ra ngắt. CLKR/CLKIN: các lối vào điều khiển xung nhịp. VIN: lối vào analog dương 2.3.2 sơ đồ:
  • 9. Chip ADC0804 là bộ chuyển đổi tương tự số thuộc họ ADC800 của h ãng National Semiconductor. Chip này cũng được nhiều hãng khác sản xuất. Chip có điện áp nuôi +5V và độ phân giải 8 bit. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC. Thời gian chuyển đổi đ ược định nghĩa là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân. Đối với ADC0804 thì thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN và không bé hơn 110µs. Các chân khác của ADC0804 có chức năng như sau: • CS (Chip select) Chân số 1, là chân chọn Chip, đầu vào tích cực mức thấp được sử dụng để kích hoạt Chip ADC0804. Để truy cập ADC0804 thì chân này phải ở mức thấp. • RD (Read) Chân số 2, là một tín hiệu vào, tích cực ở mức thấp. Các bộ chuyển đổi đầu v ào tương tự thành số nhị phân và giữ nó ở một thanh ghi trong. RD đ ược sử dụng để có dữ liệu đã được chyển đổi tới đầu ra của ADC0804. Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng số 8 bit được đưa tới các chân dữ liệu (DB0 – DB7). • WR (Write) Chân số 3, đây là chân vào tích cực mức thấp được dùng để báo cho ADC biết bắt đầu quá trình chuyển đổi. Nếu CS = 0 khi WR tạo ra xung cao xuống thấp th ì bộ ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8 bit. Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống thấp. • CLK IN và CLK R CLK IN (chân số 4), là chân vào nối tới đồng hồ ngoài được sử dụng để tạo thời gian. Tuy nhiên ADC0804 cũng có một bộ tạo xung đồng hồ riêng. Để dùng đồng hồ riêng thì các chân CLK IN và CLK R (chân s ố 19) được nối với một tụ điện và một điện trở (như hình vẽ). Khi ấy tần số được xác định bằng biểu thức: Với R=10 kΩ, C=150pF và tần số f=606 kHz và thời gian chuyển đổi là 110 µs.
  • 10. • Ngắt INTR (Interupt) Chân số 5, là chân ra tích cực mức thấp. Bình thường chân này ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết l à dữ liệu chuyển đổi sẵn sàng để lấy đi. Sau khi INTR xuống thấp, cần đặt CS = 0 v à gửi một xung cao xuống thấp tới chân RD để đưa dữ liệu ra. • Vin (+) và Vin (-) Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai, trong đó Vin = Vin (+) – Vin (-). Thông thường Vin (-) được nối tới đất và Vin (+) được dùng làm đầu vào tưộng tự và sẽ được chuyển đổi về dạng số. • Vcc Chân số 20, là chân nguồn nuôi +5V. Chân này còn được dùng làm điện áp tham chiếu khi đầu vào Vref/2 để hở. • Vref/2 Chân số 9, là chân điện áp đầu vào được dùng làm điện áp tham chiếu. Nếu chân này hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải 0 - +5V. Tuy nhiên, có nhiều ứng dụng mà đầu vòa tương tự áp đến Vin khác với dải 0 - +5V. Chân Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0 - +5V. Bảng quan hệ điện áp Vref/2 với Vin Vref/2 (V) Vin (V) Kích thước bước (mV) Hở 0 – 5 5/256 = 19.53 2.0 0 – 4 4/256 = 15.62 1.5 0 – 3 3/256 = 11.71 1.28 0 – 2.56 2.56/256 = 10 1.0 0 – 2 2/256 = 7.81 0.5 0 – 1 1/256 = 3.90
  • 11. . D0 - D7 D0 - D7, chân số 18 – 11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là bit thấp nhất LSB). Các chân này được đệm ba trạng thái và dữ liệu đã được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp. .CÁC BƯỚC CỦA QUÁ TRÌNH CHUYỂN ĐỔI. • Đặt WR =RD=1; • Bắt đầu biến đổi. Đặt WR=0, trễ( )ms. • Đặt lại WR=1; • Phát hiện điểm kết thúc của quá trình biến đổi khi INTR xuống mức thấp. (được sử dụng bởi ngắt) • Đặt RD=0 và đọc dữ liệu từ DB0=>DB7. • Đặt RD=1. => kết thúc chu trình. 2.4 Hiển thị ( LCD 16x2) 2.4.1 cấu tạo Chức năng các chân của Module LCD 16x2: Chân số Ký hiệu Mức logic I/O Chức năng 1 Vss - - Nguồn cung cấp(GND) 2 Vdd - - Nguồn cung cấp(+5V) 3 Vee - I Điện áp để điều chỉnh độ tương phản 4 RS 0/1 I Lựa chọn thanh ghi 0= thanh ghi lệnh 1=thanh ghi dữ liệu 5 R/W 0/1 I 0=ghi vào LCD module 1=đọc từ LCD module 6 E 1,1=>0 I Tín hiệu cho phép 7 DB1 0/1 I/O Data bus line 0(LSB) 8 DB2 0/1 I/O Data bus line1 9 DB3 0/1 I/O Data bus line2 10 DB4 0/1 I/O Data bus line3 11 DB5 0/1 I/O Data bus line4 12 DB6 0/1 I/O Data bus line5 13 DB7 0/1 I/O Data bus line6 14 DB8 0/1 I/O Data bus line7(MSB) 15 Vcc - - Nguồn cung cấp 16 GND - - mass 2.4.2 mạch trong đồ án:
  • 12. 2.4.3 nguyên tắc hiển thị ký tự trên LCD một chương trình hiển thị ký tự trên LCD sẽ đi theo bốn bước sau: 1) Xóa toàn bộ màn hình. 2) Đặt chế độ hiển thị. 3) Đặt vị trí con trỏ (nơi bắt đầu của ký tự hiển thị). 4) Hiển thị ký tự. Chú ý: +Các bước 3, 4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự. + Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD cần phải kiểm tra cờ bận trước. Vì vậy, cần phải chủ động phân phối thời gian khi ra lệnh cho LCD( ví dụ sau khi xóa màn hình sau khoảng 2ms mới ra lệnh khác vì thời gian để LCD xóa màn hình là 1,64ms).+chế độ hiển thị mặc định sẽ là hiển thị dịch, vị trí con trỏ mặc định sẽ là đầu dòng thứ nhất. 2.4.4 mã lệnh của LCD HD4480 Lệnh Mã lệnh Mô tả Thời gian thi hành RS R/ W DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 Xóa màn hình 0 0 0 0 0 0 0 0 0 1 Xóa màn hình đưa con trỏ về vị trí đầu 1.64ms Đưa con trỏ về vị trí đầu 0 0 0 0 0 0 0 0 1 x Đưa con trỏ về vị trí đầu 1.64ms Thiết lập chế độ 0 0 0 0 0 0 0 1 I/D S Thiết lập hướng dịch chuyển con trỏ(I/D), dịch hiển thị(S) 40us Bật tắt hiển thị 0 0 0 0 0 0 1 D C B Bật tắt hiển thị, con trỏ; bật tắt chế độ nhấp nháy con trỏ 40us Dịch con trỏ hiển thị 0 0 0 0 0 1 S/C R/L * * Thiết lập chiều dịch chuyển của con trỏ và hiển thị 40us
  • 13. Thiết lập chức năng 0 0 0 0 1 DL N F * * Thiết lập độ dài của dữ liệu, số dòng và font chữ 40us Thiết lập địa chỉ CGRAM 0 0 0 1 CGRAM address Thiết lập địa chỉ CGRAM 40us Thiết lập địa chỉ DDRAM 0 0 1 DDRAM address Thiết lập địa chỉ DDRAM 40us Đọc cờ báo bận và địa chỉ CGRAM/ DDRAM 0 1 BF CGRAM/ DDRAM address Đọc cờ báo bận và địa chỉ của CGRAM hoặc DDRAM( tùy vào lệnh trước đó) 40us Ghi CGRAM/ DDRAM 1 0 Write data Ghi dữ liệu vào CGRAM hoặc DDRAM. 40us Đọc CGRAM/ DDRAM 1 1 Read data Đọc dữ liệu từ CGRAM hoặc DDRAM 40us 2.4.5 các bit viết tắt trong mã lệnh: Tên bit Mô tả I/D 0=không dịch chuyển vị trí con trỏ 1=dịch chuyển vị trí con trỏ S =0 không dịch chuyển hiển thị =1 dịch chuyển hiển thị D 0=tắt hiển thị =1 bật hiển thị C 0=tắt con trỏ =1 bật con trỏ B 0=con trỏ không nhấp nháy =1 con trỏ nhấp nháy S/C 0=di chuyển con trỏ =1 dịch chuyển hiển thị R/L 0= dịch trái =1 dịch phải DL 0=chế độ 4bit dữ liệu =1 chế độ 8bit dữ liệu N 0=1 dòng 1= 2 dòng F 0= font 5x7 1= font 5x10 BF 0= không bận 1= đang bận 2.5 Khối ổn áp dùng IC 7805:
  • 14. Chương II Quá trình thực hiện I. Lập trình cho vi điều khiển: #include<REGX51.H> #include<stdio.h> sbit int_adc=P2^3; sbit rw_adc=P2^4; sbit rd_adc=P2^5; sbit EN_lcd=P2^2; sbit RW_lcd=P2^1; sbit RS_lcd=P2^0; sbit THANG1=P1^0; sbit THANG2=P1^1; sbit THANG3=P1^2; unsigned char x; float volt; void delay(unsigned int time) { unsigned int i; for(i=0;i<time;++i); } void busy_flag(void) { P0=0xff; RW_lcd=1; RS_lcd=0; do { EN_lcd=1; delay(50); EN_lcd=0; x=P0; x=x&&0x80; //giu lai bit D7 de so sanh } while(x==0x80);// cho bit D7 bang 0 thi thoat } void write_command( unsigned char lcd_command) { busy_flag(); P0=lcd_command; RW_lcd=0; RS_lcd=0; EN_lcd=1; delay(50); EN_lcd=0; delay(50); } void write_data(unsigned char lcd_data) { busy_flag(); P0=lcd_data; RW_lcd=0; RS_lcd=1;
  • 15. EN_lcd=1; delay(50); EN_lcd=0; delay(50); } void write_string(char *s) { while(*s) { write_data(*s); s++; } } void thiet_lap_ban_dau(void) { write_command(0x03);//dua con tro ve vi tri dau dong write_command(0x038);//2dong,font 5*7 write_command(0x06);//dich con tro sang phai write_command(0x0e);//bat hien thi,con tro nhap nhay } void hienthi() { int tram,chuc,donvi,phan,phan1,phan2; int n; n=(int)(volt*100); tram=n/10000; chuc=(n%10000)/1000; donvi=((n%10000)%1000)/100; phan=((n%10000)%1000)%100; phan1=phan/10; phan2=phan%10; if(tram!=0) write_data(48+tram); if((tram!=0)&&(chuc==0)&&(donvi==0)) write_data(48); if((tram!=0)&&(chuc==0)&&(donvi!=0)) write_data(48); if(chuc!=0) write_data(48+chuc); if((donvi!=0)||(phan1!=0)||(phan2!=0)) { write_data(48+donvi); write_data('.'); write_data(48+phan1); write_data(48+phan2); } if((donvi==0)&&(phan1==0)&&(phan2==0)) write_data(48); } void main(void)
  • 16. { thiet_lap_ban_dau(); P3=0xff; while(1) { write_command(0x01);//xoa man hinh write_command(0x80);//tro ve dau dong thu nhat write_string("DIEN AP:"); rd_adc=0;//cong dem 3 trang thai o dau ra Dout luon mo rw_adc=0;//bat dau bien doi delay(3); rw_adc=1; while(int_adc==0); x=P3; if(THANG1==0) { volt=(float)(x*5)/255; if((volt<0)||(volt>2.5)) { write_command(0xc0);//tro ve dau dong thu hai write_string(" KHONG DO DUOC "); delay(50000); } else { hienthi(); write_string("V"); write_command(0xc0);//tro ve dau dong thu hai write_string("--HAN-THANG-TU--"); delay(50000); } } if(THANG2==0) { volt=(float)(x*50)/255; if((volt<0)||(volt>25)) { write_command(0xc0);//tro ve dau dong thu hai write_string(" KHONG DO DUOC "); delay(50000); } else { hienthi(); write_string("V"); write_command(0xc0);//tro ve dau dong thu hai write_string("--HAN-THANG-TU--"); delay(50000); } } if(THANG3==0) { volt=(float)(x*500)/255; if((volt<0)||(volt>250))
  • 17. { write_command(0xc0);//tro ve dau dong thu hai write_string(" KHONG DO DUOC "); delay(50000); } else { hienthi(); write_string("V"); write_command(0xc0);//tro ve dau dong thu hai write_string("--HAN-THANG-TU--"); delay(50000); } } } }