51单片机程序(计时器)
LCD_WriteCommandE2(0xa4);
LCD_WriteCommandE1(0xa9);
LCD_WriteCommandE2(0xa9);
LCD_WriteCommandE1(0xa0);
LCD_WriteCommandE2(0xa0);
LCD_WriteCommandE1(0xc0);
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, //-
0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //nop
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
for(seg=0;seg<5;seg++)
{
display_number(lin,col,k[seg]);
coHale Waihona Puke =col+10;}
}
void display_unsigned_char(unsigned char lin,unsigned int col,unsigned char dat)
{
unsigned int seg;
}
L++;
}
}
col=col+16;
}
}
void display_number(unsigned char lin,unsigned int col,unsigned char num)
{
unsigned int seg,i,j;
unsigned char a,L,n,k;
switch(lin)
{
case 0: n=0xba;break;
if((k[0]==12)&&(k[1]==12)&&(k[2]==0)){k[0]=12;k[1]=12;k[2]=12;}
for(seg=0;seg<4;seg++)
{
display_number(lin,col,k[seg]);
col=col+10;
}
}
void display_signed_int(unsigned char lin,unsigned int col,signed int dat)
}
void LCD_WriteDataE1(unsigned char dat)
{
while(CRADD1 & 0x80);
DWADD1 = dat;
}
void LCD_WriteCommandE2(unsigned char com)
{
while(CRADD2 & 0x80);
CWADD2 = com;
{
unsigned int seg;
unsigned char k[4];
k[3]=dat%10;
k[2]=((dat/10)%10);
k[1]=((dat/100)%10);
k[0]=((dat/1000)%10);
if(k[0]==0) {k[0]=12;}
if((k[0]==12)&&(k[1]==0)){ k[0]=12;k[1]=12;}
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, //:
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00
};
void LCD_WriteCommandE1(unsigned char com)
{
while(CRADD1 & 0x80);
CWADD1 = com;
计时器
1、LCD.c
#include <reg51.h>
#include<LCD.h>
unsigned char code number_X[]=
{ //宽x高=8x16,纵向字节倒序
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, //0
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
case 1: n=0xb8;break;
}
k=num*16;
for(j=0;j<2;j++)
{
L=col;
LCD_WriteCommandE1(n+j);
LCD_WriteCommandE2(n+j);
for(seg=0;seg<8;seg++)
{
if (L < 61)
{
a = L;
LCD_WriteCommandE1(a);
a=k[0];
if(k[1]==0) {k[0]=12;k[1]=a;}
if((k[1]==a)&&(k[2]==0)){ k[0]=12;k[1]=12;k[2]=a;}
if((k[1]==12)&&(k[2]==a)&&(k[3]==0)){k[0]=12;k[1]=12;k[2]=12;k[3]=a;}
LCD_WriteCommandE2(i+0xb8);
LCD_WriteCommandE1(0x00);
LCD_WriteCommandE2(0x00);
for(j=0;j<0x50;j++)
{
LCD_WriteDataE1(0x00);
LCD_WriteDataE2(0x00);
}
}
}
void display_cn(unsigned char lin,unsigned int col,unsigned int len,unsigned char *p)
extern void timer0_init(void);
#endif
3、MAIN.c
#include <reg51.h>
#include<LCD.h>
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, //3
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, //4
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
#define DWADD2 XBYTE[0x8005]
#define CRADD2 XBYTE[0x8006]
#define DRADD2 XBYTE[0x8007]
extern void LCD_Init();
extern void display_cn(unsigned char lin,unsigned int col,unsigned int len,unsigned char *p);
unsigned char k[3];
k[1]=dat%10;
k[0]=((dat/10)%10);
for(seg=0;seg<2;seg++)
{
display_number(lin,col,k[seg]);
col=col+10;
}
}
1、LCD.h
#include <reg51.h>
#include <absacc.h>
void timer0_init(void)
{//ok
TMOD|=0x01;//Timer0 is 16 bits timer, timer1 is Baud rate generator
TH0=0x97;
TL0=0xd5;
TR0=1;
ET0=1;
}
2、MCU.h
#ifndef __MCU__
#define __MCU__
{
unsigned int seg,i,j;
unsigned char a,L,n;
switch(lin)
{
case 0: n=0xba;break;
case 1: n=0xb8;break;
}
for(i=0;i<len;i++)
{
for(j=0;j<2;j++)
{
L=col;
LCD_WriteCommandE1(n+j);
#ifndef __LCD__
#define __LCD__
#define CWADD1 XBYTE[0x8000]
#define DWADD1 XBYTE[0x8001]
#define CRADD1 XBYTE[0x8002]
#define DRADD1 XBYTE[0x8003]
#define CWADD2 XBYTE[0x8004]
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, //5
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, //6
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
LCD_WriteDataE1(number_X[k++]);
}
else
{
a = L-61;
LCD_WriteCommandE2(a);
LCD_WriteDataE2(number_X[k++]);