3347|6

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教 单片机 LCD显示驱动 AT89c52 20分敬上!!! [复制链接]

//LCD显示屏幕驱动
//2009-5-6
//------------------------------

#include "AT89X52.H"

//通用常量
#define HIGH        1
#define LOW                0
#define TRUE        1
#define FALSE        0
#define ZERO        0
#define  MSB       0x80

//----------------
//Max7219
#define DECODE_MODE   0x09        //解码模式
#define INTENSITY     0x0A  //强度
#define SCAN_LIMIT    0x0B  
#define SHUT_DOWN     0x0C  //关机
#define DISPLAY_TEST  0x0F  //显示模式

//引脚定义
//-----------------------------------------------------------------------
sbit LOAD=P2^0; //MAX7219负载数据输入
sbit DIN=P2^1; //MAX7219串行数据输入
sbit CLK=P2^2; //MAX7219串行时钟输入

//函数定义
//-----------------------------------------------------------------------
void Write_Max7219_byte(unsigned char temp);//写入 max7219 一个字节
void Write_Max7219(unsigned char address,unsigned char dat);//写入 max7219 指令和数据
void Init_Max7219(void);//初始化 max7219

//测试 显示1~8
//-------------------------------------------------------------------------
void main(void)
{
unsigned char i;
Init_Max7219();  
while(1)
{  
  for(i=1;i<9;i++)
  {
   Write_Max7219(i,i);
  }
}
}

//------------------------------------------------------------------------
void Write_Max7219_byte(unsigned char temp)
{
unsigned char i;
for (i=0;i<8;i++)     
  {
   CLK=LOW;
     DIN=(bit)(temp&MSB);      
     temp<<=1;  
     CLK=HIGH;
   }
}
//------------------------------------------------------------------------
void Write_Max7219(unsigned char address,unsigned char dat)
{
LOAD=LOW;
   Write_Max7219_byte(address);
   Write_Max7219_byte(dat);
  LOAD=HIGH;                 
}

//--------------------------------------------------------------------------
void Init_Max7219(void)                 //初始化MAX7219
{
Write_Max7219(SHUT_DOWN, 0x01);       //正常运行0x01关机模式0x00
Write_Max7219(DISPLAY_TEST, 0x00);   //正常运行0x00显示测试模式0x01
Write_Max7219(DECODE_MODE, 0xff);   //解码模式设置 全部解码操作
Write_Max7219(SCAN_LIMIT, 0x07);   //扫描位数7位
Write_Max7219(INTENSITY, 0x04);   //设置亮度  0xX0~0xXf
}

最新回复

SPI接口吧。 for (i=0;i   详情 回复 发表于 2009-5-13 09:09
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
什么问题啊?
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不显示数据 在LCD显示屏上 大侠帮着改改哈
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
检查初始化:一般初始化对了有送数据都会有显示
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

5
 
有時候要在寫高寫低之間加上一點空操作延時, 如果晶體比較快的話.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
看一下时序图,一般都是延时函数的问题
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
SPI接口吧。
for (i=0;i <8;i++)   
  {
  CLK=LOW;
    DIN=(bit)(temp&MSB);      
    temp < <=1;  
    CLK=HIGH;
  }

CLK0->CLK1,之后是要保持一定时间的,而不是立即再次CLK0,以确保LCD内部准确的将数据读进去。这个看具体的时序图能理解。

最好别用Write来试。改一个Read来看看,能读出来一个寄存器值,就表示你的程序时序没问题了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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