1602显示屏入门

/*******************************************************************

  • 实验名称及内容:思修STM8小王子综合测板实验

  • 配套书籍:《深入浅出STM8单片机入门、进阶与应用实例》

  • 交流QQ群: 305348768

  • 淘宝店铺: https://520mcu.taobao.com/

  • 实验平台及编程人员:思修电子工作室"祥云小王子"开发版 Long
    /
    #include"iostm8s208mb.h"//主控芯片的头文件
    /常用数据类型定义
    /
    #define u8 uint8_t
    #define u16 uint16_t
    #define u32 uint32_t
    typedef unsigned char uint8_t;
    typedef unsigned short uint16_t;
    typedef unsigned long uint32_t;
    /端口/引脚定义
    /
    #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
    /用户自定义区域
    /
    u8 table1[]=“VALUE”; //LCD1602显示字符串数组1显示效果用
    u8 table2[]=“FIGNTING”; //LCD1602显示字符串数组2显示效果用
    /函数声明区域
    /
    void delay(u16 Count); //延时函数
    void LCD1602_Write(u8 cmdordata,u8 writetype); //写入液晶模组命令或数据
    void LCD1602_Init(void); //LCD1602初始化函数
    void LCD1602_DIS(void); //LCD1602显示函数
    /
    ******************************************/
    int main(void)
    {
    PF_DDR|=0x19; //配置PF0、PF3、PF4为推挽输出模式
    PF_CR1|=0x19;
    PF_CR2|=0x00;
    LCDRW=0; //LCD1602为写入模式

    PB_DDR=0xFF; //配置PB端口为推挽输出模式
    PB_CR1=0xFF;
    PB_CR2=0x00;
    PB_ODR=0xFF;
    LCDDATA=0xFF; //PB端口输出高电平
    LCD1602_Init(); //LCD1602初始化函数
    LCD1602_DIS(); //显示字符
    while(1);
    }
    //
    //延时函数delay(),有形参count用于控制延时函数执行次数,无返回值
    //
    void delay(u16 Count)
    {
    u8 i,j;
    while (Count–)//Count形参控制延时次数
    {
    for(i=0;i<50;i++)
    for(j=0;j<20;j++);
    }
    }
    /LCD1602初始化函数
    /
    //写入液晶模命令或数据函数LCD1602_Write(),有形参cmdoadata, writetype无返回值
    /
    /
    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; //模块不使能
    }
    /LCD1602初始化函数
    /
    //LCD1602初始化函数LCD1602_Init(),无返回值无形参
    /
    /
    void LCD1602_Init(void)
    {
    LCD1602_Write(0x38,0);//配置16
    2显示,8位数据线格式,5
    7点阵
    LCD1602_Write(0x0C,0);//设置开显示,无光标
    LCD1602_Write(0x06,0);//写字符后地址自动加1
    LCD1602_Write(0x01,0);//显示清0,数据指针清0
    }
    /LCD1602初始化函数*******/
    //LCD1602初始化函数LCD1602_DIS(),无返回值无形参
    /
    *****************************************************/
    void LCD1602_DIS(void)
    {
    u8 i; //定义控制循环变量
    LCD1602_Write(0x80,0); //选择第一行
    for(i=0;i<16;i++)
    {
    LCD1602_Write(table1[i],1); //写入table1内容
    delay(50);
    }
    LCD1602_Write(0xC0,0); //选择第二行
    for(i=0;i<16;i++)
    {
    LCD1602_Write(table2[i],1); //写入table1内容
    delay(50);
    }
    }
    编代码的时候,寄存器的引脚概念模糊,1602的程序模式不清晰,原理模糊。先记录一下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值