打印
[应用相关]

STM8 LCD602显示子程序

[复制链接]
638|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2021-7-1 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define PORT_busy PB_DDR=0x00;PB_CR1=0xff;
#define busy PB_IDR

#define PORT_OUT PB_DDR=0xff;PB_CR1=0xff;
#define PORT PB_ODR
#define EN_SET sbi(PC_DDR,5);sbi(PC_CR1,5);sbi(PC_ODR,5);
#define EN_CLR sbi(PC_DDR,5);sbi(PC_CR1,5);cbi(PC_ODR,5);

#define RW_SET sbi(PC_DDR,6);sbi(PC_CR1,6);sbi(PC_ODR,6);
#define RW_CLR sbi(PC_DDR,6);sbi(PC_CR1,6);cbi(PC_ODR,6);

#define RS_SET sbi(PE_DDR,5);sbi(PE_CR1,5);sbi(PE_ODR,5);
#define RS_CLR sbi(PE_DDR,5);sbi(PE_CR1,5);cbi(PE_ODR,5);
_Bool lcd1602_busy(void)
{
        _Bool result;
        RS_CLR;
        RW_SET;
        EN_SET;
        delay(5);
        PORT_busy;
        result=(busy & 0x80);
        EN_CLR;
        return result;
}

void lcd1602_write_com(u8 com)
{
        while(lcd1602_busy());
        RS_CLR;
        RW_CLR;
        EN_CLR;
        PORT_OUT;
        PORT=com;
        EN_SET;
        delay(5);
        EN_CLR;
}

void lcd1602_write_data(u8 dat)
{
        while(lcd1602_busy());
        RS_SET;
        RW_CLR;
        EN_CLR;
        PORT_OUT;
        PORT=dat;
        EN_SET;
        delay(5);
        EN_CLR;
}

void lcd1602_gotoxy(u8 x,u8 y)
{
        u8 add;
        if(y==0)
                add=0x80+x;
        else
                add=0xc0+x;
        lcd1602_write_com(add);
       
}

void lcd1602_init(void)
{
        delay(100);
        lcd1602_write_com(0x38);
        lcd1602_write_com(0x0c);
        lcd1602_write_com(0x06);
        lcd1602_write_com(0x01);
}


void lcd1602_display(void)
{
        for(num=0;num<12;num++)
                {
                        lcd1602_write_data(table[num]);
                        delay(5);
                }
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1505

主题

4522

帖子

6

粉丝