51单片机——LCD1602功能函数代码
while(x){i = 2;j = 239;dox--;LCD_RS=0;LCD_RW=0;LCD_E=1;LCD_E=0;LCD_RS=1;LCD_RW=0;LCD_E=1;LCD_E=0;}else{for(i=0;String[i]!='\0';i++){for(i=0;i<y;i++){
#include <REGX52.H>
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_E=P2^7;
#define LCD_DatePort P0
void LCD_Delay(unsigned int x) //@12.000MHz
{
unsigned char data i, j;
while(x){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
x--;
}
}
void LCD_WriteCommand(unsigned char Command){
LCD_RS=0;
LCD_RW=0;
LCD_DatePort=Command;
LCD_E=1;
LCD_Delay(1);
LCD_E=0;
LCD_Delay(1);
}
void LCD_WriteDate(unsigned char Date){
LCD_RS=1;
LCD_RW=0;
LCD_DatePort=Date;
LCD_E=1;
LCD_Delay(1);
LCD_E=0;
LCD_Delay(1);
}
void LCD_Init(void){
LCD_WriteCommand(0x38);
LCD_WriteCommand(0x0C);
LCD_WriteCommand(0x06);
LCD_WriteCommand(0x01);
}
void LCD_SetCursor(unsigned char Line,unsigned char Column){
if(Line==1){
LCD_WriteCommand(0x80|(Column-1));
}else{
LCD_WriteCommand(0x80|(Column-1)+0x40);
}
}
void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char){
LCD_SetCursor(Line,Column);
LCD_WriteDate(Char);
}
void LCD_ShowString(unsigned char Line,unsigned char Column,unsigned char *String){
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=0;String[i]!='\0';i++){
LCD_WriteDate(String[i]);
}
}
int LCD_Pow(int x,int 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,unsigned int Number,unsigned char Length){
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--){
LCD_WriteDate(0x30+Number/LCD_Pow(10,i-1)%10);
}
}
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length){
unsigned int number;
unsigned char i;
LCD_SetCursor(Line,Column);
if(Number>=0){
LCD_WriteDate('+');
number=Number;
}else{
LCD_WriteDate('-');
number=-Number;
}
for(i=Length;i>0;i--){
LCD_WriteDate(0x30+Number/LCD_Pow(10,i-1)%10);
}
}
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length){
unsigned char i;
unsigned char singlenumber;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--){
singlenumber=Number/LCD_Pow(16,i-1)%16;
if(singlenumber<10){
LCD_WriteDate('0'+singlenumber);
}else{
LCD_WriteDate('A'+singlenumber-10);
}
}
}
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length){
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--){
LCD_WriteDate(0x30+Number/LCD_Pow(2,i-1)%2);
}
}
更多推荐



所有评论(0)