Vi Điều Khiển
Nút nhấn và hiện lên LCD
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG,
NOBROWNOUT, NOLVP
#use delay(clock=8M)
#include <lcd.c>
#define sw1 pin_c3
#define sw2 pin_c4
void main ()
{
set_tris_d (0x00);
output_d(0x00);
set_tris_c(0xff);
lcd_init ();
while(1)
{
if(!input(sw1)){
lcd_gotoxy(5,1);
printf (lcd_putc,"TUONG NHI");
}
if(!input(sw2)){
lcd_gotoxy(5,1);
printf (lcd_putc,"CHI...CAO");
}
}}
Nút nhấn và hiện lên led 7 đoạn
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG,
NOBROWNOUT, NOLVP
#use delay(clock=8M)
#define sw1 pin_d7
#define sw2 pin_d6
void main ()
{
while (true)
{
if(!input(sw1)){
while (1){
output_d(0x00);output_b(0x19);output_high(pin_d0);delay_ms(1);
output_d(0x00);output_b(0x83);output_high(pin_d1);delay_ms(1);
output_d(0x00);output_b(0x11);output_high(pin_d2);delay_ms(1);
output_d(0x00);output_b(0x13);output_high(pin_d3);delay_ms(1);
if(!input(sw2)) break;
}}
if(!input(sw2)){
while (1){
output_d(0x00);output_b(0x25);output_high(pin_d0);delay_ms(1);
output_d(0x00);output_b(0x9f);output_high(pin_d1);delay_ms(1);
output_d(0x00);output_b(0x99);output_high(pin_d2);delay_ms(1);
output_d(0x00);output_b(0x49);output_high(pin_d3);delay_ms(1);
if(!input(sw1)) break;
}}
}
}
Nút nhấn tính và hiện lên led 7 đoạn
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG,
NOBROWNOUT, NOLVP
#use delay(clock=8M)
#define sw1 pin_c3
#define sw2 pin_c4
int8 set;
int nghin, tram, chuc, donvi ;
int maled[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
#int_timer1
void ct()
{
output_d(0x00);output_b(maled[donvi]);output_high(pin_d3);delay_ms(
1);
output_d(0x00);output_b(maled[chuc]);output_high(pin_d2);delay_ms(1
);
output_d(0x00);output_b(maled[tram]);output_high(pin_d1);delay_ms(1
);
output_d(0x00);output_b(maled[nghin]);output_high(pin_d0);delay_ms(
1);
}
void main ()
{
set_tris_d (0x00);
set_tris_b(0x00);
output_d(0x00);
output_b(0xff);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
while (1)
{
if(!input(sw1)&&set<200){
set=set+5;
delay_ms(200);
}
if(!input(sw2)&&set>0){
set = set-1;
delay_ms(200);
}
nghin=set/1000;
tram=(set/100)%10;
chuc=(set/10)%10;
donvi=set%10;
}}
Nút nhấn và điều khiển led đơn
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG,
NOBROWNOUT, NOLVP
#use delay(clock=8M)
#define sw1 pin_d7
#define sw2 pin_d6
int led[9]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
int ledl[9]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
void main()
{
set_tris_c(0x00);
output_c(0x00);
while(1){
if(!input(sw1))
{
for (int k=0;k<9;k++){
output_c(led[k]);
delay_ms(300);
if(!input(sw2)) break;
}
}
if(!input(sw2)){
for (int k=0;k<9;k++){
output_c(ledl[k]);
delay_ms(300);
if(!input(sw1)) break;
}
}
}
}
Nút nhấn tính và hiện lên LCD
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG,
NOBROWNOUT, NOLVP
#use delay(clock=8M)
#include <lcd.c>
#define sw1 pin_c3
#define sw2 pin_c4
int8 set;
#int_timer1
void ct_ngat()
{
if(!input(sw1)&&set<200){
set=set+5;
delay_ms(300);
}
if(!input(sw2)&&set>0){
set = set-1;
delay_ms(300);
}
}
void main()
{
set_tris_d (0x00);
output_d(0x00);
set_tris_c(0xff);
lcd_init ();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
while(1)
{
Lcd_gotoxy(5,1);
printf(lcd_putc,"Bat dau");
Lcd_gotoxy(8,2);
printf(lcd_putc,"%d",set);
}}