Khi sử dụng mã ngữ thì yêu cầu cần có chương trình dịch từ mã ngữ sang mã máy thông dịch Trang 7 1.1 Khái niệm chung • Bộ vi xử lý và hệ vi xử lý • Bộ VXL là hạt nhân của hệ VXL, nó th
Trường Đại học Thủy Lợi KHOA ĐIỆN – ĐIỆN TỬ KỸ THUẬT VI XỬ LÝ KỸ THUẬT VI XỬ LÝ PHẦN I: KỸ THUẬT VI XỬ LÝ PHẦN II: KỸ THUẬT VI ĐIỀU KHIỂN CHƯƠNG GIỚI THIỆU CHUNG HỆ VI XỬ LÝ 1.1 Khái niệm chung 1.2 Sơ đồ khối hệ vi xử lý tối thiểu 1.3 Các hệ thống số dùng kỹ thuật VXL 1.1 Khái niệm chung • Bộ vi xử lý hệ vi xử lý • Bơ vi xử lý: (Microprocessor) – Là xử lý tín hiệu số nằm chip IC (Intergrated Circuit) – μp xử lý tín hiệu theo chương trình, bao gồm hai loại: • Loại đa • Loại chuyên dụng: one - chip computer ( microcontroller) 1.1 Khái niệm chung • Bộ vi xử lý hệ vi xử lý • Hệ vi xử lý: – Hệ thống số làm việc theo chương trình lưu giữ nhớ đưa định liên lạc với giới bên ngồi thơng qua cổng vào - – Hệ vi xử lý bao gồm hai phần: • Phần cứng (phần xác): tồn kết cấu vật lý xây dựng nên hệ: μp, nhớ, cổng vào ra, mạch ghép nối, nguồn • Phần mềm (phần hồn): Phần logic – Hệ điều hành( operating system) – Chương trình ứng dụng: người sử dụng viết 1.1 Khái niệm chung • Bộ vi xử lý hệ vi xử lý • Hệ vi xử lý: – Chương trình lưu giữ nhớ dạng mã nhị phân – Ngôn ngữ lập trình: • Ngơn ngữ lập trình cấp thấp ( gần ngôn ngữ máy): mã máy ( nhị phân), mã ngữ (Symbol) Khi sử dụng mã ngữ yêu cầu cần có chương trình dịch từ mã ngữ sang mã máy (thơng dịch) • Ngơn ngữ lập trình bậc cao: C, Basis, chương trình dịch: thơng dịch 1.1 Khái niệm chung • Bộ vi xử lý hệ vi xử lý • Bộ VXL hạt nhân hệ VXL, thực phép tính logic số học, điều khiển toàn hoạt động hệ: – Đọc lệnh từ nhớ giải mã lệnh - thực lệnh – Trao đổi số liệu với nhớ thiết bị vào / – Có thể điều khiển từ số tín hiệu bên để thực số chức đặc biệt: thâm nhập nhớ, ngắt, treo – Có thể coi toàn hệ VXL gồm; VXL, ROM, RAM, cổng vào/ra tồn ghi địa hoá – Các ghi bên VXL gọi ghi trong, ghi ROM, RAM, I/O gọi ghi Tập hợp ghi khả trao đổi thông tin chúng gọi cấu trúc VXL Khả biến đổi số liệu thực ghi Bộ VXL điều khiển đồng trình trao đổi hay biến đổi số liệu sau đọc chương trình ứng dụng lưu giữ nhớ 1.2 Sơ đồ khối hệ vi xử lý tối thiểu • • • • • • • CPU: vi xử lý trung tâm ROM: nhớ chương trình RAM: Bộ nhớ liệu I/O: thiết bị đọc, ghi liệu từ bên ngơài Add bus: bus địa chỉ, xác định địa thành phần Data bus: đường truyền liệu Control bus: đường truyền tín hiệu điều khiển trình trao đổi thơng tin 1.3 Các hệ thống số dùng kỹ thuật VXL 1.3.1 Các hệ đếm Hệ thập phân Hàng ngày người thường dùng hệ đếm cớ số mười (hệ thập phân) để biểu diễn giá trị số Ví dụ: Số 1234 nghìn, trăm, chục đơn vị: 1234 = 1.103 + 2.102 + 3.101 + 4.100 Hệ nhị phân Trong nhị phân (hay hệ hai), số đếm nên sử dụng hai chữ số để biểu diễn giá trị số Ví dụ: Chuỗi số nhị phân 101011 dùng để biểu diễn số: 101011 = 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20 = 43 hệ thập phân Hệ thập phân Hệ nhị phân 0 1 10 11 100 Điều khiển đèn LED với Arduino Bài thực hành 1: Điều khiển led nhấp nháy Bài TH2: Điều khiển led sáng/cùng tắt Bài TH3: Điều khiển led sáng xen kẽ Bài TH4: Điều khiển 12 led, led lẻ led chẵn sáng Bài TH5: Điều khiển tốc độ tắt sáng với biến trở (đọc tín hiệu tương tự) Bài TH6: Điều khiển đèn led nút nhấn nhấn Project1: Điều khiển led sáng dùng biến trở Project2: Điều khiển led RGB Project3: Điều khiển đèn LED 9/5/2021 29 Bài 1: Điều khiển đèn led nhấp nháy Bài 1: Chương trình Kết //Bài tập – chớp tắt LED int ledPin=10; LED (chân 10) void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); X X X digitalWrite(ledPin, LOW); delay(1000); } 9/5/2021 30 Bài 2: Điều khiển Led lần lƣợt sáng/cùng tắt Linh kiện thực hiện: bo Arduino UNO cáp USB Test board đèn led dây nối Dây cắm điện trở 220 Chương trình: //Bài TH – điều khiển LED chớp/tắt int ledPin=13; int ledPin=18; void setup() { pinMode(ledPin, OUTPUT); } LED1 LED2 X X X X void setup() { pinMode(13, OUTPUT); pinMode(8, OUTPUT); } void loop() { digitalWrite(13, HIGH); //Led1 sáng digitalWrite(8, HIGH); //Led2 sáng delay(1000); //Trễ 1s digitalWrite(13, LOW); //Led1 tắt digitalWrite(8, LOW); //Led2 tắt delay(1000); //Trễ 1s } 9/5/2021 31 Bài 3: Điều khiển LED sáng xen kẽ Linh kiện thực hiện: Chương trình: //Bài TH – điều khiển LED sáng luân phiên bo Arduino UNO cáp USB Test board đèn led Dây cắm điện trở 220 void setup() { //Khai báo chân 12 chân cho ngõ pinMode(12, OUTPUT); pinMode(8, OUTPUT); } void loop() { digitalWrite(8, LOW); LED1 9/5/2021 digitalWrite(12, HIGH); //Led1 sáng delay(1000); X LED2 X X X //Trễ 1s digitalWrite(8, HIGH); //Led2 sáng digitalWrite(12, LOW); //Led1 tắt delay(1000); } //Trễ 1s 32 Bài 4: Điều khiển 12 led chớp tắt, lần lƣợt led lẻ led chẵn sáng Yêu cầu: - Mỗi thời điểm có led sáng 0.5s - led chẵn led lẻ luân phiên sáng/tắt - Các led bố trí từ trái sang phải tạo hiệu ứng sáng xen kẽ - Quá trình lặp lại X LED X X LED X LED 11 X X 9/5/2021 D2 D3 PWM D4 ioref A2 D5 PWM D6 PWM D7 A3 D8 A0 LED 12 ARDUINO UNO A4/SDA D9 PWM D10 PWM/SS A5/SCL D11 PWM/MOSI X X X VIN T2 AREF X X D1/TX D12/MISO D13/SCK N/C X GN D LED D0/RX RESE T RESE A1 LED 5V 3V3 Sơ đồ nguyên lý: 33 Bài 5: Chƣơng trình điều khiển 12 LED chớp tắt //chương trình tự động chạy nhấn reset //Vịng lặp khởi động lại sau kết thúc chương trình cấp nguồn vào bo mạch void loop(){ void setup() { digitalWrite(2,HIGH); // khai báo chân In/out đèn LED từ đến 12 digitalWrite(6,HIGH); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); } 9/5/2021 digitalWrite(3,HIGH); digitalWrite(5,HIGH); digitalWrite(7,HIGH); digitalWrite(9,HIGH); digitalWrite(11,HIGH); digitalWrite(13,HIGH); delay(500); digitalWrite(2,LOW); digitalWrite(4,LOW); digitalWrite(6,LOW); digitalWrite(8,LOW); digitalWrite(10,LOW); digitalWrite(12,LOW); digitalWrite(4,HIGH); digitalWrite(8,HIGH); digitalWrite(10,HIGH); digitalWrite(12,HIGH); delay(500); digitalWrite(3,LOW); digitalWrite(5,LOW); digitalWrite(7,LOW); digitalWrite(9,LOW); digitalWrite(11,LOW); digitalWrite(13,LOW); delay(500); } delay(500); 34 Bài 5: Điều khiển tốc độ tắt sáng với biến trở (đọc tín hiệu tƣơng tự) Linh kiện thực hiện: bo Arduino UNO cáp USB Test board đèn led Dây cắm điện trở 220 biến trở 10K 3V3 5V Vin D13 RESET D12 AREF D11 D10 ARDUINO UNO D9 D8 D7 9/5/2021 D6 A0 A1 A2 A3 A4 D5 Analog input Bằng cách thay đổi điện áp thông qua biến trở điện áp thay đổi đưa vào đầu vào Analog bo mạch Arduino, đo thay đổi điện trở từ biến trở giá trị tương tự (nhờ chuyển đổi ADC 10 bit chuyển tín điện áp thành số 1023) D4 D3 D2 D1/TX A5 D0/RX GND 35 Bài 5: Chƣơng trình điều khiển tốc độ tắt sáng với biến trở //khai báo chân sensor đầu vào analog A0 //Vòng lặp khởi động lại sau kết thúc chương trình int sensorPin=A0; void loop(){ //chân 10 nối với LED sensorValue=analogRead(sensorPin); int ledPin=10; Serial.println(sensorValue); int sensorValue=0; delay(1); //trễ 1s void setup() { digitalWrite(ledPin,HIGH); //khởi tạo giao tiếp nối tiếp delay(sensorValue); Serial.begin(9600); digitalWrite(ledPin,LOW); pinMode(ledPin,OUTPUT); delay(sensorValue); } } 9/5/2021 36 Bài 6: Điều khiển đèn led nút nhấn đƣợc nhấn Linh kiện thực hiện: bo Arduino UNO cáp USB Test board đèn Led điện trở 220 nút nhấn cỡ nhỏ Bộ dây nối 9/5/2021 int ledPin=5; int buttonApin=9; int buttonBpin=8; byte leds=0; void setup() { //khai báo chân đầu pinMode(ledPin,OUTPUT); //khai báo chân đầu vào kéo lên pinMode(buttonApin,INPUT_PULLUP); pinMode(buttonBpin,INPUT_PULLUP); } void loop() { if(digitalRead(buttonApin)==LOW){ digitalWrite(ledPin,HIGH); } if(digitalRead(buttonBpin)==LOW){ digitalWrite(ledPin,LOW); } 37 } Project 1: Điều khiển led sáng dùng biến trở Yêu cầu: Khi chỉnh biến trở từ trái sang phải đèn led đỏ, vàng xanh sáng lên GND ARDUINO 5V D7 Linh kiện thực hiện: bo Arduino UNO cáp USB Test board đèn led đỏ, vàng, xanh Dây cắm điện trở 220 biến trở 10 k 9/5/2021 D6 A0 D5 Chân analog từ A0 đến A5 đọc giá trị điện áp từ 0-5V tương ứng với số integer từ (0V)-1023 (5V) 38 Chƣơng trình //Khai báo chân int potPin=A0; int greenLED=5; int yellowLED=6; int redLED=7; void setup() { //khai báo chân LED pinMode(greenLED,OUTPUT); pinMode(yellowLED,OUTPUT); pinMode(redLED,OUTPUT); //Khởi tạo truyền liệu nối tiếp Serial.begin(9600); } void loop() { // đọc giá trị biến trở int potValue=analogRead(potPin); Serial.println("Gia tri bien tro la:"); Serial.println(potValue); delay(1); 9/5/2021 //Nếu điện áp 1,67V tương ứng với int =341 if(potValue=341&&potValue=682) { Serial.println("Bat led do, tat led xanh va led vang"); digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); 39 } } Project 2: Điều khiển LED RGB Project 3: Điều khiển LED (SV tự tìm hiểu viết chương trình) Yêu cầu trình bày: - Nội dung dự án - Chương trình thực - Ứng dụng thực tiễn dự án 9/5/2021 40 Đọc vạch màu điện trở Led LED từ viết tắt Light Emitting Diode hay điốt phát quang linh kiện điện tử dựa chuyển tiếp p-n LED có cấu trúc điốt Cấu trúc LED gồm hai lớp bán dẫn p, n ghép với qua lớp tiếp xúc công nghệ Hoạt động LED dựa hoạt động chuyển tiếp p-n LCD VÀ PWM Giao tiếp với LCD qua giao thức I2C Đọc tín hiệu analog xuất liệu LCD Điều khiển động chiều thông qua chân PWM