草庐IT

51单片机延时程序的延时时间计算

    最近在上单片机原理及应用课程,做实验的时候遇到了软件延时程序如何计算延时时间的问题,经过一阵摸索终于领悟到其中奥秘......耶(比耶)。 延时函数是使用STC-ISP生成的,晶振为12MHz,指令集是STC-Y1(即89系列),使用dowhile()循环实现软件精确延时。下面讲解一下其中的延时时间是如何计算的。 1.首先我们先设置断点是程序运行到进入delay_10ms()函数前,可以在图1右下角看到此时程序运行时间为0.00040800sec,此时我们看向反汇编窗口(Disassembly)。请注意圈出来的“LCALLdelay_10ms”汇编指令,程序运行到代码“inta=100

(十四)51单片机——LCD1602实现滚动效果

目录学习目标成果展示 硬件知识LCD1602介绍 引脚定义内部结构DDRAM字模库时序结构指令集操作流程代码 总结 学习目标        今天我们要学习的是LCD1602液晶显示屏。首先,我们会编写显示各种数据的函数,比如显示字符串、十进制数、二进制数等等,之后我们会让LCD1602显示屏动起来,形成我们日常看到的广告牌的样子。成果展示 LCD1602硬件知识LCD1602介绍         我们首先简单介绍一下LCD1602。LCD1602(LiquidCrystalDisplay)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自

Keil C51 if条件内使用位运算错误

KeilC51if条件内使用位运算错误在学习51单片机时我发现在if条件内做位运算,并与寄存器做判断时会出现错误,但在if外做好位运算,再进行比较,就不会有错误。于是我写了下面的程序进行测试。这段代码可以直接再普中51-实验板上运行。#include#defineKEY_PORTP3#defineLED_PORTP2typedefunsignedintu16;typedefunsignedcharu8;u8key1=0x2;u8key2=0x1;u8key3=0x4;voidmain(){while(1){u8zero=~0xff;if((KEY_PORT&key1)==(~0xff))//判

51单片机——串口通信,小白讲解,相互学习

通讯的基本概念        51单片机不仅可以实现串口通信,还可以通过IO口模拟实现多种其他通信,比如SPI,IIC等,学习这些通信前,我们很有必要了解下通信的基本概念。通信的方式可以分为多种,按照数据传输方式可分为串行通信和并行通信。按照通信的数据同步方式,可分为异同通信和同步通信。按照数据的传输方向又可分为单工,半双工和全双工通信。串行通信与并行通信(1)串行通信        串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机,计算机与外设之间的远距离通信,先传输低位在传输高位。如下

51单片机(三)独立按键控制LED

❤️专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。☀️专栏适用人群:适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。⭐️专栏主要内容:主要学习51单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。🌴专栏说明:如果文章知识点有错误的地方,欢迎

51单片机P0~P3口工作原理

这里写目录标题P0作数据/地址引脚发出信号接受信号作通用I/O引脚P1P1.x的电路结构P1.x的工作原理总结P2P2.x的电路结构P2.x的工作原理总结P3P3.x的电路结构P3.x的工作原理总结P0多路开关MUX决定P0.x是作数据/地址引脚还是作通用I/O引脚。三态缓冲器BUF1,BUF2由C1,C2控制是读锁存器还是读引脚作数据/地址引脚控制线置1,MUX连通地址/数据线,此时作P0.x数据/地址引脚发出信号数据/地址线置1,V1导通,V2截止。P0.x输出1的数据/地址信号;数据/地址线置0,V1截止,V2导通。P0.x输出0的数据/地址信号;接受信号数据输入:在取数据期间,“控制”

基于天问51-Core自制开发WIFI模块连接MQTT&巴法云平台-微信小程序显示温度数据

目录一、摘要二、项目准备材料三、硬件总体设计四、软件代码设计五、整体测试联调六、效果展示一、摘要本项目基于天问51-Core最小系统开发,自行设计PCB电路,主要包括DHT11、ESP8266、OLED三个主要外设模块。此项目实现的三大功能:1、基本功能:单片机将DHT11获取的温湿度数据通过OLED屏显示2、进阶功能:利用WIFI模块将DHT11温湿度数据上传到云平台3、高级功能:实现微信小程序网络请求接收云平台温度数据,并下发命令控制单片机。二、项目准备材料此项目开发需要准备的材料包含硬件和软件。硬件部分:天问51-Core核心板、STC_Link下载线、OLED0.96寸屏、ESP-01

点击Keil的C99解决Keil_C51无法定义局部变量问题以及解决变量不能定义在可执行函数前(User\main.c(22): error: #268: declaration may not a)

1.先说重点:先说一下C99重要的性质:那就是变量可以定义在变量被引用前的任意位置 在C89标准的时候,例如我要写一个for循环的函数在C99模式下,我们可以写成for(inti=0;i也就是可以将变量定义在被引用前的任意位置,但是在C99标准之前,要求函数中的局部变量必须定义在函数的开头。2、发现问题根源此前写了一个C51的程序,在函数中定义了一个局部变量,然后怎么都编译不通过,报错显示我定义的变量没有定义,我一开始以为是我其他部分的程序有问题,但是反复找了半天,都没找到,最后无意间看到一个资源描述下面的几行字,试了一下才真正找到原因所在。因为一个函数里面需要用到for循环,然后我定义一个顺

立创EDA入门3 通过51单片机最小板学习PCB设计

立创EDA入门3通过51单片机最小板学习PCB设计一、本文目的二、原理图设计1.新建工程,命名为51系统2.各模块原理图3.一些常用操作(1)放置普通元器件(2)封装、标签设置(3)在线库中查找元器件(4)芯片悬空端口(5)导线、接地、电源标识(6)画普通线(7)快捷键三、PCB操作1.原理图转PCB2.交叉选择3.布局传递4.规则设置5.DRC检查7.泪滴5.铺铜四、预览五、一些设计规则一、本文目的练习立创EDA基本操作学习立创EDAPCB板设计中用到的工具二、原理图设计1.新建工程,命名为51系统把原理图文件改名为51最小板,PCB文件名为PCB_51系统。51最小板电路大致分为以下几个模

51单片机驱动TCS3200颜色识别传感器

51单片机驱动TCS3200颜色识别传感器TCS3200简介输出频率与滤光器选择说明实验说明接线驱动驱动说明主要代码主函数实验现象验证:实验注意事项:TCS3200简介TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOSTCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清除4种滤光器。每种颜色滤光器均匀地按数组分布来清除颜色中偏移位置的颜色分量。内置的振荡器能输出方波,其频率与所选择的光的强度成比例关系,光线越强,内置的振荡器方波频率越高。输出频率与滤光器选择说明TCS3200