基于51单片机之74HC165实验例程

发布者:Serendipity66最新更新时间:2014-12-30 来源: 51hei关键字:51单片机  74HC165  实验例程 手机看文章 扫描二维码
随时随地手机看文章
**************************  Copyright(C)CaKe  *****************************************
==================================================
==============**文件名    : main.c              ==============
==============**作者      : CaKen              ==============
==============**版本号    : V1.0               ==============
==============**时间      : 2014.08.16               ==============
==============**功能描述  : 74HC165实验测试          ==============
====================================================
**********************************************************
 
#include
#include
 
//SPI 接口
sbit    CLK    = P3^6;    //串行时钟
sbit    IN_PL  = P1^6;     //把数据加载到锁存器中
sbit    IN_Dat = P1^7;     //数据通过P1.7脚移进单片机内处理
 
sbit    RELAY  = P1^4;    //继电器
sbit    BEEP   = P1^5;    //蜂鸣器
 
unsigned char bdata Key;
sbit    K0=Key^0;        //位定义
sbit    K1=Key^1;        //位定义
sbit    K2=Key^2;        //位定义
sbit    K3=Key^3;        //位定义
sbit    K4=Key^4;        //位定义
sbit    K5=Key^5;        //位定义
sbit    K6=Key^6;        //位定义
sbit    K7=Key^7;        //位定义
 
bit  M0 ,K0J;  //位定义
 
**********************************************************
函数名:
调  用:beep();
参  数:
返回值:
结  果:
备  注:蜂鸣器 (让蜂鸣器发出动听声音)
************************************************************
 
void beep()
{
  unsigned char i,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上升沿
********************************************************
 
unsigned long HC165_Init(void)
  unsigned char i;
  unsigned int indata;
  
   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)
  {
    unsigned long Input=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;   }
   }     
}
关键字:51单片机  74HC165  实验例程 引用地址:基于51单片机之74HC165实验例程

上一篇:基于51单片机之74HC595实验例程
下一篇:51单片机实现步进电机加减速的例子-加注释

推荐阅读最新更新时间:2024-03-16 13:50

51单片机Keil C 延时程序
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: mov r0, #09h loop: djnz r0, loop 51单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0,
[单片机]
MCS-51单片机的基本组成
图1说明MCS-51系列单片机的基本组成。 1、8051单片机内部结构和功能 1.中央处理器CPU (1)运算器 1) 算术逻辑单元ALU(Arithmetic Logic Unit) 2) 累加器ACC (Accumulator) 3) 寄存器B 4) 程序状态字PSW(ProgramStatusWord) 程序状态字PSW是一个8位特殊功能寄存器,它的各位包含了程序运行的状态信息,以供程序查询和判断。PSW程序状态字格式和含义如下: ①Cy(PSW.7) 进位标志位。Cy是PSW中最常用的标志位。由硬件或软件置位和清零。它表示运算结果是否有进位(或借位)。如果运算结果在最高位有进位输
[单片机]
MCS-<font color='red'>51单片机</font>的基本组成
51单片机-数码管&LED
1.同时点亮猜想 在本章第一节里说过要想点亮数码管,那么我们第一章学过的LED小灯就没有机会点亮了,硬件上的确是这样。 不过我们软件上还是可以实现让一个数码管和一盏LED小灯同时点亮的,大家还记得我们之前举过一个这样的例子吗? #include reg52.h sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 =
[单片机]
51单片机DS18B20温度控制报警程序(可设置温控范围)
DS18B20的管脚定义: 1、GND 2、DQ 3、VCC DQ P1.7 K1 P3.2 K2 P3.4 K3 P3.6 K4 P3.7 温度显示用四位数码管,当温度 =100度时,第四位才显示。 第五位数码管显示状态符号。 开机检测 DS18B20 状态: DS18B20正常显示: O 18.8 显示实时温度和加热标记 O DS18B20不正常显示: 黑屏、蜂鸣器一直响。 这时你要检查DS18B20是否连接好、接对,否则要更换一个新的 DS18B20 芯片。 程序在整个运行过程中,始终对 DS18B20 进行检测。 你可以将 DS18B20 从 51hei-5 拔掉,检测一下
[单片机]
C51单片机定时器介绍
简介 C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号(信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。 标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2。 时钟周期与机器周期 定时器的本质原理就是:每经过1个机器周期,计数存储器的值就加1。因此当使用定时器时,就必须掌握时钟周期和机器周期的关系。 时钟周期 :晶振频率的倒数
[单片机]
51单片机连接ESP8266串口WiFi模块
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   51单片机区别   同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS,和WIN
[单片机]
<font color='red'>51单片机</font>连接ESP8266串口WiFi模块
51单片机学习笔记2.动态数码管的使用
原理图 内容 74HC138译码器 数码管 公共端 - 位选线 连在一起的段线 - 段选线 通过控制在不同位选线 不同的段选线通电(段选数据不同)以达到在不同位置显示不同数字的目的 具体看单片机原理图即可 动态显示其实一个时刻只点亮一个数字,在24ms内点亮下一个就会看成是同时亮的 代码 首先是一段转码用的 u8 code smgduan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//最高位为小数点,如果需要点亮小数点只需 | (0x80)或是 | 128 然后是显示用的函数
[单片机]
<font color='red'>51单片机</font>学习笔记2.动态数码管的使用
51单片机学习第二天
(1)数字电路中只有两种电平: 高电平和低电平 高电平:5V或者3.3,取决于单片机电源。 低电平:0V (2)RS232电平:计算机串口的电平 高电平:-12V 低电平:+12V 由上面的两个可知,当我们使用单片机跟电脑通信的时候,需要通过各种元器件将单片机的电平转换成计算机可识别的电平才能跟电脑进行通信。 二、进制 二进制 十六进制 三、二进制逻辑运算 四、8051的引脚封装 五、单片机工作的基本时序,一共四种 (1)振荡周期:也称时钟周期,是指为单片机提供时针脉冲信号的振荡源的周期。 (2)状态周期:每个状态周期为时针周期的2倍,是振荡周期经二分频后得到的。 (3)机器周期:一个机器周期包含6个状态周期
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved