Tải bản đầy đủ (.docx) (5 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (81.2 KB, 5 trang )

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);


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


{
// 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ự Acá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"


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
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{
kq1= kq1+ read_adc();
}
kq1 = kq1/2.046;
kq1 = kq1/solan;

width,int


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();



×