LNSJackie 发表于 2014-5-18 22:11:56

51点亮段式LCD程序

请问各位大虾谁有基于AT80S52驱动段式LCD的程序?最近在做这样的项目,请指教下。

and001 发表于 2014-5-18 22:53:41

好象不可以吧!应该要加驱动IC才行

LearningASM 发表于 2014-5-18 23:25:26

多少伏电压的LCD?
——如果楼主用5V电源,那就驱动5V的LCD
偏压是1/2还是1/3?
——偏压是1/2的可以直接去找STC的datasheet看一下,里面有驱动LCD的教程

lcw_swust 发表于 2014-5-19 10:22:41

http://www.amobbs.com/forum.php?mod=viewthread&tid=739682&highlight=48%2B%E6%AE%B5%E5%BC%8F

LNSJackie 发表于 2014-5-19 16:27:07

LearningASM 发表于 2014-5-18 23:25
多少伏电压的LCD?
——如果楼主用5V电源,那就驱动5V的LCD
偏压是1/2还是1/3?


5v的10位7段数码液晶

LearningASM 发表于 2014-5-19 17:48:56

LNSJackie 发表于 2014-5-19 16:27
5v的10位7段数码液晶

你这里有70段,为什么不用LCD的驱动IC?比如HT1621

mcu5i51 发表于 2014-5-19 17:53:46

坛子里找,好像STC网站也有

ilikemcu 发表于 2014-5-19 18:24:25

楼主可以选择台湾中颖的SH79F166A做,51的1T核,最高内置频率12MHZ,16KB的flash代码空间,512B的RAM,当然有4*19的LCD驱动,正好适合你的应用,TQFP44封装,无需再用HT1621了,焊接操作也方便。

LNSJackie 发表于 2014-6-3 12:00:22

#include "reg52.h"
#defineuchar unsigned char
#defineuint unsigned int
#definexchar unsigned char code

#define RELOADVALH 0x3C
#define RELOADVALL 0xB0

sbit clk=P3^1;
sbit da=P3^3;
sbit ld=P3^4;
sbit lclk=P3^2;

xchar map[]=
{0xd0,0xed,0xf9,0xf2,0xbb,0xbf,0xd1,0xff,0xfb,0xdf};



void delay(uint s)
{
    uint m;
    for(m=0;m<s;m++)
    { }
}


void delayms(uint nnn)
{
    uint mmm;
    while(nnn-->0)
    for(mmm=0;mmm<1000;mmm++)
    { }
}

void dat(uchar a)
{uchar i;
for(i=0;i<8;i++)
{if (a&0x01) da=1;
else da=0;
clk=0;
clk=1;
a>>=1;}
}



void whole(uchar z)
{uchar i;
for(i=0;i<10;i++)
dat(z);
ld=0;
ld=1;
delay(2);
ld=0;
}

void timer0(void) interrupt 1
{
TR0=0; // 停止定时器0
TH0=RELOADVALH; // 20ms后溢出
TL0=RELOADVALL;
TR0=1; // 启动 T0
lclk=~lclk;
}

void main()
{
uchar *mp;
uchar i;

delayms(10);

TMOD=0x11;
TCON=0x15;
IE=0x82;

while(1)
{
mp=map;
for(i=0;i<10;i++)
{whole(*mp++);
delayms(25);}



}
}
求高手详细解释下这个程序的map[]、定时和主函数的部分。看不懂

limuzi2012 发表于 2014-9-12 15:28:36

这里是PIC哦,注意三态点就行了

ruanxianwu 发表于 2014-9-12 15:33:17


这里是PIC哦,注意三态点就行了
页: [1]
查看完整版本: 51点亮段式LCD程序