段式LCD原理

LCD的驱动不像LED那样,加上电压(LED实际上是电流驱动)就可以长期显示的。LCD驱动必须使用交流电压驱动才能保持稳定的显示,如果在LCD上加上稳定的直流电压,不但不能正常显示,时间久了还会损坏LCD。一段LCD由背电极和段电极组成,需要显示时, 在背电极和段电极之间加上合适的交流电压(通常使用方波)。为了调节对比度,可以 调节方波中每半个周期中显示的时间(即占空比)来实现。 
    通常,为了节约驱动口,将多个背电极连在一起,形成公共背电极端:COM。另外,再将属于不同COM的段电极连接在一起,形成公共段电极端:SEG当在某个COM和 某个SEG之间加了足够的交流电压之后,就会将对应的段点亮(实际上是变黑)。 
    像万利的板子上使用的这种LCD,有4个COM,还有16个SEG。要想某一SEG显示时,需要在对应的SEG和COM之间加上足够的交流电压。在万利的板子上,COM驱动使用了两个电阻分压,输出电压为1/2Vcc,当不想让某位显示时,就将它的电压设置为1/2Vcc(通过 设置IO口为高阻态来完成),这样加在对应的SEG和COM之间的电压只有1/2Vcc,不足以点亮对应的SEG。需要显示的,就将COM电压设置为0或者1,这样SEG电压跟COM电压相反的段就被点亮了(变黑),因为它们之间的电压为Vcc。通过定期扫描每个COM,即可稳定的在LCD上显示需要的图形了。需要显示字符或者数字时,自己先将对应的图案设计好,在显示时,发送到相应的SEG和COM上即可。但是如果使用100%的时间都驱动的话,会造成对比度太高,甚至出现不该显示的地方也显示了。因此在显示一段时间后,就将COM和SEG都设置为低,以关闭它的显示,降低对比度。通过调节关闭时间的长短(PWM),可以调节对比度。在下面的测试程序中,为了简化程序,使用了50%固定的占空比。 
    为了方便描述,我们把COM为低电平时点亮叫做正亮,COM为高电平时点亮叫做负亮。扫描每个COM分成4个阶段:正亮,关闭,负亮,关闭。因此对于本板子上的LCD驱动,总共有16个状态,每个COM都有上面所说的4个状态。我们每隔2ms就切换一次状态,这样整个扫描周期就是2*16=32ms,基本上感觉不到闪烁。 
    但是需要注意的是,这个LCD中的每个COM并不是刚好对应着显示图案中的一个字符的位置。每个COM都对应着每个显示字符中的相同4段!换句话说,要显示第一个字符位置的字符,每个COM都要被用到。因此,要改变某个字符位置的显示,就需要改变每次COM输出时对应的SEG中的4段。为此,建立一个缓冲区,当需要修改显示字符时,就修改缓冲区中的内容。这个缓冲区有4行,每行中有16个SEG,对应着一个COM。需要修改显示时,把每行中对应的4个SEG设置为需要的值,这样就实现了某个显示位置图案的修改。 
    为了显示字符,需要事先把需要显示的字符按照SEG和COM的分布,制作成数据保存起来,需要显示时,就把它复制到显示缓冲区中对应的位置去。另外,由于输入的参数是字符的ASCII码,因此还需要将ASCII码转换为对应的字符图案的索引值。使用一个专门的函数来完成这些转换和 填充缓冲区,在需要修改显示数据时,就调用该函数。 
    为了方便大家对这个LCD的驱动方式和编程,下面简单的画一下驱动的波形图。

这里只画出2个SEG波形图,实际有16个SEG,只要你理解了2个SEG的,那么16个的也是一样的意思。如图所示,所有偶数阶段都是关闭显示阶段,这时COM和SEG都是0,将不会有段被点亮,通过调节关闭显示阶段所占的时间百分比,即可调节总体显示的对比度。SEG和COM之间电平相差1格的显示不出来或者浓度不够,而SEG和COM之间电平相差2格的则可以显示出来或者浓度较深。例如第一阶段中的SEG1和COM1之间相差2格,第三阶段中COM1和SEG1相差2格,因而SEG1和COM1之间的交叉点(即点1)被显示。又如第九阶段的SEG1和COM3之间相差2格,第十一阶段中的COM3和SEG1之间相差2格,因而SEG1和COM3之间的交叉点(即点5)被显示出来。其它点以此类推。

最后,再来看看万利板子上的LCD的COM和SEG之间的关系图,如下图所示。

图中显示,S0、S1、S2、S3属于第一个字符,在显示第一个字符时,只要在对应的COM选中时,将需要显示的SEG放在上面即可。其余几个字符类似。例如要显示一个数字3,则应该将A段、B段、C段、D段、G段、K段显示。某段显示,用1表示,不显示用0表示,得到的各段值如下:
X=0 I=“0” A=“1” DP=“0”
F=0 H=“0” J=“0” B=“1”
E=0 G=“1” K=“1” C=“1”
L=0 M=“0” N=“0” D=“1”
    注意是低位在先的,把每行用十六进制来表示(高位在先),就是0x4,0x8,0xE,0x8。它们分别对应着COM1COM3选中时S3S0的输出值。为了方便管理,将这4个十六进制值合并为一个2字节的值0x48E8保存。其它各字符的构造方式相同。显示时,分别取出各段的值写入到对应的缓冲区去。

扫描LCD的程序流程如下:
①、COM1设置为低电平,其余COM为1/2高电平,设置PE口为需要的电平(16个段码),延时2ms;
②、4个COM、PE口均设置为低电平,关闭显示,延时2ms;
③、COM1设置为高电平,其余COM为1/2高电平,设置PE口为需要的电平(第一步16个段码的取反),延时2ms。
④、4个COM、PE口均设置为低电平,关闭显示,延时2ms;
    然后对剩下的3个COM重复前面4个步骤,这样一个完整的扫描就完成了。

硬件连接:

1、如下的LCD显示屏:

2、LCD与单片机的连接

3、LCD内存组织形式

4、使用4-mux模式

从上面的码表看出LCD PIN2531为NC,所以实际电路连接的时候使用了单片机的引脚为LCD0LCD26和COM0COM3。一共为27个segment和4个com,按照内存组织形式,LCD显示使用到的内存为LCDM0LCDM14,LCD内存图中的Associated Common Pins 3 2 1 0按照内存中的顺序对应于COM3~COM0。若要显示码表中的A10:“0” LCD segments a+b+c+d+e+f+k+q;根据码表和LCD内存顺序为0xFC,0x28,占用4个segment(即PIN1~PIN4),占用2个字节LCDM1,LCDM2,给内存赋值LCDM1=0xFC(SEG1+SEG0),LCDM2=0x28(SEG3+SEG2),这样就可以在LCD上显示出0。

### IsaacLab Installation Guide for Ubuntu 20.04 For installing IsaacLab on an Ubuntu 20.04 system, a series of preparatory steps must be completed to ensure compatibility and functionality. #### Preparing the System Environment Ensure that all necessary software is installed as described in tutorials covering essential installations for Ubuntu 20.04[^2]. This includes setting up the correct time zone, configuring input methods such as Sogou Pinyin, deploying Anaconda for Python development environments, using Terminator terminal emulator, ensuring Nvidia drivers are properly set up which is crucial since IsaacLab relies heavily on GPU acceleration capabilities provided by Nvidia hardware. #### Installing CUDA Toolkit Since IsaacLab requires CUDA support, follow guidelines similar to those outlined for WSL 2 but adapted specifically for native Linux distributions like Ubuntu 20.04[^4]. Install the appropriate version of the CUDA toolkit compatible with your graphics card model through either package managers or direct downloads from Nvidia's official website. ```bash sudo apt-get update && sudo apt-get install cuda ``` After installation completes successfully, verify it works correctly: ```bash nvcc --version ``` #### Setting Up cuDNN Following successful setup of CUDA, proceed to configure cuDNN according to instructions found within documentation related to Autoware environment configuration under Ubuntu 20.04[^3]: Download `libcudnn8` and its developer library corresponding to the chosen CUDA version before executing commands below: ```bash sudo dpkg -i libcudnn8_*.deb sudo dpkg -i libcudnn8-dev_*.deb ``` Confirm proper integration via running tests included inside sample directories bundled alongside cuDNN packages. #### Obtaining and Configuring IsaacLab Once prerequisites have been met, obtain access rights to download IsaacSim/IsaacLab SDK directly from Nvidia’s developer portal after registering there first if not done already. Follow detailed guides available online regarding unpacking archives, placing files into designated locations while adhering closely to any specific requirements mentioned during this process concerning dependencies management tools used throughout projects built around Omniverse platform components including IsaacLab itself. Finally, customize settings based upon personal preferences or project needs following post-installation procedures recommended officially by developers behind these applications. --related questions-- 1. What versions of CUDA should one choose when preparing their machine learning workstation? 2. How does adjusting system locale affect non-English speaking users' experiences on fresh installs of Ubuntu-based systems? 3. Can you explain how to troubleshoot common issues encountered after updating Nvidia drivers on Linux machines? 4. In what ways can integrating Jupyter notebooks enhance productivity within data science workflows conducted over Conda-managed virtual environments? 5. Are there alternative text editors besides Vim/GNU Emacs suitable for beginners who wish to write scripts efficiently without steep learning curves?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值