?? 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 + -