问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

给个VHDL液晶1602显示汉字的程序,谢谢

发布网友 发布时间:2022-05-02 09:16

我来回答

2个回答

热心网友 时间:2023-10-15 12:20

我收藏的一个1602显示汉字程序

//*************************************
//lcd头文件
//*************************************
#include<reg52.h>
#include<string.h>
#include <absacc.h>
#define lcd_data P0 //定义端口
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^1;
sbit RW=P2^2;
sbit E=P2^3;
sbit BF=P0^7;

//***************************************
//延时函数
//***************************************
void delay(uint i)
{
while(i--);
}
//***************************************
//写控制字
//***************************************
void write_struct(uchar temp)
{
E=0;
delay(100);
//while(BF==1);
RW=0;
RS=0;
lcd_data=temp;
delay(3);
E=1;
delay(3);
E=0;
}
//**************************************
//写数据
//**************************************
void write_data(uchar temp)
{
delay(100);
//while(BF==1);
E=0;
RS=1;
RW=0;
lcd_data=temp;
E=1;
delay(3);
E=0;
}

//***************************************
//获得显示地址
//x表示是第几行显示 (0-1)
//y表示某行的第几个字符(0-15)
//***************************************
uchar getchar_adress(uchar x,uchar y)
{ uchar address;
if(x==0) address=0x80+y; //第一行
else address=0xc0+y; //第二行
return address;
}

//***************************************
//lcd初始化
//***************************************
void lcd_init()
{
write_struct(0x38); //设置接口DB宽度(8位)和LCM显示行数(2行)
write_struct(0x08); //
write_struct(0x0c); //设置光标为移位模式
write_struct(0x01); //执行清屏操作
write_struct(0x06); //设置光标为加1模式

}
//***************************************
//向CGRAM写入数据
//***************************************
void write_cgram(unsigned char adress,unsigned char *p)
{
char i;
for(i=0;i<8;i++)
{ write_struct(adress+i);
write_data(p);
}

}

//***************************************
//显示CGRAM数据
//x表示是第几行显示 (0-1)
//y表示某行的第几个字符(0-15)
//***************************************
void display_cgram(unsigned char x,uchar y,uchar *CgramData)
{
uchar address,cgram_address,p;
address=getchar_adress(x,y); //获得CGRAM字符显示位置

cgram_address=0x40+(address&0x07)*8; //CGRAM初始地址

p=address&0x07;

write_cgram(cgram_address,CgramData);
write_struct(address); //设置DDRAM地址

write_data(p);

}
//显示字符
//***************************************
void display(char temp0,char *p)
{
write_struct(temp0);
delay(3);
write_data(*p);
}
//****************************************
//显示字符串
//****************************************
void display_str(uchar x,uchar y,char *p)
{
char i,temp0;
temp0=getchar_adress(x,y);
write_struct(temp0);
for(i=0;i<16;i++)
{
if(*p=='\0')
break;
write_data(*p);

p++;
}
}
//****************************************
//清屏
//****************************************
void lcd_clr()
{
write_struct(0x01);
}
//*****************************************************end

热心网友 时间:2023-10-15 12:21

我收藏的一个1602显示汉字程序
//*************************************
//lcd头文件
//*************************************
#include<reg52.h>
#include<string.h>
#include
<absacc.h>
#define
lcd_data
P0
//定义端口
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
RS=P2^1;
sbit
RW=P2^2;
sbit
E=P2^3;
sbit
BF=P0^7;
//***************************************
//延时函数
//***************************************
void
delay(uint
i)
{
while(i--);
}
//***************************************
//写控制字
//***************************************
void
write_struct(uchar
temp)
{
E=0;
delay(100);
//while(BF==1);
RW=0;
RS=0;
lcd_data=temp;
delay(3);
E=1;
delay(3);
E=0;
}
//**************************************
//写数据
//**************************************
void
write_data(uchar
temp)
{
delay(100);
//while(BF==1);
E=0;
RS=1;
RW=0;
lcd_data=temp;
E=1;
delay(3);
E=0;
}
//***************************************
//获得显示地址
//x表示是第几行显示
(0-1)
//y表示某行的第几个字符(0-15)
//***************************************
uchar
getchar_adress(uchar
x,uchar
y)
{
uchar
address;
if(x==0)
address=0x80+y;
//第一行
else
address=0xc0+y;
//第二行
return
address;
}
//***************************************
//lcd初始化
//***************************************
void
lcd_init()
{
write_struct(0x38);
//设置接口DB宽度(8位)和LCM显示行数(2行)
write_struct(0x08);
//
write_struct(0x0c);
//设置光标为移位模式
write_struct(0x01);
//执行清屏操作
write_struct(0x06);
//设置光标为加1模式
}
//***************************************
//向CGRAM写入数据
//***************************************
void
write_cgram(unsigned
char
adress,unsigned
char
*p)
{
char
i;
for(i=0;i<8;i++)
{
write_struct(adress+i);
write_data(p);
}
}
//***************************************
//显示CGRAM数据
//x表示是第几行显示
(0-1)
//y表示某行的第几个字符(0-15)
//***************************************
void
display_cgram(unsigned
char
x,uchar
y,uchar
*CgramData)
{
uchar
address,cgram_address,p;
address=getchar_adress(x,y);
//获得CGRAM字符显示位置
cgram_address=0x40+(address&0x07)*8;
//CGRAM初始地址
p=address&0x07;
write_cgram(cgram_address,CgramData);
write_struct(address);
//设置DDRAM地址
write_data(p);
}
//显示字符
//***************************************
void
display(char
temp0,char
*p)
{
write_struct(temp0);
delay(3);
write_data(*p);
}
//****************************************
//显示字符串
//****************************************
void
display_str(uchar
x,uchar
y,char
*p)
{
char
i,temp0;
temp0=getchar_adress(x,y);
write_struct(temp0);
for(i=0;i<16;i++)
{
if(*p=='\0')
break;
write_data(*p);
p++;
}
}
//****************************************
//清屏
//****************************************
void
lcd_clr()
{
write_struct(0x01);
}
//*****************************************************end
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我爱我校征文800字 建行聚财宝少一万时5小时内补上会怎样 咪哩乡文化教育 咪哩乡基础设施 咪哩村云南省玉溪市元江县咪哩乡咪哩村 咪哩乡历史文化 元江咪哩中心小学怎么样? 原神 原神胡桃进阶材料是什么? 原神 原神呢胡桃材料有哪些? 原神 原神胡桃的突破材料是什么? VHDL中为什么输出高阻态时出错:object with std_logic type can not contain character&#39;z&#39;??急急急 在eda中用vhdl,表达式c&lt;=a+b,且a、b、c的数据类型都是std_logic_vector,这样能不能直接进行加法运算 用VHDL实现0。到9999BCD码计数器 vhdlabs函数在哪个库 vhdl怎么调用程序包 在VHDL中常用的 预定义程序包有哪几个,怎样使用这些程序包 VHDL语言中std_logic表示什么含义? 电气防火防爆基本措施有哪些? 油库的防火措施有哪些? oracle12创建用户错误ORA-65096: 公用用户名或角色名无效 防火的基本原理有哪些 防火防爆的技术措施主要有什么 绿茶婊她自己知不知道自己是绿茶婊? 酒店职业规划书怎么写啊 “绿茶婊”是什么意思? 酒店服务员—礼貌礼节—培训计划书 怎么写 急急急~~~谢谢拉 梦到和男朋友之间出现心机婊怎么办 酒店布置方案计划书 酒店督导计划书怎么写?格式是怎样的? 梦到我杀了纠缠男朋友的绿茶婊? vhdl试题及答案 VHDL Error: Symbolic name &quot;WIDTH_Q&quot; is used but not defined什么意思? Error (10500): VHDL syntax error at count3.vhd(39) near text &quot;:&quot;; expecting an identifier ob chain handle 什么意思 请问怎样从Word文档中分析出文件头,文件内容及文件尾 微针祛斑结痂后皮肤红红的要多久可以恢复 VHDL语言16#24# 什么含义 空调大一匹和1.5匹差多少?大一匹什么意思啊?13 14平米用美的大一匹合适吗? 微针几天恢复 微针后多久能洗脸 农商行江小鱼好吗? 江阴农商银行江小鱼申请条件 中介说房贷银行 帮我选农商行,靠谱吗 好多鱼贷款靠谱吗 博雷《家书一封》读后感 有没有不掉毛的猫猫或者狗狗阿? 有没有不掉毛的狗或者是猫? 不掉毛的宠物狗有哪些?这几种狗狗任你选 有没有不掉毛的猫吗,我知道有不掉毛的狗是泰迪。 有没有什么高贵的小猫小狗,要善解人意,爱撒娇,不掉毛的?