[C] 纯文本查看 复制代码 /*
降龙棍~单位数码管_静态扫描最简单的案列
~74HC573,4位数码管接线在P0口,数码管采用共阴极
同步89开发板的时钟,这里为了与89开发板同步做实验统一用11.0592晶振
*/
#include <STC32G.H>
/*数码管段码表*/
unsigned char code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄灭
0x00 //自定义
};
void Delay500ms();
sbit DUAN = P2 ^ 6; // 定义段引脚
sbit WEI =P2^7; //定义位引脚
void main()
{
int i;
P0M0 = 0x00;
P0M1 = 0x00;//将IO 设置为准双向模式
P2M0 = 0x40;
P2M1 = 0x00; // 设置为推挽输出模式,给74HC573上点激活Q0-Q7口
P0=0X00; //初始化IO口上低电平
P2=0X00;//段和位全部置低
P23 =0X01; //89开发板上的关闭蜂鸣器
WTST =0X00;//延时寄存器初始化
for ( i = 0; i < 10; i++)
{
//位选
WEI =1;
P0= 0xfe;
WEI =0x00;
//段选
DUAN =1;
P0=leddata[i];
DUAN =0;
Delay500ms();
}
for ( i = 9; i >= 0; i--)
{
//位选
WEI =1;
P0= 0xfe;
WEI =0x00;
//段选
DUAN =1;
P0=leddata[i];
DUAN =0;
Delay500ms();
}
}
void Delay500ms() //@11.0592MHz
{
unsigned long i;
_nop_();
_nop_();
i = 1382398UL;
while (i) i--;
}
|