物联笔记-3

一、系统设计思路

1、框架拆分为子系统(拆分原则尽可能独立)

2、子系统细分(子系统细分为驱动和应用接口)

3、业务逻辑

二、LCD案例说明

1、单片机通过并口方式直接操作LCD,LCD自带RAM,单片机可以直接访问显存,通过点阵映射到点阵显示

2、单片机通过IIC 或者 SPI方式串行操作LCD,LCD自带RAM,单片机可以直接访问显存,通过点阵映射到点阵显示

3、单片机通过LCD控制器,直接控制LCD点阵,LCD没有RAM作为缓冲,需要单片机自己准备RAM作为显存使用

4、框架示例,根据对课程的理解,简要分层以下4层

 main.c

void main(void)
{
desplay_devs_init();                           //注册LCD
DisplayDev *pdev = get_display_dev("oled");    //获取LCD
        pdev->Init(pdev);                      //操作LCD,  初始化硬件
pdev->FlushFB(pdev);                           //操作LCD,调研应用
}
typedef struct DisplayDev {
    char *name;
    int iXres;
    int iYres;
    int iBpp;
    char *Framebuffer;
    void (*init)(struct DisplayDev *d);
    void (*flush)(struct DisplayDev *d);
    void (*draw_pt)(struct DisplayDev *d);
}DisplayDev, *p_DisplayDev;
//初始化:注册所有LCD
void desplay_devs_init(void)
{
    lcd_register( &oled);
    lcd_register(&other_lcd);
    lcd_register(&....);
}
//注册LCD
void lcd_register(DisplayDev *dev)
{    
    lcd_list[count]->name = dev->name;
    lcd_list[count]->iXres = dev->iXres;
    .......................=...........;
}
//移除LCD
void lcd_remove(DisplayDev *dev)
{
    ...
}
//获取LCD
DisplayDev *get_lcd(char* lcd_name)
{
    return ..lcd
}

lcd_oled.c

uint8_t oled_buf[...];

static DisplayDev oled = 
{
    "oled", 
    100, 
    200, 
    1, 
    oled_buf,
    oled_init, 
    oled_flush, 
    oled_draw_pt
};
//硬件接口初始化
void oled_init(void)
{
    lcd_spi...iic...fsmc..._init
    oled_config();
    ...
}

//模式配置
void oled_config(void)
{
    ...
}

//画点
void oled_draw_pt(int x,int y, color c)
{
    ...   
}

//刷屏
void oled_flush(color c)
{
    ...
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值