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

📄 2002.h

📁 1602+1802液晶温度显示
💻 H
字号:
/*[注]:STC5408AD的晶振频率为11.0592MHz
====================================================================*/

/*            ACM1602A (16x2)接线图
=====================================================================
连接线图:   ACM-------51     ACM-------51     ACM--------51
            DB0-----P2.0     DB4-----P2.4     RS-------P3_4
            DB1-----P2.1     DB5-----P2.5     RW-------P3_5
            DB2-----P2.2     DB6-----P2.6     E--------P3_7
            DB3-----P2.3     DB7-----P2.7     BLA------P1_3
            
            VLCD接1K电阻到GND

====================================================================*/
/*阅读本程序之前,请参考LCD1602的工作原理(长沙太阳人科技公司提供)*/

#ifndef __2002_H__
#define __2002_H__

#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

sbit RS   = P3^4;       //数据/命令选择
sbit RW	  = P3^5;       //读/写选择
sbit Elcm = P3^7;       //使能信号
sbit BLA  = P1^3;       //液晶显示屏背光

#define DataPort P2      // 数据端口
#define Busy    0x80

void WaitForEnable( void );
void LcdWriteData( char dataW );
void LcdWriteCommand( uchar CMD,uchar AttribC ) ;
void LcdReset( void ) ;
void DispOneChar(uchar x,uchar y,uchar Wdata)  ;
void ePutstr(uchar x,uchar y, uchar *ptr) ;

/*=======================================================
液晶屏上显示字符串
=======================================================*/
void ePutstr(uchar x,uchar y, uchar *ptr) 
{
	uchar i,l=0;
	uchar temp;
    while (*ptr++ >0){l++;}; 	//统计字符的个数
	ptr=ptr-(l+1);            	//使指针重新指向首个字符
    for (i=0;i<l;i++){
		DispOneChar(x++,y,*ptr++);
 		if ( x == 20 ){
			for(temp=100;temp!=0;temp--) {
 		 }
			x = 0;
			y ^= 1; 
		 } 
	}
}

/*=======================================================
显示光标定位
=======================================================*/
void Disp_XY( char posx,char posy) {
	uchar temp;

    temp = posx & 0x1f;
    posy &= 0x1;   
    if ( posx>19 )   temp |= 0x40;
	if (posy==1)   temp |=0x40;
    temp |= 0x80;
    LcdWriteCommand(temp,0);
}

/*=======================================================
按指定位置显示数出一个字符
=======================================================*/
void DispOneChar(uchar x,uchar y,uchar Wdata)  {

    Disp_XY( x, y );                	// 定位显示地址
    LcdWriteData( Wdata );            	// 写字符
}

/*=======================================================
初始化程序, 必须按照产品资料介绍的初始化过程进行
=======================================================*/
void LcdReset( void )  {

    LcdWriteCommand( 0x38, 0);            // 显示模式设置(不检测忙信号)
        DelayMs(10);
    LcdWriteCommand( 0x38, 0);            // 共三次
        DelayMs(10);
    LcdWriteCommand( 0x38, 0);
        DelayMs(10);

    LcdWriteCommand( 0x38, 1);            // 显示模式设置(以后均检测忙信号)
    LcdWriteCommand( 0x08, 1);            // 显示关闭
    LcdWriteCommand( 0x01, 1);            // 显示清屏
    LcdWriteCommand( 0x06, 1);            // 显示光标移动设置
    LcdWriteCommand( 0x0e, 1);            // 显示开及光标设置
}

/*=======================================================
写控制字符子程序: E=1 RS=0 RW=0
=======================================================*/
void LcdWriteCommand( uchar CMD,uchar AttribC )  {

    if (AttribC) WaitForEnable();                // 检测忙信号?
    RS=0; RW=0; _nop_();
    DataPort=CMD; _nop_();						 // 送控制字子程序
    Elcm=1;_nop_();_nop_();Elcm=0;           	 // 操作允许脉冲信号
}

/*=======================================================
当前位置写字符子程序: E =1 RS=1 RW=0
=======================================================*/
void LcdWriteData( char dataW )  {

    WaitForEnable();        // 检测忙信号

    RS=1; RW=0; _nop_();

    DataPort=dataW; _nop_();

    Elcm=1; _nop_(); _nop_(); Elcm=0;        // 操作允许脉冲信号

}

/*=======================================================
正常读写操作之前必须检测LCD控制器状态:    CS=1 RS=0 RW=1
DB7:    0  LCD控制器空闲; 1  LCD控制器忙
========================================================*/
void WaitForEnable( void ) {

    DataPort = 0xff;

    RS=0; RW=1; _nop_();    Elcm=1; _nop_(); _nop_();

    while( DataPort & Busy );
    Elcm=0;
}

#endif

⌨️ 快捷键说明

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