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

TỔNG hợp CODE CHO bài THI GIỮA kì TT VI xử lý lần i

5 345 8

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 18,26 KB
File đính kèm Vi xử lý đề thi và đáp án (1).rar (2 MB)

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

Nội dung

TỔNG HỢP CODE CHO BÀI THI GIỮA KÌ TT VI XỬ LÝ LẦN I1.. khi xuất lên led bị xóa số 0 vô nghĩa... Lcd Thư viện: "E:\TT_VXL_T.HOAN_ST2\TT VXL\TT VXL\ Thu Vien\TV_PICKIT2_SHIFT_LCD.c" Các hà

Trang 1

TỔNG HỢP CODE CHO BÀI THI GIỮA KÌ TT VI XỬ LÝ LẦN I

1 Xử lý nút nhấn

if(inputcd(nutnhan)==0) xuat_32led_don_4byte(0,0,0,0);

2 Xử lý ma trận phím

Thư viện : "E:\TT_VXL_T.HOAN_ST2\TT VXL\TT VXL\Thu Vien\TV_PICKIT2_SHIFT_KEY4X4_138.c"

Xử lý:

MP=KEY_4X4_DW();

IF(MP=0X0A) XUAT_32LED_DON_4BYTE(0,0,0,MP);

3 Bồn led 7 đoạn trực tiếp

Xử lý:

XUAT_4LED_7DOAN_4SO( UNSIGNED INT BL743,BL742,BL741,BL740 );

=>Cách sử dụng:

-Sử dụng trực tiếp: XUAT_4LED_7DOAN_4SO( 0xff, MA7DOAN[t/100%10], MA7DOAN[t/10%10] , MA7DOAN[t%10] );

-Sử dụng gián tiếp: tách số, giải mã rồi mới dùng.

XUAT_4LED_7DOAN_GIAIMA_XOA_SO0 ( t ) ;

Trong đó: t là số có 1,2,3 hoặc 4 chữ số khi xuất lên led bị xóa số 0 vô nghĩa.

4 Counter

Xử lý:

Đặt 2 dòng code này sau SET_UP_PORT_IC_CHOT(); với a là giá trị đặt trước:

setup_timer_0(T0_EXT_L_TO_H|T0_DIV_1 );

SET_TIMER0(a);

Sau đó xử lý trong while(true): bao gồm đọc kết quả trả về cũng như khống chế số đếm

sp = get_timer0();

if(sp>b){sp=a; SET_TIMER0(a );}

Muốn tắt counter thì dùng lệnh:

setup_timer_0(T0_OFF);

5 Tám led 7 đoạn quét

Nhất thiết phải xử lí led quét trong while(true)

Có 3 cách xử lý:

Cách 1: chọn vị trị hiển thị bằng mã và số hiển thị:

XUAT_8LED_7DOAN_QUET_1( 0x7f, MA7DOAN[9] );

delay_ms(1);

XUAT_8LED_7DOAN_QUET_1(0xff, 0xff);

Trang 2

Trong đó mã led: xem bài mẫu 501 trang 95

Cách 2: chọn vị trị hiển thị bằng số và số hiển thị:

XUAT_8LED_7DOAN_QUET_2( 0, MA7DOAN[9] );

delay_ms(1);

XUAT_8LED_7DOAN_QUET_2( 0 , 0xff);

Cách 3: giải mã từng led rồi xuất ra hết:

Void giaima()

{

LED_7DQ[ 0 ]= MA7DOAN [ a%10 ];

LED_7DQ[ 1 ]= MA7DOAN [ a/10%10 ];

LED_7DQ[ 2 ]= MA7DOAN [ a/100%10 ];

LED_7DQ[ 3 ]= MA7DOAN [ a/1000%10 ];

}

HIEN_THI_8LED_7DOAN_QUET_ALL();

Cách này được ứng dụng cao nhất trong 3 cách.

Tắt hết: XUAT_8LED_7DOAN_QUET_TAT_LED();

6 Timer

Xử lý:

Sau thư viện hàm:

SIGNED INT8 BDN;

#int_timer1

void ngatt1()

{

SET_TIMER1(29411);

BDN++;

}

Sau SET_UP_PORT_IC_CHOT();

SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_8);

SET_TIMER1(29411);

ENABLE_INTERRUPTS(GLOBAL);

ENABLE_INTERRUPTS(INT_TIMER1);

Trong while(true)

If(BDN>=5)

{

BDN=BDN-5;

// Xử lý công việc khi định thời đủ thời gian yêu cầu.

}

Else

Trang 3

{

// Xử lý công việc khác khi chưa định thời đủ

}

Định thời gian 0.5s: 3036

7 Lcd

Thư viện: "E:\TT_VXL_T.HOAN_ST2\TT VXL\TT VXL\ Thu Vien\TV_PICKIT2_SHIFT_LCD.c"

Các hàm:

Khởi tạo lcd: SETUP_LCD (); Ta luôn gọi chương trình này ngay sau dòng SET_UP_PORT_IC_CHOT() để cấu hình cho LCD.

Di chuyển con trỏ: LCD_GOTO_XY(hang, cot);

Xuất mã điều khiển ra lcd: LCD_COMMAND(lenh); ( xem các lệnh trong thư viện)

Xuất dữ liệu ra lcd: LCD_DATA(dulieuhienthi) ; trong đó dữ liệu hiển thị phải được mã hóa sang mã ASCII Đối với kí tự thì thêm vào ’ ’ ,chuỗi thì thêm vào “”, số thì +0x30, kí tự A<B<C<D…<F thì +0x37, các kí tự đặc biệt thì tra bảng mã.(ví dụ dấu độ 0xDF)

Vd:

LCD_DATA(t/1000%10+ 0x30);

LCD_DATA(t/100%10+ 0x30);

LCD_DATA(t/10%10+ 0x30);

LCD_DATA(t%10+ 0x30);

LCD_DATA(“LAM QUOC KIET”);

8 Lcd kí tự tự tạo

Tự tạo kí tự: xem bài 635 tạo apple làm mẫu

Tạo số phông lớn: sl(số,x,y) ;

Vd:

sl(i/10, 1, 7);

sl(i%10, 1, 10);

9 Glcd

Thư viện: "E:\TT_VXL_T.HOAN_ST2\TT VXL\TT VXL\Thu Vien\TV_PICKIT2_SHIFT_GLCD128X64.c"

"C:\Program Files (x86)\PICC\Drivers\ GRAPHICS.C"

Trang 4

Xử lí:

Thiết lập chế độ text: SETUP_GLCD (0x30);

Xuất mã điều khiển rag lcd: GLCD_COMMAND(Lenh); Xuất kĩ tự ra glcd: GLCD_DATA(kytu);

Thiết lập chế độ graphics: SETUP_GLCD (0x36);

Xóa màu nền: GLCD_MAU_NEN(mau); //màu 0

Cho phép hiển thị ra màn hình : cực kì quan trọng : GDRAM_VDK_TO_GDRAM_GLCD_ALL() ;

Xuất logo spkt: GLCD_XUAT_ANH(int width,int height,int x,int y); 64, 64, 63, 0.

Một số lệnh từ thư viện graphics:

glcd_line(x1, y1, x2, y2, color);

glcd_rect(x1, y1, x2, y2, fill, color);

glcd_bar(x1, y1, x2, y2, width, color);

glcd_circle(x, y, radius, fill, color);

10 Adc

Xử lí chung:

Đặt 2 dòng code này sau SET_UP_PORT_IC_CHOT();

setup_adc(ADC_CLOCK_DIV_32);

setup_adc_ports(AN0_TO_AN2|VSS_VDD);

Xử lí cảm biến lm35:

set_adc_channel(0);

kq1=0;

for(n=0;n<solan;n++)

{

kq1= kq1+ read_adc();

}

kq1 = kq1/2.046;

kq1 = kq1/solan;

Trang 5

Xử lí cảm biến khoảng cách:

Thếm thư viện #include"math.h"

set_adc_channel(2);

kq3 = read_adc();

kq3 = pow(4277/kq3,1.106);

if(kq3>80) kq3=80;

Lưu ý: các giá trị cảm biến phải khai báo biến int16 Một số lệnh kèm theo điều khiển các module liên quan:

Tắt hoặc mở đèn nung nóng thay đổi nhiệt độ lm35: TRIAC_2_OFF();

TRIAC_2_ON();

Tắt hoặc mở chuông: gặp yêu cầu này thay bằng tắt hoặc mở 32 led đơn.

BUZZER_ON();

BUZZER_OFF();

Ngày đăng: 07/11/2019, 12:08

TỪ KHÓA LIÊN QUAN

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

w