?? disp.c
字號:
/*
Disp.c
數碼管掃描顯示驅動程序
*/
#include "reg51.h"
#include "absacc.h"
#include <Disp.h>
//定義顯示緩沖區(由定時中斷程序自動掃描)
unsigned char DispBuf[8];
/*
函數:T1INTSVC()
功能:定時器T1的中斷服務函數
*/
void T1INTSVC() interrupt 3
{
code unsigned char com[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
static unsigned char n = 0;
TR1 = 0;
TH1 = 0xFC;
TL1 = 0x66;
TR1 = 1;
P1 = 0xFF; //暫停顯示
XBYTE[0xE800] = ~DispBuf[n]; //更新掃描數據
P1 = ~com[n]; //重新顯示
n++;
n &= 0x07;
}
/*
函數:DispClear()
功能:清除數碼管的所有顯示
*/
void DispClear()
{
unsigned char i;
for ( i=0; i<8; i++ )
{
DispBuf[i] = 0x00;
}
}
/*
函數:DispChar()
功能:在數碼管上顯示字符
參數:
x:數碼管的坐標位置(0~7)
c:要顯示的字符(僅限十進制數字和減號)
*/
void DispChar(unsigned char x, unsigned char c)
{
//0123456789的數碼管字型數據
code unsigned char Tab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
x &= 0x07;
x = 7 - x;
if ( c == '-' )
{
DispBuf[x] = 0x40;
}
else if ( ( c >= '0' ) && ( c <= '9' ) )
{
DispBuf[x] = Tab[c-'0'];
}
}
/*
函數:DispStr()
功能:在數碼管上顯示字符串
參數:
x:數碼管的坐標位置(0~7)
*s:要顯示的字符串(字符僅限十進制數字和減號)
*/
void DispStr(unsigned char x, unsigned char *s)
{
unsigned char c;
for (;;)
{
c = *s;
if ( c == '\0' ) break;
s++;
DispChar(x,c);
x++;
}
}
/*
函數:DispDotOn()
功能:顯示指定位的小數點
參數:x為數碼管坐標
*/
void DispDotOn(unsigned char x)
{
DispBuf[7-x] |= 0x80;
}
/*
函數:DispInit()
功能:數碼管掃描顯示初始化
*/
void DispInit()
{
DispClear();
EA = 0;
TMOD &= 0x0F;
TMOD |= 0x10;
TH1 = 0xFC;
TL1 = 0x66;
TR1 = 1;
ET1 = 1;
EA = 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -