📄 display.c
字号:
/****************显示子程序*********************
**本文件实现数码管的动态显示
**动态显示的控制由移位寄存器74164完成
**端口定义参见PORT.H
***********************************************/
#include "port.h"
#include "main.h"
#include "display.h"
static uint8 ORDER; //存储笔段码
void display_initial(void)
{
//设置输出口方向
TrDispBitData=0;
TrDispBitClk=0;
TrDispWordData=0;
TrDispWordClk=0;
Tr_OutPut=0;
//显示缓冲区赋初值
for(dispCtr=0;dispCtr<con_Disp_Bit;dispCtr++)
{
dispBuf[dispCtr]=TableNum[0];
}
dispCtr=con_Disp_Bit-1; //显示循环控制变量赋初值
}
/*************************显示子程序***********************
/*入口:待显示数据的笔段码存入全局变量dispBuf[con_Disp_Bit]
/*出口:无
/*调用函数:无
/*占用资源:全局变量dispBuf[con_Disp_Bit]
/* 本单元变量ORDER-位码寄存器
/* dispCtr-显示循环控制变量
/*********************************************************/
void display(void)
{
static uint8 codeCtr; //笔段码循环控制
//点亮数码管
if(dispCtr==con_Disp_Bit-1) //判断是否是点亮第一个数码管
{
DispBitClk=0;
dispCtr=0; //显示循环控制变量赋初值
DispBitData=0; //位码管脚=0
DispBitClk=1; //给出脉冲点亮第一个数码管
}
else //不是点亮下一个数码管
{
DispBitClk=0;
dispCtr++; //显示位数加1
DispBitData=1; //位码管脚=1
DispBitClk=1; //给出脉冲,循环点亮
}
//显示笔段码
ORDER=dispBuf[dispCtr]; //笔段码赋值给ORDER
for(codeCtr=8;codeCtr!=0;codeCtr--)
{
DispWordClk=0;
if(chkbit(ORDER,(codeCtr-1))==0)
{
DispWordData=0;
}
else
{
DispWordData=1;
}
DispWordClk=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -