大家好,我剛開始學習單片機,看的是郭天祥的視頻教程。里面講到數碼管的課程比較能夠理解。但是本
人買了套學習板型號是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);
}
}
}
|