📄 led.c
字号:
/**********************************************************************
* 文件名: led.c *
* 功能:数码管上相关功能的实现 *
**********************************************************************/
#define NEED_LED_PROTOCOL
#ifdef NEED_LED_PROTOCOL
/************************************************
*Header file segment *
***********************************************/
#include "at89x52.h"
#include "LED.h"
#include "DATATYPE.h"
/************************************************
*Globale variable segment *
***********************************************/
uchar key_number[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar display_bit[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
uchar ptr_bit = 0;
uchar buffer_dis[8]; //缓冲数组
/************************************************
*Function definition segment *
***********************************************/
/*******************************************************
名称: 输入模块
功能: 将要显示的数按位分解成单独的数,送到各自对应的缓冲区
参数: long disdata
返回值:无
*******************************************************/
void LedPrint(long disdata) // 扫描函数
{
int count = 7, move_count = 0;
while(count >= 0 )
{
buffer_dis[count] = key_number[(disdata>>move_count)&0x0F];
count --;
move_count += 4;
}
}
/*******************************************************
名称: 输出模块
功能: 将显示缓冲区的数输显示在数码管上
参数: 无
返回值:无
*******************************************************/
void LedScan(void) //显示函数
{
if(ptr_bit < 0x08)
{
P1 = display_bit[ptr_bit];
P0 = buffer_dis[ptr_bit];
ptr_bit ++;
}
else
ptr_bit = 0;
}
#endif
/******************************************************************************
* End of Entire File *
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -