báo cáo thực hành vi điều khiển
Trang 1MỤ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
Trang 24 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
Trang 31.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
Trang 4CHƯƠ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
Trang 5- 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
Trang 6Bảng: So sánh các đặc tính của các thành viên họ 8051
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
Trang 7- 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
14 40P chip ZIF socket
15 I/O external output
16 MCP1541 4,096V REF
Trang 8CHƯƠ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
Trang 9Ví 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
Hình 2 – Lưu đồ thuật toán điều khiển led nháy 8 led
Trang 10 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
Trang 11o 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)
Trang 12Hì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
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
Trang 136 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
Trang 14BÀ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
Trang 15Nguyê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
Trang 16 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)
Trang 17case 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
Trang 18+ 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
Trang 19Hì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
Trang 20BÀ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
Trang 21EA = 0; //cam ngat toan cuc
TMOD = 0x10;//Timer che do 1 , 16 bit
//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 }
Trang 24if(chon==5) { P0=display[b]; //display don vi gio P1_1=0;
Trang 25delay(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); } }
TL1 = 0x66;
TF1 =0;
TR1=1;
Trang 26{ p=0;
gi=gi+1; } if(gi==24) gi=0;
Trang 27if(SW2==1) { k=k+1;
if(k==10)k=0; } } while(SW2==0); } ///////////////////////////////
if(SW3==0)//giam { do
{ delay(100);
if(SW3==1) { k=k-1;
if(k<0)k=0; } } while(SW3==0);
}hienthi(k,p,gi);
Break; } ////////////////////////////////////////////////////////////////// case 2: //cai dat chuc cua giay
{ ////////////////////////
Trang 28{ do { delay(100);
if(SW2==1) { k=k+10;
if(k>60) k=k%10; } } while(SW2==0); }
///////////////////////////////
if(SW3==0)//giam { do
{ delay(100);
if(SW3==1) { if(k>10)
{ k=k-10; } else
if(k==10)k=k%10; } } while(SW3==0);
}hienthi(k,p,gi);
break; } /////////////////////////////////////////////////////////////////////// case 3: //cai dat don vi cua phut
{ ////////////////////////
{ do { delay(100);
Trang 29if(SW2==1) { p=p+1;
if(p==10)p=0; } } while(SW2==0); } ///////////////////////////////
if(SW3==0)//giam { do
{ delay(100);
if(SW3==1) { p=p-1;
if(p<0)p=0; } } while(SW3==0);
} hienthi(k,p,gi);
break; } ////////////////////////////////////////////////////////////////// case 4: //cai dat chuc cua phut { ////////////////////////
{ do { delay(100);
if(SW2==1) { p=p+10;
if(p>=60) p=p%10; }
Trang 30} while(SW2==0); } ///////////////////////////////
if(SW3==0)//giam { do
{ delay(100);
if(SW3==1) { if(p>10)
{ p=p-10; } else
if(p==10)p=p%10; } } while(SW3==0);
} hienthi(k,p,gi);
break; } /////////////////////////////////////////////////////////////////////// case 5: //cai dat don vi cua gio
{ ////////////////////////
{ do { delay(100);
if(SW2==1) { gi=gi+1;
if(gi==24)gi=0; } } while(SW2==0); } ///////////////////////////////
if(SW3==0)//giam
Trang 31{ do { delay(100);
if(SW3==1) { gi=gi-1;
if(gi<0)gi=0; } } while(SW3==0);
} hienthi(k,p,gi);
////////////////////////////////////////////////////////////////// case 6: //cai dat chuc cua gio { ////////////////////////
{ delay(100);
if(SW2==1) { gi=gi+10;
if(gi>24) gi=gi%10; } } while(SW2==0); }
Trang 32else if(gi==10)gi=gi%10; } } while(SW3==0); }
hienthi(k,p,gi);
break; } } } }
4 Lựa chọn thiết bị
- Model led:
+ 6 led 7 thanh ( sd model led 7 thanh như bài thực hành số 3)
+ 2 led đơn ( sd trong model led đơn bài thực hành số 1)
- 3 button
Hình 3.1: Vị trí 3 button T1, T2, T3 trên bo mạch
- Cổng điều khiển: port 0, port 1, port 2, port 3
Hình 3.2: Vị trí 3 port P0,P1, P2, P3 trên bo mạch
5.Trình tự thực hiện
- Bước 1: Dùng jump cắm 1 hàng 5x2 kết nối PORT-2 vào 3 button T1, T2 VÀ T3
- Bước 2: Vẽ mạch mô phỏng proteus
Trang 33Hình 3.3 Mô phỏng proteus đồng hồ số hiện thị trên led 7 thanh
- Bước 3: 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 4: 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 : đồng chạy gần đúng với thời gian thực, điều chỉnh được tăng hay giảm giờ, phút
Lưu ý
Khai báo đúng hàm timer,lựa chọn đúng hàm timer
Làm mạch thực tế đúng theo mô phỏng
Trang 34- Lập trình điều khiển hiển thị được giá trị tần 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
3.Sơ đồ nguyên lý
Nguyên lý hoạt động: sử dụng bộ định thời tạo trễ 1s, đêm số xung vào trong 1s, số
xung đếm được chính là tần số và được hiển thị ra led 7 thanh
Trang 35 Chương trình điều khiển
////////khoi tao ngat
void khoitaongat (void)
{ EA =0; //cam ngat toan cuc
TMOD = 0x01; //Timer 0 che do 16 bit
TH0 = 0xfc; //nap gia tri 252 vao TH0
TL0 = 0x67; //gia tri khoi tao 103 TL0
ET0 = 1; //cho phep ngat timer 0
IT0 = 1; //ngat theo suon xuong
EX0 = 1;//Cho phep ngat ngoai 0
EA = 1; //cho phep ngat toan cuc
TR0 = 1; //chay timer 0 bat dau dem so chu ky may }
Trang 37+ 6 led 7 thanh ( sd model led 7 thanh như bài thực hành số 3)
- Cổng điều khiển: port 0, port 1, port 3
Hình 4.2: Vị trí 4 port P0,P1, P2, P3 trên bo mạch
Trang 39BÀI THỰC HÀNH SỐ 5 LẬP TRÌNH CHỨC NĂNG NGẮT TRUYỀN THÔNG NÔI TIẾP
Hình 5.1: Sơ đồ nguyên lý sử dụng chức năng ngắt truyền thống nối tiếp
bật các led trên port 2
Nguyên lý hoạt động:
Khi nhận các bit qua chân RxD của nó thì 8051 phải trải qua các bước sau:
Nó nhận bit Start báo rằng bit sau nó là bit dữ liệu đầu tiên cần phải nhận
Ký tự 8 bit được nhận lần lượt từng bit một Khi bit cuối cùng được nhận thì một byte được hình thành và đặt vào trong SBUF
Khi bit Stop được nhận thì 8051 bật RT = 1 để báo rằng toàn bộ ký tự được nhận
và phải lấy đi trước khi nó bị byte mới nhận về ghi đè lên
Bằng việc kiểm tra bit cờ RI khi nó được bật lên chúng ta biết rằng một ký tự đã được nhận và đang nằm trong SBUF Sao nội dung SBUF vào nơi an toàn trong một thanh ghi hay bộ nhớ khác trước khi nó bị mất
Sau khi SBUF được ghi vào nơi an toàn thì cờ RI được xoá về 0 để chuẩn bị kiểm tra chu trình tiếp theo
Trang 40Hình 5.2: Lưu đồ thuật toán sử dụng chức năng ngắt truyền thống nối tiếp
bật các led trên port 2
Chương trình điều khiển