- 博客(11)
- 收藏
- 关注
原创 CT107D:555定时器
3.单片机测量信号频率,并显示在数码管中,频率数据显示用5位数码管,单位是Hz,当显示长度不足5位时,未使用到的数码管熄灭,在最左边的1位数码管用“F”作为提示符。2.用短路环将J13中的NAL与P34短接,NE555发生的信号输入到单片机的P34引脚上。同时我们要注意的是555没有硬件操作,观察官方给的头文件中的引脚对应是否正确。1.上电开机运行时,关闭蜂鸣器、继电器和8个LEDD指示灯。
2024-11-09 09:42:23
353
原创 CT107D:DS18B20温度转换于读取流程
我们要注意的是,onewire.h中需要声明初始化、读、写函数,onewire.c中所有的延时函数都要乘以10,因为驱动代码时钟周期是12T,而单片机是1T的。我们要实现的是:再CT107D单片机综合训练平台上,编写程序实现单总线数据传输协议,读取数字温度传感器DS18B20的温度值,并显示在数码管模块上,同时保留一位小数。同时我们要用到DS18B20的底层驱动库文件:onewire.h和onewire.c,这个在比赛中都会提供给我们。
2024-10-25 21:10:28
338
原创 CT107D:串口通信
采用8位的UART模式,即模式1,波特率为9600BPS。上位机的数据,每接收到一个字节后,在该字节的基础上加1然后返回给电脑。我们依然可以用STC-ISP的波特率计算器来生成一段选定计时器的代码,同时我们为了避免与之前的代码库搞混,我们新命名一系列的函数名称,串口中断的代码我们命名为ServiceUart,而发送数据的代码我们命名为SendByte。而最终的实验现象与之前笔者写的那篇普中开发板的串口通讯实验结果几乎一致 ,笔者在此就不多做赘述了,希望能够帮到大家!
2024-10-18 21:59:23
478
原创 51单片机:串口通讯
当接收完成后或者发送完成后,RI,TI从0变为1,这可以成为我们判断是否完成传递的标志。而SBUF就相当于数据的中转站,数据赋值给SBUF,SBUF再将数据输出。注意,我们在STC-ISP中用波特率计算器生成代码时要选择好相应的电路板所需要的配置,否则可能会出现乱码以及延误的情况。下面我们将进入新一部分的学习:串口通讯。我们利用串口传递信息,以实现与外界的信息交互。上面的输出有两个错误就是因为没有将相应的配置完全配置好而引发的。以上就是51单片机串口通讯的相关内容,希望能够帮到大家!
2024-10-07 10:05:15
745
原创 51单片机小实验:电子时钟
因为这个实验的电子时钟需要在液晶显示屏上呈现,所以我们依然要用到LCD1602函数库(在笔者前面的文章中提到过)。此外也需要了解单片机的计数器/定时器以及中断系统的相关知识,不了解的同学可以移步至笔者的上一篇文章。在中断函数中,尽量不要设计过于复杂繁琐的代码,程序的主体是主函数,不应在中断函数中运行太长时间。而其余的Delay函数以及LCD1602函数库,笔者在之前的文章均有展现,在就在此不多做赘述。我们可以根据电路图写出相应的代码以控制电路,也可以在STC-ISP中使用工具直接生成计时与中断代码。
2024-10-06 13:45:04
1084
原创 第五章51单片机学习基础综合(中断系统、计数器/定时器)
因为当我们执行其中的任何一项任务的时候,单片机的CPU会被占用,因而导致无法读取另一份信息,所以我们就会发现存在独立按键不灵敏的情况。了解相关电路之后我们就可以写出相应的代码,来实现内部电路的连接,这需要一定的电路知识做支撑,笔者在此用了STC-ISP上的一个功能自动生成了实现该过程的代码。这个时候我们就要利用到中断系统,这可以让我们在执行某一项任务的时候,让CPU在很短的时间内中断此项任务,去完成另一项任务,由于这个过程时间极短,所以近似认为是CPU同时处理了两项任务。独立按键控制LED流水灯状态。
2024-10-06 11:14:12
814
原创 普中51单片机密码锁工程
我们可以事先定义一个变量KeyNum用于接收MatrixKey函数中的返回值,同时我们要注意的是,当先前输入了一个错误密码,并且屏幕上显示了“ERROR”后,我们再次输入正确密码后,屏幕上会显示“OKROR”,并不会只显示“OK”。我们要实现的主要功能是判断输入的密码是否正确以及对于已输入密码的更改,这些过程均在液晶显示屏上呈现,所以我们依然要用到LCD1602函数库(B站江协)以及Delay函数(按键消抖)。本章是普中51单片机基础学习中的第一个相对完整的项目,代码相对较长,希望能够帮助到大家!
2024-10-05 13:38:16
1300
原创 第四章普中51单片机基础学习(矩阵键盘)
我们在前面的学习中可能会发现一些问题,单片机中能够显示信息的部分似乎只有数码管,但是数码管只能够显示很少的一部分信息。不管从电路连接,还是从工作原理来说,矩阵键盘都可以简化为独立按键来使用,而按键信息的读取也是通过扫描的方式来进行的。经过独立按键的学习,我们已经大致知道了如何扫描每一个按键,根据上面的电路图我们有按行扫描和按列扫描两种方式。我们需要注意的是,在LCD_ShowNum外层需要嵌套一层if函数,如果不套用,KeyNum的值会快速刷新为0,就会导致液晶显示屏上的数字不会发生变化。
2024-10-05 11:05:18
406
原创 第三章51单片机学习基础综合(数码管显示)
但我们需要注意的是,真正操作的时候,会产生错位以及乱码的情况,这是因为单片机的扫描速度过快,会导致处理下一段信息的时候,下一段信息本身还没到位,上一段信息就会窜位到本段信息处理中来,进而造成错位以及乱码。首先我们介绍静态数码管的应用。在第一个图中我们可以很清楚的看出每一个LED所对应的引脚,若要选中该LED只需要在它的阳极给予高电平,例如我们想要显示“5”,那么阳极的电平就为:1011 0110,由于我们秉持着“高位对高位”的原则,所以我们在P0端需要从下往上读数,最后再转化为十六进制(简洁)即可。
2024-10-02 20:08:41
1092
原创 第二章51单片机学习基础综合(独立按键)
同时笔者也可以提供第二种思路:定义一个新的数num,数字的类型为 unsigned char(对于unsigned char,它用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为0~255。在实验开始之前,我们需要了解按键的抖动:对于机械按键来说,当我们按下它的时候,并不会马上接通,会有很微小时间内的抖动。接下来是第二部分51单片机的学习综合,这篇文章包括了三个小实验:独立按键控制LED亮暗、独立按键控制LED二进制亮灭以及独立按键控制LED移位。第三个实验:独立按键控制LED移位。
2024-09-26 22:56:16
460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅