新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16F72 -74HC595控制程序

        PIC16F72 -74HC595控制程序

        作者: 時間:2016-11-13 來源:網絡 收藏
        PIC16F72控制4個74HC595程序

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

        /*************PIC16F72單片機程序******************************/
        /*********************************************************************/
        /*****File Function : 74HC595控制程序 *****/
        /*****Program Author : ZhengWen(ClimberWin)*****/
        /*****MCU : PIC16F72 外部晶振12MHZ *****/
        /*****Compile Date : 2011/04/13 *****/
        /*****Edition Info : V1.0*****/
        /*************************************************************/

        #include
        #include "binary.h"


        #define uchar unsigned char
        #define uint unsigned int

        void Init(void); //初始化子程序
        void LockOut(void);
        void Write(void);//寫8位數據
        void LockOut(void);

        #define HC595_SCLK RB2 //移位時鐘脈沖
        #define HC595_RCK RB3 //輸出鎖存器控制脈沖
        #define HC595_SI RB4 //串行數據輸入
        #define HC595_EN RB5

        uchar temp;

        /*********************************************/
        void delayms(unsigned int count)
        {
        uint i,j;
        for(i=0;ifor(j=0;j<120;j++);
        }
        /*********************************************/

        /////////////////74HC595部分程序////////////////////////

        /********存數據到移位寄存器*******/
        void Write(void)//寫8位數據
        {
        uchar j;

        for (j=0;j<8;j++)
        {

        if (temp & 0x80) //讀取
        {
        HC595_SI=1;
        }
        else
        {
        HC595_SI=0;
        }
        temp=temp<<1;
        HC595_SCLK=1;
        asm("NOP");
        asm("NOP");
        HC595_SCLK=0;
        LockOut(); //數據移位完畢后鎖存輸出
        }
        }

        /********************************************************/
        /*寄存器內的數據鎖存到輸出寄存器并輸出顯示*/

        void LockOut(void)
        {
        HC595_RCK=0;
        asm("NOP");
        asm("NOP");
        HC595_RCK=1;
        asm("NOP");
        asm("NOP");
        HC595_RCK=0;
        }
        /*********************************************************/

        void Init(void)
        {
        PORTB = 0B00000000;
        TRISB = 0B00000000;//設置RB0為輸入,作為按鍵口
        RBPU=0;//PORTB上拉使能
        }


        ////////////主程序/////////////////////////
        void main (void)
        {

        uchar i;
        Init();//初始化程序

        PORTB=0XFF;

        HC595_SCLK=0;
        HC595_RCK=1;
        HC595_EN=0;


        temp=0x55;
        Write();

        temp=0xaa;
        Write();

        temp=0x01;
        Write();

        temp=0x22;
        Write();
        while(1);


        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 琼海市| 定西市| 卢龙县| 大名县| 左贡县| 宜兴市| 梁平县| 元氏县| 珲春市| 汝南县| 保山市| 渭南市| 阿尔山市| 洞头县| 洪泽县| 莱州市| 上虞市| 兴和县| 当雄县| 孟州市| 泰安市| 安新县| 咸阳市| 景德镇市| 浮山县| 安顺市| 海淀区| 汝阳县| 呼图壁县| 获嘉县| 衡水市| 平顶山市| 同心县| 嘉善县| 济南市| 丰都县| 若尔盖县| 昌都县| 普格县| 碌曲县| 崇信县|