LCD液晶屏驱动芯片分类百科

主要介绍一些常用的LCD液晶屏驱动控制IC型号。
因此,在选择LCD液晶屏模块时,在考虑串行或并行模式时,可以根据其驱动控制IC的型号来判断。当然,你还需要看你选择的LCD模块的管脚定义是固定的支持并行还是可以选择并行或者串行模式。
一、字符型液晶驱动控制集成电路
市场上常用的8×1、8×2、16×1、16×2、16×4、20×2、20×4、40×4字符的液晶显示器基本上都采用KS0066作为液晶显示器的驱动控制器。
在这里插入图片描述
二、图形点阵液晶驱动控制集成电路
1.晶格号122×32 - SED1520
2.晶格数为128×64
(1)ST7920/ST7921,支持串行或并行数据操作模式,内置汉字库
(2)仅支持并行数据操作模式的KS0108,也是12864点阵液晶最常用的驱动控制IC
(3)ST7565P,支持串行或并行数据操作模式
(4)S6B0724支持串行或并行数据操作模式
(5)T6963C仅支持并行数据操作模式
3.T6963c一般用于驱动192×64、240×64、320×64、240×128等其他点阵数的控制芯片
4.点阵数320×240,常用RA8835驱动控制IC
这里只是一些常用的,当然还有其他的LCD驱动控制IC。写LCD驱动的时候要知道是哪种类型的IC,然后上网找相应的IC数据手册。后面我会慢慢补充一些其他常见的。
在这里插入图片描述
三、12864液晶的特点
CD1601/1602和LCD12864是常用的液晶。有人认为12864是一个统一的数,主要是因为12864液晶的驱动是一样的。实际上12864只意味着液晶的点阵是128*64点阵,而实际的12864有和没有字体库都有;如果有5V电压,也有3.3V~5V(内置升压电路);归根结底,区别在于驱动控制芯片。常用的控制芯片有ST7920、KS0108、T6963C等。
第四,下面介绍四种常用的
1、ST7920型控制器有汉字库,省去了用户编译字库的麻烦,控制器的LCD也支持绘图模式。这种液晶支持68位顺序8位和4位并口和串口。
2.KS0108控制器指令简单,没有字库。支持68位并行端口,68位定时。
3级,T6963C,这种控制器功能强大,带西文字库。有两种显示模式:文本和图形。有两层,文字和图形,支持两层叠加显示。支持80位顺序并行端口。
4.COG类常见的控制器有S6B0724和ST7565,两者兼容。支持68位顺序并口、80位顺序并口和串口。COG液晶具有结构轻、成本低的特点。
PSB是ST7920液晶的标志性引脚。CS1和CS2是KS0108级的标志性引脚。FS是T6963C液晶的标志性引脚;
如果得到的液晶屏界面有丝印,可以根据上表判断液晶屏的类型。
正是因为12864中有很多控制芯片,所以对应的LCD驱动方式也大不相同。所以最好的办法就是咨询厂家的销售人员关于你购买的LCD的控制芯片,索取技术手册。
文章来自液晶屏:https://www.lcd-expert.com/index.php?upcache=1,转载请注明出处!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RTL8370是Realtek推出的一款高度集成的以太网交换芯片,支持10/100/1000 Mbps接口速率,提供了丰富的L2交换功能和安全特性。下面简要介绍一下RTL8370的驱动程序示例。 首先,需要在操作系统中加载RTL8370的驱动程序。在Linux系统中,可以使用ethtool和swconfig等工具进行配置和管理。在Windows系统中,可以使用Realtek提供的驱动程序进行安装和配置。 在驱动程序中,需要实现以下功能: 1. 初始化RTL8370芯片,包括设置寄存器、配置端口等。 2. 实现L2交换功能,包括学习MAC地址、转发数据包等。 3. 支持VLAN功能,包括VLAN的创建、删除、端口的加入和离开等。 4. 支持QoS功能,包括流量分类、限速等。 5. 支持安全特性,包括MAC地址过滤、端口安全等。 以下是一个简单的RTL8370驱动程序示例: ```c #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/skbuff.h> #include <linux/if_vlan.h> /* RTL8370寄存器地址定义 */ #define RTL8370_REG_CHIPID 0x00 #define RTL8370_REG_CHIPVER 0x01 #define RTL8370_REG_CTRL 0x10 #define RTL8370_REG_PHY_CTRL1 0x14 #define RTL8370_REG_PHY_CTRL2 0x15 #define RTL8370_REG_PORT_CTRL(x) (0x20 + (x)) #define RTL8370_REG_PORT_VLAN(x) (0x30 + (x)) /* 初始化RTL8370芯片 */ static int rtl8370_init(struct net_device *dev) { /* 设置寄存器 */ writeb(0x01, RTL8370_REG_CTRL); writeb(0x01, RTL8370_REG_PHY_CTRL1); writeb(0x01, RTL8370_REG_PHY_CTRL2); /* 配置端口 */ writeb(0x01, RTL8370_REG_PORT_CTRL(0)); writeb(0x02, RTL8370_REG_PORT_CTRL(1)); /* 初始化VLAN */ vlan_group_init(&dev->vlan_group); return 0; } /* 学习MAC地址 */ static void rtl8370_learn(struct net_device *dev, struct sk_buff *skb) { struct ethhdr *eth = eth_hdr(skb); int port; /* 获取源MAC地址和接收端口 */ port = skb->dev->ifindex; memcpy(dev->dev_addr, eth->h_source, ETH_ALEN); /* 更新转发表 */ rtl8370_update_fwd_table(port, eth->h_source); } /* 转发数据包 */ static int rtl8370_fwd(struct net_device *dev, struct sk_buff *skb) { struct ethhdr *eth = eth_hdr(skb); struct net_device *out_dev; int out_port; /* 查找转发端口 */ out_port = rtl8370_lookup_fwd_table(eth->h_dest); /* 根据端口查找对应的网络设备 */ out_dev = dev_get_by_index(&init_net, out_port); /* 转发数据包 */ if (out_dev) { skb->dev = out_dev; skb->protocol = eth->h_proto; dev_queue_xmit(skb); return 0; } else { printk(KERN_ERR "rtl8370: failed to forward packet\n"); kfree_skb(skb); return -ENODEV; } } /* VLAN处理函数 */ static int rtl8370_vlan(struct net_device *dev, struct vlan_group *grp, unsigned int cmd, unsigned int vid) { int port; /* 根据命令进行不同的操作 */ switch (cmd) { case VLAN_GROUP_COMMAND_ADD: /* 将端口加入VLAN */ port = dev->ifindex; writeb(vid, RTL8370_REG_PORT_VLAN(port)); vlan_group_add_device(grp, dev, vid); break; case VLAN_GROUP_COMMAND_DEL: /* 将端口从VLAN中删除 */ port = dev->ifindex; writeb(0x00, RTL8370_REG_PORT_VLAN(port)); vlan_group_del_device(grp, dev, vid); break; default: return -EINVAL; } return 0; } /* 驱动程序入口函数 */ static int rtl8370_drv_probe(struct platform_device *pdev) { struct net_device *dev; int err; /* 创建网络设备 */ dev = alloc_etherdev(sizeof(struct rtl8370_priv)); if (!dev) { printk(KERN_ERR "rtl8370: failed to allocate etherdev\n"); return -ENOMEM; } /* 初始化网络设备 */ dev->netdev_ops = &rtl8370_netdev_ops; dev->flags |= IFF_MULTICAST; dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; /* 初始化RTL8370芯片 */ err = rtl8370_init(dev); if (err) { printk(KERN_ERR "rtl8370: failed to init chip\n"); free_netdev(dev); return err; } /* 注册网络设备 */ err = register_netdev(dev); if (err) { printk(KERN_ERR "rtl8370: failed to register netdev\n"); free_netdev(dev); return err; } /* 设置VLAN处理函数 */ dev->vlan_group.ops = &rtl8370_vlan_ops; return 0; } /* 驱动程序出口函数 */ static int rtl8370_drv_remove(struct platform_device *pdev) { struct net_device *dev = platform_get_drvdata(pdev); /* 注销网络设备 */ unregister_netdev(dev); /* 释放网络设备 */ free_netdev(dev); return 0; } /* 驱动程序结构体 */ static struct platform_driver rtl8370_drv = { .probe = rtl8370_drv_probe, .remove = rtl8370_drv_remove, .driver = { .name = "rtl8370", }, }; /* 模块入口函数 */ static int __init rtl8370_init_module(void) { return platform_driver_register(&rtl8370_drv); } /* 模块出口函数 */ static void __exit rtl8370_exit_module(void) { platform_driver_unregister(&rtl8370_drv); } module_init(rtl8370_init_module); module_exit(rtl8370_exit_module); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("RTL8370 driver"); MODULE_LICENSE("GPL"); ``` 需要注意的是,以上代码仅为示例代码,具体的实现方式可能会有所不同,需要根据实际情况进行调整和修改。此外,RTL8370驱动程序还需要处理各种异常情况,如链路断开、数据包丢失等,以确保网络的稳定和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值