lOMoARcPSD| 58931565
THỰC TẬP VI XỬ LÝ:
Done:xxxxx
-
Chương 3:
o Module 1-32 Led đơn:
Hàm led32.ledx…[];
+ ledx1[a]: a = 0 … 31;
+ ledx8[a]: a = 0 … 3;
+ ledx16[a]: a = 0 … 1;
+ ledx32
Hàm led32_display(); hiển thị led
o Nút nhấn:
BT0 = ON = UP = ON1
BT1 = OFF = DW = OFF1
BT2 = INV = CLR = ON2
BT3 = MOD = OFF2
Input(button) == 0; không chống dội
Inputcd(button) == 0; chống dội
o Bàn phím ma trận:
If(key4x4_read() == OK)
{ bien = key4x4.key;
}
-
Chương 4:
o 4 led 7 đoạn trực tiếp:
d7seg_display(); xuất dữ liệu ra led
lOMoARcPSD| 58931565
d7seg.led[x]; điều khiển led 7 đoạn thứ x (với x = 0…3, 0 là tận cùng bên phải)
o Timer/counter: Setup_timer_0(a);
Với a là mode:
a == T0_EXT_H_TO_L (đếm xung ngoại bằng cảm biến thu phát hồng
ngoại) a == T0_DIV_1 (bộ chia trước là 1) a == T0_8_BIT (mặc định là 16,
khi thêm lệnh này thì timer0 đếm 8 bit)
set_timer0(x); đặt trước giá trị cho timer0 với x là giá trị đặt trước get_timer0();
đọc giá trị từ timer0
- Chương 5:
o 8 led 7 đoạn anode chung dùng pp quét
s7seg_display(); xuất dữ liệu ra led
s7seg.led[x]; điều khiển led 7 đoạn thứ x (với x = 0…7, 0 là tận cùng bên phải)
o Timer1 định thời: Setup_timer_1(a);
Với a là mode:
a == T1_INTERNAL (đếm xung ngoại nội) a ==
T1_DIV_BY_X (bộ chia trước là X = 1,2,4,8)
set_timer0(x); đặt trước giá trị cho timer1 với x là giá trị đặt trước với X ở trên = 8
thì x này = 3036 => định thời 1s chính xác
-
Chương 6:
o LCD 20x4:
Lcd_command(a); a = 0x01 hoặc 0x00;
Lcd_data(int8 data); hàm xuất dữ liệu hiển thị
Lcd_setup(); hàm khởi tạo LCD
Lcd_goto(a,b) với a là cột (0 - 19) b là hàng (0 – 3);
Lcd_write_2x3_num(x,a,b); hiển thị 1 số FONT 2x3 với x là số cần hiện thị (0-9) a
là cột (0 - 19) b là hàng (0 – 3);
lOMoARcPSD| 58931565
Lcd_write_4x3_num(x,a); hiển thị 1 số FONT 4x3 với x là số cần hiện thị (0-9) a
là cột (0 - 17);
Printf(lcd_data, “ký tự/khai báo kiểu xuất biến”,bien); in dữ liệu ra màn hình LCD;
khi biến là unsigned int8 ta dùng %u khi biến là signed int8 ta dùng %d khi biến là
unsigned int16 ta dùng %lu khi biến là signed int16 ta dùng %ld khi biến là
unsigned int32 ta dùng %lu khi biến là signed int32 ta dùng %ld khi biến là float ta
dùng %f
o Vùng nhớ CGRAM của LCD
BYTE
4
3
1
0
HEX
0
1
2
3
4
5
6
7
Ta muốn vẽ hình gì thì chỉ cần điền điểm vẽ hình đó lên bảng 5x8 này, và sau đó
khai bảo mảng 8 byte của mã đã tạo => khởi tạo địa chỉ bắt đầu của 1 trong 8 vùng
nhớ để lưu dữ liệu (từ 0x40 – 0x47) => coppy 8 byte dữ liệu vào vùng nhớ => gọi
hiển thị ký tự (vùng nhớ 0 – 7 ứng với 0x40 – 0x47) lcd_command(0x40); // Di
chuyển đến vùng nhớ CGRAM for(n=0;n<8;n++) lcd_data(ma[]); // Ghi mã vào
CGRAM
o GLCD 128x64 (x,y) với x = 0 … 127; y = 0…64;
Glcd_clear(color); hàm xóa toàn bộ dữ liệu đồ họa (color = 0 màu xanh, color = 1
màu trắng)
Glcd_pixel(x,y,color); hàm ghi 1 điểm ảnh ra glcd(không cần dùng glcd_update();)
lOMoARcPSD| 58931565
Glcd_pixel_temp(x,y,color); hàm ghi 1 điểm ảnh vào ram
Glcd_vertical_line(x,y1,y2,color); vẽ đường thẳng đứng
Glcd_horizone_line(x1,x2,y,color); vẽ đường thẳng ngang
Glcd_text_setup(x,y,size,color,overlay); cài đặt thông số text (size là kích thước
n(5x7) chỉ cần điền n vào size; overlay = 0 là không ghi đè, 1 là ghi đè)
Glcd_text(ký tự); hiển thị chuỗi ký tự ra glcd
Glcd_spkt_logo_raw(x); vẽ logo spkt với kích thước 64x64 (với x là cột bắt đầu
vẽ)
Glcd_line(x1,y1,x2,y2,color); vẽ đoạn thẳng qua 2 điểm
Glcd_rect(x1,y1,x2,y2,fill,color); vẽ hình chữ nhật(fill = 0 không tô kín, = 1 là tô
kín)
Glcd_bar(x1,y1,x2,y2,width,color); vẽ đoạn thẳng có bề dày đi qua 2 điểm
Glcd_circle(x,y,radius,fill,color); vẽ hình tròn (radius là bán kính hình tròn,(x,y) là
tọa độ tâm)
Glcd_triangle(x1,y1,x2,y2,x3,y3,fill,color); vẽ hình tam giác
Glcd_update(); hiển thị ra màn hình, những cái trên sau khi viết xong cần câu lệnh
này mới hiển thị ra màn hình glcd được Glcd_data(data); hàm xuất dữ liệu ra glcd
Glcd_command(); hàm xuất dữ liệu ra glcd
Glcd_setup(); khởi tạo glcd- phải gọi hàm này thì glcd mới hoạt động

Preview text:

lOMoAR cPSD| 58931565
THỰC TẬP VI XỬ LÝ: Done:xxxxx - Chương 3: o Module 1-32 Led đơn: Hàm led32.ledx…[]; + ledx1[a]: a = 0 … 31; + ledx8[a]: a = 0 … 3; + ledx16[a]: a = 0 … 1; + ledx32
Hàm led32_display(); hiển thị led o Nút nhấn: BT0 = ON = UP = ON1 BT1 = OFF = DW = OFF1 BT2 = INV = CLR = ON2 BT3 = MOD = OFF2
Input(button) == 0; không chống dội
Inputcd(button) == 0; chống dội o Bàn phím ma trận: If(key4x4_read() == OK) { bien = key4x4.key; } - Chương 4:
o 4 led 7 đoạn trực tiếp:
d7seg_display(); xuất dữ liệu ra led lOMoAR cPSD| 58931565
d7seg.led[x]; điều khiển led 7 đoạn thứ x (với x = 0…3, 0 là tận cùng bên phải)
o Timer/counter: Setup_timer_0(a); Với a là mode:
a == T0_EXT_H_TO_L (đếm xung ngoại bằng cảm biến thu phát hồng
ngoại) a == T0_DIV_1 (bộ chia trước là 1) a == T0_8_BIT (mặc định là 16,
khi thêm lệnh này thì timer0 đếm 8 bit)
set_timer0(x); đặt trước giá trị cho timer0 với x là giá trị đặt trước get_timer0(); đọc giá trị từ timer0 - Chương 5:
o 8 led 7 đoạn anode chung dùng pp quét
s7seg_display(); xuất dữ liệu ra led
s7seg.led[x]; điều khiển led 7 đoạn thứ x (với x = 0…7, 0 là tận cùng bên phải)
o Timer1 định thời: Setup_timer_1(a); Với a là mode:
a == T1_INTERNAL (đếm xung ngoại nội) a ==
T1_DIV_BY_X (bộ chia trước là X = 1,2,4,8)
set_timer0(x); đặt trước giá trị cho timer1 với x là giá trị đặt trước với X ở trên = 8
thì x này = 3036 => định thời 1s chính xác - Chương 6: o LCD 20x4:
Lcd_command(a); a = 0x01 hoặc 0x00;
Lcd_data(int8 data); hàm xuất dữ liệu hiển thị
Lcd_setup(); hàm khởi tạo LCD
Lcd_goto(a,b) với a là cột (0 - 19) b là hàng (0 – 3);
Lcd_write_2x3_num(x,a,b); hiển thị 1 số FONT 2x3 với x là số cần hiện thị (0-9) a
là cột (0 - 19) b là hàng (0 – 3); lOMoAR cPSD| 58931565
Lcd_write_4x3_num(x,a); hiển thị 1 số FONT 4x3 với x là số cần hiện thị (0-9) a là cột (0 - 17);
Printf(lcd_data, “ký tự/khai báo kiểu xuất biến”,bien); in dữ liệu ra màn hình LCD;
khi biến là unsigned int8 ta dùng %u khi biến là signed int8 ta dùng %d khi biến là
unsigned int16 ta dùng %lu khi biến là signed int16 ta dùng %ld khi biến là
unsigned int32 ta dùng %lu khi biến là signed int32 ta dùng %ld khi biến là float ta dùng %f o Vùng nhớ CGRAM của LCD BYTE 4 3 2 1 0 HEX 0 1 2 3 4 5 6 7
Ta muốn vẽ hình gì thì chỉ cần điền điểm vẽ hình đó lên bảng 5x8 này, và sau đó
khai bảo mảng 8 byte của mã đã tạo => khởi tạo địa chỉ bắt đầu của 1 trong 8 vùng
nhớ để lưu dữ liệu (từ 0x40 – 0x47) => coppy 8 byte dữ liệu vào vùng nhớ => gọi
hiển thị ký tự (vùng nhớ 0 – 7 ứng với 0x40 – 0x47) lcd_command(0x40); // Di
chuyển đến vùng nhớ CGRAM for(n=0;n<8;n++) lcd_data(ma[]); // Ghi mã vào CGRAM
o GLCD 128x64 (x,y) với x = 0 … 127; y = 0…64;
Glcd_clear(color); hàm xóa toàn bộ dữ liệu đồ họa (color = 0 màu xanh, color = 1 màu trắng)
Glcd_pixel(x,y,color); hàm ghi 1 điểm ảnh ra glcd(không cần dùng glcd_update();) lOMoAR cPSD| 58931565
Glcd_pixel_temp(x,y,color); hàm ghi 1 điểm ảnh vào ram
Glcd_vertical_line(x,y1,y2,color); vẽ đường thẳng đứng
Glcd_horizone_line(x1,x2,y,color); vẽ đường thẳng ngang
Glcd_text_setup(x,y,size,color,overlay); cài đặt thông số text (size là kích thước
n(5x7) chỉ cần điền n vào size; overlay = 0 là không ghi đè, 1 là ghi đè)
Glcd_text(ký tự); hiển thị chuỗi ký tự ra glcd
Glcd_spkt_logo_raw(x); vẽ logo spkt với kích thước 64x64 (với x là cột bắt đầu vẽ)
Glcd_line(x1,y1,x2,y2,color); vẽ đoạn thẳng qua 2 điểm
Glcd_rect(x1,y1,x2,y2,fill,color); vẽ hình chữ nhật(fill = 0 không tô kín, = 1 là tô kín)
Glcd_bar(x1,y1,x2,y2,width,color); vẽ đoạn thẳng có bề dày đi qua 2 điểm
Glcd_circle(x,y,radius,fill,color); vẽ hình tròn (radius là bán kính hình tròn,(x,y) là tọa độ tâm)
Glcd_triangle(x1,y1,x2,y2,x3,y3,fill,color); vẽ hình tam giác
Glcd_update(); hiển thị ra màn hình, những cái trên sau khi viết xong cần câu lệnh
này mới hiển thị ra màn hình glcd được Glcd_data(data); hàm xuất dữ liệu ra glcd
Glcd_command(); hàm xuất dữ liệu ra glcd
Glcd_setup(); khởi tạo glcd- phải gọi hàm này thì glcd mới hoạt động