《匠人手记》推荐网上购书渠道:
EDN网(ednchina)购书入口   >>>
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历

百宝专栏

  • 首页 相册 标签
  • 电脑应用(65)
  • 供需信息(22)
  • 写书近况(82)
  • 匠人文集(115)
  • 硬件技术(171)
  • 匠人公告(86)
  • 与非门专栏(545)
  • 匠人笔记(115)
  • 团队撰写(96)
  • 汽车电子(52)
  • 编程技巧(465)
  • 程序宝典(476)
  • 网络酷文(472)
  • 开发工具(19)
  • 资料宝藏(274)
  • 项目管理(11)
  • 藏经宝阁(42)
  • 趣味设计(5)
  • 社区热贴(2)
  • 比尔盖茨熊专栏(0) 
  • 百宝信息

    载入中...

    百宝流量

    (2006-07-01开始)



    匠人手记

    点阵式液晶图形显示模块画图功能的实现(T6963C)
    程序匠人 发表于 2005-12-28 22:17:00  阅读全文 | 回复(0) | 引用通告 | 编辑

    点阵式液晶图形显示模块画图功能的实现(T6963C)
    来源:电子产品世界/赵伟杰 范蟠果
    核心器件: MPG240128A1-7T6963C


     点阵式液晶显示模块相对于段码式LCD或LED的区别在于不仅它可以显示字符,更重要的是可以画图。在很多的测试类设备中,需要设备能够实时的显示曲线以判断被测设备的工作状况,如果采用先保存数据然后送给上位机处理,会加重成本,而且很不方便,而采用段码式LCD或LED显然不能胜任,用点阵式图形液晶显示器可以方便的实现这些功能。

     本文介绍的点阵式液晶显示模块是信利公司的MPG240128A1-7型,它的控制芯片是东芝公司的T6963C。

     模块的特点

     T6963C是点阵式液晶图形显示器,可以图形方式、字符方式、图形和字符合成方式显示,以及实现字符方式下的特征方式显示,还可以象CAD一样进行屏拷贝操作。本文中的液晶模块是240×128点阵。 硬件实现

     本液晶模块与MCU之间的数据传送可以通过串口方式,也可以通过并口方式来实现,图1是LCD模块与MCU80C196KC的并口方式下的接口图,其中:

     D0~D7与MCU的AD0~AD7相连,用来传送数据。

     C/D可以与MCU的低位地址线相连,本例是连接AD1,用它区分送给LCD控制器的是命令(Code)还是数据(Data)。 /RESET在本图中也与VCC电源相连,含义是不使用硬件复位。

     /RD和/WR分别连接MCU的读和写信号。

     /CE连接MCU的译码地址。

     VO是LCD需要的负电压。 关键步骤

     LCD初始化 

     LCD初始化包括设置显示图形区首地址,图形区宽度,显示开关设置。 

     图形区首地址:在点阵式液晶图形显示器中,LCD屏幕上的每个显示单元对应一个地址,从左上角开始,从左到右,从上到下。在图形显示方式下,显示单元的单位是1×8点阵(即一个字节),对应于240×128的屏幕,它有240×128×8=3840个显示单元,一屏的地址范围是0_3839。命令控制字是24H和42H。有关命令字请详细参阅T6963C使用手册。

     图形区宽度:它用来调整使用的有效显示窗口宽度,表示每行可有效显示的单元数。对于240×128的显示屏,最多每行有240/8=30个显示单元。命令控制字是43H。

     显示开关设置是将相应的显示方式打开,例如要显示图形,则将图形方式控制位置1。命令控制字是98H。图2是初始化流程图。

     屏读指令

     要画出需要的图形,则必须知道图形每个点的坐标值,显然画图要按点控制。我们知道控制器的显示单元是1×8点阵,也就是一次只能画一行8个点。这似乎有矛盾,但T6963C控制器提供了屏读指令,它可以将当前地址所指向的显示单元的值读到控制器的缓冲区,我们再通过数据总线读到MCU,这样我们把将要写入每个单元的值与原来的值相或,那么既不会破坏原来的值,又可以将新值写入,以实现我们所需要的按点控制的方式。屏读命令控制字是E0H。

     软件实现

     我们以正弦波为例说明具体画图过程。

     在LCD屏幕上画正弦波,我们可以事先按一定采样率算出相应的点值。然后转换为LCD屏幕上点的坐标值,因为这样可以很直观地控制将要给相应位置显示的信息。以240×128的屏幕为例,它的标范围是纵坐标0_127,横坐标0~29。要在240×128的屏幕上画两个完整的正弦波,幅值为30(纵向30个点),每个周期采样45个点,并带有横坐标和纵坐标。构造正弦波表格:

     TABLE_SIN[45]={ 0,4,8,12,16,19,22,25,27,29,30,30,30,29,28,26,24,21,18,14,10,6,2,-2,-6,-10,-14,-18,-21,-24,-26,-28,-29, -30,-30,-30,-29,-27,-25,-22,-19,-16,-12,-8, -4,0}

     因为画图的显示单元是1×8,一次画一个点,故画图时写入代码值是80H,40H,20H,10H,08H,04H,02H,01H,并且还要将正弦波的值转换为这几个值中的的一个,构造码值表格TABLE_DOT[8]={0x80,0x40,0x20,0x10,0x08,0x04,x02,0x01}。

     下面介绍坐标转换过程:

     正弦波的幅值代表的是它离横坐标的距离。假设原点在LCD屏幕上的坐标值是(1,60),则将第i个点幅值转换为纵坐标的值是60-TABLE_SIN[i],它的横坐标是i/8的商数,代码值是TABLE_DOT[i/8的余数],这样我们调用画图程序就可以实现画正弦波。下面是具体画图的几个主要函数。

     在主程序中有以下调用语句:

    for(i=10;i<110;i++)/画横坐标

     graphic(0x80,2,i);

     for(i=1;i<29;i++)/画纵坐标

     graphic(0x0ff,i,64);

     for(i=0;i<118;i++)/画正弦波

     graphic(TABLE_DOT[i%8],2+i/8,64-TABLE_SIN[i]);

     下面是屏读函数,读出给出缓冲区地址的值,并返回结果:

     unsigned char pindu(x,y)

     unsigned char x,y;{

     unsigned char value;

     w2d(x,y,0x24);

     wd(0x0e0);

     value=r1d();/从LCD缓冲区读数据

     return value;

     }

     下面是在屏幕上画一个点的画点函数:

     void graphic(code,x,y)

     unsigned char code,x,y;/x坐标0~29

     { unsigned int xy;/坐标变换中间变量

     unsigned char oo,code1;

     /计算显示RAM地址

     xy=y*30+x;/240为液晶屏一行显示的字符数

     x=xy%256;

     y=8+xy/256;/图形缓冲区在高地址

     w2d(x,y,0x24);/写入LCD

     code1=pindu(x,y);

     code=code1;

     w1d(code,0x0c0);写入LCD}

     变量说明读者可以根据使用情况判断,函数r1d(),w2d(),w1d()分别是从LCD缓冲区读一个值,给缓冲区写两个数,写一个数函数。

     笔者在给长庆油田开发的双参数测井仪设备中,采用了本液晶模块,里面需要画两个图形,一个是要测出抽油杆油梁的受力情况,根据画出图形判断油梁是否工作正常,另一个是画出微音传感器采样的声波波形来判断油井的大概深度。整个仪器小巧方便(重量只有2公斤),具有很强的实用性。

    看《匠人手记》,与匠人同行!北航出版,正在热卖!

    发表评论:
    载入中...

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    器件检测
    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    指令系统
    软件算法
    编程规范
    滤波算法
    串行通讯

    PCB设计
    I2C PWM
    红外遥控
    充电技术
    中断 ADC 

    匠人手记
    匠人夜话
    网络心路
    一周热点串烧
    从零开始玩PIC
    DIY旋转时钟

    广告5号位 [投放]


    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    站内搜索


    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     
     

    新鲜货色

    匠人手记

    近期动态

    载入中...

      《匠人手记》购书全攻略 
     书友近况:淘书手记答疑与讨论:什么是散转程序 
     《匠人手记》新书艳照
     EDN《匠人手记》签名售书优惠活动开始报名啦!
     欢迎加入《匠人手记》EDN书友会
     欢迎加入《匠人手记》书友会Q群
     《匠人手记》终稿目录
     《匠人手记》封面,请大家先睹为快
     上周六收到了北航寄来的《匠人手记》清样,让大家先睹为快

    匠人原创

    粉丝评论

    往日酷贴

    载入中...

    载入中...



     网络酷文:博客,改变的不仅仅是图书 
     网络酷文:C语言宏定义技巧C语言 条件编译详解

      21IC上海2008-04聚会报名进行中。。。 
     两分钟让你明白什么是ERP![转]
      神奇的Duff's Device 算法
      实用一线通讯电路及软件设计方法
      程序员的“七年之痒”
      史上最短但最精彩的武侠小说
      网络无厘头文学《缺钙水浒》(爆笑)

     你的博客还能持续多久(转贴)
     电动车无刷电机控制器软件设计要点(作者:谢渊斌)

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!