5168|11

9

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

液晶为什么不显示 [复制链接]

公司让我搞一个项目,没有办法,必需学单片机子,我刚刚学习单片机,想用1621驱动一个段式液晶,找了很多程序资料,也写了四天了,可就是不显示,请高手指点一下!看是我哪里出了问题,谢谢了!字段式的,用在计数上;


//1621引线:CS:PD4  WR:PD3  Data:PD2

#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define BIAS 0x52  //0b1000 0101 0010 1/3duty 4com
#define SYSDIS 0X00  //0b1000 0000 0000 关振系统荡器和LCD偏压发生器
#define SYSEN 0X02  //0b1000 0000 0010 打开系统振荡器
#define LCDOFF 0X04  //0b1000 0000 0100 关LCD偏压
#define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压
#define XTAL 0x28  //0b1000 0010 1000 外部接时钟
#define RC256 0X30  //0b1000 0011 0000 内部时钟
#define TONEON 0X12  //0b1000 0001 0010 打开声音输出
#define TONEOFF 0X10  //0b1000 0001 0000 关闭声音输出
#define WDTDIS 0X0A  //0b1000 0000 1010 禁止看门狗
flash uchar Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00};
flash uchar dis[]={0xb0,0xe0,0x00,0x60,0x70,0xc0,0x50,0xe0,
0xc0,0x60,0xd0,0xa0,0xf0,0xa0,0x00,0xe0,0xf0,0xe0,0xd0,0xe0};

void DelayMS(uint MS)   
{
uint i,j;
for( i=0;i for(j=0;j<570;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
}
void delayns(void)
{
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");
}
  
/******************************************************
写数据函数,cnt为传送数据位数,数据传送为低位在前
*******************************************************/
void Ht1621Wr_Data(uchar Data,uchar cnt)
{
uchar i;
for (i=0;i {
   if(Data&0x80==0)
      PORTD&=~BIT(2);
  else
      PORTD|=BIT(2);
  delayns();
  PORTD&=~BIT(3);
  delayns();
  PORTD|=BIT(3);
  Data=Data<<1;
/*PORTD3&=~BIT(3);
_Nop();
HT1621_DAT=Data&0x80;
_Nop();
HT1621_WR=1;
_Nop();
Data<<=1;*/
}
}
/********************************************************
函数名称:void Ht1621WrCmd(uchar Cmd)
功能描述: HT1621命令写入函数
全局变量:无
参数说明:Cmd为写入命令数据
返回说明:无
说明:写入命令标识位100
********************************************************/
void Ht1621WrCmd(uchar Cmd)
{
PORTD&=~BIT(4);
delayns();
Ht1621Wr_Data(0x80,4); //写入命令标志100
Ht1621Wr_Data(Cmd,8); //写入命令数据
PORTD|=BIT(4);
delayns();
}
/********************************************************
函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
功能描述: HT1621在指定地址写入数据函数
全局变量:无
参数说明:Addr为写入初始地址,Data为写入数据
返回说明:无
说明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
********************************************************/
void Ht1621WrOneData(uchar Addr,uchar Data)
{
PORTD&=~BIT(4);
Ht1621Wr_Data(0xa0,3); //写入数据标志101
Ht1621Wr_Data(Addr<<2,6); //写入地址数据
Ht1621Wr_Data(Data,4); //写入数据
PORTD|=BIT(4);
delayns();
}
/********************************************************
函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)
功能描述: HT1621连续写入方式函数
全局变量:无
参数说明:Addr为写入初始地址,*p为连续写入数据指针,
cnt为写入数据总数
返回说明:无
说明:HT1621的数据位4位,此处每次数据为8位,写入数据
总数按8位计算
********************************************************/
void Ht1621WrAllData(uchar Addr,uchar cnt)
{
uchar i,j=0;

PORTD&=~BIT(4);
Ht1621Wr_Data(0xa0,3); //写入数据标志101
Ht1621Wr_Data(Addr<<2,6); //写入地址数据
for (i=0;i {
Ht1621Wr_Data(Ht1621Tab[j],8); //写入数据
j++;
}
PORTD|=BIT(4);
delayns();
}
/********************************************************
函数名称:void Ht1621_Init(void)
功能描述: HT1621初始化
全局变量:无
参数说明:无
返回说明:无
说明:初始化后,液晶屏所有字段均显示
********************************************************/
void Ht1621_Init(void)
{
DDRD=0XFF;
PORTD|=BIT(4);
PORTD|=BIT(3);
PORTD|=BIT(2);
DelayMS(2000); //延时使LCD工作电压稳定
Ht1621WrCmd(BIAS);//0x52
Ht1621WrCmd(RC256); //使用内部振荡器 0X30
Ht1621WrCmd(SYSDIS);//0X00
Ht1621WrCmd(WDTDIS);//0X0A
Ht1621WrCmd(SYSEN);//0X02  
Ht1621WrCmd(LCDON);//0X06
}
void main()
{
uchar i,j,t,P=0;
Ht1621_Init(); //上电初始化LCD
DelayMS(1000); //延时一段时间
while(1)
{
Ht1621WrAllData(0,16);//清除1621寄存器数据,暨清屏
for (i=0;i<20;i++)
{
//t=0x01;
//for (j=0;j<4;j++)
//{
Ht1621WrOneData(i,dis);
//t<<=1;
//t++;
//P1_5=~P1_5;
DelayMS(5000);
//}
}
}
}
此帖出自单片机论坛

最新回复

如果硬件没问题,那就是你的时序有问题, 仿真看看LCD各个功能脚的时序对不对,另外要注意各个信号的保持时间要求  详情 回复 发表于 2010-2-3 11:20
点赞 关注
 

回复
举报

2749

帖子

0

TA的资源

裸片初长成(初级)

沙发
 
原帖由 wangwish123 于 2010-2-2 12:21 发表
公司让我搞一个项目,没有办法,必需学单片机子,我刚刚学习单片机,想用1621驱动一个段式液晶,找了很多程序资料,也写了四天了,可就是不显示,请高手指点一下!看是我哪里出了问题,谢谢了!字段式的,用在计数上 ...


没怎么认真看程序。
我试过延时不够,显示不了,看着时序图来弄才行。
此帖出自单片机论坛
 
 

回复

2770

帖子

0

TA的资源

裸片初长成(中级)

板凳
 
HT1621,合泰的芯片,当然,没时间给你一行一行瞅程序.建议用ICE打一下,查看下时序有没有写对,仔细检查下HT1621DATASHEET,至少要读5遍.
此帖出自单片机论坛
 
 
 

回复

159

帖子

0

TA的资源

一粒金砂(高级)

4
 

首先你要确定的是液晶显示模块的对比度要调整好

别已经能显示字了,但是因为对比度不合适你看不到。
此帖出自单片机论坛
 
个人签名*我的EMAIL:     sunke9@qq.com  
*我的博客http://blog.ednchina.com/sunke9/
*我网店:https://sunke9.taobao.com/
承接:电子、自动控制产品设计开发;单片机、ARM编程。
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

5
 
;P
此帖出自单片机论坛
 
 
 

回复

2954

帖子

0

TA的资源

纯净的硅(初级)

6
 

回复 4楼 SUNKE9 的帖子

不错的提示,楼主参考下。
此帖出自单片机论坛
 
个人签名不断地学习,才会有创新!
淘宝小店:手机、qq点卡、游戏点卡自动充值 http://shop63727265.taobao.com/
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

7
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
 
 

回复

391

帖子

0

TA的资源

纯净的硅(高级)

8
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

9
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

10
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

11
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 

回复

269

帖子

0

TA的资源

一粒金砂(中级)

12
 
查看本帖全部讨论,请登录或者注册
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表