2. Bài giảng Xây dựng hệ thống nhúng_Chuong 4.pdf

nguyenquangtoank5 9 views 88 slides Sep 17, 2025
Slide 1
Slide 1 of 88
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88

About This Presentation

dfghjk


Slide Content

GV: NguyễnThànhLong
ĐT: 0963.818.855

XÂY DỰNG HỆ THỐNG NHÚNG
(Embadded System Design)

Thựchành1:ThựchànhbàiLabvềtạođènnhấpnháy(8Led)
DùngphầnmềmProteusđểxâydựnglậptrìnhnhúngsau
Yêucầuthiếtkế:
01BomạchAT89C51
ĐènLed–Yellow
ĐiệntrởRes
NguồnđiệnPower
Yêu cầu:
1.Thiết kế sơ đồ mạch điện
2.Tạo nhấp nháy cho các bóng đèn
3.Tạo nhấp nháy bóng đèn chạy từ trái qua phảilần lượt
4.Tạo nhấp nháy bóng đèn chạy từ phảiqua trái lần lượt
5.Tạo nhấp nháy bóng đèn chạy từ giữa ra hai bên lần lượt
6.Tạo nhấp nháy bóng chạy từ ngoài hai bên vào chính giữa

Yêucầuthiếtkế:
01BomạchAT89C51
ĐènLed–Yellow
ĐiệntrởRes
NguồnđiệnPower
Vídụ1:ThựchànhbàiLabvềtạođènnhấpnháy(8Led)

Yêucầuthiếtkế:
01BomạchAT89C51
ĐènLed–Yellow
ĐiệntrởRes
NguồnđiệnPower
Yêu cầu:
1.Thiết kế sơ đồ mạch điện
2.Tạo nhấp nháy cho các bóng đèn
3.Tạo nhấp nháy bóng đèn chạy từ trái qua phảilần lượt
4.Tạo nhấp nháy bóng đèn chạy từ phảiqua trái lần lượt
5.Tạo nhấp nháy bóng đèn chạy từ giữa ra hai bên lần lượt
6.Tạo nhấp nháy bóng chạy từ ngoài hai bên vào chính giữa
Vídụ1:ThựchànhbàiLabvềtạođènnhấpnháy(8Led)

//Hàmkhaibáothưviện
#include<REGX51.H>
//Hàmđộtrễthờigian
voiddelay(inttime){
while(time--);}
//Hàmtạonhấpnháy
voidblink(intlan){
inti;
for(i=0;i<lan;i++){
P2=0; //mở
delay(10000);
P2=0xff; //tắt
delay(10000);
}}
Vídụ1:ThựchànhbàiLabvềtạođènnhấpnháy(8Led)

//TạohàmchođènLedchạytừtráisangphải
voidtraiPhai(intlan){
inti;
for(i=0;i<lan;i++){
P2_0=0;delay(10000); P2_0=1;
P2_1=0;delay(10000); P2_1=1;
P2_2=0;delay(10000); P2_2=1;
P2_3=0;delay(10000); P2_3=1;
P2_4=0;delay(10000); P2_4=1;
P2_5=0;delay(10000); P2_5=1;
P2_6=0;delay(10000); P2_6=1;
P2_7=0;delay(10000); P2_7=1;
}}
Vídụ1:Tạođènnhấpnháy(8Led)

//TạohàmchođènLedchạytừphảisangtrái
voidphaiTrai(intlan){
inti;
for(i=0;i<lan;i++){
P2_7=0;delay(10000); P2_7=1;
P2_6=0;delay(10000); P2_6=1;
P2_5=0;delay(10000); P2_5=1;
P2_4=0;delay(10000); P2_4=1;
P2_3=0;delay(10000); P2_3=1;
P2_2=0;delay(10000); P2_2=1;
P2_1=0;delay(10000); P2_1=1;
P2_0=0;delay(10000); P2_0=1;
}}
Vídụ1:Tạođènnhấpnháy(8Led)

//TạohàmchođènLedchạytừhaibênvàochínhgiữa
voidhaiBen_Giua(intlan){
inti;
for(i=0;i<lan;i++){
P2_0=P2_7=0;delay(10000); P2_0=P2_7=1;
P2_1=P2_6=0;delay(10000); P2_1=P2_6=1;
P2_2=P2_5=0;delay(10000); P2_2=P2_5=1;
P2_3=P2_4=0;delay(10000); P2_3=P2_4=1;
}
}
Vídụ1:Tạođènnhấpnháy(8Led)

//TạohàmchođènLedchạygiữasanghaibên
voidgiua_haiBen(intlan){
inti;
for(i=0;i<lan;i++){
P2_3=P2_4=0;delay(10000); P2_3=P2_4=1;
P2_2=P2_5=0;delay(10000); P2_2=P2_5=1;
P2_1=P2_6=0;delay(10000); P2_1=P2_6=1;
P2_0=P2_7=0;delay(10000); P2_0=P2_7=1;
}}
Vídụ1:Tạođènnhấpnháy(8Led)

//Hàmchínhđểchạychươngtrình
voidmain(){
while(1){
blink(1);
traiPhai(1);
phaiTrai(1);
giua_haiBen(1);
haiBen_Giua(1);
}
}
Vídụ1:Tạođènnhấpnháy(8Led)

Vídụ2:Tạođènnhấpnháytráitim(32Led)

#include <REGX51.H>
//Khai báo mảng chuỗi
char THUAN[] =
{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
char NGUOC[] =
{0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
// Hàm trễ thời gian Delay
void delay(int time){
while(time--); //chay khi nao bien time bang 0 thi thoat ra
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Viết hàm nhấp nháy cho 4 cổng chính
void blink(int lan){
int i;
for(i=0;i<lan;i++){
P0 = P1 = P2 = P3 = 0;
delay(10000);
P0 = P1 = P2 = P3 = 0xff;
delay(10000);
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Viết hàm nhấp nháy sang xuôi từ trái sang phải cho 4 cổng chính
void sangXuoi(){
int i;
for(i=0;i<8;i++){
P0 = THUAN[i];
delay(10000); }
for(i=0;i<8;i++){
P1 = THUAN[i];
delay(10000); }
for(i=0;i<8;i++){
P2 = THUAN[i];
delay(10000); }
for(i=0;i<8;i++){
P3 = THUAN[i];
delay(10000); }
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Hoặc viết lại hàm nhấp nháy sáng xuôi từ trái sang phải cho 4 cổng chính
void sangXuoi(int lan){
int i,j;
for(i=0;i<lan;i++){
for(j=0;j<8;j++){
P0=P1=P2=P3=THUAN[j];
delay(10000);
}
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Hoặc viết lại hàm nhấp nháy sang ngượctừ phải sang trái cho 4 cổng chính
void sangNguoc(int lan){
int i,j;
for(i=0;i<lan;i++){
for(j=0;j<8;j++){
P0=P1=P2=P3=NGUOC[j];
delay(10000);
}
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Tạo hiệu ứng lan tỏa từ giữa ra hai bên và từ trên xuống dưới
void tren_haiben(int lan){
int i,j;
for(i=0;i<lan;i++){
for(j=0;j<8;j++){
P0=THUAN[j];
P3=NGUOC[j];
P1=THUAN[j];
P2=NGUOC[j];
delay(10000);
}
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Tạo hiệu ứng lan tỏa từ giữa ra hai bên và từ dướilên trên
void duoi_haiben(int lan){
int i,j;
for(i=0;i<lan;i++){
for(j=0;j<8;j++){
P1=NGUOC[j];
P2=THUAN[j];
P0=NGUOC[j];
P3=THUAN[j];
delay(10000);
}
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

//Hàm chính để chạy chương trình
void main(){
// tao 1 vong while chay vo tan
while(1){
blink(10);
sangXuoi(3);
sangNguoc(3);
}
}
Vídụ2:Tạođènnhấpnháytráitim(32Led)

Cấu tạo Led 7 thanh
Lab3:TạođènLedcácsốtừ0đến9

Mục đích:
NắmđượcnguyênlýhoạtđộngcủaLed7thanh
SửdụngđượcLed7thanhhiểnthịđượcmộtsốbấtkỳ
NângcaokhảnănglậptrìnhngônngữC
Lab3:TạođènLedcácsốtừ0đến9

Lab3:TạođènLedcácsốtừ0đến9
Yêu cầu:
1)AT89C51
2)7SEG-COM-AN-GRN
3)RES
4)POWER

#include <REGX51.H>
char so[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void delay(int time){
while(time--); }
void main(){
while(1){
int i;
for(i=0;i<10;i++){
P0= so[i]; delay(30000); } } }
Lab3:TạođènLedcácsốtừ0đến9

Lab4:Tạođồnghồsố

Các yêu cầu:
Mạch 8051: AT89C51
Thanh 7SEG-MPX2-CA
Đèn LED –BIBY
Điện trở RES
Điện trở bang RESPACK-7
NOT
Nút bấm BUTTON
Nguồn điện POWERvà nguồn tiếp đất GROUND
Lab4:Tạođồnghồsố

Lab4:Tạođồnghồsố
AT89C51; 7SEG-MPX2-CA; LED-BIBY
RES; RESPACK-7
NOT; BUTTON
POWER; GROUND

Lab4:Tạođồnghồsố

Cácthanhghidùngđểtruyxuấttimer/counter

#include <REGX51.H>
#define hour P3_6
#define min P3_7
#define led1 P2_0
#define led2 P2_1
#define led3 P2_2
#define led4 P2_3
#define on 0
#define off 1
char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
Lab4:Tạođồnghồsố

//Ham tre thoi gian Delay
void delay(int time){
while(time--){
TMOD= 0x01;
TH0= 0xfc;
TL0= 0x18;
TR0= 1;
while(!TF0);
TF0= 0;
TR0= 0;
}
}
Lab4:Tạođồnghồsố

//Hàm hiển thị thời gian
void hienThi(unsigned char gio, unsigned char phut){
unsigned char chuc0, chuc1, donvi0, donvi1, i;
chuc0 = gio/10; donvi0 = gio%10;
chuc1 = phut/10; donvi1 = phut%10;
for(i=0;i<25;i++){
led1 = on; P0 = so[chuc0]; delay(10); led1 = off;
led2 = on; P0 = so[donvi0]; delay(10); led2 = off;
led3 = on; P0 = so[chuc1]; delay(10); led3 = off;
led4 = on; P0 = so[donvi1]; delay(10); led4 = off;
}
}
Lab4:Tạođồnghồsố

//Ham chuong trinh chinh main()
void main(){
unsigned char gio = 0, phut = 0, giay = 0;
P3_0 = 0;
while(1){
P3_0 = ~P3_0;
hienThi(gio, phut);//delay trong 1 giay
if(giay==59)phut++;
if(phut==59)gio++;
if(hour==0)gio++;
if(min==0)phut++;
if(phut>59)phut=0;
if(gio>23)gio=0;
}
}
Lab4:Tạođồnghồsố

Lab5:Tạođèngiaothông
Thiết kế hệ thống mạch tín hiệu giao thông

Các yêu cầu:
Mạch 8051: AT89C52
Thanh 7SEG-COM-ANODE
Đèn LED-GREEN
Đèn LED-RED
Đèn LED-YELLOW
Điện trở RES
Nguồn điện POWERvà nguồn tiếp đất GROUND
Lab5:Tạođèngiaothông

#include"main.h"
#include"delay.h"
unsigned char code so[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90}; //Khai báo các số đèn sang từ 0->9
// Khai bao ket noi
sbit DEN_DO = P0^0;
sbit DEN_VANG = P0^1;
sbit DEN_XANH = P0^2;
#define LED_CHUC P2
#define LED_DVI P3
Lab5:Tạođèngiaothông
Bước 1:
Tạo một file tên là: main.c

void main(){ // Chương trình chính
signed char i;
while(1){
DEN_DO = 0;// Thực hiện bật đèn đỏ
DEN_XANH = 1;
DEN_VANG = 1;
for(i=20;i>=0;i--){
LED_CHUC = so[i/10];
LED_DVI = so[i%10];
Delay_ms(1000);
}
Lab5:Tạođèngiaothông

// Bật đèn xanh
DEN_DO = 1;
DEN_XANH = 0;
DEN_VANG = 1;
for(i=15;i>=0;i--){
LED_CHUC = so[i/10];
LED_DVI = so[i%10];
Delay_ms(1000);
}
Lab5:Tạođèngiaothông
// Bật đèn vàng
DEN_DO = 1;
DEN_XANH = 1;
DEN_VANG = 0;
for(i=5;i>=0;i--){
LED_CHUC = so[i/10];
LED_DVI = so[i%10];
Delay_ms(1000);
}}}

Bước 2:
Tạo một file mới và lưu lại tên là: main.h
Sau đó thực hiện viết đoạn code chương trình sau:
#ifndef _MAIN_H_
#define _MAIN_H_
#include<regx52.h>
#define FREQ_OSC 12000000ul
#endif
Lab5:Tạođèngiaothông

// Tạo một hàm trễ thời gian Delay
#include"Delay.h"
#include"main.h"
#if(FREQ_OSC == 12000000)
void Delay_ms(unsigned int t){
unsigned int x,y;
for(x=0;x<t;x++){ for(y=0;y<123;y++); }
}
Lab5:Tạođèngiaothông
Bước 3:
Tạo một file tên là: delay.c
để viết hàm độ trễ thời gian
Delay

#elif(FREQ_OSC == 11059200)
void Delay_ms(unsigned int t){
unsigned int x, y;
for(x = 0; x<t; x++){
for(y=0; y<113; y++);
}
}
#elif(FREQ_OSC == 8000000)
void Delay_ms(unsigned int t){
unsigned int x;
unsigned char y;
for(x = 0; x<t; x++){
for(y=0; y<218; y++);
}
}
Lab5:Tạođèngiaothông
#elif(FREQ_OSC == 4000000)
void Delay_ms(unsigned int t){
unsigned int x;
unsigned char y;
for(x = 0; x<t; x++) {
for(y=0; y<106; y++);
}
}
#else
#error "Khong co ham Delay_ms nao
tuong ung"
#endif

Bước 4:
Tạo một file tên là: delay.h
Sau đó viết code cho hàm độ trễ thời gian Delay
#ifndef _DELAY_H_
#define _DELAY_H_
void Delay_ms(unsigned int t);
#endif
Lab5:Tạođèngiaothông

Lab6:MôtảmànhìnhLCDhiểnthịchữchạy

Lab6:MôtảmànhìnhLCDhiểnthịchữchạy
Yêu cầu:
Mạch AT89C51
Màn hình: LM016L
DC: hiển thị 5V trong menu Generator Mode
Nguồn tiếp đất: Ground

Lab6:MôtảmànhìnhLCDhiểnthịchữchạy
#include<REGX51.H>
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P1^2;
void delay(unsigned int);
void cmd(unsigned char);
void dat(unsigned char);
void main(void){
unsigned char ch[]="Hello";
unsigned char ch1[]="VanHach";
unsigned int i,j,k;
cmd(0x38);
cmd(0x01);
cmd(0x0c);
cmd(0x83);
cmd(0x06);

Lab6:MôtảmànhìnhLCDhiểnthịchữchạy
for(i=0;ch[i]!='\0';i++)
dat(ch[i]);
cmd(0xc3);
for(j=0;ch1[j]!='\0';j++){
dat(ch1[j]);
}
while(1){
for(k=0;k<16;k++){
cmd(0x1c);
}}
}
void delay(unsigned int t){
unsigned int i,j;
e=1;
for(i=0;i<t;i++)
for(j=0;j<1275;j++);
e=0;
}

Lab6:MôtảmànhìnhLCDhiểnthịchữchạy
void cmd(unsigned char ch){
rs=0;
rw=0;
P2=ch;
delay(20);
}
void dat(unsigned char ch){
rs=1;
rw=0;
P2=ch;
delay(20);
}

Lab7:Xâydựngmôhìnhmôtảhoạtđộngcủabánhxe

Lab7:Xâydựngmôhìnhmôtảhoạtđộngcủabánhxe
#include <REGX51.H>
sbit Banh1Trai = P2^0;
sbit Banh1Phai = P2^1;
sbit Banh2Trai = P2^2;
sbit Banh2Phai = P2^3;
sbit DKTrai = P1^0;
sbit DKPhai = P1^1;
sbit DKDung = P1^2;
void main(void){
DKTrai = 0;
DKPhai = 0;
DKDung = 0;
while(1){//Xu ly cho o to re trai
if(DKTrai == 0 && DKPhai == 1 && DKDung == 1){
Banh1Trai=0;
Banh1Phai=1;
Banh2Trai=0;
Banh2Phai=1; }
//Xu ly truong hop re phai
else if (DKPhai == 0 && DKTrai == 1 && DKDung == 1 ){
Banh1Trai=1;
Banh1Phai=0;
Banh2Trai=1;
Banh2Phai=0; }
//Xu ly truong hop dung
else if (DKDung == 0 && DKTrai == 1 && DKPhai == 1 ){
Banh1Trai=1;
Banh1Phai=1;
Banh2Trai=1;
Banh2Phai=1; }}}
Chương
trình chính
Khai báo

BÀI KIỂM TRA: 01 TIẾT
Yêu cầu:
(1). Thiết kế hình ngôi sao 5 cánh sau
(2). Nhấp nháy 3 lần liên tiếp
(3). Vẽ đèn ngôi sao lần lượt theo chiều kim đồng hồ
(4). Vẽ đèn chạy dọc xung quanh theo đườngbiên
(5). Đèn sáng dừng

Anh/ Chị hãy thiết kế đèn Led hình ngôi sao 5 cánh, với
các thiết bị sau:
(1). Mạch 8051: AT89C51
(2). Đèn LED –YELLOW (Tổng 20 đèn Led)
Yêu cầu thực hiện viết chương trình C sau:
1. Tạo cho tất cả đèn Led nhấp nháy liên tục
2. Chạy đèn Led nhấp nháy theo chiều thuận vẽ hình ngôi
sao
3. Chạy đèn Led nhấp nháy theo đườngviền tròn xung
quang
ĐỀ KIỂM TRA (1 tiết)

ARDUINO

ARDUINO

Bước 1: Kết nối arduino uno r3 với máy tính.
HướngdẫnkếtnốiArduinounoR3vớimáytính

Bước2:Tìmcổngkếtnốicủa
ArduinoUnoR3vớimáytính.
KhiArduinoUnoR3kếtnốivớimáy
tính,nósẽsửdụngmộtcổngCOM
đểmáytínhvàbomạchcóthểtruyền
tảidữliệuqualạithôngqua
cổngnày.Windowscóthểquảnlíđến
256cổngCOM.Đểtìmđượccổng
COMđangđượcsửdụngđểmáytính
vàmạchArduinoUNOR3giaotiếp
vớinhau,nhớphảimởchứcnăng
DeviceManagercủaWindows
HướngdẫnkếtnốiArduinounoR3vớimáytính

Bước2:TìmcổngkếtnốicủaArduinoUnoR3vớimáytính.
MởmụcPorts(COM&LPT),chúngtasẽthấycổngCOMArduinoUnoR3đangkếtnối.
HướngdẫnkếtnốiArduinounoR3vớimáytính

Bước3:Nạpchươngtrìnhchoarduinounor3.
HướngdẫnkếtnốiArduinounoR3vớimáytính

TiếptheovàomenuTools->SerialPort->chọncổngArduinođangkếtnốivới
máytính.
HướngdẫnkếtnốiArduinounoR3vớimáytính

XácnhậncổngCOMcủaArduinoIDEởgócdướicùngbênphảicửasổlàm
việc.
HướngdẫnkếtnốiArduinounoR3vớimáytính

VàomenuTools->Programmer->chọnAVRISP
HướngdẫnkếtnốiArduinounoR3vớimáytính

Tiếptheotanạpmãnguồnchươngchoarduinounor3.
HướngdẫnkếtnốiArduinounoR3vớimáytính

ChươngtrìnhnàycóchứcnănglàđiềukhiểnđènLED13
màucamtrênmạchArduinoUnoR3nhấpnháyvớichukì
1giây.
HướngdẫnkếtnốiArduinounoR3vớimáytính

Vàtalàm1thaotáccuốicùngđểnạpchươngtrình.
HướngdẫnkếtnốiArduinounoR3vớimáytính

Vùnglệnh:Baogồmcácnútlệnhmenu(File,Edit,Sketch,Tools,Help).Phía
dướilàcáciconchophépsửdụngnhanhcácchứcnăngthườngdùngcủaIDE
đượcmiêutảnhưsau:
HướngdẫnkếtnốiArduinounoR3vớimáytính

Download Bộ thư viên hỗ trợ các dòng Arduino cho
Protues:ARDUINO.IDXvà ARDUINO.LIB để có các mạch của Arduino sau:
-Arduino Uno R3
-Arduino Mega 2560
-Arduino Mega 1280
-Arduino Nano
-Arduino Mini
-Arduino Pro Mini
Sau đó copy vào đường dẫn sau
C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\LIBRARY
Kết nối giữa Arduino với Protues

// Hàm setup chạy một lần duy nhất khi khởi động chương trình
void setup() {
​// đặt 'led' là OUTPUT
pinMode(13, OUTPUT);
}
// Hàm loop chạy mãi mãi sau khi kết thúc hàm setup()
void loop() {
digitalWrite(13, HIGH); // bật đèn led sáng
delay(1000); // dừng chương trình trong 1 giây
digitalWrite(13, LOW); // tắt đèn led
delay(1000); // dừng chương trình trong 1 giây
}
HướngdẫnkếtnốiArduinounoR3vớimáytính

Hiển thị màn hình LCD giữa Arduino với Protues

Thiếtbịcầnlấy
(1)BomạchArduino:SIMULINOUNO
(2)MànhìnhLCD:LM016L
(3)Điệntrở:POT
MặcđịnhđườngdẫncủaArduinoxuấtrafile.hex
C:\\Users\\Admin\\AppData\\Local\\Temp\\arduin
o_build_445251/LCD.ino.hex
Hiển thị màn hình LCD giữa Arduino với Protues

#include<LiquidCrystal.h>
LiquidCrystallcd(12,11,5,4,3,2);
voidsetup(){
}
voidloop(){
}
Hiển thị màn hình LCD giữa Arduino với Protues

Thiếtbịcầnlấy
(1)BomạchArduino:SIMULINOUNO
(2)Điệntrở:MINRES330R
(3)ĐènLed:RED,BLUE
MặcđịnhđườngdẫncủaArduinoxuấtrafile.hex
C:\\Users\\Admin\\AppData\\Local\\Temp\\arduin
o_build_445251/LCD.ino.hex
Tạo đèn nhấp nháy giữa Arduino với Protues

Tạo đèn nhấp nháy giữa Arduino với Protues

voidsetup(){
//putyoursetupcodehere,torunonce:
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
}
Tạo đèn nhấp nháy giữa Arduino với Protues
voidloop(){
//putyourmaincodehere,torunrepeatedly:
digitalWrite(13,HIGH);
delay(400);
digitalWrite(12,HIGH);
delay(400);
digitalWrite(11,HIGH);
delay(400);
digitalWrite(10,HIGH);
delay(400);
digitalWrite(9,HIGH);
delay(400);
digitalWrite(8,HIGH);
delay(400);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
delay(100);
}

voidsetup(){
//putyoursetupcodehere,torunonce:
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
}
Tạo đèn nhấp nháy giữa Arduino với Protues
voidtraiphai(){
inti;
for(i=1;i<=9;i++){
digitalWrite(i,HIGH);//Mởbóng
delay(100);
digitalWrite(i,LOW);//Tắtbóng
delay(100);
}
}
voidloop(){
traiphai();
}

Tạo các số sử dụng Arduino với Protues
Thiếtbịcầnlấy
(1)BomạchArduino:SIMULINOUNO
(2)Điệntrở:MINRES330R
(3)ĐènLed:7SEG-COM-CATHODE

Tạo các số trên bo mạch Arduino với Protues

Đo nhiệt độ, độ ẩm trên bo mạchArduino với Protues

Đo lường khoảng cách dựa vào Arduino và cảm biến siêu âmHC-SR04

Đo lường khoảng cách dựa vào Arduino và cảm biến siêu âmHC-SR04

//chân ST_CP của 74HC595
int latchPin = 8;
//chân SH_CP của 74HC595
int clockPin = 12;
//Chân DS của 74HC595
int dataPin = 11;
// Ta sẽ xây dựng mảng hằng số với các giá trị cho trước
// Các bit được đánh số thứ tự (0-7) từ phải qua trái (tương ứng với
A-F,DP)
// Vì ta dùng LED 7 đoạn chung cực dương nên với các bit 0
// thì các đoạn của LED 7 đoạn sẽ sáng
// với các bit 1 thì đoạn ấy sẽ tắt

//mảng có 10 số (từ 0-9) và
const byte Seg[10] = {
​0b11000000,//0 -các thanh từ a-f sán
​0b11111001,//1 -chỉ có 2 thanh b,c sán
​0b10100100,//
​0b10110000,//
​0b10011001,//
​0b10010010,//
​0b10000010,//
​0b11111000,//
​0b10000000,//
​0b10010000,//
};
void setup() {
pinMode(latchPin, OUTPUT)
​pinMode(clockPin, OUTPUT)
​pinMode(dataPin, OUTPUT)
}

void HienThiLED7doan(unsigned long Giatri, byte SoLed = 2) {
​byte *array= new byte[SoLed]
​for (byte i = 0; i < SoLed; i++)
​//Lấy các chữ số từ phải quá trái
​array[i] = (byte)(Giatri % 10UL)
​Giatri = (unsigned long)(Giatri /10UL)
​digitalWrite(latchPin, LOW)
​for (int i = SoLed -1; i >= 0; i--
​shiftOut(dataPin, clockPin, MSBFIRST, Seg[array[i]]);
​digitalWrite(latchPin, HIGH)
​free(array)
}
void loop() {
​static unsigned long point = 0
​HienThiLED7doan(point, 2)
​point = (point + 1) % 100UL; // Vòng tuần hoàn từ 0--9
​delay(500);//Đợi 0.5 s cho mỗi lần tăng s
}