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

单片机液晶显示

发布网友 发布时间:2022-04-30 19:39

我来回答

5个回答

热心网友 时间:2022-06-30 05:49

我的液晶是带字模的,你找个ST7290的说明书看下吧,不要事事都问别人。
将下列代码存为lcdfun.h,然后调用其中的函数就行了(此处用串行控制,如果要8bit或4bit控制只需要该write-lcd函数就行了,具体函数看:http://hi.baidu.com/mem2005/blog/item/6c70d187c3bdc822c75cc31e.html),不能说的更细了,你自己要努力点啊。

/***************************************************************
封装程序中用到的控制AD9850的函数(串行控制)
***************************************************************/
#include<reg51.h>
#include<string.h>
#define uint unsigned int
#define uchar unsigned char

//串行位定义
sbit CS = P1^0; //串
sbit STD = P1^1; //串
sbit SCLK= P1^2; //串
//并行位定义
sbit RS = P1^0; //并
sbit RW = P1^1; //并
sbit E = P1^2; //并
sbit BUSY=P1^7; //并
//控制位定义
sbit PSB = P1^3; //串并选择信号
sbit RST = P1^4; //复位信号
//基本指令集预定义
#define DATA 1 //数据位
#define COMMAND 0 //命令位
#define CLEAR_SCREEN 0x01 //清屏
#define ADDRESS_RESET 0x02 //地址归零
#define BASIC_FUNCTION 0x30 //基本指令集
#define EXTEND_FUNCTION 0x34 //扩充指令集

const uchar code CLR[] = {" "};
//函数声明
extern void Serial_Init_LCD(void);
extern void Serial_Write_LCD( bit b_Data_Command , unsigned char uc_Content);
extern void Serial_DDRAM_Address_Set(uchar ucDDramAdd);
extern void Serial_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p);
/*************************************************************
延时一微秒子程序
*************************************************************/
void SerialDelayUS(uchar nus)
{
while(nus--);
}
/*************************************************************
写LCD(串行)
*************************************************************/
void Serial_Write_LCD( bit b_Data_Command , unsigned char uc_Content)
{
uchar uc_i,uc_j;
CS = 1;
SCLK= 0;
STD = 1;
for( uc_i=5 ; uc_i ; --uc_i)
{
SCLK = 1;
SCLK = 0;
}
STD = 0; //RW = 0;
SCLK = 1;
SCLK = 0;
if( b_Data_Command )
STD = 1; //RS = 1,写数据
else
STD = 0; //RS = 0,写指令
SCLK = 1;
SCLK = 0;
STD = 0;
SCLK = 1;
SCLK = 0;
for( uc_i=0 ; uc_i<2 ; uc_i++ )
{
for( uc_j=0 ; uc_j<4 ; uc_j++ )
{
uc_Content<<=1;
STD = CY; //这句很好,不过减弱了程序的移植性
SCLK= 1;
SCLK= 0;
}
STD = 0;
for( uc_j=0 ; uc_j<4 ; uc_j++ )
{
SCLK= 1;
SCLK= 0;
}
}
}
/*************************************************************
设置要写入的DDRAM的地址
*************************************************************/
void Serial_DDRAM_Address_Set(uchar ucDDramAdd)
{
Serial_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令集
Serial_Write_LCD(COMMAND,ucDDramAdd); //设定DDRAM地址到地址计数器AC
}
/*************************************************************
串行初始化LCD
*************************************************************/
void Serial_Init_LCD(void) //串行初始化LCD
{
RST = 0; //复位后拉高,停止复位
SerialDelayUS(40);//30
RST = 1; //复位后拉高,停止复位
SerialDelayUS(40);
PSB = 0; //选择串行传输模式
SerialDelayUS(8);//5
Serial_Write_LCD(0,BASIC_FUNCTION);//基本指令动作
SerialDelayUS(8);
Serial_Write_LCD(0,CLEAR_SCREEN); //清屏,地址指针指向00H
SerialDelayUS(8);
Serial_Write_LCD(0,0x06); //光标的移动方向
SerialDelayUS(8);
Serial_Write_LCD(0,0x0c); //开显示,关游标
SerialDelayUS(8);
}
/*************************************************************
在LCD上显示字符串
*************************************************************/
void Serial_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)
{
uchar i;
i = strlen(p);
Serial_Write_LCD(COMMAND,BASIC_FUNCTION);//基本指令动作
Serial_DDRAM_Address_Set(ucAdd);
for( ; i ; i -- )
Serial_Write_LCD(DATA, *(p++));
}
/*************************************************************
清整个LCD12864的屏幕
*************************************************************/
void clearscreen()
{
uchar hang,lie;
for( hang=0x80;hang<=0x90;hang=hang+0x10)
{
for(lie=0x00;lie<=0x0f;lie++)
{
Serial_DisplayStrings_WithAddress(hang+lie,CLR);
}
}
}
/************************************************************/

热心网友 时间:2022-06-30 05:49

12864的LCD多的去了,不知道你是什么样的控制器呢?

现在用得最多的多数是KS0107和ST7290的控制器了,你可以到这里去下载:
http://www.gptlcm.cn/CN/index-cn-02-0-02-1.htm
找到你相应的驱动器型号下载相关的资料,里面有驱动程序的~~~

热心网友 时间:2022-06-30 05:49

还不知道要显示什么内容...
分太少了

热心网友 时间:2022-06-30 05:50

也不说明电路,给你个程序,你能用吗?

热心网友 时间:2022-06-30 05:51

我是有个,只是这分少了点
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
乾隆小时候的书童是谁 下面对句式判断有误的一项是( ) A.当立者乃公子扶苏(判断句) ...为折线,把 折起,使平面 平面 ,连接 (1)求证: ;(2)求二面角 图中由线段OA、AB组成的折线表示的是小明步行所走的路程和时间之间的关... 动态图像粒度粒形分析仪 oppor9splus视频通话怎么开美颜 微信视频聊天怎么开美颜oppor9 谁家出售二手胶囊填充机NJP1200 NJP-1200A硬胶囊填充机仪器特点简介 NJP-1200A硬胶囊填充机仪器参数 如何设液晶 和单片机 系统频率 怎么破解限制注册用户使用一个小时的软件 请问1602液晶与单片机的连接方式是串行连接还是并行连接? 单片机1602液晶屏3个脚的作用是什么 单片机控制液晶翻页设计 单片机 LCD 怎样破解需要收费注册的软件 单片机液晶控制,关于直接访问和间接访问 如何破解需要注册的软件 单片机是怎样在液晶上显示字符原理 怎样用pc破解安卓的注册软件啊 如何用单片机控制液晶显示器呀,怎么接线…… 做LCD液晶屏幕跟单片机有没有关系? 注册软件如何破解时间限制软件? 单片机的液晶显示有什么作用? 内存卡内约3GB约大视频文件怎么保存到电脑? 坐月子可以吃莲藕炖排骨吗能不能吃 手机内存用完以后外储存卡怎么用? win10虚拟键盘在控制面板的什么地方 移动校园卡副卡欠费未交,被销号之后会有信誉影响吗? LCD 12864怎样和单片机连接? 关于单片机液晶屏LCD12864的程序 公寓属于什么性质的建筑,是公建还是住宅 公寓属于什么建筑? 学生公寓楼是属于住宅建筑还是公共建筑? 老年公寓属于住宅还是公建 宿舍在建筑分类中属于住宅建筑还是公共建筑? 什么是公建式公寓 集体宿舍属于民用建筑还是公共建筑? 公共建筑和居住建筑的区别 agon电脑亮度怎么调 微信里视频号直播怎么授权给别的 在身上抓到白色的小虫子,很小几乎肉眼看不清它的肢体,会咬人,咬在身上奇痒无比。 为什么我的AOC显示频不能调亮度了呢? html5怎么实现div+css二级下拉菜单 html下拉导航栏代码 自媒体怎么借别人的号 html 如何做一个二级联动的下拉表单(select) ultra dma crc 错误计数 学校视频号可以上传他人视频吗