基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc_第1页
基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc_第2页
基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc_第3页
基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc_第4页
基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用at89s52单片机,12864显示,DS18B20测温12864液晶显示屏驱动是lcd.h和lcd.c温度传感器测温在temp.c单片机底层驱动是AT89X52.H包含5个文件 AT89X52.Hain.c分别保存成.c文件,运行mian.c/*-AT89X52.HHeader file for the low voltage Flash Atmel AT89C52 and AT89LV52.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _AT89X52_H_#define _AT89X52_H_/*-Byte Registers-*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr P2 = 0xA0;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr T2CON = 0xC8;sfr T2MOD = 0xC9;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*-P0 Bit Registers-*/sbit P0_0 = 0x80;sbit P0_1 = 0x81;sbit P0_2 = 0x82;sbit P0_3 = 0x83;sbit P0_4 = 0x84;sbit P0_5 = 0x85;sbit P0_6 = 0x86;sbit P0_7 = 0x87;/*-PCON Bit Values-*/#define IDL_ 0x01#define STOP_ 0x02#define PD_ 0x02 /* Alternate definition */#define GF0_ 0x04#define GF1_ 0x08#define SMOD_ 0x80/*-TCON Bit Registers-*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = 0x8F;/*-TMOD Bit Values-*/#define T0_M0_ 0x01#define T0_M1_ 0x02#define T0_CT_ 0x04#define T0_GATE_ 0x08#define T1_M0_ 0x10#define T1_M1_ 0x20#define T1_CT_ 0x40#define T1_GATE_ 0x80#define T1_MASK_ 0xF0#define T0_MASK_ 0x0F/*-P1 Bit Registers-*/sbit P1_0 = 0x90;sbit P1_1 = 0x91;sbit P1_2 = 0x92;sbit P1_3 = 0x93;sbit P1_4 = 0x94;sbit P1_5 = 0x95;sbit P1_6 = 0x96;sbit P1_7 = 0x97;sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl */*-SCON Bit Registers-*/sbit RI = 0x98;sbit TI = 0x99;sbit RB8 = 0x9A;sbit TB8 = 0x9B;sbit REN = 0x9C;sbit SM2 = 0x9D;sbit SM1 = 0x9E;sbit SM0 = 0x9F;/*-P2 Bit Registers-*/sbit P2_0 = 0xA0;sbit P2_1 = 0xA1;sbit P2_2 = 0xA2;sbit P2_3 = 0xA3;sbit P2_4 = 0xA4;sbit P2_5 = 0xA5;sbit P2_6 = 0xA6;sbit P2_7 = 0xA7;/*-IE Bit Registers-*/sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */sbit EX1 = 0xAA; /* 1=Enable External interrupt 1 */sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */sbit ES = 0xAC; /* 1=Enable Serial port interrupt */sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */sbit EA = 0xAF; /* 0=Disable all interrupts */*-P3 Bit Registers (Mnemonics & Ports)-*/sbit P3_0 = 0xB0;sbit P3_1 = 0xB1;sbit P3_2 = 0xB2;sbit P3_3 = 0xB3;sbit P3_4 = 0xB4;sbit P3_5 = 0xB5;sbit P3_6 = 0xB6;sbit P3_7 = 0xB7;sbit RXD = 0xB0; /* Serial data input */sbit TXD = 0xB1; /* Serial data output */sbit INT0 = 0xB2; /* External interrupt 0 */sbit INT1 = 0xB3; /* External interrupt 1 */sbit T0 = 0xB4; /* Timer 0 external input */sbit T1 = 0xB5; /* Timer 1 external input */sbit WR = 0xB6; /* External data memory write strobe */sbit RD = 0xB7; /* External data memory read strobe */*-IP Bit Registers-*/sbit PX0 = 0xB8;sbit PT0 = 0xB9;sbit PX1 = 0xBA;sbit PT1 = 0xBB;sbit PS = 0xBC;sbit PT2 = 0xBD;/*-T2CON Bit Registers-*/sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */sbit TR2 = 0xCA; /* 0=Stop timer, 1=Start timer */sbit EXEN2= 0xCB; /* Timer 2 external enable */sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */sbit RCLK = 0xCD; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */sbit EXF2 = 0xCE; /* Timer 2 external flag */sbit TF2 = 0xCF; /* Timer 2 overflow flag */*-T2MOD Bit Values-*/#define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */#define T2OE_ 0x02 /* Timer 2 output enable */*-PSW Bit Registers-*/sbit P = 0xD0;sbit FL = 0xD1;sbit OV = 0xD2;sbit RS0 = 0xD3;sbit RS1 = 0xD4;sbit F0 = 0xD5;sbit AC = 0xD6;sbit CY = 0xD7;/*-Interrupt Vectors:Interrupt Address = (Number * 8) + 3-*/#define IE0_VECTOR0 /* 0x03 External Interrupt 0 */#define TF0_VECTOR1 /* 0x0B Timer 0 */#define IE1_VECTOR2 /* 0x13 External Interrupt 1 */#define TF1_VECTOR3 /* 0x1B Timer 1 */#define SIO_VECTOR4 /* 0x23 Serial port */#define TF2_VECTOR5 /* 0x2B Timer 2 */#define EX2_VECTOR5 /* 0x2B External Interrupt 2 */#endif/*lcd.c*/*/* LCD(HS12864图形点阵液晶KS0108B控制器)底层驱动程序 */* LCD接线见LCD.H定义, */* Designer : CanycalL */* 版本:V 1.0 */* 浙江天煌科技实业有限公司 */*/#include #include #include #include lcd.hvoid delay(unsigned int a) /延时 1MS/次 unsigned char i; while(-a!=0) for(i=0;i125;i+) ; typedef struct typFNT_Char /-字符字模显示数据结构- char Index_Char1; char Msk_Char16;struct typFNT_Char code ASC_16 = /-显示为8*16- / MingLiu体 0,0x00,0xF0,0x08,0x04,0xC4,0x28,0xF0,0x00,0x00,0x0F,0x14,0x23,0x20,0x10,0x0F,0x00, 1,0x00,0x00,0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00, 2,0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, 3,0x00,0x08,0x04,0x84,0xC4,0x38,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x11,0x0E,0x00, 4,0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x3F,0x04,0x00, 5,0x00,0x00,0x7C,0x44,0x44,0x84,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x10,0x0F,0x00, 6,0x00,0xE0,0x90,0x48,0x44,0x84,0x04,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, 7,0x00,0x1C,0x04,0x04,0x04,0xE4,0x1C,0x00,0x00,0x00,0x00,0x38,0x07,0x00,0x00,0x00, 8,0x00,0x30,0x48,0x84,0x84,0x48,0x30,0x00,0x00,0x0E,0x11,0x20,0x20,0x11,0x0E,0x00, 9,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x00,0x20,0x21,0x22,0x12,0x09,0x07,0x00, .,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00, :,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00, C,0x00,0x00,0x00,0x00,0x03,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00,0x00, ; typedef struct typFNT_GB16 /-字符字模显示数据结构- char Index_GB162; char Msk_GB1632;struct typFNT_GB16 code GB_16 = / 显示16*16/ 楷体_GB2312公,0x00,0x00,0x80,0x60,0x18,0x00,0x82,0x02,0x0C,0x10,0x20,0x40,0xC0,0x80,0x80,0x00,0x02,0x01,0x00,0x18,0x14,0x12,0x11,0x08,0x0A,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,里,0x00,0x00,0x00,0x7C,0x84,0xA4,0xFC,0x54,0x52,0x42,0x72,0x0E,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x24,0x24,0x1F,0x12,0x12,0x12,0x10,0x10,0x10,0x10,0x00,0x00,程,0x40,0x40,0x48,0x48,0xFC,0x26,0x20,0x00,0xB8,0xA4,0xA4,0x54,0x5C,0x00,0x00,0x00,0x08,0x04,0x02,0x01,0x7F,0x01,0x12,0x10,0x12,0x12,0x1F,0x09,0x09,0x08,0x08,0x00,总,0x00,0x00,0x00,0x00,0xE2,0x24,0x10,0x98,0x94,0xD3,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x0D,0x11,0x21,0x24,0x28,0x20,0x28,0x32,0x02,0x04,0x00,0x00,单,0x00,0x00,0x00,0x70,0x92,0xAC,0xA8,0xF8,0xAC,0x8A,0x69,0x18,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,价,0x80,0x40,0x20,0xD8,0x86,0x40,0x20,0x98,0x07,0x04,0xC8,0x10,0x20,0x40,0x40,0x00,0x00,0x00,0x00,0x3F,0x00,0x20,0x18,0x07,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,元,0x00,0x00,0x20,0x20,0x24,0xE4,0x24,0xE2,0x12,0x12,0x10,0x10,0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x04,0x03,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x20,0x20,0x1C,0x00,等,0x00,0x80,0x88,0x84,0xA7,0xAA,0xA2,0x78,0xD4,0x53,0x46,0x41,0x41,0x40,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x06,0x0A,0x22,0x7F,0x01,0x01,0x01,0x00,0x00,0x00,0x00,待,0x00,0x20,0x10,0xC8,0x36,0x40,0x40,0x50,0x50,0x3F,0xA8,0x28,0x20,0x20,0x20,0x00,0x04,0x02,0x01,0x3F,0x00,0x00,0x02,0x06,0x0A,0x22,0x7F,0x01,0x01,0x01,0x00,0x00,时,0x00,0xF8,0x48,0x44,0xFC,0x00,0xA0,0x20,0x20,0x20,0xFE,0x10,0x10,0x10,0x00,0x00,0x00,0x0F,0x04,0x04,0x0F,0x00,0x00,0x01,0x10,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,间,0x00,0x00,0xF8,0x02,0x04,0xE0,0xA4,0x14,0xF4,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x07,0x02,0x02,0x07,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,:,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,年,0x00,0x00,0x00,0x10,0xE8,0x24,0x27,0x24,0xFC,0x12,0x12,0x10,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,月,0x00,0x00,0x00,0x00,0x00,0xFC,0x24,0x92,0x92,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,0x00,0x00,日,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x44,0x44,0x04,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x08,0x04,0x04,0x04,0x08,0x0F,0x00,0x00,0x00,0x00,0x00,温,0x20,0x40,0x04,0x08,0x00,0x0C,0x34,0x54,0x4A,0x2A,0xB2,0x8E,0x00,0x00,0x00,0x00,0x00,0x18,0x06,0x11,0x10,0x1F,0x11,0x1F,0x09,0x0F,0x08,0x0F,0x08,0x08,0x00,0x00,度,0x00,0x00,0x00,0xF8,0x08,0x28,0xF8,0xA9,0xA6,0x7C,0x14,0x14,0x00,0x00,0x00,0x00,0x20,0x18,0x06,0x21,0x20,0x22,0x16,0x0A,0x09,0x17,0x30,0x20,0x20,0x20,0x20,0x00,0x00,0x0E,0x0A,0x0E,0xE0,0x10,0x08,0x04,0x04,0x04,0x04,0x04,0x08,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00,0x00,起,0x80,0x80,0x90,0x90,0xFF,0x48,0x48,0x00,0xC8,0x48,0x48,0x38,0x00,0x00,0x00,0x00,0x10,0x08,0x07,0x04,0x07,0x09,0x09,0x10,0x13,0x24,0x24,0x24,0x24,0x23,0x20,0x00,床,0x00,0x00,0x00,0xF8,0x08,0x88,0x88,0x89,0xF6,0x44,0x44,0x44,0x00,0x00,0x00,0x00,0x20,0x18,0x06,0x11,0x08,0x04,0x02,0x01,0x7F,0x01,0x02,0x04,0x0C,0x08,0x08,0x00,盼,0x00,0xF0,0x48,0x08,0xF8,0x40,0x20,0x1A,0x02,0x84,0x88,0x90,0x20,0x40,0x40,0x00,0x00,0x0F,0x09,0x08,0x2F,0x10,0x09,0x05,0x13,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,我,0x00,0x00,0x80,0x90,0xF0,0x48,0x40,0x7F,0xC0,0x20,0x24,0xA8,0x00,0x00,0x00,0x00,0x08,0x08,0x04,0x14,0x3F,0x02,0x09,0x08,0x05,0x06,0x09,0x10,0x20,0x78,0x00,0x00,爱,0x00,0x00,0x60,0xA0,0xA8,0xB2,0xE6,0x9A,0x51,0x59,0x16,0x50,0x30,0x20,0x00,0x00,0x00,0x20,0x10,0x28,0x24,0x27,0x1A,0x12,0x1A,0x26,0x20,0x40,0x40,0x40,0x00,0x00,你,0x00,0x80,0x40,0xF0,0x0E,0x00,0x40,0x30,0x2E,0xA0,0x10,0x50,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x3F,0x00,0x08,0x06,0x10,0x20,0x3F,0x00,0x02,0x04,0x0C,0x00,0x00,;/*-函数列表-*/*-状态检查-*/void Check_Busy(void) uchar dat; DI=0; RW=1; do DataPort=0x00; EN=1; dat=DataPort; EN=0; dat=0x80 & dat; /仅当第7位为0时才可操作(判别busy信号) while(!(dat=0x00);/*-向LCD发送命令-*/void Writ_Comd(uchar command) Check_Busy(); RW=0;DI=0; DataPort=command; EN=1; EN=0;/*-写显示数据-*/void Write_Dat(uchar dat) Check_Busy(); RW=0;DI=1; DataPort=dat; EN=1; EN=0; /*-设定行地址(页)-X 0-7-*/void Set_Line(uchar line) line=line & 0x07; / 0=line=7 line=line|0xb8; /1011 1xxx Writ_Comd(line);/*-设定列地址-Y 0-63-*/void Set_Column(uchar column) column=column & 0x3f; / 0=column=63 column=column | 0x40; / 01xx xxxx Writ_Comd(column);/*-设定显示开始行-XX-*/void Set_StartLine(uchar startline) /0-63 startline=startline & 0x07; startline=startline | 0xc0; /1100 0000 Writ_Comd(startline); /*-开关显示-ONOFF=1:ON;ONOFF=0:OFF-*/void Set_OnOff(uchar onoff)onoff=0x3e | onoff; /0011 111xWrit_Comd(onoff);/*-选择屏幕:screen: 0-全屏,1-左屏,2-右屏-*/void Select_Screen(uchar screen) switch(screen) case 0: cs1=1; cs2=1; break; case 1: cs1=1; cs2=0; break; case 2: cs1=0; cs2=1; break; /*-清屏:screen: 0-全屏,1-左屏,2-右-*/void LCD_Clr(uchar screen) unsigned char i,j; Select_Screen(screen); for(i=0;i8;i+) Set_Line(i); for(j=0;j128;j+) Write_Dat(0x00); /*-初始化LCD-*/void LCD_Init(void) uchar i=250; /延时while(i-);Select_Screen(0);Set_OnOff(0); /关显示LCD_Clr(0); /清屏Select_Screen(0);Set_OnOff(1); /开显示Select_Screen(0);Set_StartLine(0); /开始行:0RST = 1;/ 在指定位置显示字符:x=0-120(字母、数字)/0-112(汉字),y=0-6void Out_Char(uchar x, uchar y, bit mode, char *fmt) /mode: 1 正常显示,0 反白显示 int c1,c2,cData; uchar i=0,j,uLen; uchar k; uLen=strlen(fmt); while(i=0 & c1128 )/ ASCII if(c1 0x20) switch(c1) case 13: case 10: / 回车或换行 i+; /if(y (LCD_Y_MAX - (2 * HZ_CHR_HEIGHT) if (yASC_CHR_WIDTH) y-=ASC_CHR_WIDTH; cData = 0x00; break; for(j=0;jsizeof(ASC_16)/sizeof(ASC_160);j+) /sizeof(ASC_160 if(fmti = ASC_16j.Index_Char0) break; for(k=0;k2*ASC_CHR_WIDTH;k+) if(j sizeof(ASC_16)/sizeof(ASC_160) if (mode = 1) cData=ASC_16j.Msk_Chark; /正常 else cData=ASC_16j.Msk_Chark; /反白 else cData=0; if (kASC_CHR_WIDTH) /字符上半部 if (x+k)6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论