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!=‘’)
{
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
typedefunsignedc++harbool;//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;