我是初学者,大家帮我看看我想用AT89C52通过MAX7219驱动8x8点阵的程序哪里错了怎么改? 250

}}//-------------------------------------------//功能:向MAX7219写入数据//入口参数:address、dat//出... } }//-------------------------------------------//功能:向 MAX7219 写入数据//入口参数:address、dat//出口参数:无//说明:void Write_Max7219(uchar address,uchar dat){Max7219_pinCS=0;Write_Max7219_byte(address); //写入地址,即数码管编号Write_Max7219_byte(dat); //写入数据,即数码管显示数字Max7219_pinCS=1;}void Init_MAX7219(void){Write_Max7219(0x09, 0x00); //译码方式:BCD 码Write_Max7219(0x0a, 0x07); //亮度Write_Max7219(0x0b, 0x07); //扫描界限;8 个数码管显示Write_Max7219(0x0c, 0x01); //掉电模式:0,普通模式:1Write_Max7219(0x0f, 0x00); //显示测试:1;测试结束,正常显示:0}void main(void){uchar i,j;Delay_xms(50);Init_MAX7219();while(1){for(j=0;j<10;j++){for(i=1;i<9;i++)Write_Max7219(i,disp1[j][i-1]);Delay_xms(1000);} } }
warning L1: unresolved external symbol
symbol: ?c_start
module: startup.obj(?c_startup)
warning L2: reference made to unresolved external
symbol: ?c_start
module: startup.obj(?c_startup)
address: OOOD
展开
 我来答
帐号已注销
2017-01-05 · TA获得超过2062个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:342万
展开全部
  亲,嗮出来的程序不够全哦,不过既然用MAX7219,那么对它的通信部分则都是一样的

  MAX7219 除了电源两根线之外,还需要三根信号线连接至单片机

  1、使能,即用来控制MAX7219是否允许写入数据的
  2、时钟、每更换一位字节数据则需要输出一个脉冲,作为时钟信号
  3、数据、在脉冲有效状态下传送数据,此数据是二进制位传递,非0即1

  只要对MAX7219的数据传输摆弄明白,那么久可以随意控制MAX7219驱动的电子元件了,数码管也好,LED点阵也罢,都在掌握之内

  MAX7219在进行通信的时候,是需要先送地址再送数据的,就是说要传递一个数据,就要进行两次通信

  打个比方,例如想把鞋子收起来,然而鞋柜却很多,那么收起鞋子的步骤只能是 先确定要放在哪里,然后再将鞋子放进去,所以MAX7219的通信原理就是这么简单

  话不多说,贴出个经过硬件测试通过的程序出来,供大家参考!

  这是一个利用一片MAX7219的八位数码管显示模块,程序中只是为了试验,所以只显示固定数字12-34-56,程序中的星号是各个函数之间区分用的,可以删除

  #include <REG52.h> //通用89C52头文件
  sbit DN=P3^7; sbit CS=P3^6; sbit CL=P3^5;//MAX7219 端口定义
  void MaxINT(void); void Max(char Xi,char Yi); void MaxR(char ch);// Max7219
  void XSa(void);
  /***************************************************************************/
  void main(void)//主函数
  {
  MaxINT(); // MAX7219初始化

  while(1)
  {
  XSa(); //数据显示
  }
  }
  /***************************************************************************/
  void XSa(void)//显示时钟数据
  {
  Max(1,6); Max(2,5); Max(3,0x0a);
  Max(4,4); Max(5,3); Max(6,0x0a);
  Max(7,2); Max(8,1);
  }
  /***************************************************************************/
  void MaxINT(void)// MAX7219初始化
  {
  Max(0x0b,0x07);// 设置扫描界限
  Max(0x09,0xff);// 设置译码模式
  Max(0x0a,0x0a);// 设置亮度
  Max(0x0c,0x01);// 设置工作模式
  }
  /***************************************************************************/
  void Max(char Xi,char Yi)// Max7219 数据写入 主函数
  {CS=0;MaxR(Xi);MaxR(Yi);CS=1;}
  /***************************************************************************/
  void MaxR(char ch)// Max7219 数据写入 子函数
  {
  char m,temp;
  for (m=0;m<8;m++)
  {
  temp=ch&0x80; ch=ch<<1;
  if(temp){DN=1;CL=0;CL=1;}
  else{DN=0;CL=0;CL=1;}
  }
  }
tony_sgt
2017-01-05 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1225万
展开全部
错误在哪里?把错误列出来
追问
麻烦看下问题补充
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式