第一范文网 - 专业文章范例文档资料分享平台

基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟

来源:用户分享 时间:2025/5/29 17:40:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

sbit F0 = 0xD5;

sbit AC = 0xD6; sbit CY = 0xD7;

/*------------------------------------------------ Interrupt Vectors:

Interrupt Address = (Number * 8) + 3

------------------------------------------------*/

#define IE0_VECTOR 0 /* 0x03 External Interrupt 0 */ #define TF0_VECTOR 1 /* 0x0B Timer 0 */

#define IE1_VECTOR 2 /* 0x13 External Interrupt 1 */ #define TF1_VECTOR 3 /* 0x1B Timer 1 */ #define SIO_VECTOR 4 /* 0x23 Serial port */

#define TF2_VECTOR 5 /* 0x2B Timer 2 */

#define EX2_VECTOR 5 /* 0x2B External Interrupt 2 */

#endif

??/********

lcd.c

LCD

***************/

/***********************************************************************************/

/* LCD(HS12864图形点阵液晶KS0108B控制器)底层驱动程序 */ /* */ /* */ /* */ /* */

接: 版

科 线

见CanycalL 本

实LCD.H :业

Designer 浙

chx111081@163.com V 限

1.0

/***********************************************************************************/

#include #include #include

#include \

void delay(unsigned int a) //延时 1MS/次 {

unsigned char i;

while(--a!=0) {

for(i=0;i<125;i++) ; }

}

typedef struct typFNT_Char //------字符字模显示数据结构------ {

char Index_Char[1]; char Msk_Char[16];

};

struct typFNT_Char code ASC_16[] = {//-----显示为8*16-----

// MingLiu体

\ \,0x20,0x00,0x00, \ \ \ \ \,0x10,0x20,0x20,0x10,0x0F,0x00, \

\\\\

\ };

typedef struct typFNT_GB16 //------字符字模显示数据结构------ {

char Index_GB16[2]; char Msk_GB16[32];

};

struct typFNT_GB16 code GB_16[] = { // 显示16*16 // 楷体_GB2312 \

0x01,0x00,0x18,0x14,0x12,0x11,0x08,0x0A,0x0C,0x18,0x00,0x00,0x00,0x00,0x00, \

,0x20,0x20,0x20,0x24,0x24,0x1F,0x12,0x12,0x12,0x10,0x10,0x10,0x10,0x00,0x00, \

\

\

\8,0x04,0x02,0x01,0x7F,0x01,0x12,0x10,0x12,0x12,0x1F,0x09,0x09,0x08,0x08,0x00,

\总

\0x1C,0x00,0x00,0x0D,0x11,0x21,0x24,0x28,0x20,0x28,0x32,0x02,0x04,0x00,0x00, \单\4,0x04,0x04,0x04,0x04,0x04,0x04,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00, \

\0x00,0x00,0x3F,0x00,0x20,0x18,0x07,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00, \元\0x10,0x08,0x04,0x03,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x20,0x20,0x1C,0x00, \等\0,0x00,0x00,0x02,0x02,0x06,0x0A,0x22,0x7F,0x01,0x01,0x01,0x00,0x00,0x00,0x00, \

\,0xA8,0x28,0x20,0x20,0x20,0x00,0x04,0x02,0x01,0x3F,0x00,0x00,0x02,0x06,0x0A,0x22,0x7F,0x01,0x01,0x01,0x00,0x00, \时\,0x0F,0x04,0x04,0x0F,0x00,0x00,0x01,0x10,0x20,0x3F,0x00,0x00,0x00,0x00,0x00, \

\0x00,0x1F,0x00,0x00,0x07,0x02,0x02,0x07,0x00,0x10,0x20,0x1F,0x00,0x00,0x00, \:\x00,0x33,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \年\0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x00, \月\0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,0x00,0x00, \

\0x00,0x00,0x00,0x0F,0x08,0x04,0x04,0x04,0x08,0x0F,0x00,0x00,0x00,0x00,0x00, \温\,0x18,0x06,0x11,0x10,0x1F,0x11,0x1F,0x09,0x0F,0x08,0x0F,0x08,0x08,0x00,0x00, \度\,0x18,0x06,0x21,0x20,0x22,0x16,0x0A,0x09,0x17,0x30,0x20,0x20,0x20,0x20,0x00, \

\

0x00,0x00,0x00,0x03,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00,0x00, \

\,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, \床\x18,0x06,0x11,0x08,0x04,0x02,0x01,0x7F,0x01,0x02,0x04,0x0C,0x08,0x08,0x00, \盼\0x0F,0x09,0x08,0x2F,0x10,0x09,0x05,0x13,0x20,0x10,0x0F,0x00,0x00,0x00,0x00, \

0x08,0x04,0x14,0x3F,0x02,0x09,0x08,0x05,0x06,0x09,0x10,0x20,0x78,0x00,0x00, \

\

\0,0x20,0x10,0x28,0x24,0x27,0x1A,0x12,0x1A,0x26,0x20,0x40,0x40,0x40,0x00,0x00, \你\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=

}

/*-----设定显示开始行--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 111x Writ_Comd(onoff); }

/*------选择屏幕:screen: 0-全屏,1-左屏,2-右屏-----*/ void Select_Screen(uchar screen)

基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c64mmi7ndpe3h0qq03o65_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top