1、51单片机程序计时器计时器1、LCD.c#include #includeunsigned char code number_X= /宽x高=8x16,纵向字节倒序0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, /00x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, /10x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, /20x00,0x30
2、,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, /30x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, /40x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, /50x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0xE0,0x10,0x88,
3、0x88,0x18,0x00,0x00, /60x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, /70x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, /80x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, /90x00,0x00,0x31,0x22,0x22,0x1
4、1,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / .0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, /-0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /nop0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0
5、x00, /:0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00;void LCD_WriteCommandE1(unsigned char com) while(CRADD1 & 0x80); CWADD1 = com;void LCD_WriteDataE1(unsigned char dat) while(CRADD1 & 0x80); DWADD1 = dat;void LCD_WriteCommandE2(unsigned char com) while(CRADD2 & 0x80); CWADD2 = com;void LCD_WriteDataE2(u
6、nsigned char dat) while(CRADD2 & 0x80); DWADD2 = dat;void LCD_Init() LCD_WriteCommandE1(0xe2); LCD_WriteCommandE2(0xe2); LCD_WriteCommandE1(0xa4); LCD_WriteCommandE2(0xa4); LCD_WriteCommandE1(0xa9); LCD_WriteCommandE2(0xa9); LCD_WriteCommandE1(0xa0); LCD_WriteCommandE2(0xa0); LCD_WriteCommandE1(0xc0
7、); LCD_WriteCommandE2(0xc0); LCD_WriteCommandE1(0xaf); LCD_WriteCommandE2(0xaf);void LCD_Clear(void)unsigned char i,j; for(i=0;i4;i+) LCD_WriteCommandE1(i+0xb8); LCD_WriteCommandE2(i+0xb8); LCD_WriteCommandE1(0x00); LCD_WriteCommandE2(0x00); for(j=0;j0x50;j+) LCD_WriteDataE1(0x00); LCD_WriteDataE2(0
8、x00); void display_cn(unsigned char lin,unsigned int col,unsigned int len,unsigned char *p) 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;ilen;i+) for(j=0;j2;j+) L=col; LCD_WriteCommandE1(n+j); LCD_WriteCommandE2(n+j); for(seg=0;seg16;seg+)
9、 if (L 61) a = L; LCD_WriteCommandE1(a); LCD_WriteDataE1(*p+); else a = L-61; LCD_WriteCommandE2(a); LCD_WriteDataE2(*p+); 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; case 1: n=
10、0xb8;break; k=num*16; for(j=0;j2;j+) L=col; LCD_WriteCommandE1(n+j); LCD_WriteCommandE2(n+j); for(seg=0;seg8;seg+) if (L 61) a = L; LCD_WriteCommandE1(a); LCD_WriteDataE1(number_Xk+); else a = L-61; LCD_WriteCommandE2(a); LCD_WriteDataE2(number_Xk+); L+; void display_unsigned_int(unsigned char lin,u
11、nsigned int col,unsigned int dat) unsigned int seg;unsigned char k4; k3=dat%10; k2=(dat/10)%10); k1=(dat/100)%10); k0=(dat/1000)%10); if(k0=0) k0=12; if(k0=12)&(k1=0) k0=12;k1=12; if(k0=12)&(k1=12)&(k2=0)k0=12;k1=12;k2=12; for(seg=0;seg4;seg+) display_number(lin,col,kseg); col=col+10; void display_s
12、igned_int(unsigned char lin,unsigned int col,signed int dat) unsigned int seg;unsigned char k5,a; k0=12; if(dat0) dat=(dat)+1; k0=11; k4=dat%10; k3=(dat/10)%10); k2=(dat/100)%10); k1=(dat/1000)%10); a=k0; if(k1=0) k0=12;k1=a; if(k1=a)&(k2=0) k0=12;k1=12;k2=a; if(k1=12)&(k2=a)&(k3=0)k0=12;k1=12;k2=12
13、;k3=a; for(seg=0;seg5;seg+) display_number(lin,col,kseg); col=col+10; void display_unsigned_char(unsigned char lin,unsigned int col,unsigned char dat) unsigned int seg;unsigned char k3; k1=dat%10; k0=(dat/10)%10); for(seg=0;seg2;seg+) display_number(lin,col,kseg); col=col+10; 1、 LCD.h#include #inclu
14、de #ifndef _LCD_#define _LCD_#define CWADD1 XBYTE0x8000 #define DWADD1 XBYTE0x8001 #define CRADD1 XBYTE0x8002 #define DRADD1 XBYTE0x8003 #define CWADD2 XBYTE0x8004 #define DWADD2 XBYTE0x8005 #define CRADD2 XBYTE0x8006 #define DRADD2 XBYTE0x8007 extern void LCD_Init();extern void display_cn(unsigned
15、char lin,unsigned int col,unsigned int len,unsigned char *p);extern void display_signed_int(unsigned char lin,unsigned int col,signed int dat);extern void display_unsigned_int(unsigned char lin,unsigned int col,unsigned int dat);extern void display_unsigned_char(unsigned char lin,unsigned int col,un
16、signed char dat);extern void LCD_Clear(void);#endif1、MCU.c#include #include MCU.hvoid 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_extern void timer0_init(void);#endif3、MAIN.c#include #incl
17、ude#include#include MCU.hvoid wait(unsigned int x) unsigned int i; i=0; for(i=0;i=20) ms_count=0; second_count+; if(second_count=60) second_count=0; minute_count+; if(minute_count=60) minute_count=0; hous_count+; if(hous_count=24) hous_count=0; void main(void)float F;signed int a; LCD_Init(); LCD_Cl
18、ear(); timer0_init( ); display_cn(0,20,3,dzb); display_cn(1,18,1,hous); display_cn(1,50,1,minute); display_cn(1,82,1,second); EA=1; while(1) display_unsigned_char(1,0,hous_count); display_unsigned_char(1,34,minute_count); display_unsigned_char(1,66,second_count); wait(5000); 4、MAIN.h(字模通过软件自建)#ifndef MAIN_H_#define MAIN_H_/ 中文字模库 16x16点阵code unsigned char dzb= /纵向字节倒序 / 计 / 时 / 器;code unsigned char second= / 秒;code unsigned char minute= / 分;code unsigned char hous= / 时;unsigned char ms_count,second_count,minute_count,hous_count;#endif
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1