Tải bản đầy đủ (.pdf) (86 trang)

báo cáo thực hành vi điều khiển

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 (1.62 MB, 86 trang )

MỤC LỤC
CHƯƠNG 1 ...................................................................................................................4
GIỚI THIỆU CHUNG..................................................................................................4
1.1 GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN ........................................................ 4
1.1.1 Các dòng vi điều khiển hiện nay ..................................................................... 4
1.2 Họ vi điều khiển 8051 ........................................................................................ 5
1.3 Giới thiệu board mạch Easy8051 .......................................................................... 6
1.3.1 Những tính năng chính của Easy8051 ............................................................ 6
1.3.2 Tài nguyên phần cứng .................................................................................... 7
CHƯƠNG 2: THỰC HÀNH ........................................................................................8
BÀI THỰC HÀNH SỐ 1: CHỨC NĂNG ĐIỀU KHIỂN CỔNG I/O LED ĐƠN .....8
1. Mục đích ................................................................................................................. 8
2. Yêu cầu ................................................................................................................... 8
3. Sơ đồ nguyên lý ...................................................................................................... 8
4. Lựa chọn thiết bị ....................................................................................................11
5. Trình tự thực hiện ..................................................................................................12
6. Lưu ý: ....................................................................................................................13
BÀI THỰC HÀNH SỐ 2: LED 7 THANH ................................................................14
1.Mục đích .................................................................................................................14
2.Yêu cầu ...................................................................................................................14
3. Sơ đồ nguyên lý .....................................................................................................14
Nguyên lý hoạt động: .................................................................................................15
4.Lựa chọn thiết bị .....................................................................................................17
5.Trình tự thực hiện ...................................................................................................18
6.Lưu ý ......................................................................................................................19
BÀI THỰC HÀNH SỐ 3: CHỨC NĂNG NGẮT TIMER – ĐỒNG HỒ SỐ ..........20
1.Mục đích .................................................................................................................20
2.Yêu cầu ...................................................................................................................20
3.Sơ đồ nguyên lý ......................................................................................................20
1



4. Lựa chọn thiết bị ....................................................................................................32
5.Trình tự thực hiện ...................................................................................................32
Lưu ý .........................................................................................................................33
BÀI THỰC HÀNH SỐ 4: CHỨC NĂNG NGẮT NGOÀI – BỘ ĐO TẦN SỐ ........34
1.Mục đích .................................................................................................................34
2.Yêu cầu ...................................................................................................................34
3.Sơ đồ nguyên lý ......................................................................................................34
4.Lựa chọn thiết bị .....................................................................................................37
5.Trình tự thực hiện ...................................................................................................38
6.Lưu ý ......................................................................................................................38
BÀI THỰC HÀNH SỐ 5: CHỨC NAWG TRUYỀN THÔNG NỐI TIẾP ..............39
1.Mục đích .................................................................................................................39
2.Yêu cầu ...................................................................................................................39
3.Sơ đồ nguyên lý ......................................................................................................39
4.Lựa chọn thiết bị .....................................................................................................41
5.Trình tự thực hiện ...................................................................................................42
6.Lưu ý ......................................................................................................................43
BÀI THỰC HÀNH SỐ 6: LED MA TRẬN ...............................................................44
1.Mục đích .................................................................................................................44
2.Yêu cầu ...................................................................................................................44
3.Sơ đồ nguyên lý ......................................................................................................44
4.Lựa chọn thiết bi. ....................................................................................................44
5.Trình tự thực hiện ...................................................................................................45
BÀI THỰC HÀNH SỐ 7: ĐO NHIỆT ĐỘ HIỂN THỊ LCD ....................................46
1.Mục đích .................................................................................................................46
2.Yêu cầu ...................................................................................................................46
3.Sơ đồ nguyên lý ......................................................................................................46
4.Lựa chọn thiết bi. ....................................................................................................52
Trình tự thực hiện ......................................................................................................53

BÀI THỰC HÀNH SỐ 8: ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ MỘT CHIỀU .......54
2


1.Mục đích .................................................................................................................54
2.Yêu cầu ...................................................................................................................54
3.Sơ đồ nguyên lý ......................................................................................................54
4.Lựa chọn thiết bị .....................................................................................................59
5.Trình tự thực hiện ...................................................................................................59
BÀI THỰC HÀNH SỐ 9: ĐIỀU KHIỂN TỪ XA CÁC THIẾT BỊ ĐIỆN ...............60
1.Mục đích .................................................................................................................60
2.Yêu cầu ...................................................................................................................60
3.Sơ đồ nguyên lý ......................................................................................................60
BÀI THI: MẠCH KHÓA SỐ .....................................................................................64
CHƯƠNG 1: PHÂN TÍCH HỆ THỐNG................................................................64
1.Phân tích và lựa chọn phương án ............................................................................64
a) Yêu cầu của hệ thống: .........................................................................................64
b) Lựa chọn phương án ...........................................................................................64
2.Xác định bài toán và giới hạn đề tài ........................................................................64
a) Xác định bài toán ................................................................................................64
b) Giới hạn của đề tài ..............................................................................................65
CHƯƠNG 2 :THIẾT KẾ HỆ THỐNG......................................................................66
1. Sơ đồ khối tổng thể của hệ thống ...........................................................................66
2.Các khối trong hệ thống ..........................................................................................66
2.1

Khối điều khiển trung tâm .............................................................................67

2.2 Khối hiển thị .....................................................................................................67
2.3


Khối bàn phím ...............................................................................................68

2.4. Khối động cơ và báo động ...............................................................................68
2.5. Khối nguồn ....................................................................................................68
CHƯƠNG 3: HỆ THỐNG KHÓA SỐ ......................................................................69
1.Sơ đồ nguyên lý ......................................................................................................69
2. Nguyên lý hoạt động ..............................................................................................69
3.Code chương trình ..................................................................................................70
3


CHƯƠNG 1
GIỚI THIỆU CHUNG
1.1 GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN
1.1.1 Các dòng vi điều khiển hiện nay
Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ
dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp
với các khối ngoại vi như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang
tương tự và tương tự sang số,...
Hiện nay, các bộ vi điều khiển 8 bít đứng đầu là họ 8051 có số lượng lớn các nhà cung
cấp đa dạng: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra và Dallas,
semicndictior.
a)Vi điều khiển của Atmel
Atmel Atmel là một hãng cung cấp vi điều khiển lớn, sản phẩm vi điều khiển của
gồm:
- Dòng vi điều khiển dựa trên kiến trúc 8051 của Intel như 83xx, 87xx, 89xx...
- Dòng vi điều khiển AT91CAP như AT91CAP7S250A,AT91CAP7S450A.... với tần
số hoạt động từ 80 đến 200 MHz, 2 đến 4 kênh PWM, 10 kênh ADC 10 bít, ghép
nối được với các module SDRAM bên ngoài.

- Dòng vi điều khiển AT91SAM 32-bit ARM- based bộ nhớ chương trình có thể tới
2Mb, tần số hoạt động đến 240 MHz.
- Dòng AVR 8-bit kiến trúc RISC như AT90PWM1, Atmega 128, Atmega 16,
Atmega 32.
- Dòng AVR 32 32- bit MCU/DSP như AVR32 UC3A, AVR 32 UC3B ..... là những
bộ vi điều khiển 32 bit có thêm các lệnh xử lý tín hiệu số để xử lý âm thanh, hình
ảnh.
- Dòng FPSLIC như: AT94K05L, AT94K10L , ATFS40....đây là sự kết hợp vi điều
khiển AVR với mảng cổng Logic lập trình FPGA trên 1 chip rất phù hợp để tạo ra
các hệ thống số trên 1 chip duy nhất.
- Dòng vi điều khiển 4bit cho các ứng dụng đơn giản MARC4 như: ATAM510,
ATAR940.....
b)Vi điều khiển của Microchip
- Dòng 8bit như: PIC10, PIC12, PIC14, PIC16, PIC18, với bộ nhớ kiểu flash, OTP,
ROM hoặc ROMless dung lượng từ 0,5 đến 256Kb.
4


- Dòng 16bit như PIC24F, PIC24H.
- Dòng xử lý tín hiệu số 16bit như: dsPIC30Fxxxx, dsPIC33FJxxxx.
c)Vi điều khiển của Cypress
Cypress nổi tiếng với dòng sản phẩm PsoC, đây là những vi mạch tích hợp vi điều
khiển, các linh kiện tương tự ( các bộ khuếch đại, các bộ biến đổi A/D, D/A, các bộ
lọc, các bộ so sánh...) và các linh kiện số( bộ định thời, bộ đếm, bộ tạo xung
PWM,SPI,UART,I2C...) trên một chip duy nhất. Việc tích hợp hàng trăm khối chức
năng cùng với bộ vi điều khiển trên một chip cho phép: giảm thời gian thiết kế, thu
gọn kích thước sản phẩm, giảm công suất tiêu thụ và giảm giá thành sản phẩm.
d)Vi điều khiển của Hitachi
- H8 là dòng vi điều khiển được phát triển bởi HITACHI, được sản xuất bởi Rcnesas
Technology. H8 gồm các dòng sản phẩm: H8/300, H8/300H, H8/500, H8S( vi điều

khiển 32 bit kiểu CISC). Các vi điều khiển họ H8 được sử dụng rộng rãi trong các
sản phẩm dân dụng và công nghiệp như: Tivi, đầu DVD, camera, PLC,biến tần....
e)Vi điều khiển của Motorola .
Motorola sản xuất dòng vi điều khiển 68xx như: 6801, 6805,6809,6811.....một sản
phẩm tiêu biếu của Motorolo là 68HC11, đây là một bộ vi điều khiển 8bit; 16bit địa
chỉ; tập lệnh tương thích với các phiên bản trước như: 6801, 6805, 6809; có tich hợp
bộ biến đổi A/D, bộ tạo xung PWM, cổng truyền thông đồng bộ - không đồng bộ
RS232, SPI.
f)Vi điều khiển của Maxim
Các sản phẩm vi điều khiển do Maxim cung cấp gồm:
- Vi điều khiển MAXQ 16bit kiến trúc RISC như MAXQ3212, MAXQ2000.
- Các sản phẩm dựa trên kiến trúc 8051 của Intel như vi điều khiển tích hợp đồng hồ
thời gian thực DS87C530, vi điều khiển tích hợp biến đổi A/D 10bit DS80CH11, vi
điều khiển tích hợp giao tiếp mạng Ethernet DS80C400, DS80C430 ( rất phù hợp
thiết kiế IP camera, các trạm đo/điều khiển phân tán AM như DS5250,
DS2250,DS2252...)
1.2 Họ vi điều khiển 8051
1.2.1 Họ vi điều khiển 8051
Có hai bộ vi điều khiển thành viên khác của họ 8051 lầ 8052 và 8031.

5


Bảng: So sánh các đặc tính của các thành viên họ 8051.
Đặc tính
ROM trên chip
RAM
Bộ định thời
Cổng nối tiếp
Nguồn ngắt


8051
4K byte
128 byte
2
1
6

8052
8K byte
256 byte
3
1
8

Do vậy tất cả chường trình viết cho 8051 đều chạy được trên 8052 nhưng điều ngược lại
là không đúng.
1.3 Giới thiệu board mạch Easy8051
Easy8051 là kit phát triền hoàn chỉnh về kỹ thuật, đầy đủ tính năng và dễ sử dụng
cho ATMEL 89xxx Microcontroller.
Easy8051 có thiết kế một Header ISP, cho phép người dùng có thể sử dụng các
công cụ lập trình và gỡ lỗi khác như ICE52 Emulator, SP200S Enhanced,
AT89SXX…theo chuẩn ISP, vì vậy không cần tháo chip. Bạn chỉ cần viết chương trình
--> biên dịch --> nạp và kết quả sẽ chạy ngay, không cần phải bận tâm gì khác.
Easy8051 được tối ưu thiết kế theo kiểu modules, Các module được kết nối hoặc
ngắt khỏi MCU một cách linh hoạt bằng Jumper hoặc DipSW rất tiện lợi và gọn gàng.
1.3.1 Những tính năng chính của Easy8051
- Power Supply: Sử dụng nguồn ngoài AC/DC 7 ~ 12V có công tắc nguồn ON/OFF
- Có đường ISP programmer sẵn sàng sử dụng cho các mạch nạp và gỡ lỗi ISP (Ví dụ:
ICE52 Emulator, SP200S Enhanced, AT89SXX… ISP programmer)

- Suport 89xxx DIP40 (có thể dùng cho DIP20 bằng cách sử dụng Adapter chuyển chân)
- RS-232 Comunication giao tiếp truyền dữ liệu với PC
- DS1820 Digital thermometer dùng để đo nhiệt độ từ -55ºC to 125ºC.
- RTC DS1307 Real time clock kết nối hoặc ngắt khỏi 8051 qua DIPSW
- Battery Backup 3V dùng cho RTC DS1307
- 6 Led 7seg Anode chung multiplex mode. kết nối hoặc ngắt khỏi 8051 qua DIPSW
- LCD 16x2 4 BIT có biến trở chỉnh độ tương phản
6


- Graphic LCD 128x64 / Charracter LCD16x2 8-bit có biến trở chỉnh độ tương phản
- 8 led đơn anod chung nối qua header 5x2
- 8 Switch pull up/down nối qua header 5x2
- Xtal sử dụng socket dễ dàng thay đổi
- I/O Direct port kiểu header 5x2 (gồm 8 bit port và VCC, GND) Pull Up/Down
- RESET Switch - loại lớn cho phép dễ dàng Reset mạch bằng tay
- SPI ADC sử dụng MCP3204 (Lựa chọn thêm)
- SPI DAC sử dụng MCP4921 (Lựa chọn thêm)
- Điện áp tham chiếu 4.096V REF sử dụng MCP1541 (Lựa chọn thêm)
- Mạch in xuyên lớp chất lượng cao kích thước 140x200 mm
- Có Mica bảo vệ bên dưới khỏi sợ ngắn mạch
1.3.2 Tài nguyên phần cứng
Danh sách tài nguyên phần cứng

Số
1
2
3
4
5

6
7
8

Số
9
10
11
12
13
14
15
16

Mô tả
Power module
ISP programmer
RS232 conmunication module
SPI ADC
ISP DAC
6-digital display module
LCD1602 module
GLCD12864/ LCD1602 8bit module
7

Mô tả
DS1370 module
8 button module
8 single LED module
DS18B20 thermometer module

Reset button
40P chip ZIF socket
I/O external output
MCP1541 4,096V REF


CHƯƠNG 2: THỰC HÀNH
BÀI THỰC HÀNH SỐ 1
LẬP TRÌNH CHỨC NĂNG I/O VỚI LED ĐƠN
1. Mục đích
- Thực hành với các công cụ phần mềm: phần mềm lập trình KeilC, phần mềm mô
phỏng Proteus, phần mềm nạp chương trình cho vi điều khiển ISP_Prog.
- Lập trình chức năng vào/ra của 8051
- Điều khiển LED đơn
- Viết các chương trình con tạo thời gian trễ
2. Yêu cầu
- Tính toán, lựa chọn được các thông số của linh kiện, giá trị điện trở, dòng, áp cấp
cho led.
- Lập trình điều khiển được led sáng, tắt theo yêu cầu.
- Nắm bắt được chức năng các phần tử trong sơ đồ mạch.
- Biết cách sử dụng các phần mềm lập trình, phần mềm mô phỏng, phần mềm nạp
chương trình cho vi điều khiển.
- Lập trình được các bài toán yêu cầu, hiểu rõ từng câu lệnh, từng hàm, chương
trình con về quy tắc, cấu trúc câu lệnh cũng như chức năng tác dụng của nó.
3. Sơ đồ nguyên lý

Hình 1 – Sơ đồ nguyên lý mạch điều khiển LED đơn
Nguyên lý hoạt động: Theo như sơ đồ nguyên lý ở trên, để led sáng ta cần cấp mức
1, led tắt ta cấp mức 0.
8



Ví dụ :
o 8 LED chạy sáng dồn từ trái sang phải
o 8 LED chạy sáng dồn từ phải sang trái
o 8 LED chạy sáng từ giữa ra hai bên
o 8 LED chạy sáng hai bên vào giữa
Begin

Lặp vô hạn

Chạy xuôi

P1=0xfe;
so1[5]={0xff,0xe7,0xc3,0x81,0x00};
so2[5]={0xff,0x7e,0x3c,0x18,0x00};

n=0;k<8

i=0;i<5;

P1= so1(i);

P1=P1<<1;

Tre(5000);

Tre(5000);

Chạy ngược


Chạy giữa ra

Tre(3000);

Tre(3000);

k=0;k<8;

j=0;j<5;
Chạy ngoài vào.

P1=P1>>1;

P1=so2(j);

Tre(5000);

Tre(5000);

Tre(3000);

Tre(3000);

Hình 2 – Lưu đồ thuật toán điều khiển led nháy 8 led
9


 Chương trình điều khiển 8 led đơn.
#include <REGX51.H>

unsigned char so1[5]={0xff,0xe7,0xc3,0x81,0x00};
unsigned char so2[5]={0xff,0x7e,0x3c,0x18,0x00};
void tre(long t)
{while(t--) ; }
void chayxuoi()
{ unsigned char n; // Khai bao them bien n cho vong for
P1=0xfe;
for(n=0;n<8;n++)// Lap 8 lan
{

P1=P1<<1; // Dich bit sang trai
tre(5000); } }

void chaygiua()
{ unsigned char i;
for(i=0;i<5;i++)
{ P1=so1[i];
tre(5000); } }
void chayvao()
{ unsigned char j;
for(j=0;j<5;j++)
{ P1=so2[j];
tre(3000); } }
void chaynguoc()
{ unsigned char k;
P1=0xfe;
10


for(k=0;k<8;k++)

{ P1=P1>>1;
tre(5000); }}
void main()
{ while(1)// Lap vo han
{

chayxuoi();
tre(3000) ;
chaynguoc();
tre(3000);
chaygiua();
tre(3000) ;
chayvao();
tre(3000); } }

4. Lựa chọn thiết bị
- Máy vi tính đã cài các phần mềm KeilC, Proteus
- Kit thực hành 8051:
o Module LED : Gồm 8 led đơn:
 8 led đơn được nối trực tiếp với vi điều khiển
 8 led đơn được kết nối với Header 5x2, ký hiệu CN7 (LED)

Hình 3 – Vị trị khối 8 Led đơn trên board mạch
 Cổng điều khiển : PORT-1
- Port1 được kết nối với Header CN2 (PORT-1)
11


Hình 4 – Vị trị Port 1 trên board mạch
5. Trình tự thực hiện

- Bước 1: Dùng jump cắm 2 hàng 5x2 kết nối PORT-1 vào LED
- Bước 2: Vẽ mạch mô phỏng trên Proteus

Hình 5 – Sơ đồ mô phỏng proteus mạch điều khiển 8 led đơn
- Bước 3: Mở chương trình mẫu
../ThucHanh8051/Bai1_LedDon/LedDon.uvproj
- Bước 4: Biên dịch chương trình mẫu, mô phỏng trên Proteus và nạp chương trình
vào kit thực hành Easy8051 để chắc chắn các khối mạch cần dùng hoạt động tốt.
- Bước 5: Viết chương trình, chạy mô phỏng và chạy trên kit thực hành 8051 theo
yêu cầu sau :
o 8 LED chạy sáng dồn từ trái sang phải
o 8 LED chạy sáng dồn từ phải sang trái
o 8 LED chạy sáng từ giữa ra hai bên
o 8 LED chạy sáng hai bên vào giữa
12


6. Lưu ý:
Cách mắc LED
LED (Light-emitting diodes) còn gọi là Diode phát quang, có khả năng chuyển
điện thành ánh sáng. Khi phát sáng sẽ gây ra sụt áp trên nó vào khoảng 1.7 – 2.5V (tuỳ
màu LED), và dòng định mức lớn nhất qua nó khoảng 20mA (đối với led indoor thông
thường). Để điều khiển Led ta có một số cách mắc sau

Hình 6 – Các cách mắc điều khiển led với vi điều khiển 8051
Mạch mắc theo cách thứ 2 (Fair) có sụt áp trên LED lớn khoảng 2V, 3V còn lại
sẽ sụt áp trên mạch TTL, gây tổn thất năng lượng lớn, hoặc LED sẽ cháy nếu dòng qua
nó lớn(khoảng vài chục mA).
Mạch mắc theo cách thứ nhất là tốt nhất, có trở hạn dòng. Tùy từng loại LED mà
điện áp rơi trên nó khác nhau. Thường điện áp rơi trên LED trong khoảng 1,7V ÷ 3V .

Sụt áp trên chân TTL là 0.9V. Do đó điện áp rơi trên trên trở là (5V- 0,9V – 3V = 1,1V)
cho tới (5V – 0,9V – 1,7V = 2,4V). Dòng điện qua LED khoảng 10mA là vừa sáng
(Dòng qua led thường nhỏ hơn khoảng 20mA đối với loại LED thường, nhỏ hơn khoảng
40mA với LED siêu sáng). Dòng qua trở cũng bằng dòng qua LED do mắc nối tiếp. Do
đó R = Ur/Ir = 1,1V/10mA ÷ 2,4V/10mA = 110Ω ÷ 240Ω.
Tóm lại, trở hạn dòng không nên dưới 100Ohm nếu không LED sẽ chóng hỏng.
Và không nên quá 240 Ω led sẽ tối.

13


BÀI THỰC HÀNH SỐ 2
LED 7 THANH
1.Mục đích
- Thực hành với các công cụ phần mềm: phần mềm lập trình KeilC, phần mềm mô
phỏng Proteus, phần mềm nạp chương trình cho vi điều khiển ISP_Prog.
- Điều khiển LED 7 thanh.
- Viết các chương trình con tạo thời gian trễ.
2.Yêu cầu
- Tính toán, lựa chọn được các thông số của linh kiện, giá trị điện trở, dòng, áp cấp
cho led.
- Lập trình điều khiển được led sáng, tắt theo yêu cầu.
- Nắm bắt được chức năng các phần tử trong sơ đồ mạch.
- Biết cách sử dụng các phần mềm lập trình, phần mềm mô phỏng, phần mềm nạp
chương trình cho vi điều khiển.
- Lập trình được các bài toán yêu cầu, hiểu rõ từng câu lệnh, từng hàm, chương trình
con về quy tắc, cấu trúc câu lệnh cũng như chức năng tác dụng của nó.
3. Sơ đồ nguyên lý

Hình 2.1 Sơ đồ nguyên lý điều khiển led 7 thanh


14


Nguyên lý hoạt động:
- Khi cắm nguồn vào mạch tất cả các chân của các cổng IO của vi điều khiển là 5V(
nếu cổng không lắp điện trở treo thì sẽ là 0V ). Nhìn sơ đồ mạch không có chênh
điện áp nên không có đèn sáng. Chúng ta muốn sáng thanh nào chỉ việc đưa ra điện
áp 0V ở chân vi điều khiển nối với thanh đó.
- Phần nút bấm: Ban đầu P1.0 ở mức cao +5V, nếu bấm 2 đầu nút bấm thông nhau.
Chân P1.0 thông với GND. Led sáng do chênh áp.
Số

Thanh hiện

Thanh tắt

Giá trị ( P2)

1

BC

Các thanh còn lại

1111 1001

2

ABDEG


Các thanh còn lại

1010 0100

Tất cả các thanh

Không thanh nào

1000 0000


8

ví dụ: Một Nút bấm được nối với chân P3.4, hãy lập trình điều khiển đếm số lần ấn
phím từ 0 đến 9 và hiển thị trên Led 7 thanh.

Hình 2.2: Lưu đồ thuật toán điều khiển led 7 thanh
15


 Chương trình điều khiển:
#include<AT89x51.h> // Dinh kem file thu vien
sbit ctac = P1^0;
unsigned char dem=0;
void delay(long time)
{ while(time--); }
void phim_an(void)
{ if(ctac==0) //co phim nhan
{


delay(500); //chong rung phim
while(ctac==0); //Cho nha phim
delay(500); // chong rung phim
dem++; //tang bien dem
if(dem==10) dem=0;

}}

void so lan_an(void)
{

switch(dem)
{

case 0: {P2=0x3f;break;}
case 1: {P2=0x06;break;}
case 2: {P2=0x5b;break;}
case 3: {P2=0x4f;break;}
case 4: {P2=0x66;break;}
case 5: {P2=0x6d;break;}
case 6: {P2=0x7d;break;}
case 7: {P2=0x07;break;}
16


case 8: {P2=0x7f;break;}
case 9: {P2=0x6f;break;} }

}


void main(void)
{

dataP = 0x81; // ban dau la so 0
while(1)
{ phim_an();
solan_an(); }}

4.Lựa chọn thiết bị
- Máy vi tính đã cài các phần mềm KeilC, Proteus
- Kit thực hành 8051:
+ Cổng điều khiển : PORT-1
o Port1 được kết nối với Header CN2 (PORT-1)

Hình 2.4 Vị trị Port 1 trên board mạch
+ Một button:

Hình 2.5: Vị trí button T1 trên bo mạch

17


+ Một led 7 thanh

Hình 2.3 Vị trí led 7 thanh trên bo mạch

Hình 2.6 Sơ đồ mạch của model led 7 thanh
5.Trình tự thực hiện
- Bước 1: Dùng jump cắm 2 hàng 5x2 kết nối PORT-1 vào button

- Bước 2: Vẽ mạch mô phỏng trên Proteus

18


Hình 2.4: Sơ đồ mô phỏng proteus mạch đếm số lần ấn phím
và hiện thị ra led 7 thanh
- Bước 3: Mở chương trình mẫu
../ThucHanh8051/Bai2_Led7thanh/led7thanh.uvproj
- Bước 4: Biên dịch chương trình mẫu, mô phỏng trên Proteus và nạp chương trình
vào kit thực hành Easy8051 để chắc chắn các khối mạch cần dùng hoạt động tốt.
- Bước 5: Viết chương trình, chạy mô phỏng và chạy trên kit thực hành 8051 theo
yêu cầu sau :
+ Hiển thị từ 0 – 9 tương ứng với số lần bấm phím
6.Lưu ý
Khi bấm nút theo nguyên lý thì bấm 1 cái là xuống 0 liền, nhưng do tiếp điểm cơ khí
của nút bấm nên nút bấm nó sẽ có 1 số xung điện chứ không phải bấm cái là nó xuống
0. Tụ 104 sẽ giảm nhiễu đó. Tụ 104 cũng có thể bỏ đi không lắp vì ta có thể khử nhiễu
bằng phần mềm.

19


BÀI THỰC HÀNH SỐ 3
LẬP TRÌNH CHỨC NĂNG NGẮT TIMER - ĐỒNG HỒ SỐ
1.Mục đích
Sủ dụng bộ định thời với chức năng ngắt timer
Giao tiếp với led 7 thanh, phím bấm.
2.Yêu cầu
- Tính toán, lựa chọn được các thông số của linh kiện, giá trị điện trở, dòng, áp cấp led

7 thanh
- Lập trình điều khiển hiển thị được đồng hồ số theo yêu cầu.
- Nắm bắt được cờ ngắt của bộ định thời, chức năng các phần tử trong sơ đồ mạch.
- Lập trình được các bài toán yêu cầu, hiểu rõ từng câu lệnh, từng hàm, chương trình
con về quy tắc, cấu trúc câu lệnh cũng như chức năng tác dụng của nó.
3.Sơ đồ nguyên lý
Nguyên lý:
Biến giây : s ; biến phút : m ; biến giờ : h
Tạo độ trễ 1 giây, khi hết 1 giây thì tăng biến s lên 1 đơn vị. Nếu s =60 thì s= 0 và m
tăng lên 1 đơn vị ;nếu m= 60 thì m=0 và tăn h lên 1 đơn vị . nếu h =24 thì h=0
- Khi muốn điều chỉnh đồng hồ ( cấp mức 0 vào chân của vi điều khiển)
+ Nhấn phím P2_0 để chọn chế độ điều chỉnh phút - giờ - giây
+ Khi muốn tăng giờ hay phút , nhấn phím P2_1
+ Khi muốn giảm giờ hay phút , nhấn phím P2_2
+ Bấm phím P2_0 một lần nữa để về chế độ chạy bình thường
Chương trình điều khiển
#include <REGX52.H>
////////////////////
#define SW1 P2_0
20


#define SW2 P2_1
#define SW3 P2_2
///////////////

khai bao bien

int k,m;
int sl,chon=0,gi=0,p=0;

int a,b,c,d,e,f;
unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(int time)
{ int i;
for(i=0;i{}; }
///////////////////////////////khoi tao ngat
void khoitaongat(void)
{
EA = 0; //cam ngat toan cuc
TMOD = 0x10;//Timer che do 1 , 16 bit
// TH0=0x00; //Gia
//TL0=0x00;
TH1 = 0xfc;
TL1 = 0x66;
ET1 =1;
//ET0=1; //cho phep ngat timer 0
EA =1; //cho phep ngat toan cuc
TR1 =1;
//TR0 =1; //chay timer 0 bat dau dem so chu ky may }
21


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

hien thi

void hienthi(unsigned int k, unsigned int p, unsigned int gi)
{ a=gi/10; //tram nghin
b=gi 10; //chuc nghin

/////
c=p/10;

// nghin

d=p%10; //tram
///////
e =k/10; //chuc
f=k%10;

//don vi

/////////////////////
if(chon==0)
{ for(sl=0;sl<10;sl++)
{ P0=display[a]; //display chuc gio
P1_0=0;
delay(50);
P1_0=1;
//////////////////////////////
P0=display[b]; //display don vi gio
P1_1=0;
delay(50);
P1_1=1;
////////////////////////
P0=display[c]; //display chuc phut
22


P1_2=0;

delay(50);
P1_2=1;
/////////////////////
P0=display[d];//display don vi phut
P1_3=0;
delay(50);
P1_3=1;
//////////////////////////////
P0=display[e]; //display chuc giay
P1_4=0;
delay(50);
P1_4=1;
////////////////////////////////////
P0=display[f]; //display don vi giay
P1_5=0;
delay(50);
P1_5=1; }
}else
if(chon==1)
{

P0=display[f]; //display don vi giay
P1_5=0;
delay(100);
P1_5=1;
delay(500); }
23


else

if(chon==2)
{ P0=display[e]; //display chuc giay
P1_4=0;
delay(100);
P1_4=1;
delay(500);

}

else
if(chon==3)
{

P0=display[d];//display don vi phut
P1_3=0;
delay(100);
P1_3=1;
delay(500);

}

else
if(chon==4)
{

P0=display[c]; //display chuc phut
P1_2=0;
delay(100);
P1_2=1;
delay(500);


}

else
if(chon==5)
{

P0=display[b]; //display don vi gio
P1_1=0;
24


delay(100);
P1_1=1;
delay(500);

}

else
if(chon==6)
{ P0=display[a]; //display chuc gio
P1_0=0;
delay(100);
P1_0=1;
delay(500); }
}
////////////////////////////
void timer1ms (void) interrupt 3 //ngat timer 1
{


TR1 =0;
if(chon==0)
{ m=m+1;
if(m==1000)
{
k=k+1;
m=0; }
}
TH1 = 0xfc;
TL1 = 0x66;
TF1 =0;
TR1=1;
25


×