Showing posts with label Vi Điều Khiển. Show all posts
Showing posts with label Vi Điều Khiển. Show all posts

7/30/2013

Hiện thị text lên ma trận led 8x8 3 màu (có sẵn font chữ)

#include <REG51.H>
#include <string.h>
void delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++);
}
unsigned char code mahang[]={
// 1  2 3 4 5  6   7 8
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//SPACE-32
0xFF,0xFF,0xA0,0xFF,0xFF,0xFF,//!    33
0xFF,0xFF,0xF8,0xF4,0xFF,0xFF,//"    34
0xEB,0x80,0xEB,0x80,0xEB,0xFF,//#    35
0xDB,0xD5,0x80,0xD5,0xED,0xFF,//$    36
0xD8,0xEA,0x94,0xAB,0x8D,0xFF,//%    37
0xC9,0xB6,0xA9,0xDF,0xAF,0xFF,//&    38
0xFF,0xFF,0xF8,0xF4,0xFF,0xFF,//'    39
0xFF,0xE3,0xDD,0xBE,0xFF,0xFF,//(    40
0xFF,0xBE,0xDD,0xE3,0xFF,0xFF,//)    41
0xD5,0xE3,0x80,0xE3,0xD5,0xFF,//*    42
0xF7,0xF7,0xC1,0xF7,0xF7,0xFF,//+    43
0xFF,0xA7,0xC7,0xFF,0xFF,0xFF,//,    44
0xF7,0xF7,0xF7,0xF7,0xF7,0xFF,//-    45
0xFF,0x9F,0x9F,0xFF,0xFF,0xFF,//x    46
0xFF,0xC9,0xC9,0xFF,0xFF,0xFF,// /   47
0xC1,0xAE,0xB6,0xBA,0xC1,0xFF,//0    48
0xFF,0xBD,0x80,0xBF,0xFF,0xFF,//1    49
0x8D,0xB6,0xB6,0xB6,0xB9,0xFF,//2    50
0xDD,0xBE,0xB6,0xB6,0xC9,0xFF,//3    51
0xE7,0xEB,0xED,0x80,0xEF,0xFF,//4    52
0xD8,0xBA,0xBA,0xBA,0xC6,0xFF,//5    53
0xC3,0xB5,0xB6,0xB6,0xCF,0xFF,//6    54
0xFE,0x8E,0xF6,0xFA,0xFC,0xFF,//7    55
0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,//8    56
0xF9,0xB6,0xB6,0xD6,0xE1,0xFF,//9    57
0xFF,0xC9,0xC9,0xFF,0xFF,0xFF,//:    58
0xFF,0xA4,0xC4,0xFF,0xFF,0xFF,//;    59
0xF7,0xEB,0xDD,0xBE,0xFF,0xFF,//<    60
0xEB,0xEB,0xEB,0xEB,0xEB,0xFF,//=    61
0xFF,0xBE,0xDD,0xEB,0xF7,0xFF,//>    62
0xFD,0xFE,0xAE,0xF6,0xF9,0xFF,//?    63
0xCD,0xB6,0x8E,0xBE,0xC1,0xFF,//@    64
0x83,0xF5,0xF6,0xF5,0x83,0xFF,//A    65
0xBE,0x80,0xB6,0xB6,0xC9,0xFF,//B    66
0xC1,0xBE,0xBE,0xBE,0xDD,0xFF,//C    67
0xBE,0x80,0xBE,0xBE,0xC1,0xFF,//D    68
0x80,0xB6,0xB6,0xB6,0xBE,0xFF,//E    69
0x80,0xF6,0xF6,0xFE,0xFE,0xFF,//F    70
0xC1,0xBE,0xB6,0xB6,0xC5,0xFF,//G    71
0x80,0xF7,0xF7,0xF7,0x80,0xFF,//H 72
0xFF,0xBE,0x80,0xBE,0xFF,0xFF,//I 73
0xDF,0xBF,0xBE,0xC0,0xFE,0xFF,//J 74
0x80,0xF7,0xEB,0xDD,0xBE,0xFF,//K    75
0x80,0xBF,0xBF,0xBF,0xFF,0xFF,//L    76
0x80,0xFD,0xF3,0xFD,0x80,0xFF,//M    77
0x80,0xFD,0xFB,0xF7,0x80,0xFF,//N    78
0xC1,0xBE,0xBE,0xBE,0xC1,0xFF,//O    79
0x80,0xF6,0xF6,0xF6,0xF9,0xFF,//P    80
0xC1,0xBE,0xAE,0xDE,0xA1,0xFF,//Q    81
0x80,0xF6,0xE6,0xD6,0xB9,0xFF,//R    82
0xD9,0xB6,0xB6,0xB6,0xCD,0xFF,//S    83 
0xFE,0xFE,0x80,0xFE,0xFE,0xFF,//T    84
0xC0,0xBF,0xBF,0xBF,0xC0,0xFF,//U    85
0xE0,0xDF,0xBF,0xDF,0xE0,0xFF,//V    86
0xC0,0xBF,0xCF,0xBF,0xC0,0xFF,//W    87
0x9C,0xEB,0xF7,0xEB,0x9C,0xFF,//X    88
0xFC,0xFB,0x87,0xFB,0xFC,0xFF,//Y    89
0x9E,0xAE,0xB6,0xBA,0xBC,0xFF,//Z    90
0xFF,0x80,0xBE,0xBE,0xFF,0xFF,//[    91
0xFD,0xFB,0xF7,0xEF,0xDF,0xFF,//\    92
0xFF,0xBE,0xBE,0x80,0xFF,0xFF,//]    93
0xFB,0xFD,0xFE,0xFD,0xFB,0xFF,//^    94
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,//_    95
0xFF,0xFF,0xF8,0xF4,0xFF,0xFF,//'    96
0xDF,0xAB,0xAB,0xAB,0xC7,0xFF,//a    97
0x80,0xC7,0xBB,0xBB,0xC7,0xFF,//b 98
0xFF,0xC7,0xBB,0xBB,0xBB,0xFF,//c 99
0xC7,0xBB,0xBB,0xC7,0x80,0xFF,//d 100
0xC7,0xAB,0xAB,0xAB,0xF7,0xFF,//e    101
0xF7,0x81,0xF6,0xF6,0xFD,0xFF,//f 102
0xF7,0xAB,0xAB,0xAB,0xC3,0xFF,//g    103
0x80,0xF7,0xFB,0xFB,0x87,0xFF,//h    104
0xFF,0xBB,0x82,0xBF,0xFF,0xFF,//i    105
0xDF,0xBF,0xBB,0xC2,0xFF,0xFF,//j    106
0xFF,0x80,0xEF,0xD7,0xBB,0xFF,//k    107
0xFF,0xBE,0x80,0xBF,0xFF,0xFF,//l    108
0x83,0xFB,0x87,0xFB,0x87,0xFF,//m    109
0x83,0xF7,0xFB,0xFB,0x87,0xFF,//n    110
0xC7,0xBB,0xBB,0xBB,0xC7,0xFF,//o    111
0x83,0xEB,0xEB,0xEB,0xF7,0xFF,//p    112
0xF7,0xEB,0xEB,0xEB,0x83,0xFF,//q    113
0x83,0xF7,0xFB,0xFB,0xF7,0xFF,//r    114
0xB7,0xAB,0xAB,0xAB,0xDB,0xFF,//s    115
0xFF,0xFB,0xC0,0xBB,0xBB,0xFF,//t    116
0xC3,0xBF,0xBF,0xDF,0x83,0xFF,//u    117
0xE3,0xDF,0xBF,0xDF,0xE3,0xFF,//v    118
0xC3,0xBF,0xCF,0xBF,0xC3,0xFF,//w    119
0xBB,0xD7,0xEF,0xD7,0xBB,0xFF,//x    120
0xF3,0xAF,0xAF,0xAF,0xC3,0xFF,//y    121
0xBB,0x9B,0xAB,0xB3,0xBB,0xFF,//z    122
0xFB,0xE1,0xE0,0xE1,0xFB,0xFF//^    123
};
unsigned char code macotd[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned  int l,m,n,t,k,j,i;
unsigned char *xau=" Blog's Tannd";
unsigned char hienthi[100];
void hienchudo(unsigned int c)
{
  k=c*6-32*6;
hienthi[0]=0xff;
for(i=0;i<6;i++)
{
  hienthi[i+1]=mahang[k+i];
  }  
hienthi[7]=0xff;
  for(i=0;i<200;i++)
for(n=0;n<8;n++)
P2=macotd[n];
P1=hienthi[n];
//P3=hienthi[n];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
}
void hienchuxanh(unsigned int c)
{
  k=c*6-32*6;
hienthi[0]=0xff;
for(i=0;i<6;i++)
{
  hienthi[i+1]=mahang[k+i];
  }  
hienthi[7]=0xff;
  for(i=0;i<200;i++)
for(n=0;n<8;n++)
P2=macotd[n];
//P1=hienthi[n];
P3=hienthi[n];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
}void hienchuvang(unsigned int c)
{
  k=c*6-32*6;
hienthi[0]=0xff;
for(i=0;i<6;i++)
{
  hienthi[i+1]=mahang[k+i];
  }  
hienthi[7]=0xff;
  for(i=0;i<200;i++)
for(n=0;n<8;n++)
P2=macotd[n];
P1=hienthi[n];
P3=hienthi[n];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
}
void main()
{

  l=strlen(xau)*6+8;
for(i=0;i<8;i++) hienthi[i]=0xff;
for(i=0;i<strlen(xau);i++)
{
n=0;
 k=*(xau+i)*6-32*6;
 for(j=k;j<k+6;j++)
 {
  m=8+i*6+n;
  hienthi[8+i*6+n]=mahang[k+n];
n++;
  }  
}
for(i=m+1;i<m+8;i++) hienthi[i]=0xff; 
while(1)
{
for(j=48;j<59;j++)
{
hienchudo(j);
}
for(j=48;j<59;j++)
{
hienchuxanh(j);
}for(j=48;j<59;j++)
{
hienchuvang(j);
}


for(j=65;j<92;j++)
{
hienchudo(j);
}
for(j=65;j<92;j++)
{
hienchuxanh(j);
}
for(j=65;j<92;j++)
{
hienchuvang(j);
}
for(i=0;i<3;i++)
{
    k=0;
for(t=0;t<l;t++)
{
for(j=1;j<100;j++)//thoi gian nhin thay ky tu
for(n=0;n<8;n++)
P2=macotd[n];
//P1=hienthi[n+k];
P3=hienthi[n+k];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
k++;
}
}
for(i=0;i<3;i++)
{
    k=0;
for(t=0;t<l;t++)
{
for(j=1;j<100;j++)//thoi gian nhin thay ky tu
for(n=0;n<8;n++)
P2=macotd[n];
//P1=hienthi[n+k];
P3=hienthi[n+k];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
k++;
}
}
for(i=0;i<3;i++)
{
    k=0;
for(t=0;t<l;t++)
{
for(j=1;j<100;j++)//thoi gian nhin thay ky tu
for(n=0;n<8;n++)
P2=macotd[n];
P1=hienthi[n+k];
//P3=hienthi[n+k];
delay(20); // delay mo
}
P1=0xff;   //
delay(500); // delay tat
k++;
}
}
}

Hiển thị số 0000-9999 lên led 7 thanh

Download Code Here
#include <REGX52.H>
#include<stdio.h>
#include<math.h>
sbit led1= P1^0;
sbit led2= P1^1;
sbit led3= P1^2;
sbit led4= P1^3;
unsigned char m[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char donvi,chuc,tram,nghin;

int num;
void delay(int time)
{
while(time--);
}

void sang(unsigned int num)
{
  int i;
//num=9876;
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donvi=((num%1000)%100)%10;
for(i=0;i<50;i++)
{
P2=m[nghin];
led1=1; led2=led3=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[tram];
led2=1; led1=led3=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[chuc];
led3=1; led1=led2=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[donvi];
led4=1; led1=led3=led2=0;
delay(100);

P2=0xff;
delay(100);
}
}
void main()
{
while(1)
{
int n;
for(n=0;n<9999;n++)
{
sang(n);
}
}
}

Tạo 2 xung có tần số khác nhau

Download Code Here
#include <REGX52.H>
sbit xung1= P2^0;
sbit xung2= P2^1;

void ngatT0(void) interrupt 1
{
 TR0=0;
 TH0=-10000/256;
 TL0=-10000%256;
 TR0=1;
 xung2=~xung2;
}
void ngatT1(void) interrupt 3
{
xung1=~xung1;
}
void main(void)
{
TMOD = 0x21;
TH1= TL1=-25;
TR1=1;

IE=0x8A;
IP=0;
TF0=1;
while(1);
}

Hiển thị chữ lên LCD

Download Code Here
#include <REGX52.H>
#include <stdio.h>
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^2;
char x;
void delay30ms(void)
{
TMOD = 0x10;
TH1 = 35535/256;
TL1 = 35535%256;
TR1 = 1;
while (!TF1);
TR1 = TF1=0;
}
void delay(unsigned long int t)
{
unsigned long int i;
for (i=0;i<t;i++);
}
void busy_flag(void)
{
P2 = 0xff;
RS = 0;
RW = 1;
do
{
EN = 0;
delay(10);
EN = 1;
x = P2;
x = x&0x80;
}
while(x==0x80);
}
void write_command(unsigned char LCD_command)
{
busy_flag();
P2 = LCD_command;
RS = 0;
RW = 0;
EN = 1;
delay(50);
EN = 0;
delay(50);
}
void write_data (unsigned char LCD_data)
{
busy_flag();
P2 = LCD_data;
RS = 1;
RW = 0;
EN = 1;
delay(50);
EN = 0;
delay(50);
}
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}

void init(void)
{
write_command(0x03);
write_command(0x38);
write_command(0x06);
write_command(0x0c);
}
void main(void)
{
delay30ms();
init();


write_command(0x01);
delay(10);
write_command(0x80);
write_string(" DUY TAN ");
delay(10);
write_command(0xc0);
write_string (" KHOA DIEN TU");
  while(1);
}

Hiển thị tần số đo được lên led 7 thanh

Download Code Here
#include <REGX52.H>
#include<stdio.h>
sbit led1= P1^0;
sbit led2= P1^1;
sbit led3= P1^2;
sbit led4= P1^3;
unsigned int ms,tan_so;

unsigned char m[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int num,i,nghin,tram,chuc,donvi;
void delay(int time)
{
while(time--);
}
void sang(void)
{
int k;
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donvi=((num%1000)%100)%10;
for(k=0;k<100;k++)
{
P2=m[nghin];
led1=1; led2=led3=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[tram];
led2=1; led1=led3=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[chuc];
led3=1; led1=led2=led4=0;
delay(100);

P2=0xff;
delay(100);

P2=m[donvi];
led4=1; led1=led3=led2=0;
delay(100);
 
P2=0xff;
delay(100);
}

}

void ngat0(void) interrupt 0
{
tan_so++;
}
void timer0(void) interrupt 1
{
TF0=0;
TH0=(65536-50000)>>8;
TL0=(65535-50000)%256;
ms++;
}
void main()
{


IE=0x81;  //cho phep ngat toan cuc
TMOD = 0x01;
TR0=1;
TF0=1;
EA=1;
ET0=1;
IT0=1;

while(1)
{
if(ms>=20)
{
ms=0;
num=tan_so;
tan_so=0;
}
sang();

}
}

Hiển thị số 00-99 lên led 7 thanh đôi

Download Code Here
#include <REGX52.H>
sbit led1 = P3^0;
sbit led2 = P3^1;
void delay_ms(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<=125;y++);
}
void delay_us(int time)
{
while(time--);
}
unsigned char seg7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void sang(int n)
{
int c,dv,i;
c=n/10;
dv=n%10;
for(i=0;i<50;i++)
{
P2=seg7[c];
led1=1;led2=0;
delay_us(100);

P2=0xff;
delay_us(100);

P2=seg7[dv];
led2=1;led1=0;
delay_us(100);

P2=0xff;
delay_us(100);
}

}


void main()
{
int a;
while(1)
{
for(a=0;a<99;a++)
{
sang(a);
}
}
}

Hiển thị số từ 0-9 lên led 7 thanh đơn

Download Code Here
#include <REGX52.H>
void delay_ms(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<=125;y++);
}
unsigned char seg7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void main()
{
int i;
while(1)
{
for(i=0;i<10;i++)
{
P2=seg7[i];
delay_ms(1000);
}
}
}

Hiển thị số lần nhất nút lên màn hình máy tính dùng timer

Download Code Here
#include <REGX52.H>
#include <stdio.h>
#include<string.h>

unsigned int num;

void delay_ms(unsigned int  ms)
{
  int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<121;j++);
}
}

void sendchar(unsigned char a)                    
{
            SBUF=a; //chuyen ky tu a SBUF                            
            while(TI==0); //cho truyen xong                
            TI=0;                                    
}

void sendintnum(unsigned long n)    
{      
if(n!=0)                                          
            {
                   unsigned char a[11];                    
                   int i;                                      
                   for(i=0;n>0;i++)       //tach so        
                        {
                              a[i]=(n%10)+48;    
                              n=n/10;                    
                        }
a[i]=NULL;                        
                   for(i=strlen(a);i>=0;i--)   //gui so        
                {                                                    
                        sendchar(a[i]);                          
         
                }
            }
    else sendchar('0');
}
void ngat(void) interrupt 0 //ngat timer 0
{
num++;
sendchar(8); //xoa
sendchar(8);
sendintnum(num);//truyen so lan bam
}
void main()

{
//EA=1;//cho phep ngat toan cuc
IT0=1;//
IE=0x81;// 1 0 0 0 0 0 0 1
TMOD=0x22;//timer1 che do 2, timer 0 che 2
SCON=0x50;//
TH1=TL1=-3; //9600
TR1=1;//chay timer 1
TR0=1;// chay timer 0
sendintnum(0);//in so 0
while(1);

}

Hiển thị số lần nhấn nut lên màn hình máy tính

Download Code Here
#include <REGX52.H>
#include <stdio.h>
#include<string.h>

sbit sw = P3^5;

void delay_ms(unsigned int  ms)
{
  int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<121;j++);
}
}

void setup()
{

TMOD=0x26;//timer1 che do 2, timer 0 che 2/dem
SCON=0x50;
TH1=TL1=-3; //9600
TH0=0;
// TH1=TL1=-6; //4800
TR1=1;
TR0=1;
sw=1;

}
void sendchar(unsigned char a)                    
{
            SBUF=a;                              
            while(TI==0);                  
            TI=0;                                    
}

void sendstring(char *a)              
{
            int i,n;                                  
            n=strlen(a);                        
            for(i=0;i<n;i++)                
            {                                            
                        sendchar(a[i]);
            }      
}
void sendintnum(unsigned long n)    
{      
if(n!=0)                                          
            {
                   unsigned char a[11];                    
                   int i;                                      
                   for(i=0;n>0;i++)       //tach so        
                        {
                              a[i]=(n%10)+48;    
                              n=n/10;                    
                        }
a[i]=NULL;                        
                   for(i=strlen(a);i>=0;i--)   //gui so        
                {                                                    
                        sendchar(a[i]);                          
         
                }
            }
    else sendchar('0');
}

void sendrealnum(float n)                          
{
            unsigned long a=n/1;               //tach phan nguyen
            unsigned long b=(n-a)*10000;      //tach phan thap phan
            sendintnum(a);                  // gui phan nguyen
            if(b!=0)                          //gui phan thap phan va dau "."
            {
                        sendchar('.');                              
                        sendintnum(b);              
            }
}

void main()                                                          
{
unsigned int count;
  setup();
            while(1)                              
            {
                       //sendintnum(10000);
  //sendchar(13);
  count=TL0;
if (count >99)
{
count = 0;
TL0=0;

}
  sendintnum(count);
  delay_ms(500);
  sendchar(8);
  //delay_ms(500);
            }
}

Hiển thị số lần nhấn nút lên led 7 thanh dùng ngắt

Download Code Here
#include <REGX52.H>
#include<stdio.h>
sbit led1= P1^0;
sbit led2= P1^1;

unsigned char m[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int num,i,l1,l2;
void delay(int time)
{
while(time--);
}
void sang(void)
{

int k;
l1=num/10;
l2=num%10;
for(k=0;k<100;k++)
{
P2=m[l1];
led1=1;led2=0;
delay(100);

P2=0xff;
delay(100);

P2=m[l2];
led2=1; led1=0;
delay(100);

P2=0xff;
delay(100);
}
}
void ngat(void) interrupt 0
{
num++;
}
void main()
{

EA=1;
IT0=1;
IE=0x81;
while(1)
{
sang();

}
}

Hiển thị số lần nhấn nút lên led 7 thanh

Download Code Here
#include <REGX52.H>

sbit sw=P3^5;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;

unsigned char donvi,chuc,tram,nghin;

unsigned int i,s;

unsigned char m[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void delay(int time)
{
while(time--);
}

void display(unsigned int num)
{
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donvi=((num%1000)%100)%10;

for(i=0;i<50;i++)
{
P2=m[chuc];
led1=1; led2=0;
delay(100);

P2=0xff;
delay(100);

P2=m[donvi];
led2=1;led1=0;
delay(100);

P2=0xff;
delay(100);
}

}
void main(void)                                  
{
unsigned int count;
            TMOD=0x60;
            TH1=0x00;            
            sw=1;                  
            TR1=1;                    

            while(1)                  
            {
                        count=TL1;
if (count >99)
{
count = 0;
TL1=0;

}
display(count);
            }
}

Hiển thị số lần nhấn nút lên LCD

Download Code Here
#include <REGX52.H>
#include <stdio.h>
#include <string.h>

sbit sw = P3^5;

sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^2;
char x;
void delay_ms(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<=125;y++);
}
void delay(unsigned long int t)
{
unsigned long int i;
for (i=0;i<t;i++);
}
void busy_flag(void)
{
P2 = 0xff;
RS = 0;
RW = 1;
do
{
EN = 0;
delay(10);
EN = 1;
x = P2;
x = x&0x80;
}
while(x==0x80);
}
void write_command(unsigned char LCD_command)
{
busy_flag();
P2 = LCD_command;
RS = 0;
RW = 0;
EN = 1;
delay(50);
EN = 0;
delay(50);
}
void write_data (unsigned char LCD_data)
{
busy_flag();
P2 = LCD_data;
RS = 1;
RW = 0;
EN = 1;
delay(50);
EN = 0;
delay(50);
}
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}

void init(void)
{
write_command(0x03);//
write_command(0x38);//hien thi 2 dong
write_command(0x06);// tro ve dau
write_command(0x0c);// bo dau nhay
}
void restart()
{
write_command(0x01);//xoa man hinh
delay(1000);
}
void startline1()
{
write_command(0x80);//vi tro con tro dau dong 1
delay(1000);
}
void startline2()
{
write_command(0xc0);//vi tri con tro dau dong 2
delay(1000);
}
void write_intnum(unsigned long n)    
{      
if(n!=0)                                          
            {
                   unsigned char a[11];                    
                   int i;                                      
                   for(i=0;n>0;i++)       //tach so        
                        {
                              a[i]=(n%10)+48;    
                              n=n/10;                    
                        }
a[i]=NULL;                        
                   for(i=strlen(a);i>=0;i--)   //gui so        
                {                                                    
                        write_data(a[i]);                          
         
                }
            }
    else write_data('0');
}

void write_realnum(float n)                          
{
            unsigned long a=n/1;               //tach phan nguyen
            unsigned long b=(n-a)*10000;      //tach phan thap phan
            write_intnum(a);                  // gui phan nguyen
            if(b!=0)                          //gui phan thap phan va dau "."
            {
                        write_data('.');                              
                        write_intnum(b);              
            }
}
void main(void)
{
    unsigned int count;
            TMOD=0x60;
            TH1=0x00;            
            sw=1;                  
            TR1=1;                    

            while(1)                  
            {
delay_ms(30);
init();
                        count=TL1;
if (count >99)
{
count = 0;
TL1=0;

}
write_intnum(count);
delay_ms(10);

            }
}

Hiển thị bảng mã Ascii lên màn hình máy tính

Download Code Here
#include <REGX52.H>
#include <stdio.h>
void delay_ms(unsigned int  ms)
{
  int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<121;j++);
}
}

int c;
void main()
{
  SCON=0x52;
TMOD=0x20;
TH1=TL1=-3; //9600
TR1=1;
// while(1)
{

/*
while(!TI);
TI=0;
SBUF=65;
*/
for (c=32;c<127;c++)
{

putchar(c);
if(c%10==0 && c!=0) putchar(0x0D);
putchar(32);
    delay_ms(10);
}
printf("hien thi: %2.2f",4.5);
while(1);
}
}

Hiển thị chữ lên led ma trận 8x8 Dùng 2 IC 74HC595

Download Code Here
#include <REGX52.H>
sbit SCK1   = P2^0;
sbit DATA1  = P2^1;
sbit SCL1   = P2^2;

sbit SCK2   = P2^3;
sbit DATA2  = P2^4;
sbit SCL2   = P2^5;
//  1     2 3  4    5    6
unsigned char code mang[] = { 0xFC,0xFC,0x80,0x80,0xFC,0xFC,
   0x83,0xF5,0xF6,0xF5,0x83,
     0x80,0xFD,0xFB,0xF7,0x80,0xFF,0xff
 }; //T A N
unsigned char cot[8]   = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};



void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for (j=0;j<=125;j++);
}

void quethang(unsigned char num)
{
int i,temp;
for(i=0;i<8;i++)
{
temp = num;
temp = temp&0x80;
if(temp==0x80) DATA1 = 1;
else DATA1 = 0;
num=num<<1;
SCK1 = 0;
SCK1 = 1;
}
SCL1 = 0;
SCL1 = 1;
}

 void quetcot(unsigned char num)
{
int i,temp;
for(i=0;i<8;i++)
{
temp = num;
temp = temp&0x80;
if(temp==0x80) DATA2 = 1;
else DATA2 = 0;
num=num<<1;
SCK2 = 0;
SCK2 = 1;
}
SCL2 = 0;
SCL2 = 1;
}

void main()
{
int j,i,k;
while(1)
{
for(j=0;j<18;j++)

for(k=0;k<10;k++)//tan so quet
for(i=0;i<8;i++)
{
quetcot(cot[i]);
quethang(mang[(i+j)%18]);
delay(5);
}
quetcot(0x00);
delay(100);
}
}

Hiển Thị chữ lên led ma trận 8x8 dùng 1 IC 74HC595

Download Code Here
#include <REGX52.H>
sbit SCK = P3^0;
sbit DATA = P3^1;
sbit SCL = P3^2;
//  1     2 3  4    5    6
unsigned char code mang[] = { 0xFC,0xFC,0x80,0x80,0xFC,0xFC,
   0x83,0xF5,0xF6,0xF5,0x83,
     0x80,0xFD,0xFB,0xF7,0x80,0xFF,0xff
 }; //T A N
unsigned char cot[8]   = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};



void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for (j=0;j<=125;j++);
}

void quet(unsigned char x)
{
int i,temp;
for(i=0;i<8;i++)
{
temp = x;
temp = temp&0x80;
if(temp==0x80) DATA = 1;
else DATA = 0;
x*=2;
SCK = 0;
SCK = 1;
}
SCL = 0;
SCL = 1;
}

void main()
{
int j,i,k;
while(1)
{
for(j=0;j<18;j++)

for(k=0;k<10;k++)//tan so quet
for(i=0;i<8;i++)
{
P2=cot[i];
quet(mang[(i+j)%18]);
delay(5);
}
P2=0;
delay(100);
}
}

Điều khiển 2 LED sáng nhấp nháy dùng ngắt

Download Code Here

#include <REGX52.H>
sbit Led_vang=P1^0;
sbit Led_do=P1^2;
void delay_ms(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<=125;y++);
}
void timer_0(void) interrupt 1
{
int i;
Led_vang=0;
  for(i=0;i<=20;i++)
{
Led_do=~Led_do;
delay_ms(100);
}
}
void main()
{
//set interrupt
EA=1;//enable interrupt gobal
IT0=1;
IE=0x81;
while(1)
{
Led_do=0;
Led_vang =~Led_vang;
delay_ms(100);

}
}

Hàm delay cho 8051 với thạch anh 12Mhz

Download Code Here

#include <REGX51.H>
#define led P0^0
void delay_us(unsigned int us)
{
while(us--)
{
unsigned int i=1000;
while(i--);
}
}

void delay_ms(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<=125;y++);
}
void main()
{
while(1)
{
delay_ms(1000);

}

}