You are on page 1of 15

1) Các ct chay tự động

#include<tv_pickit2_shift_32led_don.c>
Unsigned int8 ttct;

Sang_tat_32led(10,0);
Sang_tat_dan_pst_32led(10,0);
Sang_tat_dan_tsp_32led(10,0);
Sang_tat_dan_ngoai_vao_32led(10,0);
Sang_tat_dan_trong_ra_32led(10,0);
Sang_don_pst_32led(10,0);
Diem_sang_dich_trai_mat_dan_32led(10,0);
Sang_don_tsp_32led(10,0);
Diem_sang_dich_phai_mat_dan_32led(10,0);
Sang_tat_dan_trai_sang_phai_2x16led(40,0);
Sang_tat_dan_ phai_sang_trai_2x16led(40,0);
Diem_sang_di_chuyen_pst_32led(40,0);
Diem_sang_di_chuyen_tsp_32led(40,0);
Sang_don_tnt_32led(40,0);
Sang_don_ttr_32led(40,0);
2) Xuất led đơn
Xuat_32led_don_4byte(a, b, c, d);
Xuat_32led_don_2word(a, b);
Xuat_32led_don_1dw (a);

3) 32led sáng tắt dần từ p->t xài If

void sang_tat_dan_pst_32led(unsigned int8 dl)


{
if(dem<32)
{
xuat_32led_don_1dw(y);
y =(y<<1)+1;
dalay_tuy_y(dl);
dem++;
}
else if(dem<64)
{
xuat_32led_don_1dw(y);
y =(y<<1);
dalay_tuy_y(dl);
dem++;
}
else
{
dem=0;
y=0;
}
}

4) Sáng dồn t->p rồi p->t 32led


Sang_don_pst_32led(10,0);
5) Tổng hợp hiệu ứng 32led phím up-dw-clr 7 hiệu ứng
Unsigned int8 ttct;
void phim_up()
{
if(!input(up) && (ttct<7))
{
delay_ms(10);
if(!input(up))
{
ttct++;
while(!input(up));
}
}
}
///xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void phim_dw()
{
if(!input(dw) && (ttct>1))
{
delay_ms(10);
if(!input(dw))
{
ttct--;
while(!input(dw));
}
}
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void phim_clr()
{
if(!input(clr) && (ttct>1))
{
ttct=1;
reset_toan_bo_bien();
}
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

6) Bàn phím 4x4

#include<tv_pickit2_shift_key4x4_138.c>
Unsigned int8 mp;
Set_tris_b(0x3c);
Mp = key_4x4_dw();

1) Các hàm xuất 4 led 7 đoạn

Xuat_4led_7doan_4so(a, b, c, d );
Xuat_4led_7doan_3so(a, b, c);
Xuat_4led_7doan_2so(a, b);
Xuat_4led_7doan_1so(a);
Xuat_4led_7doan_giaima_xoa_so0(a);

2) Counter

Unsigned int8 t0;

Setup_timer_0(t0_ext_l_to_h|t0_div_1|t0_8_bit);
Set_timer0(đặt trước);
T0=get_timer0();

3) Timer định thời 1s

Signed int8 giay,bdn;

Setup_timer_1(t1_internal | t1_div_by_8);
Set_timer1(3036);
Enable_interrupts(int_timer1);
Enable_interrupts(global);
Giay=0; bdn=0;

While(true)
{
If(bdn<10) hien_thi_8led_7doan_quet();
Else
{
Bdn = bdn-10;
Giay++;
If(giay==60) giay=0;
}
}

#int_timer1
Void ngat_TM1()
{
Bdn++;
Set_timer1(3036);
}
4) Timer h-m-s tùy chỉnh 3 nút nhấn và hiển thị trên 8
led quét (tối ưu nhất)
signed int8 gio,phut,giay,bdn,gia_tri_mod,dem_tg_exit=0;

void giai_ma_gan_cho_8led_quet()
{
led_7dq[0] = ma7doan[giay%10];
led_7dq[1] = ma7doan[giay/10];
led_7dq[2] = 0xbf;
led_7dq[3] = ma7doan[phut%10];
led_7dq[4] = ma7doan[phut/10];
led_7dq[5] = 0xbf;
led_7dq[6] = ma7doan[gio%10];
led_7dq[7] = ma7doan[gio/10];

if (gia_tri_mod==1) led_7dq[6]=led_7dq[6] & 0x7f;


else if(gia_tri_mod==2) led_7dq[3]=led_7dq[3] & 0x7f;
else if(gia_tri_mod==3) led_7dq[0]=led_7dq[0] & 0x7f;
}

void tat_2led_chinh()
{
if (gia_tri_mod==1) {led_7dq[7]=0xff; led_7dq[6]=0xff;}
else if(gia_tri_mod==2) {led_7dq[4]=0xff;
led_7dq[3]=0xff;}
else if(gia_tri_mod==3) {led_7dq[1]=0xff;
led_7dq[0]=0xff;}
}
void phim_mod()
{
if (phim_bt1(200))
{
gia_tri_mod++;
if (gia_tri_mod>=4) gia_tri_mod=0;
dem_tg_exit=0;
}
}

void phim_up()
{
if(phim_bt0(200))
{
dem_tg_exit=0;
switch(gia_tri_mod)
{
case 1: if(gio==23) gio=0;
else gio++;
break;
case 2: if(phut==59) phut=0;
else phut++;
break;
case 3: if(giay==59) giay=0;
else giay++;
break;
default: break;
}
}
}

void PHIM_DW()
{
if(phim_bt2(200))
{
dem_tg_exit=0;
switch(gia_tri_mod)
{
case 1: if(gio==0) gio=23;
else gio--;
break;
case 2: if(phut==0) phut=59;
else phut--;
break;
case 3: if(giay==0) giay=59;
else giay--;
break;
default: break;
}
}
}

giay=0; phut=0; gio=0;


bdn=0;

while(true)
{
if(bdn<10)
{
if(gia_tri_mod!=0)
{
if((bdn==0) && (input(bt0)) && (input(bt2)))
tat_2led_chinh();
else if(bdn==3) giai_ma_gan_cho_8led_quet();
}
hien_thi_8led_7doan_quet();
phim_mod();
phim_up();
PHIM_DW();
}
else
{
bdn = bdn-10;
giay++;
if(giay==60)
{
giay=0; phut++;
if(phut==60)
{
phut=0;
gio++;
if(gio==24) gio=0;
}
}
}
giai_ma_gan_cho_8led_quet();
}
}

#int_timer1
void ngat_TM1()
{
bdn++;
set_timer1(3036);
}

1) Các hàm xuất led quét


xuat_8led_7doan_quet_1(mã quét,ma7doan[so]);

stt 0 1 2 3 4 5 6 7
Mã 0xfe 0xfd 0xfb 0xf7 0xef 0xdf 0xbf 0x7f
quét

Xuat_8led_7doan_quet_2(stt , ma7doan[so]);
Stt : MSB(7)-> LSB(0)

Led_7dq[0->7]=ma7doan[so];
Hien_thi_8led_7doan_quet();
// stt: MSB(7)->LSB(0)

1) LCD
a) Hiển thị bất cứ số liệu lên lcd
#include<tv_pickit2_shift_lcd.c>

Setup_lcd();
Lcd_command();
Lcd_data(); // so+0x30 , chu+0x37

b) Hiển thị kí tự tự tạo


Kẻ bảng 5 cột , 8 hàng để mã hóa kí tự cần tạo
Hang2[]={giá trị mã từ trên xuống, ,..};

Void main()
{
Lcd_command(0x40);
For(i=0; I < số mã lưu vào hang2[]; i++)
{ lcd_data(hang2[i]); }

Lcd_commad(vị trí muốn xuất);


Lcd_data(x); //với 0<=x<=7
}
c) Font số to
void lcd_hienthi_so_z_toado_xy(signed int8 lcd_so, x1 ,
y1 )
{
lcd_goto_xy(x1,y1);
for(i=0;i<6;i++)
{
if(i==3) lcd_goto_xy(x1+1, y1);
lcd_data(lcd_so_x[lcd_so][i]);
}
}

Void main()
{
Lcd_command(0x40);
For(i=0;i<64;i++)
{
Lcd_data(lcd_ma_8doan[i]);
}
Lcd_hienthi_so_z_toado_xy(so, hàng, cột);
}
2) GLCD
#INCLUDE <tv_pickit2_shift_glcd128x64.c>
Setup_glcd(glcd_text_mode);
hoặc setup_glcd(glcd_graphic_mode);

glcd_mau_nen(0);
// 0 màu xanh và 1 màu trắng

glcd_command();
glcd_data(); // điền giống lcd

glcd_xuat_anh(dai, rong, xht, yht);


glcd_line(x1, y1, x2, y2);
glcd_circle(x, y, r, fill, màu);
gdram_vdk_to_gdram_glcd_all();

- Bài 705 đo lm35 2 kênh


- Triac_2_on(); triac_2_off(); // bật tắt đèn dây tóc
- Bài mẫu 709: đo nhiệt độ tự động có tùy chỉnh giới hạn
nhiệt độ

1) STEP_MOTOR
#include<tv_pickit2_shift_step_motor.c>

stepmotor_delay = 20; // tg delay cua step motor


stepmotor_onoff=1; // chay=1 , 0=dung

fullstep
step_motor_quay_thuan _fs();
step_motor_quay_nghich_fs();
motor_step_run_fs(); // stepmotor_tn=1 thuan , 0 nghich

delay_ms(stepmotor_delay);
halfstep
step_motor_quay_thuan _hs();
step_motor_quay_nghich_hs();
motor_step_run_hs();
// stepmotor_tn=1 thuan , 0 nghich
delay_ms(stepmotor_delay);
 Dừng step-motor thì ta không gọi ct chạy ra.

2) DC_MOTOR
#include<tv_pickit2_shift_dc_motor.c>

Void main()
{
dc_motor_enable();
dc_motor_stop();
}

While(true)
{
dc_motor_quay_thuan();
dc_motor_quay_nghich();
dc_motor_stop();

dcmotor_onoff=1; // quay thuận


dcmotor_onoff=0; // quay nghịch
dc_motor_control();
}
3) PWM
signed int8 pwm_capso;
unsigned int16 duty;

Void main()
{
dc_enable=1;
output_low(pin_c1);
xuat_buzzer_relay();
setup_ccp1(ccp_pwm);
setup_timer_2(t2_div_by_16,249,1);
duty=0;
pwm_capso=0;
xuat_4led_7doan_giaima_xoa_so0(pwm_capso);
set_pwm1_duty(duty);
}

*Thay đổi tốc độ DC motor (quay 1 chiều)


pwm_duty= tốc độ ms; // thông số cần thay đổi
pwm_capso= cấp tốc độ; // thông số cần thay đổi
xuat_4led_7doan_giaima_xoa_so0(pwm_capso);
set_pwm1_duty(duty); // cho chạy với tốc độ đã set
=> bt 921, void main copy trên.

*Thay đổi tốc độ DC motor (có đảo chiều)


pwm_duty= tốc độ ms; // thông số cần thay đổi
pwm_capso= cấp tốc độ; // thông số cần thay đổi
xuat_4led_7doan_giaima_xoa_so0(pwm_capso);
dc_motor_pww_setup_duty(); // cho DC chạy

dcmotor_tn=~dcmotor_tn; // dao chieu quay


*Dừng DC motor có xài PWM
dc_motor_pwm_ccp1_ccp2_stop();
// dừng động cơ mà không làm thay đổi duty
Hoặc cho duty=0 dừng luôn
 bt 923, void main mở bài ra copy vô.

4) ENCODER
unsigned int16 t1,t1_tam;
void main()
{
setup_timer_1(t1_external_sync| t1_div_by_1);
set_timer1(0);
t1=t1_tam=0;
giai_ma_gan_cho_8led_quet_16_xoa(t1);

While(true)
{
t1=get_timer1();
if(t1!=t1_tam)
{
giai_ma_gan_cho_8led_quet_16_xoa(t1);
t1_tam=t1;
}
hien_thi_8led_7doan_quet();
}
}

You might also like