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

发布者:Xingfu6666最新更新时间:2014-12-18 来源: laogu关键字: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

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

上一篇:单片机模拟I2C总线及AT24C01应用实例
下一篇:软件包实现DTMF信号的产生

推荐阅读最新更新时间:2024-03-16 13:49

S3C2440,Linux,LCD驱动
到了神秘的LCD驱动了,信息还真有点胆怯,但是还是不得不走下去。对刚刚学习的linux驱动坐一下总结,毕竟是Linux内核当中的东东,而且是那么的繁琐。做一总结,等用笔记把学过东西几下来,这样就不会忘了。哈哈! 那就开始!!! 在编写裸机LCD程序的时候,首先就是硬件初始化操作。有一个寄存器当中存放了帧缓冲的起始地址。这个参数是非常重要的。当配置好硬件后,帧缓冲中的数据能够脱离CPU不停地将真缓冲当中的数据写入到LCD屏。如果我们要现实一个图片的话只需要将图片数据放到帧缓冲当中,这样就非常的方便了。 在linux当中,把整个LCD驱动分为两层:LCD帧缓冲区层和LCD硬件驱动层。LCD帧缓冲区层其实就是将内核中的一部分空间当作一个
[单片机]
传京东方将入股LCD驱动IC封测厂颀邦
集微网消息,传京东方看上全球最大TFT-LCD专业封测厂台湾颀邦,将寻紫光与南茂结盟模式,认购颀邦位于苏州厂的颀中科技股权,若无意外,第3季底前双方将完成股权移转的合约签订。 消息是否属实,目前无法从公司获得证实。 京东方目前每年面板的产量至少2300万片,是颀邦公司在大陆的最大客户;京东方继北京、合肥、重庆等三地三座8.5代厂投产后,前年又投入逾300亿元人民币兴建第四座8.5代福州厂,且该新厂就在日前悄悄完工投产,委托释出到颀邦进行的封测代工订单,也快速拉高,是挤爆颀邦下半年产能的关键所在。 京东方集团企图往半导体封测产业链发展,有意打造一条龙的服务,看上有业务合作关系同时是全球最大TFT-LCD专业封测厂的颀邦。 传京东方原
[手机便携]
stm32 TFTLCD驱动原理(三)
代码的实现 (1) 首先是对 TFTLCD 进行引脚初始化 static void LCD_GPIO_Config ( void ) { GPIO_InitTypeDef GPIO_InitStructure; /* 使能复用IO时钟:复用为fsmc功能 */ RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO, ENABLE ); /* 使能FSMC对应相应管脚时钟 */ RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE ); FSMC_LCD_CS_
[单片机]
mini2440 LCD驱动
mini2440集成了lcd控制器的接口,板子上接的lcd硬件是统宝240*320,TFT型lcd。lcd驱动对应的文件为s3c2410fb.c。要读懂这个驱动必须了解linux platform子系统的知识。因为这个驱动是以platform驱动的形式注册到内核。而且还需要frambuffer驱动的知识,因为这个驱动还是frambuffer接口的。lcd驱动在模块初始化的时候,调用platform注册函数将自己注册到内核,利用linux设备模型核心的机制调用platform_bus总线的match函数找到相应的设备,然后由linux设备模型核心调用s3c2410fb.c中的s3c2410fb_probe ,进行硬件相关初始化,并初
[单片机]
LCD驱动器SD0432与嵌入式系统的接口设计
摘要:集成LCD显示驱动器SD0432是深圳兴威帆电子有限公司生产的低工作电压串行接口芯片,它内部具有看门狗(WDT)及语音输出电路。文中介绍了SD0432的工作特性及工作原理,给出了SD0432与8051嵌入式微处理器的接口电路及部分程序代码。 关键词:LCD显示驱动器 SD0432 嵌入式系统芯片8051 看门狗(WDT) 1 SD0432的主要特性 现今,随着LCD价格的下降,LCD的使用已经越来越普遍了,如在电脑显示器方面,大有LCD显示器取代CRT显示器的趋势。同时由于LCD显示器具有直观、小巧轻薄、耐用等特性,因而得到了广泛的使用。 SD0432是具有128段(32%26;#215;4位)和映射存储器
[应用]
新型LCD驱动电路IP核的总体设计
  本文介绍了LCD的通用驱动电路IP核设计,采用自顶向下的设计方法将其划分为几个主要模块,分别介绍各个模块的功能,用VHDL语言对其进行描述,用FPGA实现并通过了仿真验证。该IP核具有良好的移植性,可驱动不同规模的LCD电路。    引言   LCD因具有工作电压低、功耗小、显示信息量大、寿命长、易集成、方便携带和电磁辐射污染小等优点,在显示技术中异军突起,被广泛应用于手机、PDA产品、手持式仪器仪表等便携式电子产品与设备中。   LCD驱动电路是液晶显示系统的重要组成部分,是一种计算机(或MCU)和液晶屏之间的接口电路,其主要功能是通过调制输出到液晶显示器件电极上的电位信号的相位、峰值、频率等参数来建立交流驱动电场。由于L
[电源管理]
新型<font color='red'>LCD驱动</font>电路IP核的总体设计
S3C2440上LCD驱动(FramBuffer)实例开发详解(一)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 一、开发环境 编译器:arm-linux-gcc-4.3.2 二、背景知识 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/T
[单片机]
S3C2440上<font color='red'>LCD驱动</font>(FramBuffer)实例开发详解(一)
SEP3203与伪彩LCD驱动SSD1770的接口设计
SSD1770是晶门科技公司于2005年推出的一款用于点阵显示系统的单片CMOS彩色STN LCD驱动控制器。目前,SSD1770已经应用于传统的工控机领域8080系列微控制器的连接,而在32位嵌入式系统领域内的应用还很少,本文主要研究LCD控制器SSD1770与ARM7TDMI内核的嵌入式微处理器SEP3203之间的系数连接及底层、上层软件开发,并最终在产品中得到应用。 1 系统介绍 1.1 系统构成   系统主要由SEP3203处理器和伪彩点阵型图形LCD控制器SSD1770组成,系统接口示意图如图1所示。    1.2 SEP3203概述   SEP3203是由东南大学国家专用集成电路(ASIC)与系统工程技
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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