找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2845|回復(fù): 2
收起左側(cè)

LCD1602模塊化代碼,超級(jí)方便,以后再不用打那么長的代碼LCD1602.c和LCD1602.h

[復(fù)制鏈接]
ID:936280 發(fā)表于 2021-7-12 09:40 | 顯示全部樓層 |閱讀模式
主要內(nèi)容顯示如下:
模塊化LCD1602.c和LCD1602.h如下文件

#include <REGX52.H>

sbit LCD_RW=P2^5;  
sbit LCD_RS=P2^6;//1為數(shù)據(jù),0為指令
sbit LCD_E=P2^7;

#define LCD_DataPort P0

void Delay(unsigned char xms)
{
        unsigned char i=2,j=199;
        while(xms--)
        {
                do
                {
                        while(--j);
                }while(--i);
        }
}

void LCD_WriteCommand(unsigned char Command)
{
        LCD_RS=0;
        LCD_RW=0;
        
        LCD_DataPort=Command;
        
        LCD_E=1;
        Delay(1);
        
        LCD_E=0;
        Delay(1);
}

void LCD_WriteData(unsigned char Data)
{
        
        LCD_RS=1;
        LCD_RW=0;
        
        LCD_DataPort=Data;
        
        LCD_E=1;
        Delay(1);
        
        LCD_E=0;
        Delay(1);
}

void LCD_Init(void)
{
        LCD_WriteCommand(0x38);
        LCD_WriteCommand(0x0C);
        LCD_WriteCommand(0x06);
        LCD_WriteCommand(0x01);
}

void LCD_SetAC(unsigned char Line,unsigned char Column)
{
        LCD_WriteCommand(0x80);
        if(Line==1)
        {
                LCD_WriteCommand(0x80|(Column-1));
        }
        else if(Line==2)
        {
                LCD_WriteCommand(0x80|(Column-1)+0x40);
        }
}

void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char)
{
        LCD_SetAC(Line,Column);
        LCD_WriteData(Char);
}

void LCD_ShowString(unsigned char Line,unsigned char Column,unsigned char *String)
{
        LCD_SetAC(Line,Column);
        while(1)
        {
                if(*String!='\0'){LCD_WriteData(*String);}
                else{break;}
                String++;
        }
}
int Power(unsigned char X,unsigned char Y)
{
        unsigned char i;
        int result=1;
        for(i=0;i<Y;i++)
        {
                result*=X;
        }
        return result;
}        
        
void LCD_ShowNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{
        unsigned char i;
        LCD_SetAC(Line,Column);
        for(i=Length;i>0;i--)
        {
                LCD_WriteData('0'+Number/Power(10,i-1)%10);
        }
}
void LCD_ShowsignedNum(unsigned char Line,unsigned char Column,int Num1,unsigned char Length)
{
        int Number1;
        unsigned char i;
        LCD_SetAC(Line,Column);
        if(Num1>0)
        {
                LCD_WriteData('+');
                Number1=Num1;
        }
        else if(Num1<0)
        {
                LCD_WriteData('-');
                Number1=-Num1;
        }
        for(i=Length;i>0;i--)
        {
                LCD_WriteData('0'+Number1/Power(10,i-1)%10);
        }
}


void main()
{
                LCD_Init();
                LCD_ShowChar(1,1,'A');
                LCD_ShowString(1,3,"Hello");
                LCD_ShowNum(1,9,66,2);
                LCD_ShowsignedNum(1,12,-88,2);
                while(1)
                {
                        
                }
}

LCD.rar

25.4 KB, 下載次數(shù): 74, 下載積分: 黑幣 -5

LCD1602模塊化

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1107186 發(fā)表于 2023-12-30 14:50 | 顯示全部樓層
為什么沒有檢測BF是否處于忙標(biāo)識(shí)呢
回復(fù)

使用道具 舉報(bào)

ID:1113035 發(fā)表于 2024-3-14 23:28 來自手機(jī) | 顯示全部樓層
怪了,俺的lcd函數(shù)為什么不能用
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表