欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2311|回復: 0
收起左側

51單片機基于74hc595流水燈程序與Proteus仿真

[復制鏈接]
ID:1031277 發表于 2022-6-1 15:29 | 顯示全部樓層 |閱讀模式
基于51單片機+74hc595流水燈
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
GIF 2022-6-1 15-24-01.gif

單片機源程序如下:
#include<reg52.h>
#include<intrins.h>
//intrins.h函數,一般出現在C51單片機編程中,一般程序中需要使用到空指令_nop_();字符循環移位指令_crol_等時使用

typedef unsigned char uchar;
typedef unsigned int uint;

/**********函數聲明********************/
void SendTo595(uchar byteData);
/***********************************/

sbit DS = P3^4;    //p3.4串行數據輸入   DS
sbit SH_CP = P3^6;    //串行輸入時鐘,上升沿有效
sbit ST_CP = P3^5;    //串行寄存器時鐘,上升沿有效
char LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay(unsigned int n)//延時函數
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}

void main()
{
        int i;
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        ST_CP = 0;
                   SendTo595(LED[ i]);  //二進制:0101 0101
                   delay(500);
                }
        }
}

//發送一個字節數據給595再并行輸出
void SendTo595(uchar Data)
{
   char i=0;
   for(i;i<8;i++)
   {
                SH_CP = 0;
                 
        DS=0x80&Data;//&為按位運算符,即全1為1,有0為0,上式也就是 (1000 0000)&(1111 1111)=1000 0000,若高位為1則是1高位為0則這個式子為0
                 
        Data=_crol_(Data,1); //左移一位 將高位補給低位,如果二進制數為01010101 那么_crol_(1) 為10101010

        SH_CP = 1;          //上升沿讓串行輸入時鐘變成高電平 并延時一個時鐘周期
        _nop_();

   }  

   /*位移寄存器完畢,轉移到存儲寄存器*/
   ST_CP = 1;         //上升沿,存儲寄存器變為高電平 延遲兩個時鐘周期
   _nop_();
   _nop_();

}

Keil代碼與Proteus仿真下載:
基于74hc595流水燈.7z (61.62 KB, 下載次數: 39)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表