?? 3.c
字號:
#include <reg52.h>
//1602顯示模塊 四位數據線P1高四位 用sprintf顯示浮點變量過于占用資源
#include <string.h>
#include "stdio.h"
/********************************************************************/
#define LCM_Data P1
sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1;
sbit LCM_E=P2^2;
sbit P1_7=P1^7;
char buffer[10];//浮點變量顯示
//5ms延時
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延時
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
//讀狀態
unsigned char ReadStatusLCM(void)
{
P1_7=1;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while(P1_7&0x01);//檢測忙信號
return(P1_7);
}
void writelcd(bit command,unsigned char ddata)
{
ReadStatusLCM(); //檢測忙
LCM_Data = (ddata&0xf0)|(P1&0x0f);
LCM_RW = 0;
if(command==0) LCM_RS = 0; else LCM_RS=1;
LCM_E = 1;
LCM_E = 0;
LCM_E = 0;
LCM_Data = ((ddata<<4)&0xf0)|(P1&0x0f);
if(command==0) LCM_RS = 0; else LCM_RS=1;
LCM_E = 1;
LCM_E = 0;
LCM_E = 0;
}
void LCMInit(void) //LCM初始化
{
//LCM_Data=0xff;
writelcd(0,0x01); //顯示清屏
writelcd(0,0x28); //三次顯示模式設置,不檢測忙信號
Delay5Ms();
writelcd(0,0x28);
Delay5Ms();
writelcd(0,0x28);
Delay5Ms();
writelcd(0,0x28); //顯示模式設置,開始要求每次檢測忙信號
writelcd(0,0x0c); // 顯示開及光標設置
writelcd(0,0x01); //顯示清屏
writelcd(0,0x06); // 顯示光標移動設置
}
//按指定位置顯示一個字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1; X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
X |= 0x80; //算出指令碼
writelcd(0,X);
//Delay5Ms(); //////////////////////////
writelcd(1,DData);
}
//按指定位置顯示一串字符 ***原來的遇到空格0x20就不顯示***
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData) //原來unsigned char code DData
{
unsigned char ListLength,j,buchong;
ListLength = strlen(DData);
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -