chc_100funtion.h
来自「这是一段开始学单片机时写的LCD程序」· C头文件 代码 · 共 360 行
H
360 行
#ifndef _CHC_100funtion_h_
#define _CHC_100funtion_h_
#ifndef _LED_DISPLAY_
#define _LED_DISPLAY_
uchar idata LED_DISPLAY[5]={0,0,0,0,0xfe}; //显示数据
uchar code DISPLAY_CODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管段码
uchar code DISPLAY_BIT[5]={0xf7,0xef,0xdf,0xbf,0x7f}; //显示位控制数据
char code PLAY_DESIGNER[]="2007.07.23"; //显示日期数据
char code PLAY_NAME[]="15:28"; //显示时间数据
char code PLAY_TEL[]="Good afternoon"; //显示问候数据
char code PLAY_CODE_TEL[]="teacher!";
char code PLAY_EMAIN[]="DZ04-1"; //显示班级
char code PLAY_EMAIN1[]="Li Xijiang"; //显示姓名
#endif
//******************************************************************
//函数功能:检查LCD状态
//输入变量:无
//输出变量:LCD显示的当前状态
//调用模块:无
//******************************************************************
uchar LCD_GET_FLAG(void)
{
Lcd_RS=0; //设置RS为0,RW为1,即读命令寄存器方式
Lcd_RW=1;
return(SEND_IN); //返回LCD状态
}
//******************************************************************
//函数功能:等待LCD空闲
//输入变量:无
//输出变量:无
//调用模块:LCD_GET_FLAG
//******************************************************************
void LCD_WEIT(void)
{
uchar i;
i=100; //定义等待时间,可以防止由于LCD损坏而使程序死循环
do
{
if((LCD_GET_FLAG()&0x80)==0)
{
break;
}
}while(--i!=0);
}
//******************************************************************
//函数功能:向LCD发送命令
//输入变量:COMMAND
//输出变量:无
//调用模块:LCD_WEIT Lcd_SEND_COMMAND
//******************************************************************
void LCD_SEND_COMMAND(uchar COMMAND)
{
LCD_WEIT(); //等待空闲
Lcd_SEND_COMMAND(COMMAND); //发送命令
}
//******************************************************************
//函数功能:向LCD发送数据
//输入变量:DATA
//输出变量:无
//调用模块:LCD_WEIT Lcd_SEND_DATA
//******************************************************************
void LCD_SEND_DATA(uchar DATA)
{
LCD_WEIT(); //等待空闲
Lcd_SEND_DATA(DATA); //发送数据
}
//******************************************************************
//函数功能:清除LCD指定行
//输入变量:y
//输出变量:无
//调用模块:LCD_SEND_COMMAND LCD_SEND_DATA
//******************************************************************
void LCD_CLR(uchar y)
{
uchar i;
i=0;
if(y==1)
{
LCD_SEND_COMMAND(LCD_LINE1); //发送命令让LCD指向第一行
i=16;
}
else if(y==2)
{
LCD_SEND_COMMAND(LCD_LINE2); //发送命令让LCD指向第二行
i=16;
}
if(i!=0)
{
do
{
LCD_SEND_DATA(' '); //让LCD的相应位置显示空格
}while(--i!=0);
}
}
//******************************************************************
//函数功能:在指定位置显示字符串
//输入变量:x y *DATA
//输出变量:无
//调用模块:LCD_SEND_COMMAND LCD_SEND_DATA
//******************************************************************
void LCD_DISPLAY_STR(uchar x,uchar y,char *DATA)
{
if(y==1)
{
if(x<(16+1)) //判断显示位置是否超出第一行
{
LCD_SEND_COMMAND(LCD_LINE1-1+x); //发送命令
for(;x<(16+1)&&*DATA!='\0';x++)
{
LCD_SEND_DATA(*DATA++); //发送数据
}
if(*DATA!='\0') //判断是否发送完毕
{
x=1;
y=2; //未发送完毕转第二行显示
}
}
}
if(y==2)
{
LCD_SEND_COMMAND(LCD_LINE2-1+x);
for(;x<(16+1)&&*DATA!='\0';x++)
{
LCD_SEND_DATA(*DATA++);
}
}
}
//*******************************************************************
//函数功能:LCD初始化
//输入变量:无
//输出变量:无
//调用模块:LCD_SEND_COMMAND LCD_CLR
//*******************************************************************
void LCD_INIT(void)
{
LCD_SEND_COMMAND(LCD_MODE);
LCD_SEND_COMMAND(LCD_NO_FLASH);
LCD_SEND_COMMAND(LCD_NO_SHIFT);
LCD_SEND_COMMAND(LCD_SH);
LCD_CLR(1); //清除第一行
LCD_CLR(2); //清除第二行
}
//******************************************************************
//函数功能:向移位寄存器发送一个字节的数据
//输入变量:sdata
//输出变量:无
//调用模块:无
//******************************************************************
//void LED_SEND_DATA(uchar sdata)
// {
// uchar i;
// i=8;
// do
// {
// Seri_CLK_IN=1;
// sdata=sdata<<1;
// Seri_DATA_IN=CY;
// Seri_CLK_IN=0;
// }while(--i!=0);
// Seri_CLK_IN=1;
// }
//******************************************************************
//函数功能:键盘检测,返回键号,没键按下时返回0
//输入变量:无
//输出变量:键号
//调用模块:LED_SEND_DATA
//******************************************************************
//uchar KEY_NUM_CHK(void)
// {
// uchar i,j;
// i=8;
// j=0x01;
// do
// {
// LED_SEND_DATA(~j);
// Key_CHK=1;
// if(Key_CHK==0)
// {
// return(8-i+1);
// }
// j=j<<1;
// }while(--i!=0);
// return(0);
// }
//******************************************************************
//函数功能:一号按键功能函数,使LED个位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN1(void)
// {
// LED_DISPLAY[0]+=1;
// if(LED_DISPLAY[0]==10)
// {
// LED_DISPLAY[0]=0;
// LED_DISPLAY[1]+=1;
// if(LED_DISPLAY[1]==10)
// {
// LED_DISPLAY[1]=0;
// LED_DISPLAY[2]+=1;
// if(LED_DISPLAY[2]==10)
// {
// LED_DISPLAY[2]=0;
// LED_DISPLAY[3]+=1;
// if(LED_DISPLAY[3]==10)
// {
// LED_DISPLAY[3]=0;
// }
// }
// }
// }
// }
//******************************************************************
//函数功能:二号按键功能函数,使LED十位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN2(void)
// {
// LED_DISPLAY[1]+=1;
// if(LED_DISPLAY[1]==10)
// {
// LED_DISPLAY[1]=0;
// LED_DISPLAY[2]+=1;
// if(LED_DISPLAY[2]==10)
// {
// LED_DISPLAY[2]=0;
// LED_DISPLAY[3]+=1;
// if(LED_DISPLAY[3]==10)
// {
// LED_DISPLAY[3]=0;
// }
// }
// }
// }
//******************************************************************
//函数功能:三号按键功能函数,使LED百位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN3(void)
// {
// LED_DISPLAY[2]+=1;
// if(LED_DISPLAY[2]==10)
// {
// LED_DISPLAY[2]=0;
// LED_DISPLAY[3]+=1;
// if(LED_DISPLAY[3]==10)
// {
// LED_DISPLAY[3]=0;
// }
// }
// }
//******************************************************************
//函数功能:四号按键功能函数,使LED千位显示加一
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN4(void)
// {
// LED_DISPLAY[3]+=1;
// if(LED_DISPLAY[3]==10)
// {
// LED_DISPLAY[3]=0;
// }
// }
//******************************************************************
//函数功能:五号按键功能函数,使LCD显示电话号码
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN5(void)
// {
// LCD_CLR(1);
// LCD_CLR(2);
// LCD_DISPLAY_STR(1,1,PLAY_TEL);
// LCD_DISPLAY_STR(1,2,PLAY_CODE_TEL);
// }
//******************************************************************
//函数功能:六号按键功能函数,使LCD显示EMAIN地址
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN6(void)
// {
// LCD_CLR(1);
// LCD_CLR(2);
// LCD_DISPLAY_STR(1,1,PLAY_EMAIN);
// LCD_DISPLAY_STR(1,2,PLAY_EMAIN1);
// }
//******************************************************************
//函数功能:七号键功能函数,使LCD显示设计者的姓名
//输入变量:无
//输出变量:无
//调用模块:LCD_CLR LCD_DISPLAY_STR
//******************************************************************
//void KEY_FUN7(void)
// {
// LCD_CLR(1);
// LCD_CLR(2);
// LCD_DISPLAY_STR(1,1,PLAY_DESIGNER);
// LCD_DISPLAY_STR(1,2,PLAY_NAME);
// }
//******************************************************************
//函数功能:八号键功能函数,
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void KEY_FUN8(void)
// {
// ;
// }
//******************************************************************
//函数功能:延时10MS
//输入变量:无
//输出变量:无
//调用模块:无
//******************************************************************
//void DELAY(uchar time)
// {
// uchar i;
// for(i=50;i>0;i--)
// {
// while(--time!=0);
// }
// }
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?