Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

HIEN THI KEY PAD LEN 8 LEN DON

#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

BAM NUT LOA KEU


#include <16f877A.h> {
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP not(DO_);
#use delay(clock=16000000) // defind crystal = }
4MHz for(i=0;i<5;i++)
#define option_1 PIN_d0 {
#define option_2 PIN_d1 not(RE_);
#define option_3 PIN_d2 }
int16 i; for(i=0;i<5;i++)
int DO_=50,RE_=40,MI_=30,FA_=20,SOL_=10; {
not(MI_);
void not(int tg ) }
{ }
output_toggle(pin_c1); if(!input(option_2))
delay_ms(tg); {
} for(i=0;i<5;i++)
void main(){ {
set_tris_b(0xFF); not(RE_);
set_tris_d(0xFF); }
set_tris_c(0x00); for(i=0;i<5;i++)
while(TRUE){ {
if(!input(option_1)) not(MI_);
{ }
for(i=0;i<5;i++) for(i=0;i<5;i++)
{ {
not(FA_); not(FA_);
} }
} for(i=0;i<5;i++)
if(!input(option_3)) {
{ not(SOL_);
for(i=0;i<5;i++) }
{ }
not(MI_); }
} }
for(i=0;i<5;i++)

CHUONG BAO CHAY KHI NHIET DO TANG CAO


#include <16f877A.h> OUTPUT_HIGH(PIN_C1);
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP delay_ms(1000);
#use delay(clock=16000000) // defind crystal 49 OUTPUT_LOW(PIN_C1);
#define option_1 PIN_A0 delay_ms(1000);
#define option_2 PIN_A1 }
#define option_3 PIN_A2 ELSE output_low(PIN_C1);
void main(){ }
set_tris_c(0x00); }
unsigned char temp; //PIC16F877A--10WATT0R1(R1=10K OHM)--
float t; BC547--BUTTON--BUZZER--LM35--GROUND--
setup_adc_ports(AN0); POWER(2)--DC(NGUON SIN)
setup_adc(ADC_CLOCK_INTERNAL); //2(LM35) vao 2(PIC16F877A)-- 1(LM35) vao
Delay_us(10); POWER1-- 3(LM35) vao GROUND
Set_ADC_channel(0); //POWER2 vao dauR1, duoiR1 vao
while(TRUE) 1(PIC16F877A), 1(PIC16F877A) vao dauBUTTON,
{ duoiBUTTON vao GROUND, GROUND vao
temp=Read_ADC(); chanE(BC574), chanB(BC574) vao
t=temp*2; 16(pic16f877a), chanc(BC574) duoiBUZZER,
if(t>50) dauBUZZER VAO nguonDC
{

DS1307.C
#define RTC_SDA PIN_c4
#define RTC_SCL PIN_c3
#use i2c(master, sda=RTC_SDA, scl=RTC_SCL)

BYTE bin2bcd(BYTE binary_value);


BYTE bcd2bin(BYTE bcd_value);
void doc_byte_1307(byte diachi,byte &dulieu);
void ghi_byte_1307(byte diachi,byte dulieu);
void i2c_bat_dau(int8 dia_chi);
void i2c_st();
void i2c_sto();
void i2c_w();
//========================================
void ds1307_init(void) // khoi tao cho ds1307
{
ghi_byte_1307(7,0x90); // tao xung 1 hz tai chan sout DS1307
byte a; // byte luu tam gia tri o nho 0 cua ds
doc_byte_1307(0,a); // doc o nho 0
byte b=a&0x80; // byte dung de so sanh
if (b!=0)
{
a&=0x7f;
ghi_byte_1307(0,a);
}
}
//========================================
void ds1307_dat_tgbt(byte gio_bt,phut_bt)
{
//i2c_start();
//i2c_write(0xD0); // I2C write address
//i2c_write(0x20); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(20);
i2c_write(gio_bt); // REG 0
i2c_write(phut_bt); // REG 1
i2c_sto();
}
//========================================
void ds1307_doc_kieu_thoi_gian(BYTE &kieu)
{
i2c_bat_dau(22);
i2c_st();
i2c_write(0xD1);
kieu = i2c_read(0);
i2c_sto();
}
//========================================
void ds1307_dat_kieu_thoi_gian(byte kieu)
{
i2c_bat_dau(22);
i2c_write(kieu); // REG 0
i2c_sto();
}
//========================================
/*int8 doc_thu()
{
int8 t;
//i2c_start();
//i2c_write(0xD0);
//i2c_write(0x00); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(3);
i2c_st();
i2c_write(0xD1);
t = i2c_read(0);
i2c_sto();
return(t);
} */
//========================================
void ds1307_doc_tgbt(BYTE &gio_bt,BYTE &phut_bt)
{
//i2c_start();
//i2c_write(0xD0);
//i2c_write(0x20); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(20);
i2c_st();
i2c_write(0xD1);
gio_bt = i2c_read(1);
phut_bt = i2c_read(0);
i2c_sto();
}
//========================================
void ds1307_dat_TNTN(ngay,thang,nam)
{
//i2c_start();
//i2c_write(0xD0); // I2C write address
//i2c_write(0x03); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(4);
i2c_write(bin2bcd(ngay)); // REG 0
i2c_write(bin2bcd(thang)); // REG 1
i2c_write(bin2bcd(nam)); // REG 2
i2c_write(0x90); // REG 7 - Enable squarewave output pin
i2c_sto();
}
//========================================
void ds1307_dat_NTN(byte ngay,thang,nam)
{
//i2c_start();
//i2c_write(0xD0); // I2C write address
//i2c_write(0x04); // Start at REG 0 - Seconds
//disable_interrupts(global);
i2c_bat_dau(4);
i2c_write(bin2bcd(ngay)); // REG 0
i2c_write(bin2bcd(thang)); // REG 1
i2c_write(bin2bcd(nam)); // REG 2
i2c_write(0x90); // REG 7 - Enable squarewave output pin
i2c_sto();
}

//========================================
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();
}
//========================================

BYTE bin2bcd(BYTE binary_value)//19


{
BYTE temp;
BYTE retval;
temp = binary_value;
retval = 0;
while(true)
{ // Get the tens digit by doing multiple subtraction
if(temp >= 10) // of 10 from the binary value.
{
temp -= 10;
retval += 0x10;
}
else // Get the ones digit by adding the remainder.
{
retval += temp;
break;
}
}
return(retval);
}
//========================================

// Input range - 00 to 99.


BYTE bcd2bin(BYTE bcd_value) //19
{
byte tam;
tam = bcd_value;
tam >>= 1; // Shifting upper digit right by 1 is same as multiplying by 8.
tam &= 0x78; // Isolate the bits for the upper digit.
return(tam + (tam >> 2) + (bcd_value & 0x0f)); // Now return: (Tens * 8) + (Tens * 2) + Ones
//return ( (bcd_val/16*10) + (bcd_val%16) );
}
//========================================
void doc_byte_1307(byte diachi,byte &dulieu)
{
//i2c_start();
//i2c_write(0xD0); // ghi vao ds1307 chieu ghi
//i2c_write(diachi); // ghi dia chi can doc
//disable_interrupts(global);
i2c_bat_dau(diachi);
i2c_st(); // start bit i2c
i2c_write(0xD1); // ghi vao ds1307 chieu doc
dulieu = i2c_read(0);
i2c_sto();
}
//========================================
void ghi_byte_1307(byte diachi,byte dulieu)
{
//i2c_start();
//i2c_write(0xD0); // ghi vao ds1307 chieu ghi
//i2c_write(diachi); // ghi dia chi can doc
//disable_interrupts(global);
i2c_bat_dau(diachi);
i2c_write(dulieu); //
i2c_sto();
}
//========================================
void i2c_bat_dau(int8 dia_chi)
{
i2c_st();
i2c_write(0xD0); // ghi vao ds1307 chieu ghi
i2c_write(dia_chi); // ghi dia chi can doc
}
//========================================
void i2c_st()
{
disable_interrupts(global);
i2c_start();
}
//========================================

void i2c_sto()
{
i2c_stop();
enable_interrupts(global);
}

HIEN THI NHIET DO TU LM35 LEN LCD


#include <16f877a.h> #define LCD_ENABLE_PIN PIN_D3
#device ADC=10 #define LCD_DATA4 PIN_D4
#fuses HS,NOWDT,PUT,NOPROTECT #define LCD_DATA5 PIN_D5
#use delay (clock = 20000000) #define LCD_DATA6 PIN_D6
#define LCD_RS_PIN PIN_D1 #define LCD_DATA7 PIN_D7
#define LCD_RW_PIN PIN_D2 #include <LCD.c>
void init_adc(void); set_adc_channel(0);
void init_lcd(void); }
void init_lcd(void)
void main() {
{ lcd_init();
unsigned int8 nhietdo; lcd_putc('\f');
float giatri; }
init_adc();
init_lcd(); /////HIEN THI NHIET DO CUA LM35 LEN
while(TRUE) LCD1602
{ //PIC16F877A(1), Lm35(1), Power(2),
set_tris_d(0); Ground(2), POT(1), LCD1602(1)
set_tris_a(0); //LM35: Chan 1 noi nguon 5V thu 1
nhietdo = read_adc(); //Chan 2 noi vo RA0
giatri=(float)nhietdo*0.488; //Chan 3 noi vo ground thu 1
lcd_gotoxy(1,2); //LCD1602: VSS noi ground thu 2 va chan duoi
printf(lcd_putc,"Nhiet do: %0.2f",giatri); cua POT
} //VDD noi nguon 5V thu 2 va chan tren cua
} POT
void init_adc(void) //VEE noi vao chan giua cua POT (chan
{ dieu khien)
setup_adc(adc_clock_internal); //RS, RW, E, D4, D5, D6, D7 lan luot noi vao
setup_adc_ports(AN0); D1->D7 cua PIC16F877A

HIEN THI THOI GIAN THUC LEN LCD


#include <16F877A.h> temp = binary_value;
#define ADC=8 retval = 0;
#use delay(clock=20000000) //define crystal=20
MHz while(true)
#include <LCD.c> {
#use i2c(master,sda=PIN_C4,scl=PIN_C3) if(temp >= 10)
unsigned int8 second,minute,hours; {
unsigned int8 day,mth,year,dow; temp -= 10;
unsigned int1 am_pm; retval += 0x10;
unsigned int8 bin2bcd(unsigned int8 }
binary_value); else
unsigned int8 bcd2bin(unsigned int8 {
bcd_value); retval += temp;
break;
unsigned int8 bin2bcd(unsigned int8 }
binary_value) }
{
unsigned int8 temp; return(retval);
unsigned int8 retval; }
unsigned int8 bcd2bin(unsigned int8 bcd_value) bit_set(hr,5);
}
{ else{
unsigned int8 temp; bit_clear(hr,5);
temp = bcd_value; }
temp >>= 1; //<=> temp = temp >> 1 i2c_start();
temp &= 0x78; i2c_write(0xD0);
return(temp + (temp >> 2) + (bcd_value & i2c_write(0x00);
0x0f)); i2c_write(bin2bcd(sec));
} i2c_write(bin2bcd(min));
i2c_write(hr);
void ds1307_init() i2c_write(bin2bcd(dow));
{ i2c_write(bin2bcd(day));
unsigned int8 sec = 0; i2c_write(bin2bcd(mth));
//unsigned int8 hrs= 0; i2c_write(bin2bcd(year));
i2c_write(0x80);
i2c_start(); i2c_stop();
i2c_write(0xD0); }
i2c_write(0x00);
i2c_start(); void ds1307_get_date(unsigned int8 &day,
i2c_write(0xD1); unsigned int8 &mth, unsigned int8 &year,
sec = i2c_read(0); unsigned int8
i2c_stop(); &dow)
bit_clear(sec,7); {
i2c_start();
i2c_start(); i2c_write(0xD0);
i2c_write(0xD0); i2c_write(0x03);
i2c_write(0x00); i2c_start();
i2c_write(sec); i2c_write(0xD1);
i2c_start(); dow = bcd2bin(i2c_read() & 0x7f);
i2c_write(0xD0); day = i2c_read() & 0x3f;
i2c_write(0x07); mth = i2c_read() & 0x1f;
i2c_write(0x80); year = i2c_read(0);
i2c_stop();
i2c_stop(); }
}
void ds1307_get_time(unsigned int8 &hr, int1
void ds1307_set_date_time(unsigned int8 day, &am_pm, unsigned int8 &min, unsigned int8
unsigned int8 mth, unsigned int8 year, unsigned &sec)
int8 dow, {
unsigned int8 hr,int1 am_pm, unsigned int8 i2c_start();
min, unsigned int8 sec) i2c_write(0xD0);
{ i2c_write(0x00);
sec &= 0x7F; i2c_start();
hr &= 0x1F; i2c_write(0xD1);
hr=bin2bcd(hr); sec = i2c_read() & 0x7f;
bit_set(hr,6); min = i2c_read() & 0x7f;
if(am_pm){ hr = i2c_read(0)& 0x1f;
i2c_stop(); delay_ms(10);
am_pm = bit_test(hr,5); while(true)
} {
void main() ds1307_get_date(day,mth,year,dow);
{ printf(lcd_putc,"ngay/thang/nam:\n
set_tris_b(0x00); %d/%d/%d", day,mth,year);
set_tris_d(0); }
lcd_init(); }

LED 7 DOAN CHAY TU 00-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+=2)
{
chuc=i/10;
dv=i%10;
output_b(MA7D[chuc]);
output_d(MA7D[dv]);
delay_ms(300);
}
}
}
////HIEN THI CAC SO CHAN TU 00-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

LED 7 DOAN CHAY TU 00-FF


#include<16f877a.h> 82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0
#fuses HS,NOWDT,NOPROTECT x8E};
#use delay(clock=4000000) // define crystal = void main()
4MHz {
Const char int chuc,dv,i,z;
MA7D[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x set_tris_d(0x00);
set_tris_b(0x00); delay_ms(500);
while(true) }
{ }
for (i=0; i<=256; i++) }
{ ////HIEN THI CAC SO CHAN TU 00-FF
chuc=i/10; //PIC16F877A, 2 LED 7 doan, 1 nguon 5V
dv=i%10; //Noi cac chan tu B0-B6, D0-D6 vao 2 led va noi
output_b(MA7D[chuc]); len nguon 5V
output_d(MA7D[dv]);

0-999999 LEN 6 LED 7 DOAN


#include <16F877A.h> unsigned char temp;
#define Data PIN_B0 for(i=0;i<6;i++)
#define sh PIN_B1 {
#define st PIN_B2 send_595(~(1<<(i+1)));
#use delay(clock=20000000) temp=maled[so[i]];
unsigned char if(((i==1)||(i==2)||(i==3)||(i==4))&&(en==1))te
maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8 mp&=0x7f;
2,0xf8,0x80,0x90}; send_595(temp);
unsigned char so[6]={0,1,2,3,4,5}; output_bit(st,0);
unsigned char sec, luu; output_bit(st,1);
int1 en;
void Transform_Number(int32 value) send_595(0xff);
{ output_bit(st,0);
so[0]=0; //so chuc van output_bit(st,1);
so[1]=value/10000; //so hang van
so[2]=(value-so[1]*10000)/1000;//so hang ngan }
so[3]=(value-so[1]*10000-so[2]*1000)/100; //so }
hang tram void main()
so[4]=(value%100)/10; //so hang chuc {
so[5]=value%10; //so hang don vi signed char i;
} int32 j;
void send_595(unsigned char da) set_tris_b(0x11);
{ while(true)
signed char i; {
for(i=7;i>=0;i--) for(j=0;j<99999;j++)
{ {
output_bit(Data,(da>>i)&0x01); Transform_Number(j);
output_bit(sh,0); if(luu!=sec)en=~en;
output_bit(sh,1); luu=sec;
} en=~en;
} for(i=0;i<10;i++)
void display() display();
{ }
signed char i=0; }
} //f chan 6
////6 LED 7 DOAN CHAY TU 0->999999 //g chan 7
//PIC16F877A, 74HC595(2), LED 7 doan(6), //dp chan 8
NOT(6) //NOT chan 9 (L5 vao NOT)
//PIC16F877A: Chan 1 vao nguon 5V //74HC595 thu 1: SHCP chan 11
//RB0 noi tat DATA //DATA chan 14
//RB1 noi tat SHCP //STCP chan 12
//RB2 noi tat STCP //Nguon 5V chan 10
//LED 7 doan: +LED 7 doan huong len: NOT //Ground chan 13
chan 1 (L6 vao NOT) //a, b, c, d, e, f, g, dp lan luot vao chan
//dp chan 2 15,1,2,3,4,5,6,7
//g chan 3 //Chan 9 vao chan 14 cua 74HC595 thu 2
//c chan 4 //74HC595 thu 2: Chan 11 noi vao chan 11 cua
//b chan 5 74HC595 thu 1
//a chan 6 //Chan 14 noi vao chan 9 cua 74HC595
//f chan 7 thu 1
//e chan 8 //Chan 12 noi vao chan 12 cua
//d chan 9 74HC595 thu 1
//+LED 7 doan huong xuong: a chan 1 //Nguon 5V chan 10
//b chan 2 //Ground chan 13
//c chan 3 //L6, L5, L4, L3, L2, L1 lan luot noi vao
//d chan 4 cac chan Q1->Q6
//e chan 5

HIEN THI THOI GIAN THUC LEN LED 7 DOAN


#include < 7_seg.h> void Transform_Time(char *sec, char *min, char
#include < ds1307.c> *hr)
#define Data PIN_B0 //dinh nghia chan du lieu {
cho 595 so[0]=(*hr & 0x30) >> 4; //so chuc gio
#define sh PIN_B1 //dinh nghia chan SH cho 595 so[1]=*hr & 0x0F; //so gio
#define st PIN_B2 //dinh nghia chan ST cho 595 so[2]=(*min & 0xF0) >> 4;//so chuc phut
//ma led 7 doan co dau cham nam o tren17 so[3]=*min & 0x0F;
unsigned char so[4]=(*sec & 0x70) >> 4;
ma[10]={0x81,0xed,0xc2,0xc8,0xac,0x98,0x90,0 so[5]=*sec & 0x0F;
xcd,0x80,0x88}; }
//ma led 7 doan co dau cham nam o duoi //chuong trinh dich du lieu ra 595
unsigned char void send_595(unsigned char da)
ma1[10]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88, {
0x3b,0x08,0x09}; signed char i;
//mang chua cac so can hien thi len led 7 doan for(i=7;i>=0;i--)
unsigned char so[6]={0,1,2,3,4,5}; {
unsigned char sec, min1, hr,luu; output_bit(Data,(da>>i)&0x01);
int1 en; //bien giup cho hieu ung chop tat dau : output_bit(sh,0);
//chuong trinh tach lay so de hien thi output_bit(sh,1);
}
} void main()
//chuong trinh hien thi gia tri ra led 7 doan {
void display() signed char i;
{ setup_adc_ports(NO_ANALOGS);
signed char i=0; setup_adc(ADC_OFF);
unsigned char temp; setup_psp(PSP_DISABLED);
for(i=0;i<6;i++) setup_spi(FALSE);
{ setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
send_595(~(1<<(i+1))); setup_timer_1(T1_DISABLED);
temp=((i%2)==0)? ma[so[i]]:ma1[so[i]]; //chon setup_timer_2(T2_DISABLED,0,1);
ma led 7 doan thich hop setup_comparator(NC_NC_NC_NC);
if(((i==1)||(i==3))&&(en==1)) temp&=0xf7; setup_vref(FALSE);
//hien dau cham ngan cach // TODO: USER CODE!!
if(((i==2)||(i==4))&&(en==1)) temp&=0x7f; set_tris_b(0x00);
//hien dau cham ngan cach while(true)
send_595(temp); {
output_bit(st,0); ds1307_get_time(&hr,&min1,&sec);
output_bit(st,1); Transform_Time(&sec,&min1,&hr);
delay_ms(1);18 //lam dau : chop tat
send_595(0xff); if(luu!=sec)en=~en;
send_595(0xff); luu=sec;
output_bit(st,0); //-------
output_bit(st,1); for(i=0;i<10;i++)display();
delay_us(100); }
} }
}

HIEN THI SO CHAN 00-98


#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=0; i<=98; 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 00-98
//PIC16F877A, 2 LED 7 doan, 1 nguon 5V

//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

SW1 HO 0-98, SW1 DONG 1-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

LED DON 2 CHE DO TRAI PHAI


#include <16f877a.h> output_B(0b00000000);
#fuses HS,NOWDT,NOPROTECT delay_ms(500);
#use delay(crystal=12000000) }
void chedo1()
{ void chedo2()
output_high(pin_B7); {
delay_ms(500); output_high(pin_B0);
output_high(pin_B6); delay_ms(500);
delay_ms(500); output_high(pin_B1);
output_high(pin_B5); delay_ms(500);
delay_ms(500); output_high(pin_B2);
output_high(pin_B4); delay_ms(500);
delay_ms(500); output_high(pin_B3);
output_high(pin_B3); delay_ms(500);
delay_ms(500); output_high(pin_B4);
output_high(pin_B2); delay_ms(500);
delay_ms(500); output_high(pin_B5);
output_high(pin_B1); delay_ms(500);
delay_ms(500); output_high(pin_B6);
output_high(pin_B0); delay_ms(500);
delay_ms(500); output_high(pin_B7);
delay_ms(500);
output_B(0b00000000); }
delay_ms(500); }
} //pic16f877a---(2)power---(3)ground--(2)resistor
void main() 1k--(8)resistor330 ---- (8 led)----(2)switch
{ // pic16f877a tu 33->40 noi vao dau R3->R10 va
set_tris_A(0b00000000); duoi R3->R10 noi vao duoi (8)led va tat ca chum
set_tris_B(0b11111111); lai noi ground
while(TRUE) //power(1) vao dauR1 vao
{ 2(PIC16F877A)+dauSWITCH(1) va
if(input(pin_A0)==0 && input(pin_A1)==1) duoiSWITCH(1) vao GROUND(1)
chedo1(); //power(2) vao dauR2 vao 3(PIC16F877A)+dau
SWITCH(2)va duoiSWITCH(2)vao GROUND(2)
if(input(pin_A0)==1 && input(pin_A1)==0)
chedo2();

LED DON 2 DEN SANG XEN KE


#include <16f877a.h> output_high(STCP_PIN);
#device *=16 ADC=10 output_low(STCP_PIN);
#use delay(clock=20000000) }
#FUSES NOWDT, HS, NOPUT, NOPROTECT, void main(void)
NODEBUG, NOBROWNOUT, NOLVP, {
NOCPD,NOWRT while(TRUE)
#define SHCP_PIN PIN_C0 {
#define DS_PIN PIN_C1 IC_74hc595(0xCC);
#define STCP_PIN PIN_C2 IC_74HC595_Output();
void IC_74hc595(int data) delay_ms(500);
{ IC_74hc595(0x33);
int i; IC_74HC595_Output();
output_low(SHCP_PIN); delay_ms(500);
for(i=0;i<=7;i++) }
{ }
if((data & 0x80)==0) //PIC16F877A-74HC595-RESISTOR-(2)POWER-
output_low(DS_PIN); (2)GROUND-(8)LEDDON
else // tu pic16f877a dat ten 15==>SHCP--16==>DS--
output_high(DS_PIN); -17==>STCP
data=data<<1; //tu 74HC595 dat ten 11==>SHCP--14==>DS--
output_high(SHCP_PIN); 12==>STCP
output_low(SHCP_PIN); //power(1) vao dauR1, duoiR1 vao
} 1(PIC16F877A)
} //POWER(2) vao 10(74HC595)
void IC_74HC595_Output() //13(74HC595) vao gound(2)
{ //tu 15,1,2,3,4,5,6,7 lan luot vao duoi led don
output_low(STCP_PIN); // noi dau led don lai voi nhau va noi vao
delay_us(5); ground(1)
LED DON SANG
#include<16f877.h>
#fuses HS,NOWDT,PUT,NOPROTECT
#use delay (clock=20000000)
int i=0;
void main()
{
set_tris_c(0);
while(1)
{
for(i=0;i < 8; i++)
{
switch (true)
{
case 1: output_c(0); break;
case 2: output_c(0b00000001); break;
case 3: output_c(0b00000011); break;
case 4: output_c(0b00000111); break;
case 5: output_c(0b00001111); break;
case 6: output_c(0b00011111); break;
case 7: output_c(0b00111111); break;
case 8: output_c(0b01111111); break;

default: break;
}
delay_ms(300);
}
}}

LED DON SANG TU TRAI SANG PHAI


#include<16f877a.h>
#fuses HS,NOWDT,PUT,NOPROTECT
#use delay (clock=4M)
int i=0;
void main()
{
set_tris_c(0);
while(TRUE)
{
output_c(0b11111110);
delay_ms(300);
output_c(0b11111100);
delay_ms(300);
output_c(0b11111000);
delay_ms(300);
output_c(0b11110000);
delay_ms(300);
output_c(0b11100000);
delay_ms(300);
output_c(0b11000000);
delay_ms(300);
output_c(0b10000000);
delay_ms(300);
output_c(0);
delay_ms(300);
output_c(0xff);
delay_ms(300);
}
}
//(1)PIC16F877A--(8)LEDDON-(1)POWER
//CHAN-15-16-17-18-23-24-25-26-LAN LUOT NOI VAO DAU (8)LED DON
// DUOILED CHUM LAI NOI VAO POWER

LED SANG XEN KE


#include <16F877A.h> output_high(SHCP_PIN);
#device *=16 ADC=10 output_low(SHCP_PIN);
#use delay(clock=20000000) }
#FUSES NOWDT, HS, NOPUT, NOPROTECT, }
NODEBUG, NOBROWNOUT, NOLVP, NOCPD, void IC_74HC595_Output()
NOWRT {
#define SHCP_PIN PIN_C0 output_low(STCP_PIN);
#define DS_PIN PIN_C1 delay_us(5);
#define STCP_PIN PIN_C2 output_high(STCP_PIN);
void IC_74hc595(int data) output_low(STCP_PIN);
{ }
int i; void main(void)
output_low(SHCP_PIN); {
for(i=0;i<=7;i++) while(1)
{ {
if((data & 0x80)==0) IC_74hc595(0xAA);
output_low(DS_PIN); IC_74HC595_Output();
else delay_ms(500);
output_high(DS_PIN); IC_74hc595(0x55);
data=data<<1; IC_74HC595_Output();
delay_ms(500); //tu 74HC595 dat ten 11==>SHCP--14==>DS--
} 12==>STCP
} //power(1) vao R1 vao 1(PIC16F877A)
//PIC16F877A-74HC595-RESISTOR-(2)POWER- //POWER(2) vao 10(74HC595)
(2)GROUND-(8)LEDDON //13(74HC595) vao gound(2)
// tu pic16f877a dat ten 15==>SHCP--16==>DS-- //tu 15,1,2,3,4,5,6,7 lan luot vao duoi led don
-17==>STCP // noi dau led don lai voi nhau va noi vao
ground(1)

2 LED MA TRAN CHAY TU TRAI SANG PHAI (THEO CHIEU


THUAN)
#include <16F877A.h> output_high(STCP_PIN);
#device *=16 ADC=10 output_low(STCP_PIN);
#use delay(clock=20000000) }
#FUSES NOWDT, HS, NOPUT, NOPROTECT, void main(void)
NODEBUG, NOBROWNOUT, NOLVP, NOCPD, {
NOWRT while(1)
#define SHCP_PIN PIN_C0 {
#define DS_PIN PIN_C1 IC_74hc595(0xAA);
#define STCP_PIN PIN_C2 IC_74HC595_Output();
void IC_74hc595(int data) delay_ms(500);
{ IC_74hc595(0x55);
int i; IC_74HC595_Output();
output_low(SHCP_PIN); delay_ms(500);
for(i=0;i<=7;i++) }
{ }
if((data & 0x80)==0) //PIC16F877A-74HC595-RESISTOR-(2)POWER-
output_low(DS_PIN); (2)GROUND-(8)LEDDON
else // tu pic16f877a dat ten 15==>SHCP--16==>DS--
output_high(DS_PIN); -17==>STCP
data=data<<1; //tu 74HC595 dat ten 11==>SHCP--14==>DS--
output_high(SHCP_PIN); 12==>STCP
output_low(SHCP_PIN); //power(1) vao R1 vao 1(PIC16F877A)
} //POWER(2) vao 10(74HC595)
} //13(74HC595) vao gound(2)
void IC_74HC595_Output() //tu 15,1,2,3,4,5,6,7 lan luot vao duoi led don
{ // noi dau led don lai voi nhau va noi vao
output_low(STCP_PIN); ground(1)
delay_us(5);
2 LED MA TRAN CHAY TU TRAI SANG PHAI (THEO CHIEU
NGHICH)
#include<16f877A.h> PORTCbits_RC0 = 1; PORTCbits_RC0 = 0;
#fuses NOLVP,NOWDT,PUT,HS PORTCbits_RC1 = 0; PORTCbits_RC1 = 1;
#use delay(clock=20000000) PORTCbits_RC3 = 1;
#BIT PORTCbits_RC0 = 0X07.0 PORTCbits_RC3 = 0;
#BIT PORTCbits_RC1 = 0X07.1 for(col=0;col<16;col++) ////////////// neu 2 led
#BIT PORTCbits_RC3 = 0X07.3 thi 16---- 3 led thi 24 ---- 4 led thi 32
const unsigned char font[]={ {
0,0,0,0,0,0,0,0, OUTPUT_B (~ font[col + rol]);
0,0,73,73,73,73,127,127,//dao-E delay_us(300);
0,0,0,0,0,0,0,0, PORTCbits_RC0 = 1; PORTCbits_RC0 = 0;
15,31,32,64,32,31,15,0,//dao-V PORTCbits_RC1 = 1; PORTCbits_RC1 = 0;
0,0,0,0,0,0,0,0, PORTCbits_RC3 = 1;
0,127,127,65,65,65,127,127,0//dao-O PORTCbits_RC3 = 0;
0,0,0,0,0,0,0,0, }
0,0,0,96,96,96,127,127,//dao-L }
0,0,0,0,0,0,0,0, }
}; }
void main() }
{ ////////////////// LED MA TRAN CHAY 2 CON
unsigned rol, delay, col; LED TU TRAI SANG PHAI
SET_TRIS_B(0x00); //pic16f877a, 74HC595(so luong 4), MATRIX-
SET_TRIS_C(0x00); 8X8-RED(so luong 4)
OUTPUT_B(0x00); // Tu 33 den 40 noi vao dau led tu trai sang phai
OUTPUT_C(0x00); // 15 vao all SH_CP
while(1) // 18 vao all ST_CP
{ // POWER noi vao all MR
for(rol=0;rol<300;rol++) // GROUND noi vao all OE
{ //font. 13 x 8[8x8 matrix] = 112. // 16 vao DS(U1) == Q7'(U1) vao DS(U2) ==
for(delay=0;delay<10;delay++) Q7'(U2) ko noi
{ // Tu Q0 den Q7 lan luot vao led 4 den led 1
theo thu tu tu phai sang trai (chan dau tien la 7)

4 LED MA TRAN CHAY TU TRAI SANG PHAI (THEO CHIEU


THUAN)
#include<16f877A.h> #BIT PORTCbits_RC3 = 0X07.3
#fuses NOLVP,NOWDT,PUT,HS const unsigned char font[]={
#use delay(clock=20000000) 127,127,6,12,24,48,127,127, //N
#BIT PORTCbits_RC0 = 0X07.0 0,255,255,195,219,251,248,0, //G
#BIT PORTCbits_RC1 = 0X07.1 0,254,254,192,192,254,254,0, //U
1,67,102,52,24,12,7,3, //Y PORTCbits_RC3 = 0;
0,127,127,73,73,73,0,0, //E for(col=0;col<32;col++) ////////////// neu 2 led
127,127,6,12,24,48,127,127, //N thi 16---- 3 led thi 24 ---- 4 led thi 32
0,0,0,0,0,0,0,0, {
24,255,255,219,195,195,255,255, //D OUTPUT_B (~ font[col + rol]);
0,255,255,195,195,195,255,255, //O delay_us(300);
224,252,31,19,19,31,252,224, //A PORTCbits_RC0 = 1; PORTCbits_RC0 = 0;
127,127,6,12,24,48,127,127, //N PORTCbits_RC1 = 1; PORTCbits_RC1 = 0;
0,0,0,0,0,0,0,0, PORTCbits_RC3 = 1;
60,126,131,147,163,67,190,24 //Q PORTCbits_RC3 = 0;
0,254,254,192,192,254,254,0, //U }
0,255,255,195,195,195,255,255, //O }
0,255,255,195,195,195,195,0, //C }
0,0,0,0,0,0,0,0, }
0,159,159,243,243,0,0,0, //S }
0,0,195,255,255,195,0,0, //I ////////////////// LED MA TRAN CHAY 4 CON
}; LED TU PHAI SANG TRAI
void main() //pic16f877a, 74HC595(so luong 4), MATRIX-
{ 8X8-RED(so luong 4)
unsigned rol, delay, col; // FROM 33 TO 40 noi vao dau led tu trai sang
SET_TRIS_B(0x00); phai
SET_TRIS_C(0x00); // 15 vao all SH_CP
OUTPUT_B(0x00); // 18 vao ST_CP
OUTPUT_C(0x00); // POWER noi vao all MR
while(1) // GROUND noi vao all OE
{ // 16 vao DS(U1) == Q7'(U1) vao DS(U2) ==
for(rol=0;rol<300;rol++) Q7'(U2) vao DS(U3) == Q7'(U3) vao DS(U4) ==
{ //font. 13 x 8[8x8 matrix] = 112. Q7'(U4) KO NOI
for(delay=0;delay<10;delay++) // Tu Q0 den Q7 lan luot vao led 1 den led 4
{ theo thu tu tu trai sang phai (chan dau tien la
PORTCbits_RC0 = 1; PORTCbits_RC0 = 0; 15)
PORTCbits_RC1 = 0; PORTCbits_RC1 = 1;
PORTCbits_RC3 = 1;

4 LED MA TRAN CHAY TU TRAI SANG PHAI (THEO CHIEU


NGHICH)
#include<16f877A.h> 0,0,73,73,73,73,127,127,//dao-E
#fuses NOLVP,NOWDT,PUT,HS 0,0,0,0,0,0,0,0,
#use delay(clock=20000000) 15,31,32,64,32,31,15,0,//dao-V
#BIT PORTCbits_RC0 = 0X07.0 0,0,0,0,0,0,0,0,
#BIT PORTCbits_RC1 = 0X07.1 0,127,127,65,65,65,127,127,0//dao-O
#BIT PORTCbits_RC3 = 0X07.3 0,0,0,0,0,0,0,0,
const unsigned char font[]={ 0,0,0,96,96,96,127,127,//dao-L
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
}; PORTCbits_RC0 = 1; PORTCbits_RC0 = 0;
void main() PORTCbits_RC1 = 1; PORTCbits_RC1 = 0;
{ PORTCbits_RC3 = 1;
unsigned rol, delay, col; PORTCbits_RC3 = 0;
SET_TRIS_B(0x00); }
SET_TRIS_C(0x00); }
OUTPUT_B(0x00); }
OUTPUT_C(0x00); }
while(1) }
{ ////////////////// LED MA TRAN CHAY 4 CON
for(rol=0;rol<300;rol++) LED TU PHAI SANG TRAI
{ //font. 13 x 8[8x8 matrix] = 112. //pic16f877a, 74HC595(so luong 4), MATRIX-
for(delay=0;delay<10;delay++) 8X8-RED(so luong 4)
{ // FROM 33 TO 40 noi vao dau led tu trai sang
PORTCbits_RC0 = 1; PORTCbits_RC0 = 0; phai
PORTCbits_RC1 = 0; PORTCbits_RC1 = 1; // 15 vao all SH_CP
PORTCbits_RC3 = 1; // 18 vao ST_CP
PORTCbits_RC3 = 0; // POWER noi vao all MR
for(col=0;col<32;col++) ////////////// neu 2 led // GROUND noi vao all OE
thi 16---- 3 led thi 24 ---- 4 led thi 32 // 16 vao DS(U1) == Q7'(U1) vao DS(U2) ==
{ Q7'(U2) vao DS(U3) == Q7'(U3) vao DS(U4) ==
OUTPUT_B (~ font[col + rol]); Q7'(U4) KO NOI
delay_us(300); // Tu Q0 den Q7 lan luot vao led 4 den led 1
theo thu tu tu phai sang trai (chan dau tien la 7)

You might also like