📄 led.c
字号:
#include"at89x52.h"
#include<intrins.h>
#include"def.h"
extern void delay (unsigned int value);
sbit clk=P2^0; /*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
sbit dout=P2^1; /*DTLED-6显示芯片数据读入端*/
sbit en =P2^2; /*DTLED-6显示芯片使能端*/
//*********************************************************************/
//串行发送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 S_RL(void)
{
if (++disp_temp[0]>6)
{
disp_temp[0]=0;
dispbuf[6]=disp_temp[1];
}
else
{
if (disp_temp[0]!=1)dispbuf[disp_temp[0]-1]=disp_temp[1];
disp_temp[1]=dispbuf[disp_temp[0]];
dispbuf[disp_temp[0]]=0x0d;
}
}
void S_RR(void)
{
if (disp_temp[0]--==0)
{
disp_temp[0]=6;
disp_temp[1]=dispbuf[6];
}
else
{
dispbuf[disp_temp[0]+1]=disp_temp[1];
disp_temp[1]=dispbuf[disp_temp[0]];
}
if(disp_temp[0]!=0)dispbuf[disp_temp[0]]=0x0d;
}
/******************************************************/
void clear(void) /*清除显示器dispbuf[]为00副程式*/
{char c; /*宣告变数*/
for(c=1;c<7;c++) /*将00存入显示阵列dispbuf[]*/
{dispbuf[c]=0x00;
}
} /*返回上一层程式*/
/******************************************************/
/****************************************************/
void xch(void) /*显示向右移动副程式*/
{char c; /*宣告变数*/
for(c=6;c>0;c--)
{dispbuf[c]=dispbuf[c-1]; /*将显示器dispbuf[]移位交换,dispbuf[3]->dispbuf[4]->dispbuf[5]...*/
}
dispbuf[0]=0; /*有安键时,小数点不亮*/
dispbuf[1]=tab[ptr]; /*新的按键值存入dispbuf[1],最低位*/
} /*返回上一层程式*/
/****************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -