1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo THÍ NGHIỆM NGÔN NGỮ lập TRÌNH

19 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Yêu cầu VD2: dùng toán tử số học để thể hiện giá trị nhị phân của các số nguyên trên các Led mắc anode chung Hình mô phỏng trên proteus Code trong adruno #include //LED1 ung voi bit 0 L

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

- -BÁO CÁO THÍ NGHIỆM NGÔN NGỮ LẬP

TRÌNH

Mã lớp học: 697121

Sinh viên thực hiện: Trần Văn Đạt - 20172453

Trang 2

1 Yêu cầu VD1: mở rộng trên 8 LED và thay đổi tốc độ chạy

Hình ảnh mô phỏng trên Proteus

Code trong adruno

#include <LabC.h>

Output LED1=LED_BAND-17;//LED duoc noi voi chan so 12 va co vai tro la output

Output LED2=LED_BAND-18;

Output LED3=LED_BAND-19;

Output LED4=LED_BAND-20;

Output LED5=LED_BAND-21;

Output LED6=LED_BAND-22;

Output LED7=LED_BAND-23;

Output LED8=LED_BAND-24;

Delay DELAY;

void setup() {

}

void loop() {

//led1 sang

LED1=0;

LED2=1;

Trang 3

LED3=1; LED4=1; LED5=1; LED6=1; LED7=1; LED8=1; DELAY=100; //led2 sang LED1=1; LED2=0; LED3=1; LED4=1; LED5=1; LED6=1; LED7=1; LED8=1; DELAY=200; //led3 sang LED1=1; LED2=1; LED3=0; LED4=1; LED5=1; LED6=1; LED7=1; LED8=1; DELAY=300; //led4 sang LED1=1; LED2=1; LED3=1; LED4=0; LED5=1; LED6=1; LED7=1; LED8=1; DELAY=400; //led5 sang LED1=1; LED2=1;

Trang 4

LED3=1; LED4=1; LED5=0; LED6=1; LED7=1; LED8=1; DELAY=500; //led6 sang LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=0; LED7=1; LED8=1; DELAY=600; //led7 sang LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; LED7=0; LED8=1; DELAY=700; //led8 sang LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; LED7=1; LED8=0; DELAY=800;

}

Trang 5

2 Yêu cầu VD2: dùng toán tử số học để thể hiện giá trị nhị phân của các số nguyên trên các Led mắc anode chung

Hình mô phỏng trên proteus

Code trong adruno

#include <LabC.h>

//LED1 ung voi bit 0 LED2 ung voi bit 1

Output LED1=LED_BAND-17;//LED duoc noi voi chan so 12 va co vai tro la output

Output LED2=LED_BAND-18;

Output LED3=LED_BAND-19;

Output LED4=LED_BAND-20;

Output LED5=LED_BAND-21;

Output LED6=LED_BAND-22;

Output LED7=LED_BAND-23;

Output LED8=LED_BAND-24;

Delay DELAY;

void setup() {

unsigned int a;//a la gia tri so nguyen

}

void loop() {

a=~1;

Trang 6

LED1=a/1%2; LED2=a/2%2; LED3=a/4%2; LED4=a/8%2; LED5=a/16%2; LED6=a/32%2; LED7=a/64%2; LED8=a/128%2; DELAY=200; a=~2;

LED1=a/1%2; LED2=a/2%2; LED3=a/4%2; LED4=a/8%2; LED5=a/16%2; LED6=a/32%2; LED7=a/64%2; LED8=a/128%2; DELAY=200; a=~4;

LED1=a/1%2; LED2=a/2%2; LED3=a/4%2; LED4=a/8%2; LED5=a/16%2; LED6=a/32%2; LED7=a/64%2; LED8=a/128%2; DELAY=200; a=~8;

LED1=a/1%2; LED2=a/2%2; LED3=a/4%2; LED4=a/8%2; LED5=a/16%2; LED6=a/32%2; LED7=a/64%2; LED8=a/128%2; DELAY=200;

Trang 7

}

3 Yêu cầu VD3: dùng vòng lặp while để cho các Led chạy từ trái sang phải và ngược lại

Hình ảnh mô phỏng trên proteus

Code trong adruno để LED sáng từ trái sang phải:

#include <LabC.h>

Delay DELAY;

void setup() {

unsigned int i;

}

void loop() {

i=0;

while (i<8){

Output LED=LED_BAND-(17+i);

LED=0;

i++;

DELAY=200;

LED=1;}

}

Để LED sáng từ phải sang trái:

Trang 8

#include <LabC.h>

Delay DELAY;

void setup() {

unsigned int i;

}

void loop() {

i=0;

while (i<8){

Output LED=LED_BAND-24+i;

LED=0;

i++;

DELAY=200;

LED=1;}

}

4 Yêu cầu VD4: dùng toán tử sử lý bit để cho các LED sáng lần lượt từ phải sang trái(ngược chiều với VD)

Hình ảnh mô phỏng trên proteus

Code trong druno

#include <LabC.h>

Delay DELAY;

void setup() {}

Trang 9

unsigned int a;

void loop() {

a = 1;

while (a < 512) {

unsigned int x = ~a;

for (int i = 0; i < 8; i++) {

Output LED = LED_BAND -24 + i; LED = (x >> i) & 1;

}

DELAY = 100;

a <<= 1;

}

}

5 Yêu cầu VD5: sử dụng LED7 thanh anode chung Hình ảnh mô phỏng trên proteus

Code trong adruno

#include <LabC.h>

Output seg_a=2;

Output seg_b=3;

Output seg_c=4;

Output seg_d=5;

Output seg_e=6;

Trang 10

Output seg_f=7;

Output seg_g=8;

Delay DELAY;

void Number(int number) {

switch(number){

case 0: seg_a=0;seg_b=0;seg_c=0;seg_d=0;seg_e=0;seg_f=0;seg_g=1;break; case 2: seg_a=0;seg_b=0;seg_c=1;seg_d=0;seg_e=0;seg_f=1;seg_g=0;break; case 3: seg_a=0;seg_b=0;seg_c=0;seg_d=0;seg_e=1;seg_f=1;seg_g=0;break; case 4: seg_a=1;seg_b=0;seg_c=0;seg_d=1;seg_e=1;seg_f=0;seg_g=0;break; case 5: seg_a=0;seg_b=1;seg_c=0;seg_d=0;seg_e=1;seg_f=0;seg_g=0;break; case 6: seg_a=0;seg_b=1;seg_c=0;seg_d=0;seg_e=0;seg_f=0;seg_g=0;break; case 7: seg_a=0;seg_b=0;seg_c=0;seg_d=1;seg_e=1;seg_f=1;seg_g=1;break; case 8: seg_a=0;seg_b=0;seg_c=0;seg_d=0;seg_e=0;seg_f=0;seg_g=0;break; case 9: seg_a=0;seg_b=0;seg_c=0;seg_d=0;seg_e=1;seg_f=0;seg_g=0;break; default: break;

}

}

void setup(){

}

void loop() {

Number(0);

DELAY =500;

Number(1);

DELAY =500;

Number(2);

DELAY =500;

Number(3);

DELAY =500;

Number(4);

DELAY =500;

Number(5);

DELAY =500;

Number(6);

DELAY =500;

Number(7);

DELAY = 500;

Number(8);

DELAY =500;

Number(9);

DELAY =500;

Trang 11

6 Yêu cầu VD6: dùng mảng hiển thị số trên LED7 thanh anode chung đưa giá trị ra led được chọn

Hình mô phỏng trên proteus

Code trong adruno

#include <LabC.h>

Delay DELAY;

Output LEDS[4];

Output PINS[8];

unsigned int code7[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; void setup() {

for (int i = 0; i < 4; i++) {

Output led = 10 + i;

led = 1;

LEDS[i] = led;

}

for (int i = 0; i < 8; i++) {

Trang 12

Output pin = 2 + i;

PINS[i] = pin;

}

}

void loop() {

for (int i = 0; i < 4; i++) {

for (int j = 0; j < 4; j++) {

LEDS[j] = (i == j);

}

int code = code7[i];

DELAY = 100;

}

}

7 Yêu cầu VD7: dùng con trỏ hiển thị số trên LED7 thanh anode chung đưa giá trị ra LED được chọn

Hình ảnh mô phỏng trên proteus

Code trong adruno

Trang 13

#include <LabC.h>

Delay DELAY;

Output LEDS[4];

Output PINS[8];

unsigned int code7[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

void setup() {

for (int i = 0; i < 4; i++) {

Output led = 10 + i;

led = 1;

LEDS[i] = led;

}

for (int i = 0; i < 8; i++) {

Output pin = 2 + i;

PINS[i] = pin;

}

}

void loop() {

for (int i = 0; i < 4; i++) {

for (Output * p = LEDS; p < LEDS + 4; p++) {

* p = (p - LEDS == i);

}

int code = code7[i];

DELAY = 100;

}

}

8 Yêu cầu VD8a: viết hàm write cho 8 LED đơn katot chung

Hình ảnh mô phỏng trên proteus

Trang 14

Code trong adruno

#include <LabC.h>

Delay DELAY;

Output PINS[8];

unsigned int a;

void Write(int a, int pin) {

for (int i = 0; i < 8; i++) {

Output p = pin + i;

p = a & (1 << i);

}

}

void setup() {

}

void loop() {

for (a=0; a<256;a++){

Write(a,6);

DELAY =100;

}

}

VD8b: Viết hàm write7 để đưa số nhỏ hơn 10 ra LED 7 thanh Hình ảnh mô phỏng trên proteus

Trang 15

Code trong adruno

#include <LabC.h>

Delay DELAY;

unsigned int a, hex7[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

void Write7(int num){

unsigned int t = hex7[num];

for(int i = 0; i<8; i++){

Output SEG = 8 -i;

SEG = (t >> i) & 1;

}

}

void setup() {

}

void loop() {

for (a=0; a<10;a++){

Write7(a);

DELAY =100;

}

}

9 Yêu cầu VD9: dùng hàm split tách một số nguyên thành 4 chữ số hiển thị từ 0000 đến 9999 trên LED 7 thanh với độ trễ 1s

Trang 16

Hình ảnh mô phỏng trên proteus

Code trong adruno

#include<LabC.h>

Output D1 = 10;

Output D2 = 11;

Output D3 = 12;

Output D4 = 13;

unsigned int hex7[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

Delay DELAY;

void Number(int num){

unsigned int a = hex7[num];

for(int i = 0; i<8; i++){

Output Seg = 2 +i;

Seg = (a >> i) & 1;

}

}

void Off(){

D1 = 0;

D2 = 0;

D3 = 0;

D4 = 0;

Trang 17

void Print(int num){

int hangnghin = num/1000;

int hangtram = num%1000/100;

int hangchuc = num%1000%100/10;

int hangdonvi = num%1000%100%10;

for(int i = 0; i<25; i++)// trạng thái lặp lại 25 lần tương đương delay 1s

{

Off();

D1 = 1;

Number(hangnghin);

DELAY = 1;

Off();

D2 = 1;

Number(hangtram);

DELAY = 1;

Off();

D3 = 1;

Number(hangchuc);

DELAY = 1;

Off();

D4 = 1;

Number(hangdonvi);

DELAY = 1;

}

}

void setup() {

}

void loop() {

for(int i=0; i<10000; i++){

Print(i);

}

}

10 Yêu cầu VD10: viết hàm để LED đơn(katot chung) chạy từ phải sang trái(loại bỏ

đệ quy)

Hình ảnh mô phỏng trên proteus

Trang 18

Code trong adruno

#include <LabC.h>

Delay DELAY;

Output PINS[8];

unsigned int a;

void Write(int a, int pin) { for (int i = 0; i < 8; i++) { Output p = pin + i;

p = a & (1 << i);

}

}

void setup() {

}

void loop() {

for (int j=1;j<256;j=j*2){ Write(j,6);

DELAY =100;

}

}

Trang 19

// Do buổi trước em còn nhiều thắc mắc nên báo cáo buổi 1 không đấy đủ nên báo cáo lần này gồm cả buổi 1 và buổi 2

Mong thầy thông cảm

Em xin chân thành cảm ơn!!

Ngày đăng: 10/08/2021, 18:26

🧩 Sản phẩm bạn có thể quan tâm

w