找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4593|回复: 2
打印 上一主题 下一主题
收起左侧

[求助]关于dtled 控制数码管的问题

[复制链接]
跳转到指定楼层
楼主
ID:4788 发表于 2010-9-25 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大家好,我刚开始学习单片机,看的是郭天祥的视频教程。里面讲到数码管的课程比较能够理解。但是本

 

 

人买了套学习板型号是YM-100的,里面的数码管用到的是DTLED来控制的。一直琢磨但还是看的稀里糊涂的。 

以下这个是光盘里面附带的程序,请大虾们帮忙分析一下。并帮忙写个从0到100递增的程序。谢谢

 

 


#include"reg51.h"
#include"intrins.h"
#define  uchar unsigned char  
#define  uint  unsigned int
#define  nop  _nop_()           /* 定义空操作指令 */
sbit en =P1^7;      /*DTLED-6显示芯片使能端*/ 
sbit dout=P1^6;      /*DTLED-6显示芯片数据读入端*/
sbit clk=P1^3;      /*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
uchar dispbuf[9];     /*显示值存放阵列*/
void delay (uint value)     /*延时副程式*/
{
      while (value!=0) value--;    /*10US延时*/
}

/*********************************************************************/

//串行发送DTLED-6显示
//dispbuf0-dispbuf1-dispbuf2-dispbuf3-dispbuf4-dispbuf5-dispbuf6-dispbuf7-dispbuf8
// 小数点 - 数码管1- 数码管2- 数码管3- 数码管4- 数码管5- 数码管6-ID识别码-BZ识别码
//00000xxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx
//小数点=1~6,其它为不显示             
//数码管1-6=0~15,
//ID识别码=0~15   
//BZ识别码=BZ.3为蜂鸣输出控制位,0=关闭,1=打开
//     BZ0~2为蜂鸣频率输出设定为,000=不分频,  最高频率输出=4800Hz;
//             001=一次分频,频率输出=4800/ 2 =2400Hz;
//             010=二次分频,频率输出=4800/ 4 =1200Hz;
//          011=三次分频,频率输出=4800/ 8 =600Hz;
//             100=四次分频,频率输出=4800/ 16=300Hz;
//             101=五次分频,频率输出=4800/ 32=150Hz;
//             110=六次分频,频率输出=4800/ 64=75Hz;    
//             111=七次分频,频率输出=4800/128=38Hz;      
//======================================================================
void tsled(void)     /*串行发送DTLED-6显示副程式*/ 
{   
 char ts0,i,j;
 clk=0;
 en=0;
 delay(10);
 for(j=0;j<9;j++)
   { ts0=dispbuf[j];
  for(i=0;i<4;i++)   /*发小数点码8,4,2,1*/
  {
    clk=1;
   ts0=ts0<<1; 
   if(AC==1) dout=1;
   else      dout=0;
   clk=0;
   nop;
   delay(3);
  }
    }  
 en=1;
}       /*返回主程式*/

void main(void)
{
 uchar i,j,dat=0;
  dispbuf[7]=0x01;    /*ID号码*/
 dispbuf[8]=0x00;    /*蜂鸣器关闭*/
 while(1)
  {
   for(i=1;i<=6;i++)
    {
      dispbuf[0]=i;   /*小数点位显示*/
      tsled();
      delay(50000);
   }
  dispbuf[0]=0x00;           /*关闭小数点位显示*/
   for(i=0;i<3;i++)           /*数据显示*/
     for(j=1;j<=6;j++)
      {
        dispbuf[j]=dat++;
        tsled();
        delay(50000);
       }
   }
 }

 


 
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:4788 发表于 2010-9-25 23:22 | 只看该作者
不知道怎么贴图,只好上传两个原理图和芯片图

回复

使用道具 举报

板凳
ID:15441 发表于 2010-10-2 09:53 | 只看该作者

你好 我也是初学的 想和你交个朋友

我的qq745591666

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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