|
棋牌的設(shè)計(jì),附源碼和仿真圖
0.png (19.82 KB, 下載次數(shù): 82)
下載附件
2018-1-10 04:06 上傳
單片機(jī)源程序如下:
- #include <MSP430f249.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar const led_tab[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰數(shù)碼管段選碼表,無小數(shù)點(diǎn)
- uchar key; //按鍵值
- uint flag1=0,flag2=0,flag3=0;
- void delayus(uint t)
- {
- uint i;
- while(t--)
- for(i=1300;i>0;i--);
- }
- void system_Initial(void)
- {
- P3SEL &= 0x00; //選擇P3為輸入/輸出口
- P3DIR |= 0XFF; //選擇P3為輸出功能
- P3OUT=0xFF;
-
- P1DIR = 0xFF; // 設(shè)置方向?yàn)檩敵?nbsp;
- P4DIR = 0xFF; // 設(shè)置方向?yàn)檩敵?nbsp;
- P2DIR = BIT0 + BIT1+BIT2+BIT3;
- P1OUT = 0x00; //LED輸出全部關(guān)閉
- P4OUT = 0x00; //LED輸出全部關(guān)閉
- P2OUT = BIT0 + BIT1+BIT2+BIT3;
- P2IE |= BIT4+BIT5+BIT6; //P2.2中斷使能
- P2IES |= BIT4+BIT5+BIT6; //P2.2下降沿中斷
- P2IFG &=~(BIT4+BIT5+BIT6); //P2.2清除中斷標(biāo)志
- _EINT();
- }
- // 端口2中斷服務(wù)程序
- #pragma vector=PORT2_VECTOR
- __interrupt void Port_2(void)
- {
-
- P2IFG &= ~(BIT4+BIT5+BIT6); //清除中斷標(biāo)志
- }
- //**********************************************************************
- int main(void)
- {
- uchar i;
- uchar count = 29; //計(jì)數(shù)值
- uchar disp_buf[4]; //顯示緩沖區(qū)
- WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門狗
- system_Initial();
- while(1)
- {
- if(!(0x10 & P2IN)) {
- flag1=1;
- if(flag2==1)
- count=29;
- flag2=0;
-
- }
- if(!(0x20 & P2IN)) {
- flag2=1;
- if(flag1==1)
- count=29;
- flag1=0;
- }
- if(!(0x40 & P2IN)) {
- flag3=1;
- }
-
- if(flag1 == 1)
- {
- flag3=0;
- if(count>0)
- {
- disp_buf[1] = count / 10; //對(duì)計(jì)數(shù)值取十位數(shù)
- disp_buf[0] = count % 10; //對(duì)計(jì)數(shù)值取個(gè)位數(shù)
- for(i = 0;i < 25; i++) //總共循環(huán)25次,計(jì)時(shí)1s
- {
- P1OUT = 0;
- P1OUT = led_tab[disp_buf[1]];
- P2OUT = ~BIT0; //顯示十位數(shù)
- delayus(2); //軟件仿真時(shí),取20不閃爍
- P1OUT = 0;
- P1OUT = led_tab[disp_buf[0]];
- P2OUT = ~BIT1; //顯示個(gè)位數(shù)
- delayus(2); //軟件仿真時(shí),取20不閃爍
- }
- count--;
- }
- if(count==0)
- {
- P1OUT = 0;
- P1OUT = led_tab[0]; //30s倒計(jì)時(shí)結(jié)束,顯示0;
- P2OUT = ~BIT1;
- P3OUT=~BIT1;
- }
- }
-
- if(flag2 == 1)
- {
- flag3=0;
- if(count>0)
- {
- disp_buf[3] = count / 10; //對(duì)計(jì)數(shù)值取十位數(shù)
- disp_buf[2] = count % 10; //對(duì)計(jì)數(shù)值取個(gè)位數(shù)
- for(i = 0;i < 25; i++) //總共循環(huán)25次,計(jì)時(shí)1s
- {
- P4OUT = 0;
- P4OUT = led_tab[disp_buf[3]];
- P2OUT = ~BIT2; //顯示十位數(shù)
- delayus(2); //軟件仿真時(shí),取20不閃爍
- P4OUT = 0;
- P4OUT = led_tab[disp_buf[2]];
- P2OUT = ~BIT3; //顯示個(gè)位數(shù)
- delayus(2); //軟件仿真時(shí),取20不閃爍
- }
- count--;
- }
- if(count==0)
- {
- P4OUT = 0;
- P4OUT = led_tab[0]; //30s倒計(jì)時(shí)結(jié)束,顯示0;
- P2OUT = ~BIT3;
- P3OUT=~BIT0;
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
棋牌.rar
(152.8 KB, 下載次數(shù): 18)
2018-1-10 04:08 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|