⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 89C52的键盘扫描LED显示及串口程序。 用Keil C51开发。用通用实验板调试通过。
💻 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 + -