首页 > 其他分享 >C51 单片机(STC89 C52RC)#笔记2

C51 单片机(STC89 C52RC)#笔记2

时间:2024-04-01 20:29:45浏览次数:15  
标签:STC89 蜂鸣器 定义 C52RC 引脚 int BEEP 单片机 按键

Chapter 4 独立按键输入

4.1按键检测原理

当按键未按下时,输入芯片引脚的电平为高电平;按键按下时,输入芯片引脚上的电平为低电平。

sbit KEY1 = P3^2; //位定义P3^2;

//判断是否被按下
if(0==KEY1)
{
  ......//按键按下处理
}

4.2 按键软件去抖原理

抖动:核心部件为弹性金属弹簧片的机械式开关结构,在开关切换的瞬间,在接触点会出现来回弹跳的现象。抖动时间一般为5~10ms。


#include <STC89C5xRC.H>

static void DelayNums(int nums)
{
	unsigned int i=0,j=0;
	for( j=0; j<nums; j++)
		for( i=0; i<123; i++);
}
sbit LED1 = P2^4;
sbit LED2 = P2^5;
sbit LED3 = P2^6;
sbit LED4 = P2^7;
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit KEY3 = P3^4;
void main()
{
	LED1=0; //打开LED1
	LED2=0;
	LED3=0;
	while(1)
	{
		if(0==KEY1)//第一次检测到KEY1按键被按下
		{
			DelayNums(50);//等待50ms后再次检测是否被按下,清楚按键带来的抖动效应
			if(0==KEY1)
			{
				LED1=~LED1;//对LED1的状态取反,改变LED1的凉灭状态
				while(KEY1==0);//等待按键被弹起
			}
		}

		if(0==KEY2)
		{
			DelayNums(50);
			if(0==KEY2)
			{
				LED2=~LED2;
				while(KEY2==0);
			}
		}

		if(0==KEY3)
		{
			DelayNums(50);
			if(0==KEY3)
			{
				LED3=~LED3;
				while(KEY3==0);
			}
		}
	}
}

Chapter 5 蜂鸣器

蜂鸣器是一种发声器件,按照驱动方式可以分为有源蜂鸣器和无源蜂鸣器。

1)有源蜂鸣器:成本稍高,驱动简单,发声频率固定。内部含有震荡电路,只需要接通电源即可发出响亮尖锐的声音。

2)无源蜂鸣器:成本较低,只要输入不同频率的脉冲信号即可发出不同音调的声音,甚至可以利用音阶与频率之间的对应关系,制作出简单的音乐曲目。内部不含有震荡电路,需要输入2~3Hz的脉冲信号才能发出声音。

芯片P1.0引脚与限流电阻R19相连接。当J102相接时,R20作为上拉电阻,确保三极管在P1.0引脚不为低电平时保持截止状态。

sbit BEEP = P1^0;//位定义蜂鸣器

BEEP = 0;    //打开蜂鸣器

宏定义蜂鸣器开启和关闭

    宏定义:一种预处理命令,实质是一个名称替换命令,它会指示编译器在实际编译程序之前完成替换。采用宏定义的好处在于方便程序的修改。基本格式如下:

#define 名称  表达式;
#include <STC89C5xRC.H>
#define BEEP_ON   BEEP=0; //宏定义
#define BEEP_OFF  BEEP=1; //宏定义
sbit BEEP = P1^0;
static void DelayNums(int nums)
{
   unsigned int i=0,j=0;
	 for(i=0; i<nums; i++)
	    for(j=0; j<123; j++);
}
void main()
{
     BEEP_ON;//打开蜂鸣器
	 DelayNums(500);//延时500ms
	 BEEP_OFF;//关闭蜂鸣器
	 while(1);//按下复位键,仍能够听到蜂鸣器短暂鸣叫
}

Chapter 6 数码管显示

1)位选引脚

引脚1、2、3、4为位选引脚,分别连接至STC89C52RC芯片的P2.3~P2.0引脚,分别用于控制SEL3~SEL0中的哪一位数码管点亮。

2)段选引脚

A~H为8个数据引脚,分别连接至芯片的P0.7~P0.0引脚,用于控制所选中数码管的哪一段被点亮,称为段选引脚。

数码管静态显示

#include <STC89C5xRC.H>
static void DelayNums(int nums)
{
   unsigned int i,j;
	 for(i=0; i<nums; i++)
	   for(j=0; j<123; j++);
}
static unsigned char s_arrNUmber[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};定义数码管显示数字0~9
sbit SegmentG1 = P2^3; //定义数码管1
sbit SegmentG2 = P2^2;
sbit SegmentG3 = P2^1;
sbit SegmentG4 = P2^0;

void main()
{
  while(1)
	{
	 P0 = s_arrNUmber[1];//数码管1显示为1
   SegmentG1 = 0;//打开数码管1
   DelayNums(5);//延时5ms
   SegmentG1=1;//关闭数码管1

   P0 = s_arrNUmber[2];//数码管2显示为
   SegmentG2 = 0;
   DelayNums(5);
   SegmentG1=1;
	 
	P0 = s_arrNUmber[3];//数码管3显示为3
   SegmentG3 = 0;
   DelayNums(5);
   SegmentG1=1;
	 
	P0 = s_arrNUmber[4];//数码管4显示为4
   SegmentG4 = 0;
   DelayNums(5);
   SegmentG1=1;
	 }
	}

标签:STC89,蜂鸣器,定义,C52RC,引脚,int,BEEP,单片机,按键
From: https://blog.csdn.net/2301_79706774/article/details/137197819

相关文章

  • 基于51单片机智能手腕计步器步数体温检测OLED显示设计20-418
    20-418、51手腕计步器设计-ADXL345-DS18B20-OLED-BELL产品功能描述:本系统由STC89C52单片机+ADXL345加速度传感器+DS18B20温度检测电路+0.96寸OLED液晶显示屏电路+蜂鸣器报警电路+电源电路组成。1、通过ADXL345检测步数,通过DS18B20检测温度。2、0.96寸OLED液晶实时显示步数......
  • 基于STM32单片机智能PID温度控制系统OLED显示设计定制20-408
    20-408、基于STM32智能温度控制系统设计功能:本设计由STM32F103C8T6单片机核心板电路+OLED液晶显示屏电路+DS18B20温度检测电路组成。产品功能描述:1、OLED液晶屏第一列显示目标温度和加热时间。第二列显示实时温度和制冷时间。2、如果当前温度低于目标温度,则系统开始加热,否......
  • 汽车车灯用到的单片机功能
    如果你要入门汽车车灯,首先你要学会哪些单片机功能?最近碰到一个朋友,他从JAVA转行,开始做车灯软件。因为正点原子的单片机资源很全,所以找了一块正点原子的精英开发板作为入门。网上的视频课程很多,看了一段时间教学视频以后,对于基本的时钟、外设、定时器做了了解。列了张清单......
  • 基于51单片机的雨刮器【雨量,速度,手动自动,点动,数码管】(仿真)
    #include"DHT11.h"unsignedchardht11_dat1[5];//湿度高低+温度高低+和校验unsignedchardht11_dat2[5];voiddelay1ms(unsignedinti)//延时函数{unsignedcharj;while(i--){ for(j=0;j<110;j++);}}voiddht11_recive1()//接收{unsignedch......
  • 基于51单片机的报警器【红外入侵,时间段】(仿真)
    红外入侵报警系统1.实现红外入侵检测(I0口高低电平模拟)的报警;2.数码管显示分、秒3.按键设置报警开启时段,时段内触发报警时,发出蜂鸣器响起,LED灯闪烁#include"DHT11.h"unsignedchardht11_dat1[5];//湿度高低+温度高低+和校验unsignedchardht11_dat2[5];voidd......
  • 基于51单片机数字频率计设计
    基于51单片机数字频率计设计(仿真+程序+原理图+PCB+设计报告)功能介绍本系统由STC89C52单片机+信号输入+74HC14整形电路+74HC390分频电路+LCD1602显示模块+电源构成。具体功能:1、能检测出三角波、正弦波或方波等波形的频率;2、频率的测量范围为1Hz—12MHz,并且能检测幅度最小......
  • 基于单片机的水位检测系统仿真设计
    **单片机设计介绍,基于单片机的水位检测系统仿真设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机的水位检测系统仿真设计概要主要涵盖硬件设计、软件设计、仿真测试以及优化调整等方面。以下是对该设计......
  • C51单片机学习笔记
    四.中断系统      1.中断:程序在执行过程中由于外界的原因而被中间打断的情况中断处理程序(服务):中断之后执行的程序;主程序:原来运行的程序;断点:主程序被断开的位置;中断源:引起中断的原因,或能发出中断申请的来源;中断请求(申请):中断源要求服务的请求。中断技术的优点:相对......
  • NO12 蓝桥杯单片机之DS1302的使用
    1DS1302是什么DS1302由两块存储器组成,一个是日历时钟寄存器还有一个是31位的静态RAM存储器。而在蓝桥杯中常考的就是日历时钟寄存器,故这里只介绍日历时钟寄存器。简单来说,其就是一个“电子表”,他会自动的实时记录时间,而不需要像我们之前运用定时器做的时钟一样,要自己来设计......
  • 引脚数量最少的单片机
    引脚数量最少的单片机2款SOT23-6封装单片机介绍参考价格PMS150C-U06整盘单价:¥0.19688,该芯片为中国台湾品牌PADAUK(应广)SQ013L-SOT23-6-TR整盘单价:¥0.27876,该芯片为国产:holychip(芯圣电子)上述价格为2024-3-29参考价格,有量的情况下,都可以和厂家谈有时候我们遇到SO......