- 博客(10)
- 收藏
- 关注
原创 蜂鸣器原理
由于其中有非门,因此当我们给1时其输出为0,给0时其输出为1。由于蜂鸣器另一端接vcc故应给其为1,即变成0才能发声。因此值得注意的是,蜂鸣器不能长时间接电源,由于电源就是给的1,因此一接电源,蜂鸣器就已经开始工作了。无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整其提供的振荡脉冲的频率,可发出不同频率的声音。蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。其有两种驱动电路,一种是三极管驱动,一种是集成电路驱动。
2023-07-17 09:28:25
668
1
原创 DS1302实时时钟
它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。其中值得注意的是VCC2是主电源,VCC1是备用电池。其中第七位固定为1,第六位给一就是操作ram给零就是操作ck,第五到第一位是确定位置,第零位是给一就是读取给零就是写入。第一个是秒,第二个是分,第三个是小时,第四个是天,第四个是月,第五个是周,第六个是年,第七个是写保护。其中1是他的电源,2是生成1JZ标准频率进行计时的,3是它的内部寄存器,4是让芯片读取输出数据的。其中只有读入的右边那8位是由芯片操控的,其余都是由单片机操作的。
2023-07-15 17:25:32
144
1
原创 led点阵屏
其意为如果想输出1111 0000,就要先对最高位赋值进行上升沿移位,再向下移位,依次对这8位赋完值后,进行上升沿移位就成功了。led点阵屏是由若干独立的led组成,led以矩阵的形式排列。因此,led点阵屏的原理便与之前学的数码管差不多了。而74HC595是串行输入并行输出的移位寄存器,用3根线输入串行数据,8根线输出并行数据。由图可以看出其可以先确定行再确定列定位到其中一个灯,或者先确定列再确定行也可以。由图可以看出其中的接口接的引脚也不同。所以其引脚控制的为下图。P0口控制列,D口控制行。
2023-07-10 21:59:57
267
1
原创 串口通信
简单双向串口通信有两根通信线,一个是发送端(TXD),一个是接收端(RXD)。这是串口通信的模式图。可以看到这有两个SBUF(两个独立的寄存器,一个是发送寄存器,一个是接收寄存器)。串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单、可以实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。这是中断系统 ,当他发送或接收时,就会触发中断,即当R1或T1为1。半双工:通信双方可以互相传输数据,但只能共用一根线。今天,我们来说一说串口通信。
2023-06-07 19:47:11
216
1
原创 定时器及其应用
其中1是时钟,2是计数系统,3是中断系统。这是其定时器定时1ms的代码,但是定时器只能定时65ms,要想再多点定时应该怎么办呢?我们可以另设一个值,让其++到某一个数再让其停止就可以了。定时器是单片机的内部资源,其电路连接与运转均在单片机内部完成。然后呢是寄存器,寄存器是连接软硬件的媒介,当我们在写程序时,寄存器通过读取,进而使单片机运行。定时器是通过提供时钟脉冲,然后开始计数,最后产生中断执行定时任务的。由此我们应该对定时器有了一个大概的了解了。有了以上基础,想让其实现闹钟的功能那就很轻松了。
2023-06-04 09:59:23
94
1
原创 矩阵键盘
首先我们可以设置P1=0XFF,为1111 1111,我们可以直接再设P1_3=0,这样就确定了第一列中选取,如果第一列中有按钮按下的话,此时该按钮为0,并让lcd显示相应的键盘对应的值就可以了。首先我们设置一个四位数的密码,1-9对应数字1-9,10对应0,11对应确认,12对应退回。首先是输入密码的功能,我们只需要将输入的每个数比上10的模,再将原来的数乘十相加即可。对于确认的功能,我们只需来个if判断,如果正确,便显示ok,如果错误显示err,并将password清零并且计数清零。
2023-05-24 13:28:16
1398
1
原创 模块化编程
今天我们来学习模块化编程,所谓模块化编程,就是把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include"XXX.h"文件即可。然后还需要在主函数中加入#include"delay.h"这个头文件,这样就可以使用了。其中.c文件来定义此函数,在.h文件夹内声明此函数,这是.c文件里放的。以delay函数为例,我们需要建立一个.c和一个.h文件。这就是模块化编程的所有内容了。
2023-05-21 09:38:20
95
1
原创 静态与动态数码管的显示
从右向左一次递加,如果想让led6号呈现数字1,那么就要让其他led为1,led6为0,然后再让b、c两端为1,其余为0,这样就会使其呈现数字1了,如果我们想选择某个led灯该怎么做呢?这就需要138译码器来工作了,如下图,p24是高位,p22是低位。如果想让led6亮的话,就需要找到对应的数字,led6对应的是数字5,因此要让P2_4=1,P2_3=0,P2_2=1,这样就让led6亮了起来,如果要让led亮出数字6呢,就需要让a、c、d、e、f、g段赋值为1,其余为0,故为P0=0X7D,其代码为。
2023-05-15 16:45:47
485
2
原创 独立按键控制led灯
要想实现这个功能我们需要学习一个移位符号<<和>>,一个代表左移一个代表右移,例如0x01<<1,表示0000 0001向左移一位变成0000 0010,如果再将其按位取反,就变为1111 1101,这样我们就可以很轻松的来控制其移位,另外还需要注意的是,如果移了8位之后,需要让其归零,才能继续让其移位,向左移很好理解,向右移就是向右移一位就相当于向左移动了7位,这样向右移动的代码也很简便的写了出来,代码可以表示为。当按下按键,按键为0,此时小灯变亮,当再次按下,按键变为1,此时led灯熄灭。
2023-05-11 18:41:47
3165
1
原创 led灯
如果想让某个灯变亮,就需要让其为低电压,值为0,因此如果要让第一个小灯亮就要为P2=0XFE,其对应的是P2=1111 1110,依次对应(至于为什么0放在了后面,我现在也还没有搞懂,等着后面深入学习了解之后看能不能搞懂吧)只要往括号内添加任意数就可以想什么时候就什么时候,但是这个代码好像也会有误差,因为刚开始学,我也不知道怎么来减小这个误差,看以后更深一步的学习吧。这里就需要while循环和它自带的延时函数了,如果没有延时函数的话,小灯就会在很短时间内发生变化,而不能很明显的看出变化,故其延时函数为。
2023-05-08 11:04:51
108
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人