Professional Documents
Culture Documents
On Thi TNVDK
On Thi TNVDK
#include <16F877A.h> }
#include <key_4x4.c> }
#use delay(clock=20000000) //PIC16F877A--BUTTON--KEYPAD-SMALLCALC--
void main() LED-GREEN(8)--RES--RESPACK-8--POWER(2)--
{ GROUND(2)
unsigned int8 key; //POWER(1) vao dauR1, duoiR1 vao 1(pic),
set_tris_b(0x00); 1(pic) vao dauBUTTON, duoiBUTTON vao
key_4x4_init(); GROUND(!)
while(TRUE) //40==>33(PIC) lan luot vao dauD1==>dauD8, all
{ duoiD1==>D8 vao GROUND(2)
key=get_key_4x4(); //19,20,21,22,27,28,29,30(PIC) vao
if(key) A,B,C,D,1,2,3,4(SMALLCALC)
{ //POWER(2) vao 1(RESPACK-8)
output_b(key-48); //2(RESPACK-8) vao 27(PIC)
while(key)key=get_key_4x4(); //3(RESPACK-8) vao 28(PIC)
} //4(RESPACK-8) vao 29(PIC)
delay_ms(10); //5(RESPACK-8) vao 30(PIC)
KEY 4x4
#use delay(clock=20000000) output_float(COL1);
//__________________I/O KEY PAD output_float(COL2);
4x4________________________ output_float(COL3);
#define ROW1 PIN_D0 output_float(COL4);
#define ROW2 PIN_D1 }
#define ROW3 PIN_D2 int1 ButtonIsPush(void)
#define ROW4 PIN_D3 {
#define COL1 PIN_D4 output_low(ROW1);
#define COL2 PIN_D5 output_low(ROW2);
#define COL3 PIN_D6 output_low(ROW3);
#define COL4 PIN_D7 output_low(ROW4);
#ifndef __KEY_4X4_ if((input(COL1)==0)|(input(COL2)==0)|(input(CO
#define __KEY_4X4_ L3)==0)|(input(COL4)==0))
static unsigned char KEY_4X4[4][4]={'7','8','9','/', return 1;
'4','5','6','*', else
'1','2','3','-', return 0;
'#','0','=','+'}; }
void key_4x4_init(void) void check_row(unsigned char i)
{ {
output_drive(ROW1); output_high(ROW1);
output_drive(ROW2); output_high(ROW2);
output_drive(ROW3); output_high(ROW3);
output_drive(ROW4); output_high(ROW4);
if(i==0) unsigned char i;
{ if(ButtonIsPush())
output_low(ROW1); {
} delay_ms(5);
else if(i==1) if(ButtonIsPush())
{ {
output_low(ROW2); for(i=0;i<4;i++)
} {
else if(i==2) check_row(i);
{ if(!input(COL1)) return KEY_4X4[3-i][0];
output_low(ROW3); if(!input(COL2)) return KEY_4X4[3-i][1];
} if(!input(COL3)) return KEY_4X4[3-i][2];
else if(!input(COL4)) return KEY_4X4[3-i][3];
{ }
output_low(ROW4); }
} }
} return 0;
unsigned char get_key_4x4() }
{ #endif
DS1307.C
#define RTC_SDA PIN_c4
#define RTC_SCL PIN_c3
#use i2c(master, sda=RTC_SDA, scl=RTC_SCL)
//========================================
void ds1307_dat_GPG(byte gio,phut,giay)
{
//giay &= 0x7F;
//gio &= 0x3F;
//disable_interrupts(global);
//i2c_start();
//i2c_write(0xD0); // I2C write address
//i2c_write(0x00); // Start at REG 0 - Seconds
i2c_bat_dau(0);
i2c_write(bin2bcd(giay)); // REG 0
i2c_write(bin2bcd(phut)); // REG 1
i2c_write(bin2bcd(gio)); // REG 2
i2c_sto();
}
//========================================
/*void ds1307_set_date_time(BYTE gio, phut, giay, thu, ngay, thang, nam)
{
//disable_interrupts(global);
//giay &= 0x7F;
//gio &= 0x3F;
//i2c_start();
//i2c_write(0xD0); // I2C write address
//i2c_write(0x00); // Start at REG 0 - Seconds
i2c_bat_dau(0);
i2c_write(bin2bcd(giay)); // REG 0
i2c_write(bin2bcd(phut)); // REG 1
i2c_write(bin2bcd(gio)); // REG 2
i2c_write(bin2bcd(thu)); // REG 3
i2c_write(bin2bcd(ngay)); // REG 4
i2c_write(bin2bcd(thang)); // REG 5
i2c_write(bin2bcd(nam)); // REG 6
i2c_write(0x90); // REG 7 - Enable squarewave output pin
i2c_sto();
} */
//========================================
void ds1307_doc_giay(BYTE &giay)
{
//i2c_start();
//i2c_write(0xD0);
//i2c_write(0x00); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(0);
i2c_st();
i2c_write(0xD1);
giay = bcd2bin(i2c_read(0));
i2c_sto();
}
//========================================
void ds1307_get_time(BYTE &gio,BYTE &phut,BYTE &giay)
{
//i2c_start();
//i2c_write(0xD0);
//i2c_write(0x00); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(0);
i2c_st();
i2c_write(0xD1);
giay = bcd2bin(i2c_read(1));
phut = bcd2bin(i2c_read(1));
gio = bcd2bin(i2c_read(0));
i2c_sto();
}
//========================================
void ds1307_get_date(BYTE &ngay,BYTE &thang,BYTE &nam)
{
//i2c_start();
//i2c_write(0xD0);
//i2c_write(3); // Start at REG 3 - Day of week
//disable_interrupts(global);
i2c_bat_dau(4);
//i2c_sto();
i2c_st();
i2c_write(0xD1);
ngay = bcd2bin(i2c_read(1)); // REG 4
thang = bcd2bin(i2c_read(1)); // REG 5
nam = bcd2bin(i2c_read(0)); // REG 6
i2c_sto();
}
//========================================
void i2c_sto()
{
i2c_stop();
enable_interrupts(global);
}
//Noi cac chan tu B0-B6, D0-D6 vao 2 led va noi len nguon
5V
SO LE TU 01-99
#include<16f877a.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=4000000) // define crystal = 4MHz
Const char MA7D[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void main()
{
int chuc,dv,i,z;
set_tris_d(0x00);
set_tris_b(0x00);
while(true)
{
for (i=1; i<=99; i=i+2)
{
chuc=i/10;
dv=i%10;
output_b(MA7D[chuc]);
output_d(MA7D[dv]);
delay_ms(500);
}
}
}
////HIEN THI CAC SO CHAN TU 01-99
//PIC16F877A, 2 LED 7 doan, 1 nguon 5V
//Noi cac chan tu B0-B6, D0-D6 vao 2 led va noi len nguon 5V
default: break;
}
delay_ms(300);
}
}}