⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 里面有c和单片机的程序
💻 C
字号:
# include<reg52.h>
# include<stdio.h>
# include<intrins.h>

# define uchar unsigned char
# define uint unsigned int

sbit dc=P2^1;                     //RS
sbit rw=P2^2;                     //RW
sbit cs=P2^4;                     //E
sfr  lcdbus=0x80;
char a[2]={3,5};
char b[6]={3,5,2,9,8,7};

uchar state;
uchar cmd;

void soft_nop(){}
/***********12MHZ 提供10MS 软件延时************/
void soft_10ms()
{ register int i;
for(i=0;i<711;i++);
}
/***********12MHZ 提供20MS 软件延时************/
void soft_20ms()
{ soft_10ms();
  soft_10ms();
}
/****************检查LCD忙*******************/
bit lcd_checkbusy()                    /*检查LCD 忙*/
{register lcdstate;
 dc=0;                                 /*dc=1为数据,=0 为命令.*/
 rw=1;                                 /*rw=1为读,=0为写.*/
 cs=1;                                 /*cs=1选通.*/
 soft_nop();
 lcdstate=lcdbus;
 cs=0;
return((bit)(lcdstate&0x80));
}
/***************写LCD命令*******************/
void lcd_wrcmd(uchar lcdcmd)
{while(lcd_checkbusy());
 dc=0;                                 /*dc=1为数据,=0 为命令.*/
 rw=0;                                 /*rw=1为读,=0为写.*/
 cs=1;                                 /*cs=1选通.*/
 lcdbus=lcdcmd;
 soft_nop();
 cs=0;
}
/**************在当前显示位置显示数据********************/
void lcd_wrdata(char lcddata)
{while(lcd_checkbusy());
 dc=1;                       /*dc=1为数据,=0 为命令.*/
 rw=0;                       /*rw=1为读,=0为写.*/
 cs=1;                       /*cs=1选通.*/
 lcdbus=lcddata;
 soft_nop();
 cs=0;

}
/*************在当前显示位置显示LCD 字符串***************/
void lcd_string(char *strpoint)
{ register i=0;
  while(strpoint[i]!=0)
 {lcd_wrdata(strpoint[i]);
  i++;
 }
}
/**********************初始化************************/
void lcd_init()
{lcd_wrcmd(0x38);              /*设置8 位格式,2行,5*7*/
 lcd_wrcmd(0x0c);              /*整体显示,关光标,不闪烁*/
 lcd_wrcmd(0x06);              /*设定输入方式,增量不移位*/
 lcd_wrcmd(0x01);              /*清除显示*/
}
/***********************主函数***********************/
void main()
{uchar i;
 lcd_init();
 soft_20ms();
 state=1;
 cmd=0X20;

switch(state)                      //送模式和单位
{
 case 1: lcd_string("FREQUENCY");
         lcd_wrcmd(0X8C);
         if(cmd==0X40)
         lcd_string("HZ");
         else if(cmd==0X20)
         lcd_string("KHZ");
         else
         lcd_string("MHZ");
         break;
   
 case 2: lcd_string("PERIOD");
         lcd_wrcmd(0X8C);
         if(cmd==0X40)
         lcd_string("S");
         else if(cmd==0X20)
         lcd_string("MS");
         else 
         lcd_string("US");
         break;

 case 3: lcd_string("MAIKUAN");
         lcd_wrcmd(0X8C);
         lcd_string("s");
         break;
 case 4: lcd_string("ZHANKONGBI");
}

lcd_wrcmd(0XC3);   //送整数
for(i=0;i<2;i++)
{a[i]=a[i]+0X30;
 lcd_wrdata(a[i]);
}

lcd_wrdata(46);    //送小数点

for(i=0;i<6;i++)   //送小数位
{b[i]=b[i]+0X30;
 lcd_wrdata(b[i]);
}
for(;;);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -