大家好,我刚开始学习单片机,看的是郭天祥的视频教程。里面讲到数码管的课程比较能够理解。但是本
人买了套学习板型号是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); } } }
你好 我也是初学的 想和你交个朋友
我的qq745591666
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |