TX-1C板操作并行模式的1602液晶液晶第1,2脚是gnd和vcc第3脚是对比度调节第4脚是数据/指令选择端RS第5脚是读写选择端R/W,我们这次只写不读,故直接接地第6脚是读写使能EN第7到14脚是数据口。
操作并行模式的1602液晶
液晶第1,2脚是gnd和vcc
第3脚是对比度调节
第4脚是数据/指令选择端RS
第5脚是读写选择端R/W,我们这次只写不读,故直接接地
第6脚是读写使能EN
第7到14脚是数据口,我们接STC89C52RC的P0口
第15,16脚是背光源
最终液晶显示
Tom is playing the TNT game!
C代码
#include
#include“MY51.H”
voidwrite_data(uchardataValue);//写数据
voidwrite_cmd(ucharcmdValue);//写指令
ucharcodetableLCD1[]={“Tomisplaying”};
ucharcodetableLCD2[]={“theTNTgame!”};
voidlcdInit()//初始化函数
{
dula=0;//
wela=0;//防止数码管误显,浪费电流
lcdEN=low;//给高脉冲之前的状态
lcdRS=high;//初始给高电平,其实上电默认也是高电平
write_cmd(0x38);//液晶显示模式初始化
write_cmd(0x0c);//打开液晶,不显示光标,光标不闪烁
write_cmd(0x06);//地址指针加加,且光标加加
write_cmd(0x01);//液晶数据指针和显示清零
}
voidwrite_cmd(ucharcmdValue)//写入指令
{
lcdRS=low;//刚上电时是高电平,低电平时是指令模式
P0=cmdValue;
delayms(1);
lcdEN=high;//一个高脉冲把数据读走
delayms(1);
lcdEN=low;
}
voidwrite_data(uchardataValue)//写入数据
{
lcdRS=high;//高电平是数据模式
P0=dataValue;
delayms(1);
lcdEN=high;//给一个高脉冲
delayms(1);
lcdEN=low;
}
voidlcdShow(uchar*pValue)//液晶显示函数
{
while(*pValue!=‘\0’)
{
write_data(*pValue);
pValue++;
}
}
voidmain()
{
lcdInit();//初始化
lcdShow(tableLCD1);//显示第一行
write_cmd(0x80+0x40);//重新设置数据显示指针
lcdShow(tableLCD2);//显示第二行
while(1);
}
C代码
#ifndef_MY51_H_
#define_MY51_H_
#include
#include
typedefintint16;
typedefinTINT16;
typedefunsignedintuint16;
typedefunsignedintUINT16;
typedefunsignedshortuint;
typedefunsignedshortUINT;
typedefunsignedshortword;
typedefunsignedshortWORD;
typedefunsignedlonguint32;
typedefunsignedlongUINT32;
typedefunsignedlongDWORD;
typedefunsignedlongdword;
typedefsignedlongint32;
typedefsignedlongINT32;
typedeffloatfloat32;
typedefdoubledouble64;
typedefsignedcharint8;
typedefsignedcharINT8;
typedefunsignedcharbyte;
typedefunsignedcharBYTE;//WINDOWS的windef.h里面是这么定义的
typedefunsignedcharuchar;
typedefunsignedcharUCHAR;
typedefunsignedcharUINT8;
typedefunsignedcharuint8;
typedefunsignedcharBOOL;//windows中定义BOOL为int
typedefunsignedcharbool;//bool是c++的内置类型
#defineTRUE1
#definetrue1
#defineFALSE0
#definefalse0
#defineopen1//open和close用于标志打开和关闭状态
#defineOPEN1
#defineclose0
#defineCLOSE0
#definelock0
#definestart1
#defineSTART1
#definestop0
#defineSTOP0
#definekeyDown0
#definekeyUp1
#definegnd0//接地
#defineGND0//接地
#definehigh1//高电平
#definelow0//低电平
#defineyes1
#defineYES1
#defineno0
#defineNO0
sbitdula=P2^6;//段选锁存器控制控制笔段
sbitwela=P2^7;//位选锁存器控制控制位置
#defineledP1//灯总线控制
sbitled0=P1^0;//8个led灯,阴极送低电平点亮
sbitled1=P1^1;
sbitled2=P1^2;
sbitled3=P1^3;
sbitled4=P1^4;
sbitled5=P1^5;
sbitled6=P1^6;
sbitled7=P1^7;
sbitkeyS2=P3^4;//4个独立按键
sbitkeyS3=P3^5;
sbitkeyS4=P3^6;
sbitkeyS5=P3^7;
sbitlcdEN=P3^4;//液晶通讯使能端en,高脉冲有效
sbitlcdRS=P3^5;//液晶第4脚,RS,低电平是指令模式,高电平是数据模式
//sbitlcdR/W//液晶第5脚,低电平是写入模式,因为我们只写不读,所以接地
sbitcsda=P3^2;//DAC0832模数转换cs口
sbitadwr=P3^6;//ADC0804这个同DAC0832
sbitdawr=P3^6;
sbitadrd=P3^7;//ADC0804
sbitbeep=P2^3;//蜂鸣器
voiddisplaySMG(uint8one,uint8two,uint8three,uint8four,uint8five,uint8six,uint8dot);
voiddelayms(uint16ms);
voidT0_Work();
voiddelayms(uint16ms)//软延时函数
{
uint16i,j;
for(i=ms;i》0;i--)
{
for(j=113;