历史上的今天
今天是:2025年02月19日(星期三)
2020年02月19日 | STM8 LCD液晶
2020-02-19 来源:eefocus
思修电子工作室"祥云小王子"开发版
定义引脚
/***********************端口/引脚定义区域************************/
#define LCDRS PF_ODR_ODR0 //LCD1602数据/命令选择端口
#define LCDRW PF_ODR_ODR3 //LCD1602读写控制端口
#define LCDEN PF_ODR_ODR4 //LCD1602使能信号端口
#define LCDDATA PB_ODR //LCD1602数据端口D0至D7
初始化
/****************************************************************/
//LCD1602初始化函数LCD1602_init(),无形参和返回值
/****************************************************************/
void LCD1602_init(void)
{
LCD1602_Write(0x38,0);//配置16*2显示,5*7点阵,8位数据接口
LCD1602_Write(0x0C,0);//设置开显示,不显示光标
LCD1602_Write(0x06,0);//写字符后地址自动加1
LCD1602_Write(0x01,0);//显示清0,数据指针清0
}
写入液晶模组命令或数据函数
void LCD1602_Write(u8 cmdordata,u8 writetype)
{
if(writetype==0)//判断写入类型
LCDRS=0;//写入命令信息
else
LCDRS=1;//写入数据信息
LCDDATA=cmdordata;//向数据线端口写入信息
delay(5);//延时等待稳定
LCDEN=1;//模块使能
delay(5);//延时等待写入
LCDEN=0;//模块不使能
}
显示字符函数
void LCD1602_DIS(void)
{
u8 i;//定义控制循环变量i
LCD1602_Write(0x80,0);//选择第一行
for(i=0;i<16;i++)
{
LCD1602_Write(table1[i],1);//写入table1[]内容
delay(5);
}
LCD1602_Write(0xC0,0);//选择第二行
for(i=0;i<16;i++)
{
LCD1602_Write(table2[i],1);//写入table2[]内容
delay(5);
}
}
移屏
void LCD1602_MOV(void)
{
u8 i;
LCD1602_Write(0x01,0);//清屏
LCD1602_Write(0x90,0);//选择第一行的末尾(不可见)
for(i=0;i<16;i++)
{
LCD1602_Write(table1[i],1);//写入table1[]内容
delay(2);
}
LCD1602_Write(0xD0,0);//选择第二行的末尾(不可见)
for(i=0;i<16;i++)
{
LCD1602_Write(table2[i],1);//写入table2[]内容
delay(2);
}
for(i=0;i<16;i++)
{
LCD1602_Write(0x18,0);//循环16次逐一左移屏幕
delay(100);
}
}
设定地址写入字符
/****************************************************************/
//设定地址写入字符函数LCD1602_DIS_CHAR(),有形参x、y、z无返回值
//x表示1602液晶的行,y表示列地址,z表示欲写入的字符
/****************************************************************/
void LCD1602_DIS_CHAR(u8 x,u8 y,u8 z)
{
u8 address;
if(x==1)//若欲显示在第一行
address=0x80+y;//第一行的行首地址+列地址
else
address=0xC0+y;//第二行的行首地址+列地址
LCD1602_Write(address,0);//设定显示地址
LCD1602_Write(z,1);//写入字符数据
}
/****************************************************************/
//组合图形显示函数LCD1602_DIS_FACE(),无形参和返回值
/****************************************************************/
void LCD1602_DIS_FACE(void)
{
LCD1602_DIS_CHAR(1,1,'*');
LCD1602_DIS_CHAR(2,2,'.');
LCD1602_DIS_CHAR(1,3,'*');
LCD1602_DIS_CHAR(1,4,'|');
LCD1602_DIS_CHAR(2,4,'|');
LCD1602_DIS_CHAR(1,5,'*');
LCD1602_DIS_CHAR(2,6,'_');
LCD1602_DIS_CHAR(1,7,'*');
LCD1602_DIS_CHAR(1,8,'|');
LCD1602_DIS_CHAR(2,8,'|');
LCD1602_DIS_CHAR(1,9,'*');
LCD1602_DIS_CHAR(2,10,'x');
LCD1602_DIS_CHAR(1,11,'*');
LCD1602_DIS_CHAR(1,12,'|');
LCD1602_DIS_CHAR(2,12,'|');
LCD1602_DIS_CHAR(1,13,'*');
LCD1602_DIS_CHAR(2,14,'v');
LCD1602_DIS_CHAR(1,15,'*');
}
下一篇:STM8 4线驱动1602乱码
史海拾趣
|
熟练掌握C / C++ /VS 的编程,并参与过大型软件的开发 具备Windows APP 和 Driver的产品开发经验和一定的硬件、固件知识 请联系 QQ : 314404285 email: lxd198409@163.com… 查看全部问答> |
|
一个基于无线局域网的远程控制系统项目,欢迎个人、团队参与,详细情况请参见以下说明 项目说明: 该项目由个人操作终端和远程接收控制终端构成,可利用ARM7或ARM9在linux下完成。 要求: 该项目要求开发者(或团队)熟悉ARM CPU, 熟悉无 ...… 查看全部问答> |
|
###################################################################手册介绍:● ADC 转换时间:− STM32F103xx 增强型产品:ADC 时钟为56MHz 时为1μs(ADC 时钟为72MHz 为1.17μs)−& ...… 查看全部问答> |
|
向老师请教: 在2407中实现卷积的计算,用到了乘法器,指令是MAC。 其中相乘的两个数据一个是小数0.4830,一个是整数34 在汇编语言编写时,我将小数写成Q8格式:4830*256/10000;整数写成0022h。不理解的是,两个数是怎么相乘的?是不是DSP会将0 ...… 查看全部问答> |
|
TI原装MSP430 MSP430F5529 USB Exp Board 开发板 TI原装MSP430 MSP430F5529 USB Exp Board 开发板 TI原装MSP430 MSP430F5529 USB Exp Board 开发板 原价1064,全新,现在500元转让,有意者可以上淘宝看看 搜“TI原装MSP430 MSP430F5529 USB Exp Board 开发板”,价格是500元的那个就是了! 其 ...… 查看全部问答> |




