日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

74hc165C语言程序,单片机驱动74hc165程序

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 74hc165C语言程序,单片机驱动74hc165程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

74HC165簡介

74HC165是八位并行輸入/串行輸出移位寄存器,兩片74HC165串聯在一起,在時鐘脈沖的作用下,從KB-DAT讀入串行數據,可完成對16位鍵盤數據掃描讀取。

74HC165是一款高速CMOS器件,74HC165遵循JEDEC標準no.7A。74HC165引腳兼容低功耗肖特基TTL(LSTTL)系列。

74HC165是8位并行輸入串行輸出移位寄存器,可在末級得到互斥的串行輸出(Q0和Q7),當并行讀取(PL)輸入為低時,從D0到D7口輸入的并行數據將被異步地讀取進寄存器內。而當PL為高時,數據將從DS輸入端串行進入寄存器,在每個時鐘脈沖的上升沿向右移動一位(Q0→Q1→Q2,等等)。利用這種特性,只要把Q7輸出綁定到下一級的DS輸入,即可實現并轉串擴展。

74HC165的時鐘輸入是一個“門控或”結構,允許其中一個輸入端作為低有效時鐘使能(CE)輸入。CP和CE的引腳分配是獨立的并且在必要時,為了布線的方便可以互換。只有在CP為高時,才允許CE由低轉高。在PL上升沿來臨之前,CP或者CE應當置高,以防止數據在PL的活動狀態發生位移。

單片機驅動74hc165程序

當1腳拉低時,八位并行數據被壓入鎖存器,但與此同時,D7也已經從7腳輸出,因此只要再循環7次將數據讀出即可

ucharReadExport(void)

{

unsignedchari=0,receive_date=0;

ucharRead_Int;

Clr_P25;//使能控制。為低電平時,并行數據進入鎖存器

Clr_P25;

Read_Int=(P2&0x10);//串行輸出數據線

if(Read_Int==0x10)//把最高位讀出

receive_date|=0x01;

Clr_P03;

Set_P25;//為高電平時,可以進行串行數據讀出

for(i=1;i《=7;i++)//接下來只要進行7次循環

{

Clr_P03;

Set_P03;//時鐘線,上升沿有效

Read_Int=(P2&0x10);//串行輸出數據線

if(Read_Int==0x10)

{

receive_date|=(0x01《《i);

}

}

returnreceive_date;

}

基于51單片機之74HC165實驗例程

**************************Copyright(C)CaKe*****************************************

==================================================

==============**文件名:main.c==============

==============**作者:CaKen==============

==============**版本號:V1.0==============

==============**時間:2014.08.16==============

==============**功能描述:74HC165實驗測試==============

====================================================

**********************************************************

#include

#include

//SPI接口

sbitCLK=P3^6;//串行時鐘

sbiTIN_PL=P1^6;//把數據加載到鎖存器中

sbiTIN_Dat=P1^7;//數據通過P1.7腳移進單片機內處理

sbitRELAY=P1^4;//繼電器

sbitBEEP=P1^5;//蜂鳴器

unsignedcharbdataKey;

sbitK0=Key^0;//位定義

sbitK1=Key^1;//位定義

sbitK2=Key^2;//位定義

sbitK3=Key^3;//位定義

sbitK4=Key^4;//位定義

sbitK5=Key^5;//位定義

sbitK6=Key^6;//位定義

sbitK7=Key^7;//位定義

bitM0,K0J;//位定義

**********************************************************

函數名:

調用:beep();

參數:

返回值:

結果:

備注:蜂鳴器(讓蜂鳴器發出動聽聲音)

************************************************************

voidbeep()

{

unsignedchari,j;

for(i=0;i《2;i++)

{

for(j=0;j《255;j++)

{_nop_();}

BEEP=!BEEP;//BEEP取反

}

BEEP=1;//關閉蜂鳴器

}

*********************************************************

函數名:74HC165函數初始化

調用:HC165_Init();

參數:

返回值:

結果:

備注:IN_PL上升沿,CLK上升沿

********************************************************

unsignedlongHC165_Init(void)

{

unsignedchari;

unsignedinTIndata;

IN_PL=0;//上升沿

_nop_();//短暫延時產生一定寬度的脈沖

IN_PL=1;//將外部信號全部讀入鎖存器中

_nop_();

indata=0;//保存數據的變量清0

for(i=0;i《8;i++)

{

indata=indata《《1;//左移一位

if(IN_Dat==1)

indata=indata+1;//如果IN_Dat檢測到高電平保存數據的變量加1

CLK=0;//時鐘置0

_nop_();//上升沿

CLK=1;//時鐘置1

}

return(~indata);//將保存數據的變量取反后返回

}

*********************************************************

函數名:主函數

調用:main

參數:

返回值:

結果:

備注:74HC165控制八個按鍵

********************************************************

main()

{

while(1)

{

unsignedlongInput=HC165_Init();//調用165驅動程序

Key=Input&0xff;//將數據傳給位變量

RELAY=1;

P2=0xff;//清除

if(K0&K0J)

M0=~M0;//實現脈沖輸入大家仔細體會

K0J=~K0;

if(M0){RELAY=0;P2=0x7f;}//實現脈沖輸入

if(K1){beep();P2=0xbf;}//K1為1時開啟蜂鳴器和2個燈

if(K2){beep();P2=0xdf;}

if(K3){beep();P2=0xef;}

if(K4){beep();P2=0xf7;}

if(K5){beep();P2=0xfb;}

if(K6){beep();P2=0xfd;}

if(K7){beep();P2=0xfe;}

}

}

總結

以上是生活随笔為你收集整理的74hc165C语言程序,单片机驱动74hc165程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。