基于51单片机对1602液晶板的并行操作

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
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;

美团业务中智能问答技术的相关落地与实践介绍
RIGOL普源数字示波器电流探头介绍
“互联网+”振兴实体经济,智能制造助力弯道超车迈向国际中高端
季丰电子IC运营工程技术快问快答01
将交流电转换为直流电的“分子整流器”
基于51单片机对1602液晶板的并行操作
发动机总成HIL测试的重要性及关键考虑因素有哪些
华天科技上半年实现营业收入38.39亿元 受全球集成电路市场需求影响净利润同比下降59.33%
2022年开工第一天,派恩杰半导体在全球首推PD 快充的碳化硅应用方案
滚动模式和XY模式如何使用呢?各个模式有什么样的优缺点?
气体检测仪的使用寿命大概是多久?-欧森杰
区块链将会从五个方面影响房地产市场
怎么通过HyperLynx DRC增强大规模PCB设计验证能力呢?
PCBA加工中焊点失效的原因是什么
PS5的次世代PSVR设备可能采用无线技术
创新驱动发展 | 爱普特喜获“2022芯火之星年度大奖”
五分钟看完威驰FS的VSC车身稳定系统
五分钟看完本田主动安全技术Honda SENSING
超声波清洗机时要怎么选择相匹配频率呢
是否可以利用全局语义上下文改进QuickType键盘的单词预测?