sht11+LCD12864温湿度计带万年历功能中断按键设置日期 lcdh文件.docx
- 文档编号:6007767
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:17.07KB
sht11+LCD12864温湿度计带万年历功能中断按键设置日期 lcdh文件.docx
《sht11+LCD12864温湿度计带万年历功能中断按键设置日期 lcdh文件.docx》由会员分享,可在线阅读,更多相关《sht11+LCD12864温湿度计带万年历功能中断按键设置日期 lcdh文件.docx(17页珍藏版)》请在冰豆网上搜索。
sht11+LCD12864温湿度计带万年历功能中断按键设置日期lcdh文件
#ifndef_LCD_12864
#define_LCD_12864
#include"character.h"
/*****************************预定义**************************************/
#defineucharunsignedchar
#defineuintunsignedint/***************************12864管脚配置****************************/
#defineportP2
sbitrs=P3^7;
sbitrw=P3^6;
sbite=P3^5;
sbitcs1=P3^1;
sbitcs2=P3^0;
/********************************************************************************************
*函数名称:
Delay()
*功能:
延迟时间=a*1ms
*入口参数:
*出口参数:
无
*********************************************************************************************/
voidDelay(uinta)
{
uchari;
while(a--)
for(i=0;i<125;i++);
}
/********************************************************************************************
*函数名称:
Lcd_Display_On()
*功能:
LCD显示开
*入口参数:
无
*出口参数:
无
*********************************************************************************************/
voidLcd_Display_On()
{
port=0x3f;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
*函数名称:
Lcd_Display_Off()
*功能:
LCD显示关
*入口参数:
无
*出口参数:
无
*********************************************************************************************/
voidLcd_Display_Off()
{
port=0x3e;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
*函数名称:
Lcd_Set_X(ucharx)
*功能:
LCD设置X坐标
*入口参数:
x
*出口参数:
无
*********************************************************************************************/
voidLcd_Set_X(ucharx)
{
port=0xb8|x;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
*函数名称:
Lcd_Set_Y(uchary)
*功能:
LCD设置Y坐标
*入口参数:
y
*出口参数:
无
*********************************************************************************************/
voidLcd_Set_Y(uchary)
{
port=0x40|y;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
*函数名称:
Lcd_Set_X_Y(ucharx,uchary)
*功能:
LCD设置xy坐标
*入口参数:
xy
*出口参数:
无
*********************************************************************************************/
voidLcd_Set_X_Y(ucharx,uchary)
{
if(y<64)
{cs1=1;cs2=0;Lcd_Set_Y(y);}
else
{cs1=0;cs2=1;Lcd_Set_Y(y-64);}
Lcd_Set_X(x);
}
/********************************************************************************************
*函数名称:
Lcd_Write_Command()
*功能:
写指令代码
*入口参数:
无
*出口参数:
无
*********************************************************************************************/
voidLcd_Write_Command(uchartemp)
{
port=temp;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
*函数名称:
Lcd_Write_Byte()
*功能:
写数据
*入口参数:
无
*出口参数:
无
*********************************************************************************************/
voidLcd_Write_Byte(uchartemp)
{
port=temp;
rs=1;
rw=0;
e=1;
e=0;
}
/****************************************************************************
*名称:
Lcd_Character_16X8(bitbit_flag,ucharx,uchary,ucharcode*point)
*功能:
显示16X8字符(字母)
*入口参数:
*出口参数:
*说明:
bit_flag=1正常显示bit_flag=0黑白反相显示
****************************************************************************/
voidLcd_Character_16X8(bitbit_flag,ucharx,uchary,ucharcode*point)
{
uchari,j,temp;
temp=y;
if(bit_flag)
{
for(i=0;i<2;i++)
{
x+=i;
y=temp;
for(j=0;j<8;j++)
{
Lcd_Set_X_Y(x,y);y++;
Lcd_Write_Byte(point[i*8+j]);
}
}
}
else
{
for(i=0;i<2;i++)
{
x+=i;
y=temp;
for(j=0;j<8;j++)
{
Lcd_Set_X_Y(x,y);y++;
Lcd_Write_Byte(~point[i*8+j]);
}
}
}
}
/****************************************************************************
*名称:
Lcd_Character_16X16(bitbit_flag,ucharx,uchary,ucharcode*point)
*功能:
显示16*16字符(汉字)
*入口参数:
xydata
*出口参数:
无
*说明:
bit_flag=1正常显示bit_flag=0黑白反相显示
****************************************************************************/
voidLcd_Character_16X16(bitbit_flag,ucharx,uchary,ucharcode*point)
{
uchari,j,temp;
temp=y;
if(bit_flag)
{
for(i=0;i<2;i++)
{
x+=i;
y=temp;
for(j=0;j<16;j++)
{
Lcd_Set_X_Y(x,y);y++;
Lcd_Write_Byte(point[i*16+j]);
}
}
}
else
{
for(i=0;i<2;i++)
{
x+=i;
y=temp;
for(j=0;j<16;j++)
{
Lcd_Set_X_Y(x,y);y++;
Lcd_Write_Byte(~point[i*16+j]);
}
}
}
}
/****************************************************************************
*名称:
Lcd_Clear(void)
*功能:
清屏
*入口参数:
无
*出口参数:
无
****************************************************************************/
voidLcd_Clear()
{
uchari,j;
cs1=1;cs2=1;
for(i=0;i<8;i++)
{
Lcd_Set_X(i);
Lcd_Set_Y(0);
for(j=0;j<64;j++)
Lcd_Write_Byte(0x00);
}
}
/*******************************************************************************************
*函数名称:
Lcd_Initial()
*功能:
初始化LCD
*入口参数:
无
*出口参数:
无
*********************************************************************************************/
voidLcd_Initial()
{
Lcd_Display_Off();
Lcd_Write_Command(0xb8);//Page_Add
Lcd_Write_Command(0x40);//Col_Add
Lcd_Write_Command(0xc0);//Start_Line
Lcd_Display_On();
Lcd_Clear();
}
/****************************************************************************
*名称:
Lcd_Time(uchar*clock_time)
*功能:
显示时间
*入口参数:
无
*出口参数:
无
*说明:
时间数组BCD码形式
****************************************************************************/
voidLcd_T_H(floatT,intH)
{
uchari=0;
if(T<0)
{
Lcd_Character_16X8(1,4,48,letter_logo[11]);//显示符号
T=-T;
}
else
Lcd_Character_16X8(1,4,48,letter_logo[12]);//显示符号
i=(int)(T/10)%10;
Lcd_Character_16X8(1,4,56,letter_logo[i]);//显示温度高位
i=(int)T%10;
Lcd_Character_16X8(1,4,64,letter_logo[i]);//显示温度低位
Lcd_Character_16X8(1,4,72,letter_logo[14]);//显示小数点
i=(int)(T*10)%10;
Lcd_Character_16X8(1,4,80,letter_logo[i]);//显示温度小数位
Lcd_Character_16X8(1,4,88,temperture_logo[0]);//显示
Lcd_Character_16X8(1,4,96,temperture_logo[1]);//显示
i=H/10;
Lcd_Character_16X8(1,6,56,letter_logo[i]);//显示温度高位
i=H%10;
Lcd_Character_16X8(1,6,64,letter_logo[i]);//显示温度低位
Lcd_Character_16X8(1,6,72,letter_logo[13]);//显示
}
/****************************************************************************
*名称:
Lcd_Time(uchar*clock_time)
*功能:
显示时间
*入口参数:
无
*出口参数:
无
*说明:
时间数组BCD码形式
****************************************************************************/
voidLcd_Time(uchar*clock_time)
{
uchari=0;
//显示"hour时min分sec秒"
i=*clock_time>>4;
Lcd_Character_16X8(1,2,80,letter_logo[i]);//显示sec的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,2,88,letter_logo[i]);//显示sec的低位
Lcd_Character_16X16(1,2,96,time_logo[2]);//显示秒
clock_time++;
i=*clock_time>>4;
Lcd_Character_16X8(1,2,48,letter_logo[i]);//显示min的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,2,56,letter_logo[i]);//显示min的低位
Lcd_Character_16X16(1,2,64,time_logo[1]);//显示分
clock_time++;
i=*clock_time>>4;
Lcd_Character_16X8(1,2,16,letter_logo[i]);//显示hour的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,2,24,letter_logo[i]);//显示hour的低位
Lcd_Character_16X16(1,2,32,time_logo[0]);//显示分
}
/****************************************************************************
*名称:
Lcd_Data(uchar*clock_time)
*功能:
显示日期
*入口参数:
无
*出口参数:
无
*说明:
时间数组BCD码形式
****************************************************************************/
voidLcd_Data(uchar*clock_time)
{
uchari=0;
clock_time+=3;
//显示"year年month月day日"
i=*clock_time>>4;
Lcd_Character_16X8(1,0,80,letter_logo[i]);//显示day的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,0,88,letter_logo[i]);//显示day的低位
Lcd_Character_16X16(1,0,96,data_logo[2]);//显示日
clock_time++;
i=*clock_time>>4;
Lcd_Character_16X8(1,0,48,letter_logo[i]);//显示month的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,0,56,letter_logo[i]);//显示month的低位
Lcd_Character_16X16(1,0,64,data_logo[1]);//显示月
clock_time++;
i=*clock_time>>4;
Lcd_Character_16X8(1,0,16,letter_logo[i]);//显示year的高位
i=*clock_time&0x0f;
Lcd_Character_16X8(1,0,24,letter_logo[i]);//显示year的低位
Lcd_Character_16X16(1,0,32,data_logo[0]);//显示年
}
/****************************************************************************
*名称:
Lcd_Data(uchar*clock_time)
*功能:
显示日期
*入口参数:
无
*出口参数:
无
*说明:
时间数组BCD码形式
****************************************************************************/
voidLcd_Week(ucharweek)
{
Lcd_Character_16X16(1,6,16,week_logo[7]);//星
Lcd_Character_16X16(1,6,32,week_logo[8]);//期
Lcd_Character_16X16(1,6,48,week_logo[week&0x0f]);
}
/******************************************************************************
*函数名称:
Lcd_Clock(uchar*clock_time)
*功能:
显示时钟
*入口参数:
时钟地址
*出口参数:
无
********************************************************************************/
voidLcd_Clock(uchar*clock_time)
{
Lcd_Data(clock_time);//显示日期
Lcd_Time(clock_time);//显示时间
}
/******************************************************************************
*名称:
voidLcd_Lunar_Calendar(uchar*lunch_calendar)
*功能:
显示农历
*入口参数:
农力指针
*出口参数:
无
*******************************************************************************/
voidLcd_Lunar_Calendar(uchar*lunar_canlendar)
{
uchari;
//农历
Lcd_Character_16X16(1,4,16,lunar_calendar_logo[0]);
Lcd_Character_16X16(1,4,32,lunar_calendar_logo[1]);
//year-mongth-day
i=*lunar_canlendar>>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sht11+LCD12864温湿度计带万年历功能中断按键设置日期 lcdh文件 sht11 LCD12864 温湿度 万年历 功能 中断 按键 设置 日期 lcdh 文件