在EM78Pxx上模拟8(COM)*8(SEG)LCD驱动

发布者:RadiantGlow最新更新时间:2018-01-29 来源: eefocus关键字:EM78Pxx  COM  SEG  LCD驱动 手机看文章 扫描二维码
随时随地手机看文章

;/*=============================================================================
;             在EM78Pxx上模拟8(COM)*8(SEG)LCD驱动                              |

;                                                                              |
;                                                                              |
;一. LCD扫描原理:                                                              |
;正向扫描: COM on=VCC,COM off=1/2VCC,对应SEG=1则输出VSS,为0 则输出VCC.         |
;反向扫描: COM on=VSS,COM off=1/2VCC,对应SEG=1则输出VCC,为0 则输出VSS.         |
;                                                                              |
;二. 电路接法:                                                                 |
;    所有COM口线都接一个上拉电阻和一个下拉电阻,阻值相同.                       |
;    当口线设为输入时,端口电压为1/2VCC.                                        |
;    COM I/O口设定高阻输入&正常输出.                                           |
;                                                                              |
;三. 使用方法:                                                                 |
;    由程序定时调用.                                                           |
;                                                                              |
;DATE:2005-02-24 ok                                                            |
;=============================================================================*/


#define LCD_sCAN_bearing  LCD_scan_status.0     ;//扫描方向
#define common_amount 4     ;//common PIN  定义COM口的数量  max=8

;//LCD显示代码寄存器
COM_port == 5    ;//PORT5=COM0--COM7
SEG_port == 6    ;//PORT6=SEG0--SEG7

seg0 == 0x10                 ;//静态变量
seg1 == 0x11
seg2 == 0x12
seg3 == 0x13
seg4 == 0x14
seg5 == 0x15
seg6 == 0x16
seg7 == 0x17
LCD_scan_status  == 0x18
LCD_scan_counter == 0x19


LCD_scan_temp    == 0x1a     ;//动态变量
seg_TEMP         == 0x1b
com_temp         == 0x1c

 


            !seg_port=0        ;//seg_port为outport

LCD_drive()
            SEG_temp=0xff
            com_temp=0xff
            LCD_scan_temp=LCD_scan_counter
            _if LCD_scan_temp!=0
            goto ld1
            jbc seg0,0           ;//COM0
            bc  SEG_temp,0
            jbc seg1,0
            bc  SEG_temp,1
            jbc seg2,0
            bc  SEG_temp,2
            jbc seg3,0
            bc  SEG_temp,3
            jbc seg4,0
            bc  SEG_temp,4
            jbc seg5,0
            bc  SEG_temp,5
            jbc seg6,0
            bc  SEG_temp,6
            jbc seg7,0
            bc  SEG_temp,7
            bc  com_temp,0
ld1:
            _if --LCD_scan_temp!=0
            goto ld2
            jbc seg0,1            ;//COM1
            bc  SEG_temp,0
            jbc seg1,1
            bc  SEG_temp,1
            jbc seg2,1
            bc  SEG_temp,2
            jbc seg3,1
            bc  SEG_temp,3
            jbc seg4,1
            bc  SEG_temp,4
            jbc seg5,1
            bc  SEG_temp,5
            jbc seg6,1
            bc  SEG_temp,6
            jbc seg7,1
            bc  SEG_temp,7
            bc  com_temp,1
ld2:
            _if --LCD_scan_temp!=0
            goto ld3
            jbc seg0,2               ;//COM2
            bc  SEG_temp,0
            jbc seg1,2
            bc  SEG_temp,1
            jbc seg2,2
            bc  SEG_temp,2
            jbc seg3,2
            bc  SEG_temp,3
            jbc seg4,2
            bc  SEG_temp,4
            jbc seg5,2
            bc  SEG_temp,5
            jbc seg6,2
            bc  SEG_temp,6
            jbc seg7,2
            bc  SEG_temp,7
            bc  com_temp,2
ld3:
            _if --LCD_scan_temp!=0
            goto ld4
            jbc seg0,3                  ;//COM3
            bc  SEG_temp,0
            jbc seg1,3
            bc  SEG_temp,1
            jbc seg2,3
            bc  SEG_temp,2
            jbc seg3,3
            bc  SEG_temp,3
            jbc seg4,3
            bc  SEG_temp,4
            jbc seg5,3
            bc  SEG_temp,5
            jbc seg6,3
            bc  SEG_temp,6
            jbc seg7,3
            bc  SEG_temp,7
            bc  com_temp,3
ld4:
            _if --LCD_scan_temp!=0
            goto ld5
            jbc seg0,4                  ;//COM4
            bc  SEG_temp,0
            jbc seg1,4
            bc  SEG_temp,1
            jbc seg2,4
            bc  SEG_temp,2
            jbc seg3,4
            bc  SEG_temp,3
            jbc seg4,4
            bc  SEG_temp,4
            jbc seg5,4
            bc  SEG_temp,5
            jbc seg6,4
            bc  SEG_temp,6
            jbc seg7,4
            bc  SEG_temp,7
            bc  com_temp,4
ld5:
            _if --LCD_scan_temp!=0
            goto ld6
            jbc seg0,5                     ;//COM5
            bc  SEG_temp,0
            jbc seg1,5
            bc  SEG_temp,1
            jbc seg2,5
            bc  SEG_temp,2
            jbc seg3,5
            bc  SEG_temp,3
            jbc seg4,5
            bc  SEG_temp,4
            jbc seg5,5
            bc  SEG_temp,5
            jbc seg6,5
            bc  SEG_temp,6
            jbc seg7,5
            bc  SEG_temp,7
            bc  com_temp,5
ld6:
            _if --LCD_scan_temp!=0
            goto ld7
            jbc seg0,6                          ;//COM6
            bc  SEG_temp,0
            jbc seg1,6
            bc  SEG_temp,1
            jbc seg2,6
            bc  SEG_temp,2
            jbc seg3,6
            bc  SEG_temp,3
            jbc seg4,6
            bc  SEG_temp,4
            jbc seg5,6
            bc  SEG_temp,5
            jbc seg6,6
            bc  SEG_temp,6
            jbc seg7,6
            bc  SEG_temp,7
            bc  com_temp,6
ld7:
            _if --LCD_scan_temp!=0
            goto ld8
            jbc seg0,7                          ;//COM7
            bc  SEG_temp,0
            jbc seg1,7
            bc  SEG_temp,1
            jbc seg2,7
            bc  SEG_temp,2
            jbc seg3,7
            bc  SEG_temp,3
            jbc seg4,7
            bc  SEG_temp,4
            jbc seg5,7
            bc  SEG_temp,5
            jbc seg6,7
            bc  SEG_temp,6
            jbc seg7,7
            bc  SEG_temp,7
            bc  com_temp,7
ld8:
            !com_port=com_temp
            if LCD_scan_bearing==0
               com  SEG_temp           ;//反向扫描COM=0 SEG=1
            else
               com  com_temp           ;//正向扫描COM=1 SEG=0
            endif
            seg_port=SEG_temp          ;//write seg
            com_port=com_temp          ;//write com

            if ++LCD_scan_counter>=common_amount   ;//检查同一方向扫描是否完成
               LCD_scan_counter=0
               if LCD_scan_bearing==0       ;//已经完成则改变扫描方向
                  LCD_scan_bearing=1
               else
                  LCD_scan_bearing=0
               endif
            endif
            return


关键字:EM78Pxx  COM  SEG  LCD驱动 引用地址:在EM78Pxx上模拟8(COM)*8(SEG)LCD驱动

上一篇:EM78P153范例程序
下一篇:EM78C156E+1621显示汇编例子

推荐阅读最新更新时间:2024-03-16 15:53

Recom非隔离式DC/DC稳压器,在极低负载下也具有出色效率
儒卓力产品组合增添Recom全新RPMH-0.5系列0.5A非隔离式DC/DC开关稳压器,具有4.3V至最高65V输入电压范围以及五个可调整的输出电压选项,并采用兼容DOSA的标准薄型LGA封装。 带有48V板网的软混合动力车辆的数量不断增加,促使锂离子电池的成本日益下降,使得许多其他应用领域也越来越多地使用48V电源轨。针对这些应用,RPMH-0.5系列是下变频转换至较低电压的理想选择。 当输出为0.5A时,RPMH-0.5系列可提供五个可调整的固定输出电压:3.3V (+10%/-20%)、5V (+10%/-20%)、 12V (+10%/-40%)、15V (+10%/-40%)和24V (+17%/-37%
[电源管理]
Re<font color='red'>com</font>非隔离式DC/DC稳压器,在极低负载下也具有出色效率
RS Components新备货Intel® Joule™开发平台
中国上海,2016年11月10日 - 服务于全球工程师的分销商 Electrocomponents plc 集团旗下的贸易品牌RS Components (RS) (LSE:ECM) 今天宣布提供新款Intel Joule 平台,其中包括了高性能计算模块和套件,针对开发物联网(IoT)创新应用的开发者、发明家和企业家。多用途的Intel Joule平台是广泛潜在应用的理想之选,涉及领域包括计算机视觉、机器人技术、无人机、工业物联网、虚拟现实、微型服务器以及要求高端计算的其他应用,比如具备增强现实技术的工业安全眼镜、社交机器人和针对特定应用的定制载板。 Intel Joule平台基于一个高端的模块上计算系统(SOM),其在一个
[物联网]
RS <font color='red'>Com</font>ponents新备货Intel® Joule™开发平台
深入浅出,带你了解Qualcomm的图形图像优化之道
随着我们对移动设备的依赖越来越强,手机游戏、移动应用越来越多的参与到我们的日常生活中,而赋予这些产品精美的UI设计、良好的用户体验、炫酷的游戏画面以及优异的性能表现,都能够帮助开发者更好地获取用户的青睐,为此在2017年8月 Qualcomm 在深圳、北京、上海举行了三场“探索移动 图形图像 处理—— Qualcomm 开发者公开课”,全面向开发者介绍深层次的移动端 图形图像 的优化之道!下面就随网络通信小编一起来了解一下相关内容吧。 Qualcomm 资深产品市场经理温宵凯:Qualcomm平台优势及优化工具. 会间温宵凯介绍到,Qualcomm在移动领域已经耕耘了超过三十年了,最早从modem开始,要最早先解决互联问题,
[网络通信]
ComputeX 2014:3D 打印技术的台前与幕后
    间:2014年6月07日 07:16   3D 打印渐渐成了一个全球化的浪潮,美国自然是这个科技潮流的中心,中国地区也有许多人投身于 3D 打印中去,台湾也不例外,这次台北国际电脑展中,3D 打印领域展出的展品不是很多,但是有一些还是值得一看。   在上一次大型科技展会 CES 上,3D 打印就有蓬勃发展的势头,各方面都有很好的发展,而从技术和数量来看,此次 ComputeX 没有突破 CES,不过小而精的路线也值得肯定。   台前   未来正在成型,这是台湾某 3D 打印企业的宣传广告语。3D 打印的机遇不仅仅在于帮助普通人实现制造的梦想,也是为设计师们实现想法的舞台。   这家 3D 打印企业的展品都是跨界和设计师
[手机便携]
Qualcomm为2018款本田雅阁提供先进的联网汽车技术
电子网消息,高通今日宣布将继续支持先进的个性化、信息娱乐和车载信息处理系统,并于近期推出的2018款本田雅阁车型中进行展示。2018款本田雅阁采用了极为先进的骁龙汽车平台,支持车载信息娱乐和导航系统的前沿应用。骁龙汽车解决方案旨在支持汽车制造商为消费者提供丰富、直观的体验。作为Qualcomm Technologies为汽车制造商实现联网汽车所提供的广泛支持的一部分,2018款本田雅阁还采用了Qualcomm® 4G LTE调制解调器,将支持Hondalink汽车连接系统。 2018年国际消费电子展(CES 2018)期间,位于北厅5616号展位的Qualcomm Technologies汽车展台将展示2018款本田雅阁。
[半导体设计/制造]
Qualcomm发布全新骁龙845 VR开发工具包 支持下一代VR体验
高通今日在游戏开发者大会(GDC)上发布全新的虚拟现实开发工具包,包括一个无线独立式VR头显设备(HMD),以及面向强大的Qualcomm®骁龙™845移动VR平台的全新软件开发包(SDK)。Qualcomm Technologies的全新虚拟现实开发工具包(VRDK)旨在支持下一代移动虚拟现实应用。 Qualcomm Technologies, Inc.产品管理总监Hiren Bhinde表示:“在VR领域,内容对沉浸式体验非常重要。因此我们很兴奋能通过该开发工具包,让开发者能够访问我们全新的骁龙845移动VR平台,这将帮助他们创造真正的沉浸式体验。我们在打造全新的骁龙845 VR开发工具包时,充分考虑了应用开发者的需求,旨
[半导体设计/制造]
华硕等厂商荟萃,DigiCome大展上网本
自去年下半年开始,一种新兴的产品“上网本”迅速的占领了消费市场。所谓上网本,其实就是一台专为网络功能和便携性而生的网络终端,英文原词为“netbook”,是英特尔在台湾Computex展会上首次提出的。现在一般把价格比笔记本主流价格低,尺寸在7寸以上,10寸以下,以网络连接为主要应用的笔记本电脑统称为上网本。业界甚至也笼统地将MID(移动上网装置)、UMPC(超移动电脑)都归入上网本范畴。 随着传统笔记本电脑的普及,笔记本电脑已不再是只有商务人士和白领青睐的“阳春白雪”,众多大中学生已经不满足于使用无法携带的台式PC,纷纷把目光瞄向了携带更加方便的笔记本电脑,由于上网本的价格、体积和使用优势刚好满足了这部分消费者的使
[模拟电子]
凌华科技推出市场首款COM-HPC服务器模块
搭载基于Arm系统级芯片的80 核Ampere Altra处理器 COM-HPC Ampere Altra是业界首创兼具高性能与低功耗的嵌入式边缘计算解决方案 摘要: • 凌华科技独家推出基于Arm架构 COM-HPC 服务器模块创下了边缘性能功率比的全新标准。凭借多达 80 个 Arm v8.2版 64 位内核、高达 2.8GHz 的频率、以及 175W TDP 的适度功率需求,用户能够可靠且可预测地处理计算密集型工作负载 • 凌华科技COM-HPC Ampere Altra 嵌入式服务器模块符合Arm SystemReady SR系统架构标准,确保支持多种标准操作系统、管理程序和软件,系统安装免烦恼 •
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved