新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430 LED掃描程序范例(采用HC595芯片擴(kuò)展)

        MSP430 LED掃描程序范例(采用HC595芯片擴(kuò)展)

        作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
        #i nclude <msp430x14x.h>

        #i nclude "led.h"
        unsigned char seg[]={
        0x3f,0x06,0x5b,0x4f, /* 0 1 2 3*/
        0x66,0x6d,0x7d,0x07, /* 4 5 6 7 */
        0x7f,0x6f,0x77,0x7c, /* 8 9 A B */
        0x39,0x5e,0x79,0x71 /* C D E F */
        };

        本文引用地址:http://www.104case.com/article/201611/316337.htm

        void Init_Port(void)
        {
        //將P1口所有的管腳在初始化的時(shí)候設(shè)置為輸入方式
        P1DIR = 0;

        //將P1口所有的管腳設(shè)置為一般I/O口
        P1SEL = 0;

        // 將P1.0 P1.1 P1.2 設(shè)置為輸出方向
        P1DIR |= BIT0;
        P1DIR |= BIT1;
        P1DIR |= BIT2;
        return;
        }
        void SHCLK_Hi(void)
        {
        //P1.2管腳輸出高電平
        P1OUT |= BIT2;
        return;
        }
        void SHCLK_Lo(void)
        {
        //P1.2管腳輸出低電平
        P1OUT &= ~(BIT2);
        return;
        }
        void STCLK_Hi(void)
        {
        //P1.1管腳輸出高電平
        P1OUT |= BIT1;
        return;
        }
        void STCLK_Lo(void)
        {
        //P1.1管腳輸出低電平
        P1OUT &= ~(BIT1);
        return;
        }
        void DataOut(unsigned char nValue)
        {
        int i;
        int j;
        for(i = 0;i < 8;i++)
        {
        if ((nValue & 0x01) == 1)
        {
        P1OUT |= BIT0;//輸出高電平
        }
        else
        {
        P1OUT &= ~(BIT0);//輸出低電平
        }
        SHCLK_Hi();//時(shí)鐘高電平,上升沿有效
        for(j = 10; j > 0; j--) ;//延遲一點(diǎn)時(shí)間
        SHCLK_Lo();//時(shí)鐘低電平
        for(j = 10; j > 0; j--) ;
        nValue >>= 1;
        }
        return;
        }
        void main(void)
        {
        unsigned char nValue;

        //初始化時(shí)鐘
        Init_CLK();
        //端口初始化
        Init_Port();
        //清除鎖存信號(hào)
        STCLK_Lo();

        //輸出0
        nValue = 0;
        DataOut(seg[nValue]);
        //輸出2
        nValue = 2;
        DataOut(seg[nValue]);

        //給鎖存信號(hào),顯示上面的兩位數(shù)據(jù)
        STCLK_Hi();

        return;
        }
        void Init_CLK(void)
        {
        unsigned int i;
        BCSCTL1 = 0X00;//將寄存器的內(nèi)容清零
        //XT2震蕩器開(kāi)啟
        //LFTX1工作在低頻模式
        //ACLK的分頻因子為1

        do
        {
        IFG1 &= ~OFIFG; // 清除OSCFault標(biāo)志
        for (i = 0x20; i > 0; i--);
        }
        while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1

        BCSCTL2 = 0X00;//將寄存器的內(nèi)容清零
        BCSCTL2 += SELM1;//MCLK的時(shí)鐘源為TX2CLK,分頻因子為1
        BCSCTL2 += SELS;//SMCLK的時(shí)鐘源為TX2CLK,分頻因子為1
        }



        關(guān)鍵詞: MSP430LED掃描程序HC595芯

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 瓦房店市| 澳门| 临清市| 韶关市| 朝阳县| 北海市| 休宁县| 泽普县| 定远县| 海口市| 安塞县| 海安县| 通山县| 马公市| 翁牛特旗| 西昌市| 泸定县| 灵川县| 阳朔县| 嘉禾县| 平昌县| 鲁山县| 常熟市| 环江| 霍城县| 正阳县| 临汾市| 和硕县| 南澳县| 北票市| 洞口县| 额尔古纳市| 农安县| 万州区| 乐东| 乌拉特中旗| 长沙县| 英吉沙县| 淮滨县| 潼关县| 灌阳县|