Đề tài: Lập trình vi điều khiển
AT89C51 để đo và hiển thị nhiệt độ
Giới thiệu chung về vi điều khiển AT89C51
1.1 VI ĐIỀU KHIỂN AT89C51
1.1.1. Sơ đồ khối và ý nghĩa các chân của 89c51
8051 có 4 cổng vào/ra số
• P0 có 8 bit
là P0.0 đến P0.7
• P0 có 8 bit
là P1.0 đến P1.7
• P0 có 8 bit
là P2.0 đến P2.7
• P0 có 8 bit
là P3.0 đến P3.7
Ngoài chức năng là các cổng vào/ra
số thì P0 còn là 8 bit (D0 đến D7)
của bus dữ liệu hoặc là 8 bit thấp
(A0 đến A7) của bus địa chỉ ,P2 lá 8
bit cao (A8 đến A15) của bus địa
chỉ khi cần thiết mở rộng thêm các
ngoại vi, bộ nhớ ngoài cho 8051
* RESET: (Tín hiệu vào): Dùng để khởi động lại toàn bộ hệ thống khi chương
trinh đang chạy mà gặp lỗi
* RxD,TxD: Là hai chân nhận và truyền số liệu của cổng truyền thông nối tiếp
* INT0,INT1: Là hai chân nhận tín hiệu ngắt từ bên ngoài
* WR ( Tín hiệu ra) Cho phép viết dữ liệu tới các ngoại vi, bộ nhớ bên ngoài vi
điều khiển
* RD: ( Tín hiệu ra) Cho phép đọc dữ liệu từ các ngoại vi,bộ nhớ dữ liệu ngoài
vi điều khiển
* X1,X2: Dùng để tạo xung nhịp cho vi điều khiển
* Vcc,GND: Cấp nguồn cho vi điều khiển (Vcc=5 VDC)
* IP Thanh ghi điều khiển các mức ưu tiên ngắt 0B8H
* IE Thanh ghi cho phép/ che chắn các ngắt 0A8H
TMOD Thanh ghi chọn chế độ Time/Counter 0,1 89H
* TCON Thanh ghi điều khiển Time/Counter 0,1 88H
*+T2CON Thanh ghi điều khiển Time/Counter 2 0C8H
TH0 Byte cao của bộ đếm trong Timer/Counter 0 8CH
TL0 Byte thấp của bộ đếm trong Timer/Counter 0 8AH
TH1 Byte cao của bộ đếm trong Timer/Counter 1 8DH
TL1 Byte thấp của bộ đếm trong Timer/Counter 1 8BH
+ TH2 Byte cao của bộ đếm trong Timer/Counter 2 0CDH
+ TL2 Byte thấp của bộ đếm trong Timer/Counter 2 0CCH
+ RCAP2H
Byte cao của thanh ghi Capture/ Reload trong
Timer/Counter 2
0CBH
+ RCAP2L
Byte thấp của thanh ghi Capture/ Reload trong
Timer/Counter 2
0CAH
* SCON Thanh ghi điều khiển cổng truyền thông nối tiếp 98H
SBUF Bộ đếm cổng truyền thông nối tiếp 99H
PCON Thanh ghi điều khiển công suất tiêu thụ của 8051 87H
Chú ý: *: Chỉ các thanh ghi truy cập theo bit
+: Các thanh ghi chỉ có trong 89c52
1.1.3. Bộ phát xung nhịp
- Dùng để tạo xung đồng bộ cho cả hệ thống vi điều khiển làm việc. Có 2 cách để
tạo xung nhịp là dùng thạch anh hoặc lấy xung dao động từ nguồn ngoài. Thông
thường tần số xung nhịp là: 12MHz. 11,0592MHz. 24MHz
X1
X2
=
CT
Làm Counter (Đếm xung từ bên ngoài)
0/
=
CT
Làm Timer ( Đếm xung hệ thống)
GATE: Khi TR
x
=1 (x=0,1) nếu:
+ GATE=0 thì cho phép T/C làm việc
+ GATE=1 thì T/C được phép làm việc nếu INT
x
=1
Các chế độ làm việc
M1 M0 Chế độ Mô tả
0 0 0 Bộ đếm 13bit
0 1 1 Bộ đếm 16bit
1 0 2 Chế độ Auto - Reload
1 1 3 Timer0 là bộ đếm 8bit Time1 dừng
Thanh ghi TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
T2EX
TF2 (T2CON.2): Bit điều khiển cho phép T/C2 chạy hoặc dừng
TF2 (T2CON.1): Lựa chọn T/C2 làm việc ở chế độ Timer hoặc Counter
* Các chế độ làm việc của T/C2
RCLK+TCLK
RLCP /
TR2 MODE
0 0 1 Chế độ Auto – Reload
0 1 1 Chế độ Capture
1 x 1 Chế độ phát Baud rate
X x 0 Không hoạt dộng
1.1.5. Ngắt và xử lý các ngắt
• Ngắt tràn của T0, T1: TF0,TF1
• Ngắt cổng truyền thông nối tiếp: RI, TI
• Ngắt bên ngoài vi điều khiển:
0INT
,
1INT
• Ngắt của Timer 2: TF2
* Thanh ghi cho phép ngắt IE
EA
-
ET2
ES
ET1
EX1
ET0
EX0
IE
EA : Cho phép/cấm tất cả ngắt ngoài
Chân 11 Vcc - Chân nhận điện nguồn dương
Chân 12 Vref+ - Chân nhận(input) điện áp tham chiếu.
Chân 13 GND - Chân nhận điện áp âm(Ground=0v)
Chân 14 2(-7) - Ngõ ra Tín hiệu số- Data Bit 7
Chân 15 2(-6) - Ngõ ra Tín hiệu số- Data Bit 6
Chân 16 Vref- - Voltage Reference Negative Input
Chân 17 2(-8) - Ngõ ra Tín hiệu số- Data bit 8
Chân 18 2(-4) - Ngõ ra Tín hiệu số- Data Bit 4
Chân 19 2(-3) - Ngõ ra Tín hiệu số- Data Bit 3
Chân 20 2(-2) - Ngõ ra Tín hiệu số- Data Bit 2
Chân 21 2(-1) - Ngõ ra Tín hiệu số- Data Bit 1
Chân 22 ALE - Address Latch Enable
Chân 23 ADD C - Address Input C
Chân 24 ADD B - Address Input B
Chân 25 ADD A - Address Input A
Chân 26 IN0 - ngõ vào tín hiệu Analog Input 0
Chân 27 IN1 - ngõ vào tín hiệu Analog Input 1
Chân 28 IN2 - ngõ vào tín hiệu Analog Input 2
1.2.2. Khảo sát ý nghĩa hoạt động của các chân ADC0808
- IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7 : 8 ngõ vào tín hiệu tương tự.
- A, B, C : các đường địa chỉ để chọn kênh ở ngõ vào
Các đường địa chỉ Chọn kênh ngõ
vào
A B C
L L L IN0
H L L IN1
L H L IN2
H H L IN3
L L H IN4
H L H IN5
- OE : cho phép xuất tín hiệu ra
OE = 1 : cho phép.
OE = 0 : không cho phép.
- V
Ref+
, V
Ref-
: điện áp tham chiếu dương và âm, dùng để thay đổi độ phân giải.
Ta có công sau:
N = 256*(V
i
– V
Ref-
)/(V
Ref+
- V
Ref-
)
Với : N : 1 số nhị phân được chuyển đổi
V
i
: điện áp ngõ vào tín hiệu tương tụ.
Để tiện cho việc tính toán thông thường ta nối chân V
Ref-
xuống mass.
1.2.3 Các bước để chuyển đổi của ADC
• Chọn kênh ngõ vào
• Chốt địa chỉ kênh vào ALE = 1).
• Bắt đầu chuyển đổi (START=1)
• Chờ chuyển đổi xong , đọc kết quả
1
2
3
4
5
9
8
7
6
10
Vcc
a
b
c
d
e
f
g
dp
Để các thanh sáng ta cấp dòng điện ( 5 – 20mA) chảy qua các Diode tương ứng.Để
hiện thị các số 0 – 9 trong hệ thập phân ta lựa chọn cách thanh cần sáng để hiện thị
được các số tương ứng. Như vậy ta nối chân A vào dương nguồn (5VDC) còn các
chân a, b, c, d, e, f, g, và dp điều khiển chúng sao cho:
Nếu = “1” các thanh tối
Nếu = “0” các thanh sáng
b. Loại Cathode chung
Đối với loại Cathode chung thì chân C nối xuống đất (0VDC) còn các chân a, b, c,
d, e, f, g, và dp điều khiển chúng sao cho:
Nếu = “1” các thanh sáng
Nếu = “0” các thanh tối
Mã bảy thanh các số 0 – 9 loại Anode chung
DEC dp g f e d c b a
Mã Bảy
Thanh
0
1
2
3
4
5
6
7
8
9
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
0
0
1
0
0
đến +150
C
0
)
1. Nối Vcc
2. Nối vào ADC
3. Nối đất
1.4.2 Đặc tính của họ LM35:
- Hoạt động với điện áp từ 4V đến 30V
- Tỷ lệ tuyến tính với hệ số 10mV/1
C
0
- Thích hợp với các ứng dụng điều khiển
Một số thông số của họ LM35:
Dải nhiệt độ và sự thay đổi trở kháng theo nhiệt độ của LM35
Nhiệt độ (
C
0
)
Trở kháng của cảm biến (k
Ω
)
0 29.490
25 10.000
50 3.893
75 1.700
100 0.817
1.4.3 Cách chọn cảm biến ho LM35:
Mã SP Dải nhiệt độ Độ chính xác Đầu ra
C
0
10mV/F
LM35C
-40
C
0
TO +110
C
0
+2.0
C
0
10mV/F
LM35D
0
C
0
TO +100
C
0
+2.0
C
0
10mV/F
1.5. CÁC LINH KIỆN KHÁC
1.5.2. Phím bấm
- Sơ đồ nguyên lý
Vcc
Output
THANH
2.1.2. Chức năng của từng khối
Khối các phím bấm: Dùng để cho phép đo nhiệt độ được nối vào
chân P3.7
Khối cảm biến nhiệt độ LM35: Các tác dụng đo sự thay đổi nhiệt
độ từ bên ngoài môi trường, hoặc 1 hệ thông cần điều khiển. Và được nối với
kênh 1 của bộ biến đổi tương tự sang số ADC0808
Khối cảm bộ biến đổi ADC 0808 : Dùng để chuyển đổi tín hiệu từ
tương tự sang tín hiệu số được ghép nối với cổng P1 và các chân điều khiển
được nối với các chân P3.0 – P3.6
Khối hiện thị: Bao gồm bốn LED bảy thanh, dùng để hiện thị nhiệt
độ của môi trường
Khối vi xử lý: Xử lý các phép toán và đưa ra hiện thị
Chi tiết xem sơ đồ nguyên lý
2.2. SƠ ĐỒ NGUYÊN LÝ
class="bi x4 y28 w17 h20"
2.3. SƠ ĐỒ THUẬT TOÁN TOÀN BỘ CHƯƠNG TRÌNH
BAT DAU
ON=1
?
CONVERT
HEXTOBCD
BCDTO7T
DISPLAY
P3.7=0
?
S
S
Đ
Đ