📄 p300_s1.c
字号:
/*
将4位的数码管电路板接到J11接插件上,注意插针引脚顺序
*/
//动态显示方式 P300
//例如,要在8个数码管上分别显示“1”“2”“3”“4”,动态扫描显示的C语言程序如下(共阳极方式):
//针对本开发板,修改了部分代码
#include <msp430x14x.h>
//共阳数码管的表格为:
//本表格通过LEDSET软件可以快速得到
const unsigned char Seg[]=
{
0X84, // 0
0XBD, // 1
0XE0, // 2
0XB0, // 3
0X99, // 4
0X92, // 5
0X82, // 6
0XBC, // 7
0X80, // 8
0X90, // 9
0X88, // A
0X83, // b
0XC6, // C
0XA1, // d
0XC2, // E
0XCA // F
};
unsigned char DispBuf[4] = {1,2,3,4}; //显示缓冲区
void Delay(unsigned int wDelay) //延时函数
{
while (wDelay != 0)
wDelay--;
}
main()
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
//初始化端口
P4DIR = 0XFF; //P4作为段输出
P5DIR = 0X0F; //P5作为位输出
P4OUT = 0XFF; //熄灭所有数码管
P5OUT = 0X00; //熄灭所有数码管
while(1)
{
//建议放在主循环中轮流显示每一位值,同时相邻两位间的时间间隔不能太长,这样就不会闪烁。
Delay(1000);
P5OUT = 0x01; //点亮数码管LED1,
P4OUT = Seg[DispBuf[0]]; //查段码表,并送出断码
Delay(1000);
P5OUT = 0x02; //点亮数码管LED2,
P4OUT = Seg[DispBuf[1]]; //查段码表,并送出断码
Delay(1000);
P5OUT = 0x04; //点亮数码管LED3,
P4OUT = Seg[DispBuf[2]]; //查段码表,并送出断码
Delay(1000);
P5OUT = 0x08; //点亮数码管LED4,
P4OUT = Seg[DispBuf[3]]; //查段码表,并送出断码
Delay(1000);
i++;
if((i%50)==0) //循环50次改变值
{
//显示值加1
DispBuf[0]++;
DispBuf[1]++;
DispBuf[2]++;
DispBuf[3]++;
//防止溢出
if(DispBuf[3]>15)
{
DispBuf[0]=0;
DispBuf[1]=1;
DispBuf[2]=2;
DispBuf[3]=3;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -