【Proteus仿真】51单片机用74HC165扩展IO读取8个按键状态
【Proteus仿真】51单片机用74HC165扩展IO读取8个按键状态
- 🔖Proteus仿真实验:51单片机利用74HC165扩展IO
- 🌿Proteus8.12平台
- 🌿本实验代码基于Keil编程.
- 🎬仿真演示:

📓程序说明
📋51单片机利用74HC165扩展IO,将8个独立按键接在74HC165上的:D0 - D7上。当有按键被按下时,通过接在单片机P2端口上的led亮灭,来显示按键状态。
📝程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \* 单片机IO扩展--74HC165实验 \* 实现现象:按下独立按键可以点亮对应的P2->led K1--led1 K2--led2 K3--led3 ... K8--led8
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include "intrins.h"
typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8;
//--定义使用的IO口--// #define GPIO\_LED P2 sbit IN_PL = P1 ^ 6; sbit IN_Data = P1 ^ 7; //数据通过P1.7脚移进单片机内处理 sbit SCK = P3 ^ 6;
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \* 函 数 名 : Read74HC165 \* 函数功能 : 使用165读取一个字节数据 \* 输 入 : 无 \* 输 出 : 无 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
u8 Read74HC165(void) { u8 i; u8 indata;
IN_PL = 0; \_nop\_(); //短暂延时 产生一定宽度的脉冲 IN_PL = 1; //将外部信号全部读入锁存器中 \_nop\_();
indata = 0; //保存数据的变量清0 for(i = 0; i < 8; i++) { indata = indata << 1; //左移一位 SCK = 0; //时钟置0 \_nop\_(); indata |= IN_Data; SCK = 1; //时钟置1 }
return(indata); }
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \* 函 数 名 : main \* 函数功能 : 主函数 \* 输 入 : 无 \* 输 出 : 无 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ void main() { u8 h165Value;
GPIO_LED = 0xff; while(1) { h165Value = Read74HC165(); if(h165Value != 0xFF) { GPIO_LED = h165Value; } } }
|
📚仿真资源和程序源码
1 2 3
| 链接:https://pan.baidu.com/s/1sgDEmky5S-KUhSRNVFDSOg 提取码:6uns
|
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!