搜索
bottom↓
回复: 26

段式LCD驱动

[复制链接]

出0入0汤圆

发表于 2012-8-23 16:37:50 | 显示全部楼层 |阅读模式
各位大侠:

谁能讲讲内置LCD驱动的单片机如何驱动段式LCD。
最好能有实例工参考。
在线等万分感谢。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-8-23 23:33:40 来自手机 | 显示全部楼层
能不能把问题描述清楚?

出0入0汤圆

发表于 2012-8-24 10:23:25 | 显示全部楼层
内置还不简单,设置一下寄存器,往显示RAM填数据就OK了

出0入0汤圆

发表于 2012-8-24 10:33:37 | 显示全部楼层
下载一份带LCD的PIC单片机datasheet,有详细解释,
另外再下载一份《PIC中档单片机参考手册》,有更详细的说明!

出0入0汤圆

 楼主| 发表于 2012-8-25 13:09:28 | 显示全部楼层
duci002 发表于 2012-8-24 10:33
下载一份带LCD的PIC单片机datasheet,有详细解释,
另外再下载一份《PIC中档单片机参考手册》,有更详细的 ...

大哥,我用51的。

出0入0汤圆

 楼主| 发表于 2012-8-25 13:11:59 | 显示全部楼层
我想用内置LCD驱动的单片机直接驱动附件中的LCD,请各位大侠指点一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-8-25 13:29:54 | 显示全部楼层
本帖最后由 eaglelpx 于 2012-8-25 13:30 编辑

我也在搞,直接驱动电路参考论坛中那个,M8搞得,不错的

出0入0汤圆

发表于 2012-8-25 22:15:59 | 显示全部楼层
我用51直接驱动的~~~~~~~~~~~

出0入0汤圆

发表于 2012-8-29 11:22:58 | 显示全部楼层
用单片机内置LCD驱动器的话,要看什么单片机了,不过基本步骤应该都一样,设置I/O口工作模式、寄存器,然后抛数据就可以了!至于怎么设置,就要看单片机的手册了! 我前段时间用中颖的SH79F 166A 驱起来一个!
如果说想要用 I/O口直接驱动LCD的话,对液晶本身的参数是有要求的,映像中,好像LCD的占空比要是 1/2,驱动电压要和你I/O口电压一样! 此项,仅供参考!

出0入0汤圆

 楼主| 发表于 2012-8-31 08:32:57 | 显示全部楼层
hengjng_t 发表于 2012-8-29 11:22
用单片机内置LCD驱动器的话,要看什么单片机了,不过基本步骤应该都一样,设置I/O口工作模式、寄存器,然后 ...

谢谢,这段时间又要忙了,回头慢慢搞。

出0入0汤圆

发表于 2012-8-31 09:02:40 | 显示全部楼层
不用专门的驱动芯片的话,那么就要直接用I/O口驱动了。根据断式液晶的特性,不能采用数码管的方法驱动,需要“交流”。什么叫段式液晶的“交流”呢,别人告诉我的,就是在一段(6楼图片中的A段吧)的两端都接上I/O口,设置单片机的端口为P1.0和P1.1,在两个端口之间一会儿左,一会儿右,这就是“交流”。

杜洋在《无线电》杂志上有文章发表,我看过,表述不清,你可以去书店翻一下就知道了。好像现在《无线电》有电子版本。

出0入0汤圆

发表于 2012-9-26 16:35:36 | 显示全部楼层
lxa0 发表于 2012-8-25 22:15
我用51直接驱动的~~~~~~~~~~~

你是用51直接驱动段式液晶的吗
,可以请教一下你吗

出0入0汤圆

发表于 2012-9-27 13:08:39 | 显示全部楼层
STC手册上就有例子 STC12C5A60S2新版的

出0入0汤圆

发表于 2012-9-27 13:23:21 | 显示全部楼层
找到要用的MCU关于LCD驱动那章,把那章全部的寄存器描述都看看,重点在频率,电压参数设置;不愿看硬件图的话,就在对应LCD RAM里,一个一个位去置高,看对应哪划亮了,再记录。

出0入0汤圆

 楼主| 发表于 2012-9-28 10:54:22 | 显示全部楼层
dgdzas 发表于 2012-9-27 13:23
找到要用的MCU关于LCD驱动那章,把那章全部的寄存器描述都看看,重点在频率,电压参数设置;不愿看硬件图的 ...

谢谢,准备买一块带LCD驱动的单片机研究研究

出0入0汤圆

发表于 2012-9-28 11:43:51 | 显示全部楼层
horalxi 发表于 2012-8-25 13:11
我想用内置LCD驱动的单片机直接驱动附件中的LCD,请各位大侠指点一下。

这么简单,直接用IO驱动就可以。

出0入0汤圆

发表于 2012-9-28 14:17:03 | 显示全部楼层
//STC单片机控制HT1621B驱动LCD
#include"STC12C5A60S2.h"
#include"stdio.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int


#define BIAS     0X52   //1/3偏压,4背极        0x50 1/2偏压,
#define RC256K   0X30   //系统时钟选择为片内RC振荡器
#define WDTDIS1  0X0A   //禁止WDT溢出标志输出
#define TIMERDIS 0X08   //时基输出禁止
#define SYSEN    0X02   //打开系统时钟
#define SYSDIS   0X00   //关闭系统时钟和偏压发生器
#define LCDON    0X06   //打开LCD偏压发生器
#define LCDOFF   0X04   //关闭LCD偏压发生器
#define TONEON   0X12   //打开音频输出
#define TONEOFF  0X10   //关闭音频输出  

//HT1621控制位(液晶模块接口定义,根据自已的需要更改)
sbit HT1621_DAT=P1^4; //HT1621数据引脚
sbit HT1621_CS=P1^5;  //HT1621使能引脚
sbit HT1621_WR=P1^6;  //HT1621时钟引脚

//HT1621段地址
#define    LCD_1     4    //①  
#define    LCD_2     5    //②  
#define    LCD_3     6    //③
#define    LCD_4     7           //④
#define    LCD_T4    8           //T4
#define    LCD_T1    9           //T1
#define    LCD_T2   10           //T2
#define    LCD_T3   11           //T3
#define    LCD_T5   16           //T5
#define    LCD_1B   17           //数码管1
#define    LCD_1G   18
#define    LCD_1C   19
#define    LCD_1A   21
#define    LCD_1F   22
#define    LCD_1E   23
#define    LCD_1D   24
#define    LCD_NSZ  25          //逆时针箭头
#define    LCD_2B   26          //数码管2
#define    LCD_2G   27
#define    LCD_2C   28
#define    LCD_2A   29
#define    LCD_2F   30
#define    LCD_2E   31
#define    LCD_2D   32
#define    LCD_TPD  33          //TPD
#define    LCD_3B   34          //数码管3
#define    LCD_3G   35
#define    LCD_3C   36
#define    LCD_3A   37
#define    LCD_3F   38
#define    LCD_3E   39
#define    LCD_3D   40
#define    LCD_SSZ  41          //顺时针箭头
#define    LCD_4B   42          //数码管4
#define    LCD_4G   43
#define    LCD_4C   44
#define    LCD_4A   45
#define    LCD_4F   46
#define    LCD_4E   47
#define    LCD_4D   48
#define    LCD_LINE 49          //LINE
#define    LCD_5B   50          //数码管5
#define    LCD_5G   51
#define    LCD_5C   52
#define    LCD_5A   53
#define    LCD_5F   54
#define    LCD_5E   55
#define    LCD_5D   56


//unsigned char data LCD_clear[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

//unsigned char data LED_smg0[]={0xFA,0x0A,0xD6,0x9E,0x2E,0xBC,0xFC,0x1A,0xFE,0xBE,0xFF,0x00}; //时针标志0 不显示
                                                  //    0         1          2           3        4          5          6           7         8         9    on   off
//unsigned char data LED_smg[]={0xFB,0x0B,0xD7,0x9F,0x2F,0xBD,0xFD,0x1B,0xFF,0xBF,0xFF,0x00};  //时针标志1  显示
                                                  //            0         1          2           3        4         5          6           7        8         9   on   off

//unsigned char data LED_smg1[]={0x00,0x10,0x20,0x40,0x80,0x02,0x06,0x0e,0x0f,0xff};
                                                   //   off  ①    ②   ③   ④   T1   T2   T3   T4         on  

/*
void delay(uchar i)   //j=12延时约4.3us               
{
        while(i--)
        {
                uchar j=0;
                while(j<8)
                j++;
        }
}        */
/*
void delay(uchar z)   //1us               
{
        unsigned int x,y;
          for(x=z;x>0;x--)
                for(y=6;y>0;y--);
}        */

void delay(unsigned int n)  // STC 1T系列单片机  1.25us      
{
    while(n--);  
}

void Delayms(unsigned int z) //STC 1T系列单片机  24MHZ z=1时精确延时1ms
{      
    unsigned int x,y;
          for(x=z;x>0;x--)
                for(y=1850;y>0;y--);       
}

/******************************************************
  SendBit_1621(送数据程序)
*******************************************************/
void SendBit_1621(uchar dat ,uchar cnt)         //data 的高cnt 位写入HT1621,高位在前
{
        uchar i;
        for(i =0; i <cnt; i ++)
        {
           if((dat&0x80)==0)  HT1621_DAT=0;
           else  HT1621_DAT=1;
           HT1621_WR=0;
           delay(5);            
           HT1621_WR=1;
           delay(5);  //需加延迟 否则4.6V以下显示不了
           dat=dat<<1;
        }
}

/******************************************************
写数据函数,cnt为传送数据位数,数据传送为低位在前
*******************************************************/
void SendDataBit_1621(uchar dat,uchar cnt)
{
        uchar i;
        for(i =0; i <cnt; i ++)
        {
           if((dat&0x01)==0) HT1621_DAT=0;
           else HT1621_DAT=1;
           HT1621_WR=0;
           delay(5);
           HT1621_WR=1;
           delay(5);  //需加延迟 否则4.6V以下显示不了
           dat=dat>>1;
        }
}

/********************************************************
函数名称:void SendCmd(uchar command)
功能描述: HT1621命令写入函数
参数说明:Cmd为写入命令数据
返回说明:无
说    明:写入命令标识位100
********************************************************/
void SendCmd(uchar command)
{
        HT1621_CS=0;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

        SendBit_1621(0x80,4);          //写入命令标志100
        SendBit_1621(command,8); //写入命令数据
        HT1621_CS=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}

/********************************************************
函数名称:void Write_1621(uchar addr,uchar dat)
功能描述: HT1621在指定地址写入数据函数
参数说明:Addr为写入初始地址,Data为写入数据
返回说明:无
说    明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
********************************************************/

void Write_1621(uchar addr,uchar dat)
{
        HT1621_CS=0;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
       
        SendBit_1621(0xa0,3);    //写入数据标志101
        SendBit_1621(addr,6);          //写入地址数据
        SendDataBit_1621(dat,4); //写入数据
        HT1621_CS=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
       
}

/********************************************************
函数名称:void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
功能描述: HT1621连续写入方式函数
参数说明:Addr为写入初始地址,*p为连续写入数据指针, cnt为写入数据总数
返回说明:无
说    明:HT1621的数据位4位,此处每次数据为8位,写入数据总数按8位计算
********************************************************/
void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
        uchar i;
        HT1621_CS=0;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

        SendBit_1621(0xa0,3); //写入数据标志101
        SendBit_1621(addr,6); //写入地址数据
        for(i =0; i <cnt; i ++,p++)
        {
          SendDataBit_1621(*p,8);//写入数据
        }
        HT1621_CS=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}

/********************************************************
函数名称:void Ht1621_Init(void)
功能描述: HT1621初始化
返回说明:无
说    明:初始化后,液晶屏所有字段均显示
********************************************************/
void Ht1621_Init(void)
{
  HT1621_CS=1;
  HT1621_WR=1;
  HT1621_DAT=1;
  Delayms(1000);    //延时使LCD工作电压稳定
  SendCmd(BIAS);         //1/3偏压,4背极
  SendCmd(RC256K);  //使用内部振荡器
  SendCmd(SYSDIS);         //关闭系统时钟和偏压发生器
  SendCmd(WDTDIS1); //禁止WDT溢出标志输出
  SendCmd(SYSEN);         //打开系统时钟
  SendCmd(LCDON);         //打开LCD偏压发生器
}

出0入0汤圆

发表于 2012-9-28 14:36:42 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-9-28 14:43:13 | 显示全部楼层
S1  S2 当成为2位数码管的小数点  11 12 是不是搞反了啊 这样得编2个译码

出0入0汤圆

 楼主| 发表于 2012-9-29 10:04:31 | 显示全部楼层
yao1 发表于 2012-9-28 14:43
S1  S2 当成为2位数码管的小数点  11 12 是不是搞反了啊 这样得编2个译码 ...

是不合理,LCD厂做出来了才发现。

出0入0汤圆

发表于 2012-10-3 03:42:22 | 显示全部楼层
studyqu309 发表于 2012-9-26 16:35
你是用51直接驱动段式液晶的吗
,可以请教一下你吗

是的
请教不敢当
..........

出0入0汤圆

发表于 2013-3-6 19:26:17 | 显示全部楼层
请问LZ这个驱动现在做成怎样啦?

出0入0汤圆

发表于 2013-7-18 09:06:58 | 显示全部楼层
楼主可以参照论坛  圈圈大神的思路,,非常好

出0入0汤圆

发表于 2013-7-18 09:15:45 | 显示全部楼层
mark!!!!!!!

出0入0汤圆

发表于 2014-7-26 10:37:24 | 显示全部楼层
hengjng_t 发表于 2012-8-29 11:22
用单片机内置LCD驱动器的话,要看什么单片机了,不过基本步骤应该都一样,设置I/O口工作模式、寄存器,然后 ...

我也在用中颖的单片机来驱动段式液晶,SH79F6488,感觉配置寄存器不对,请问你调试出来了没?可以提供例程来看看吗?

出0入0汤圆

发表于 2014-11-6 00:15:29 | 显示全部楼层
studyqu309 发表于 2012-9-26 16:35
你是用51直接驱动段式液晶的吗
,可以请教一下你吗

当时试验的时候
直接用51驱动3位半的lcd
现在想起来
和你说的段式lcd还是有区别的

前几日偶得一电子秤上的lcd显示屏
见下图
正在搞呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-6 00:19:41 | 显示全部楼层
单片机模拟交流信号驱动
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表