精华内容
下载资源
问答
  • 单片机自带ad转换的电压值范围是多少
    2021-05-18 09:57:24

    7dccec414d2b3a9b1d24fe4dbba58fb6.png

    (一)设计思路

    1.测量方法:

    多周期同步测量法( 倒数计数器法 )从根本上消除了±1误差,实现了等精度测量

    2.实现技术的选择:

    硬件实现法(可选的器件有通用的SSI/MSI/LSI集成电路、专用集成电路、可编程逻辑器件——如isPLD器件等);

    软件实现法(可选的平台有PC机、单片机、 DSP器件等)

    将这两种结合来实现设计要求。

    3.信号发生器的选择(频率范围900—1300.0(KHz))

    SG-4162AD高频信号发生器/计频器:频率范围:100KHZ-150MHZ◆分6档三次谐波到450MHZ±5%◆输出电压:100MVRMS◆低频输出:1KHZ2VRMS

    3.大概的系统设计原理框图:

    (二)子系统设计

    1.输入通道的设计。输入通道是由前置放大器和整形器组成的,所以要对前置放大器的增益和带宽指标进行估计。为了能准确测量信号,将输入信号经过一个放大整形电路。其具体实施方案为:将输入信号经过LM358运放放大,再通过74LS132整形,此时的信号还不能直接送入单片机,这是因为在硬件上CPU对INT0和INT1引脚的信号不能控制,解决这个问题要通过硬件,再配合软件来解决。

    2.预置闸门时间发生电路设计。闸门时间的确定,可以先由一个555定时器产生一个脉冲信号,将555产生的脉冲信号送入到74LS90十进制计数器当中,由于74LS90具有二-五进制混合计数的功能,所以可以用它来实现五进制计数,将74LS90的输出接到3—8线译码器74LS138的输入端,再将译码器的输出端接上五个发光二极管,这样就可以实现硬件上的闸门时间控制。但是考虑到硬件实现上的复杂性,可以通过软件上来实现,就是将五个发光二极管直接接到单片机的P1口由软件上来实现,通过按键来改变它的闸门时间。

    3.数码显示电路的设计。该部分电路是由单向八位移位寄存器74LS164和数码管组成的。同时还要显示频率和周期的单位,所以还需再级联一块74LS164,在74LS164的输出端接六个单位指示灯,分别表示周期频率的三个不同的单位数量级,即周期单位s,ms,μs和频率单位Hz,KHz及MHz。移位寄存器的时钟信号是由单片机的串行输出口TXD脚控

    1.单片机系统的选择:

    单片机子系统(根据下列要求选用AT89C51)

    ①由+5V电源供电,I/O口与TTL电平兼容,并有足够数目的I/O口;②要有丰富的四则算术运算和逻辑运算指令,指令执行速度要快;③片内除RAM外还要有EPROM;④至少有两个16位的定时器/计数器;⑤有外部中断输入引脚;⑥具有串行通信口;⑦价格要低廉

    其中输入通道组成框图如下:

    被测信号边沿选择电路:

    被测信号边沿选择电路的工作波形图:

    三、软件设计

    (一)软件主程序流程图(见图)

    (二)子程序的设计

    1.键盘中断服务子程序。因该频率计的测量项目较多,所以在系统初始化时,将默认测量项目设置为测频,且预置闸门时间设置为1ms。具体做法就是在主程序的系统初始化部分,将测频选择键的键值以及预置闸门时间设置代码写入单片机RAM单元中去。这样开机后即使用户没有选择任何测量项目键,也能进行频率测量。

    2.软件计数器子程序。该频率计所需要的不同闸门预置时间信号是由单片机产生的。由于预置闸门时间的范围很宽,最大值为10s,最小值为1ms,仅用单片机中的定时器硬件是不能实现的,需采用软硬件相结合的方法来实现。其具体实现方案为将C/T0定时器/计数器设置为由引脚高电平启动的方式1定时器T0,初始化将其初值设为0.该计数器的启动过程如下:主程序首先将单片机P1.6脚置为高电平(逻辑1)发出预置闸门信号,该信号经同步电路而产生高电平的同步门信号,从而使单片机引脚变为高电平,C/T0定时器中的计数器就被启动开始计数。

    3.数据处理子程序。当事件计数器和时间计数器的计数值NA,NB被读到单片机中后,通过调用数据处理子程序,根据过去读入并保存在单片机RAM单元中的测量项目的键值,预置闸门值代码,判断出所要测量的参数项目,对计数值NA,NB进行相应的处理,求出所测参数的值和单位,最后应将参数值转换为十进制数,再转换为驱动LED数码显示器的段码(每位包含5个数字段码和1个小数点)以及驱动三个单位符号指示灯之一的位码,作为显示子程序的输入数据,存放在9个RAM单元组成的显示缓冲区中。对计数值NA,NB的处理运算要用到除法和乘法,为了提高运算精度,应当采用浮点运算。显然,采用C语言来编写这些运算程序可大大提高编程效率。

    计数式测频的原理方框图:

    四、结论

    本系统采用大规模集成电路设计,用C51语言编程,实现了对不同波形、不同频率信号的测量。

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    更多相关内容
  • C51编程与ASM-51编程相比: ①寄存器分配、不同存储器的寻址及数据类型等细节完全由编译器自动管理。 ②程序有规范的结构,可分成不同的函数,可使程序结构化。 ③库中包含许多标准子程序,具有较强的数据处理...

    声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。


    作者:sumjess


    一、STC51单片机标号信息及封装类型:

    1、51单片机芯片厂商产品列表:

    在这里插入图片描述
    在这里插入图片描述

    二、51单片机外部引脚介绍:

    1、标识解释:

    STC—前缀,表示芯片为STC公司生产的产品。其他前缀还有如AT,i,Winbond,SST等。

    8—表示该芯片为8051内核芯片

    9—表示内部含Flash E^2PROM储存器。还有如80C51中的0表示内部含Mask ROM(掩模ROM)存储器;如87C51中7表示内部含ERPOM存储器(紫外线可擦除ROM)。

    C—表示该器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该芯片为低电压产品(通常为3.3V供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,即具有ISP可在线编程功能。

    5—固定不变。

    1—表示该芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB就是芯片内部程序存储空间大小。

    40—表示该芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高为24MHz。

    C—产品级别,表示芯片使用温度范围。C表示商业级,温度范围为0℃~+70℃。

    在这里插入图片描述

    PDIP—产品封装型号PDIP表示双列直插式。

    0707—表示本批芯片生产日期为07年第7周。

    CU8138.00D—不详。

    2、区分芯片引脚号:

    首先找到单片机表面凹进去的小圆坑,或这个使用颜色标识的小标记(圆点或三角或其他小图形),这个小圆坑或者小标记所对应的引脚就是这个芯片的第1引脚,然后逆时针方向数下去。

    在这里插入图片描述

    按照上图为例介绍单片机各个引脚的功能(40个引脚):

    ① 电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2(需掌握)

    在这里插入图片描述

    ② 编程控制引脚。如在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ③ I/O口引脚。如P0、P1、P2、P3、,4组8位I/O(需掌握)

    在这里插入图片描述
    在这里插入图片描述

    三、电平特性:

    在这里插入图片描述

    常用逻辑电平:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、二进制与十六进制:

    进制学习

    在线转换进制

    五、二进制逻辑运算:

    ① 按位取反: ~ 每一位上的0和1互换;

    左移: << 左移运算运算符左边是移位对象,右边是整型表达式,代表左移的位数。左移时,右端(低位)补0;左端(高位)移出的部分舍弃。

    右移: >> 右移时,右端(低位)移出的二进制舍弃,左端(高位)移入的二进制分两种情况:对于无符号整数和正整数,高位补0;对于负数,高位补1。

    short int a =-8,b;
    b=a>>2;
    //a的二进制码:1111111111111000
    //移位后     :1111111111111110
    

    ④ 按位& 全1为1,其它为0

    ⑤ 按位异或 ^ 不同为1,其它为0

    ⑥ 按位 | 有1为1,其它为0

    六、单片机的C51基础知识介绍:

    1、利用C语言开发单片机的优点:

    C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程。

    C51编程与ASM-51编程相比:

    ①寄存器分配、不同存储器的寻址及数据类型等细节完全由编译器自动管理。
    ②程序有规范的结构,可分成不同的函数,可使程序结构化。
    ③库中包含许多标准子程序,具有较强的数据处理能力,使用方便。
    ④具有方便的模块化编程技术,使已编好的程序很容易移植。
    ⑤对单片机的指令系统不要求有任何的了解, 就可以用 C 语言直接编程操作单片机。

    2、C51中的基本数据类型:

    在这里插入图片描述

    大家在 C 语言的书籍上还能看到有short int, long int, signed short int 等数据类型, 在 单片机的C 语言中我们默认的规则如下: short int 即为 int, long int 即为 long, 前面若无 unsigned 符号则一律认为是 signed 型。

    3、C51 数据类型扩充定义:

    单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。对千大多数初学者来讲, 这些寄存器的声明已经完全被包含在 51 单片机的特殊功能寄存器声明头文件 " reg5l .h" 中了, 初学者若不想深入了解,完 全 可 以 暂不操作它。

    sfr-特殊功能寄存器的数据声明,声明一个8位的寄存器。
    sfr16—16位特殊功能寄存器的数据声明
    sbit— 特殊功能位声明, 也就是声明某一个特殊功能寄存器中的某一位。
    bit— 位变量声明,当定义一个位变量时可使用此符号。

    1、例如: sfr SCON = Ox98;
    SCON 是单片机的串行口控制寄存器, 这个寄存器在单片机内存中的地址为 Ox98 。 这 样声 明 后 , 我 们 在以后要操作这个控制寄存器时, 就可以直接对 SCON 进行操作, 这时编译器也会明白 , 我们实际要操作的是单片机内部Ox98 地址处的这个寄存器,而 SCON 仅仅是这个地址的一个代号或是名称而已,当然,我们也可以定义成其他的名称。
    2、例如: sfr16 T2 = OxCC;
    声明一个16位的特殊功能寄存器, 它的起始地址为 OxCC 。
    3、例如: shit TI =SCON^1;
    SCON 是一个 8 位寄存器, SCON ^ 1 表示这个 8 位寄存器的次低位, 最低位是 SCON^O;
    SCON^7 表示这个寄存器的最高位。该语句的功能就是将 SCON 寄存器的次低位声明为 TI,
    以后若要对 SCON 寄存器的次低位操作, 则可直接操作 Tl。

    4、C51 中常用的头文件:

    通常有 reg51.h,reg52.h, math.h,ctype.h,stdio.h, stdlib.h,absacc.h,intrins.h。

    但常用的却只有 reg51.h或reg52.h,math.h。

    reg51.h 和 reg52.h 是定义 51 单片机或 52 单片机特殊功能寄存器和位寄存器的, 这两个头文件中大部分内容是一样的, 52 单片机比 51 单片机多一个定时器T2, 因此, reg52.h 中也就比 reg51.h 中多几行定义T2 寄存器的内容。
    math.h 是定义常用数学运算的, 比如求绝对值、求方根、求正弦和余弦等, 该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。
    当我们对特殊功能寄存器有了基本的了解后,大家就可以自己动手来写具有自己风格的头文件了。例如, 在 TX-l C 单片机学习板上, 我们用的是STC 公司的 51 内核单片机, 该单片机内部除了一般 51 单片机所具有的功能外, 还有一些特殊功能, 当我们要使用这些特殊功能时,就要对它进行另外的操作,此时就需要我们自己定义这些特殊功能寄存器的名称,我们可以根据芯片说明文档上所注明的各个寄存器地址来定义它们,关千这方面的扩展,我们会在以后的实际应用中再次提到。

    5、C51 中的运算符:

    C51 算术运算、关系(逻辑)运算、位运算符如下表所示。
    “/” 用在整数除法中时, 10 /3=3, 求模运算也是在整数中, 如 10 对 3 求模即 10 当中含有多少个整数的 3, 即 3 个。当进行小数除法运算时, 我们需要这样写 10/3.0 , 它的结果是3.333333, 若写成 10/3 它只能得到整数而得不到小数, 这一点请大家一定注意。
    "% ''求余运算, 也是在整数中, 如 10%3=1, 即 10 当中含有整数倍的 3 取掉后剩下的数即为所求余数

    在这里插入图片描述
    "==“两个等号写在一起表示测试相等,即判断两个等号两边的数是否相等的意思,在 写程序时我们再做详解。” !=, 判断两个等号两边的数是否不相等。
    在这里插入图片描述

    6、C51 中的基础语句:

    在这里插入图片描述

    7、学习单片机应该掌握的主要内容:

    ( 1 ) 掌握单片机最小系统能够运行的必要条件。
    ①电源
    ②晶振
    ③复位电路
    ( 2 ) 掌握对单片机任意 VO 口的操作。
    句输出控制电平高低。
    @输入检测电平高低。
    ( 3 ) 定时器: 重点掌握最常用的方式2 。
    ( 4 ) 中断: 掌握外部中断、定时器中断、串口中断。
    ( 5 ) 串口通信: 掌握单片机之间通信、单片机与计算机之间的通信。

    掌握了以上这几点知识后,可以说大家对单片机已经基本掌握了,其他的知识也就是在 这些知识点的基础上扩展出的, 只 要大家愿意积极尝试, 善于举一反三, 很 快便能将单片机相关的知识轻松掌握。

    展开全文
  • 51单片机的ADC0808数字电压表设计

    千次阅读 2021-05-21 01:43:52
    摘要近些年来,数字电压表逐渐进入人们的视线中,它主要采取数字化测量技术。与传统的指针式仪表相比,它的功能有了进一步的完善,并且精度也有了很大的提高。数字电压表主要采用单片机和模/数转换模块,这样不仅...

    摘要

    近些年来,数字电压表逐渐进入人们的视线中,它主要采取数字化测量技术。与传统的指针式仪表相比,它的功能有了进一步的完善,并且精度也有了很大的提高。数字电压表主要采用单片机和模/数转换模块,这样不仅提高了测量速度,而且抗干扰能力强、使用便捷、可扩展性强、测量准确。

    本文主要采用AT89C51单片机和ADC0808芯片制作的简易数字电压表,可以采集0~5V和5~10V的模拟直流电压进行测量,其测量结果在液晶LCD1602上显示。该设计硬件电路主要有三个模块组成:A/D转换模块、数据处理模块及输出显示模块。数据处理由单片机AT89C51来完成,它主要把ADC0808传送来的数值经一定的数据处理,然后送至显示模块进行显示,同时控制显示芯片1602的工作。程序设计上有各模块初始化操作、电压档位选择和LCD1602液晶显示程序等。

    系统硬件设计总体方案

    1.1    设计要求

    以MCS-51单片机为关键部件,制作一个简易的数字电压表。使用双通道可选择直流电压输入,能够测量0-5V和5-10V之间的直流电压。当电压值超过5V时,选择通道2(5-10V通道)采集电压。

    使用LCD1602来完成电压的液晶显示。

    使用较少的元器件,尽可能降低功率损耗,同时准确、快速完成测量。

    由于电压表允许过载,因此所测电压允许适当超过量程。

    1.2    设计方案

    总体设计电路有以下几部分组成:AT89C51单片机、A/D转换电路、液晶LCD显示电路、时钟电路、复位电路、被测电压输入电路及量程选择和报警电路。总体硬件设计框图如图1-1所示:

    296b24d61cfbcb744b5aa0765bece43e.png

    图1-1 硬件电路设计框图

    1.3   2.

    系统硬件电路设计

    2.1    A/D转换模块

    日常生活中的物理量都是模拟量,为了能够方便的分析各个量,就需要把模拟量转换成数字量的器件。现在越来越多的设备都需要进行模数转换,把复杂的模拟信号转换成已明白的数字信号,因此A/D转换器也得到了更深一层的研究。按照不同的A/D转换芯片的转换原理可把其分为逐次逼近行、双积分型等。其中双积分式A/D转换器抗干扰能力强、转换精度高、价格便宜。但与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,它们可以与单片机系统连接,将数字量送入单片机进行分析和显示。一个n位的逐次逼近型转换器只需要比较n次,这样大大节省了时间,而且逐次逼近型转换速度快,因而在实际中得到广泛的使用。

    由于ADC0808芯片采用逐次逼近式A/D转换原理,因此本设计便运用其进行模/数转换,它可以实现8路模拟信号的选择采集,而且它的转换时间为100us。此次使用的是12MHz的晶振,因此它能够提供转换的时钟即满足设计的需要。

    对于n位的A/D转换器,它的分辨率是满量程输入电压和2n之比。ADC0808的满量程为5V。则其分辨率为0.02V。

    ADC0808内部结构主要有8路模拟通道选择开关、地址锁存与译码器和8位A/D转换器、三态输出锁存器等构成,其引脚及连接电路如图2-1所示:

    eede96bffe32ede95735caeec62018ba.png

    图2-1 ADC0808引脚图

    由图2-1所示,其中IN0~IN7为模拟量输入通道,其输入电压范围均为0~5V。此次设计分为两通道输入分别为IN0(0-5V)和IN1(5-10V),并且采用开关K1、K2来选择。A、B、C为模拟量输入通道的选择端,是与单片机的P1相连并通过软件的编程产生控制信号。ALE、START为地址锁存允许信号和转换启动信号,它们都有单片机P3口产生控制信号。转换器的CLK由单片机的中断程序产生,主要是完成输入数据的扫描。EOC是ADC0808转换结束信号端口,只有等到EOC变为高电平,数据转换才结束。实现这个过程,就需要使用程序设计来完成。OE是输出允许信号,只有OE为低电平时,才能输出转换得到的数据。程序中先让OE为0,然后为1,这样把数据送入单片机P2口。VREF(+)、VREF(—)是芯片的电源接口。

    2.2    电压输入电路

    ADC0808的基准电压为+5V,所以当要测量的电压值超过5V时则需要由开关选择衰减电路,经过衰减后输入转换采集器。输入电路如图2-4所示:

    5445573f1e480dd33eccfcb0ead0585e.png

    图2-4 输入电路图

    当要测试的电压为0~5V时,选择IN0输入,在仿真中运用滑动变阻器分压的原理产生0-5V的电压来代表实际电压。而当超过5V时则选择左边的电路,由于实际的电压变允许适当的超量程,所以图中R5和R6的电阻值分别为6k、3k,这样就把电压衰减为原来电压值的1/3,同时由于RV5分压的原理可以得到5~10V的电压来模拟实际要测试的电压值。同时其最高测量电压允许适当超过10V。这样本电压表就有两个量程即0~5V和5V~10V。需要变换量程时,由选侧开关K1、K2相互切换。由于本此设计采用手动调节电压档位的方式,因此在测量电压时应该先对被测电压进行估算,同时先由较大量程进行测量,如果值过小,再调节档位。不然不容易超量程损坏仪器。直流电压输入时,由于尖峰的出现,也就需要对输入的电压进行滤波,电容C4、C5在次的作用就是进行滤波

    2.3    接口电路

    对于本设计,主要的接口电路有时钟电路、复位电路、电压量程选择和报警电路。

    2.4.1时钟电路

    单片机89C51芯片中有一个内部时钟,其中引脚18为输入端,19为输出端引脚,这两个引脚连接一个12MHz的晶振,同时再连接两个瓷片电容,这样便提供片内相移的条件,时钟电路如图2-5所示:

    30ceafe31c487edae7cb417cb222d3ea.png

    图2-5 时钟电路图

    由图2-4可知,晶体的振荡频率通常取取12MHz,对于11.0592MHz一般在单片机串行通信时使用。这时单片机一个时钟周期为:

    e7ea2f03e6b6e87237846c5f82e217b5.png            (2-1)

    图电容C1和C2,它们和晶振的主要作用是结合单片机内部振荡电路实现相位的180°移相,这样晶振才能够起振。同时对电路中所需的电容储电量要求不高,均为30pF。若过高或过低都会对振荡产生影响。

    2.4.2 复位电路

    AT89C51单片机的RST为复位引脚,复位信号高电平有效,并且其有效时间应该延续出现2个机器周期以上即可确保系统复位,复位操作完成后,RST端一直保持高电平,那么单片机就始终处于复位状态,当RST恢复低电平后单片机才能进入其他操作。单片机复位电路有几种类,本次设计主要采用手动复位电路,这样可以人为的操作,简单方便。电路如图2-6所示:

    8d8c7417e95b461855d2c571f887bda8.png

    图2-6 复位电路

    由上图2-6可知,只有RST端维持2个周期以上高电平才能完成复位操作。电容C3两端在单片机启动时持续充电为5V,由于按键未按下,电阻R1两端电压为0,此时RST处于低电平系统工作正常,当按键摁下时,电阻R2所在的支路导通,与C3形成一个回路,电容C3开始释放之前所充的电量,在很短的时间内,其电压值由5V变为1.0V,甚至更小些,与此同时,RST又收到高电平,这时系统自动复位。

    2.4.3量程选择和报警电路

    本设计由于采用双通道输入的方式,所以可以选择不同的量程,分别为0~5V和5~10V。这个操作由选择开关K1、K2来完成,但是如果K1、K2同时闭合,报警提示灯点亮。电路如图2-7所示:

    a0b71c7a021651136edd8bd43ce424e5.png

    图2-7 量程选择和报警电路图

    2.4    LCD1602显示电路设计

    本次设计中采用LCD1602作为显示器,与以前的LED数码管显示相比,其显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路。同时可以满足不同的输入、移位要求,而且接口方式简单、可靠。LCD1602模块的引脚及连接电路如图2-8所示:

    5700ebc048238acc346e39e10579aebf.png

    图2-8 LCD1602引脚

    其中D0~D7数据接收端口与单片机P0口相连。E端为使能端,当它由0变为1,LCD1602才能进行读写操作,它和单片机P3.5相连,并由其输出控制信号。RS、RW是1602的读写控制端,它们分别与单片机的P3.6、P3.7相对应,这样使用LCD显示时可由单片机的程序完成控制。VDD、VSS为液晶屏的电源端口,VEE端电压信号的大小可以改变液晶屏的亮度。由于P0口作为输出口时,它没有高电平的状态所以仿真电路时需要加上拉电阻RP1,这样P0口就有高电平状态。

    3.系统程序设计

    系统的主程序流程如图3-1所示:

    1b469ba440b270b7d3dce4dffd2a746a.png

    图3-1 系统主程序流程图

    本设计程序设计主要分为几个模块:初始化程序设计、A/D采样程序设计、测量参数数据处理程序设计、量程选择和报警程序设计、LCD1602显示程序设计。下面逐个介绍各个模块的程序设计。

    3.1    初始化程序

    所谓初始化,将利用到单片机内部各部件或扩展芯片进行初始工作状态设定,其主要负责设置定时器模式、初始设定、开中断和打开定时器等,对于液晶1602同样也要进行初始化,其中包括清除显示屏、显示开/关控制、功能设置、进入模式设置等。其中部分初始化程序如下:

    w_comd(0x0c);                                          //开显示屏,关光标;

    w_comd(0x06);                                          //字符进入模式:屏幕不动,字符后移;

    ET0=1;                                                                      //开定时中断;

    3.2    A/D转换程序

    模/数转换流程图如图3-2所示。

    f171ee52e2d168d5d8da471a5dd4a858.png

    图3-2 A/D转换流程图

    由图可知,A/D转换程序首先定义启动信号、输出允许信号、输入地址锁存信号、A/D转换结束信号及CLK时钟信号的变量。然后利用AT89C51中定时器T0的工作方式2产生CLK信号,供A/D转换器使用,START信号的上升沿启动A/D转换,等待转换结束,即EOC从0变为1,同时OE是输出使能信号端,其信号从高到低电平,输出转换数据并将其进行数值转换分别求出百、十、个位,再送入LCD进行数据显示。

    3.3    LCD1602显示程序3.3.1 LCD1602初始化

    液晶LCD初始化主要就是在液晶显示器的每一个寄存器的初始设置,也就是向LCD中的各个寄存器写入要设定的数据。该设计的初始化过程为先上电,然后进行判忙操作,最后再进行各个功能的设置,其中包括显示状态的设置(行、位的起始位置)、输入方式的设置。初始化过程如图3-5所示:

    629b7e6d717ddf2f1f326e65bad8d0a8.png

    图3-5 LCD初始化流程图

    该设计主要使用了LCD1602的读忙操作、写数据操作、写命令操作和写字符操作。其中每个操作都需要使能端RW、RS的控制信号,当RS、RW均为0的情况下,可以进行读、写操作,而读忙只有RS=0、RW=1时,才能进行此操作。LCD1602如果要显示字符,首先要写入显示字符的首地址,此次使用的是从第一行第四个字符04地址开始显示,但是液晶写数据操作时地址最高位D7必须为高电平,因此写入数据的时候应该是00000100(04H)+10000000(80H)=10000100(84H)。

    4.1    显示结果及误差分析4.2.1 显示结果当输入电压为4.55V时,显示结果如图4-1 所示,实际电压为4.54V。

    71e83ee7902ff35bfafdef3800200bd2.png

    图4-1 输入电压为4.55V时,LCD显示结果

    当输入电压为9.97V时,显示结果如图4.2所示,实际电压为9.96V。

    75a17221ee4cc2bf9cd5942feef6aeb6.png

    4.2.2 误差分析

    通过对输入不同的电压进行测试,得到了仿真数据。可得出两者的对比测试表,如下表4-1所示:

    表4-1 简易电压表与“标准”电压表对比测试表标准电压/V电压表测量值/V绝对误差/V

    1.50

    3.50

    4.50

    5.00

    7.45

    8.71

    9.971.50

    3.49

    4.49

    5.00

    7.44

    8.70

    9.960.00

    0.01

    0.01

    0.00

    0.01

    0.01

    0.01

    从表4-1中的几组数据的分析,测试电压误差以0.01V的幅度变化。这主要是硬件本身的误差导致。由于单片机AT89C51、ADC0808数据传输端口为8,当输入电压为5.00V时,输出端口的数据为11111111(FFH),所以ADC0808的最高分辩率为0.0196V(5/255)。这就决定了电压表的最高分辩率只能到0.0196,因此测试电压通常以0.01的幅度变化。

    该数字电压表所测得的电压值和标准的电压相比,大概有0-0.01V的偏差。由于硬件方面的原因,此误差只能通过硬件上的完善才能得以校正。因为该电压表设计时用的是5V的供电电源作为基准电压,所以电压可能出现误差。如果要测量大于5V的电压时,应当使用分压电路,程序中对计算结果进行调整就可以了。

    通过多次的仿真和调整,此次设计的电压表的绝对误差为0~0.01V,因此本次毕业设计符合最初设计要求。

    附录一 系统硬件设计总图

    628249524e622da7368589665157060c.png

    单片机源程序如下:

    #include#define uchar unsigned char

    #define  uint unsigned int

    sbit OE=P3^2;                                                                                    //AD数据输出控制端口

    sbit EOC=P3^3;                                                                      //数据转换结束由0变1

    sbit START=P3^4;                                                                      //AD转换启动  ALE接口

    sbit CLK=P3^1;

    sbit  rw=P3^6;                                                                      //1602读写选择

    sbit  rs=P3^5;                                                                                    //1602寄存器选择端

    sbit  en=P3^7;                                                                      // //1602读写使能端

    sbit a=P1^0;                                                                                    //a,b,c为转换器通道选择地址

    sbit b=P1^1;

    sbit c=P1^2;

    sbit d=P1^5;                                                                                                  //报警信号端

    sbit K1=P1^6;                                                                                                  //量程选择开关

    sbit K2=P1^7;

    uchar dis[4]={0,0,0,0};                                                                      //缓存数据处理结果

    void delay(uchar i)                                                                      //延时程序

    { uchar n;

    while(i--)

    {

    for(n=0;n<250;n++)

    ;

    }

    }

    bit lcd_busy_check()                                                        //1602状态检测是否忙碌

    { bit  result;

    c2c9ed493cd281aa86d8a6f5178c4c01.gif [1] [2] [3] 610626052e95c7fbe3d254abc769d9ad.gif

    展开全文
  • STC51-C51基础知识

    千次阅读 2021-10-29 20:37:21
    1---------表示该芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB就是芯片内部程序存储空间大小。 40--------表示该芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振...

    1 单片机定义与结构

    1.1 什么是单片机

            单板机:将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。单板机的I/O设备简单,软件资源少,使用不方便。早期主要用于微型计算机原理的教学及简单的测控系统,现在已很少使用。
            单片机:在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 Intel公司推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

    1.2 单片机的内部结构

            单片机内部结构示意图如下图所示,它由微处理器CPU、随机存取存储器RAM、只读存储器ROM、基本输入/输出(I/O)接口电路、定时器/计数器和中断系统等部件组成,并把它们制作在一块大规模集成电路芯片上,就构成一个完整的单片微型计算机。

    1.3 51单片机标识信息

            通常我们所说的51单片机是指以51内核扩展出的单片机。生产51单片机的厂商很多,51单片机的型号也很多。下表列出了一些51单片机的厂商和型号。

            以上提到的单片机都是51内核扩展出来的单片机,只要学会了51单片机的应用,这些单片机也就基本都能使用了。单片机都是相通的,不管是51单片机还是其它单片机,都是用户编程控制来实现一定的功能。

    2 51单片机外部引脚介绍

    2.1 标识解释

            STC-----前缀,表示芯片为STC公司生产的产品。其他前缀还有如AT,i,Winbond,SST等。
            8---------表示该芯片为8051内核芯片。
            9---------表示内部含Flash E^2PROM储存器。还有如80C51中的0表示内部含Mask ROM(掩模ROM)存储器;如87C51中7表示内部含ERPOM存储器(紫外线可擦除ROM)。
            C--------表示该器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该芯片为低电压产品(通常为3.3V供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,即具有ISP可在线编程功能。
            5---------固定不变。
            1---------表示该芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB就是芯片内部程序存储空间大小。
            40--------表示该芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高为24MHz。
            C---------产品级别,表示芯片使用温度范围。C表示商业级,温度范围为0℃~+70℃。

     

    芯片上标号对应温度范围
    C商业级芯片的温度范围是:0℃~70℃
    I工业级集成芯片(IC)的温度定额为-40℃~85℃
    A汽车级集成芯片(IC)的温度定额为-40℃~125℃
    M军品级集成芯片(IC)的温度定额为-55℃~125℃

            PDIP---产品封装型号PDIP表示双列直插式。
            0707---表示本批芯片生产日期为07年第7周。
            CU8138.00D-----不详。

    2.2 区分芯片引脚号

            首先找到单片机表面凹进去的小圆坑,或这个使用颜色标识的小标记(圆点或三角或其他小图形),这个小圆坑或者小标记所对应的引脚就是这个芯片的第1引脚,然后逆时针方向数下去。

            按照上图为例介绍单片机各个引脚的功能(40个引脚):

            ① 电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2(需掌握)

            VCC(40脚)、VSS(20脚)—单片机的电源引脚,不同型号的单片机需要接入对应的电源电源电压。开发板上配带的单片机的供电电压为5V,低压单片机的电压为3.3V,用户在使用时要查看芯片手册,确保接入正确的电压。
            
    XTAL1(19脚)、XTAL2(18脚)—外部时钟引脚,XTAL1为内部振荡电路的输入端,XTAL2为内部振荡电路的输出端。8051的时钟有两种振荡方式,一种是片内时钟振荡方式,需要在这两个引脚上外接石英晶体和振荡电容,振荡电容的值一般为10pf~30pf;另一种是外部时钟方式,需要将XTAL1接地,外部时钟信号由XTAL2脚输入。

            ② 编程控制引脚。如RST、PSEN、ALE/PROG、EA/VPP,了解即可。

            RST(9脚)—单片机复位引脚。当输入连续两个机器周期以上为高电平时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码,通俗的讲,就是单片机从头开始执行程序。
          
      PSEN(29脚)—程序存储器允许输出控制端。在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作,由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部ROM,因此这个引脚大家只需了解即可。
          
      ALE/PROG(30脚)—在单片机扩展外部RAM时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。ALE有可能是高电平也可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号会跳变(即由正变负)将P0口上低8位地址信号送入锁存器;当ALE是低电平时,P0口上的内容和锁存器输出一致。关于锁存器的内容,我们后面会有详细介绍。在没有访问外部存储器期间,ALE以1/6振荡周期频率输出(即6分频),当访问外部存储器时,以1/12振荡周期输出(即12分频)。从这里可以看到,当系统没有进行扩展时,ALE会以1/6振荡周期的固定频率输出,因此可以作为外部时钟,或作为外部定时脉冲使用。PROG为编程脉冲的输入端,单片机的内部有程序存储器(ROM),它的作用是用来存放用户需要执行的程序,那么我们怎样才能将写好的程序存入这个ROM中呢?实际上,我们是通过编程脉冲输入才写进去的,这个脉冲的输入端口就是PROG。现在有很多单片机都已经不需要编程脉冲引脚往内部写程序了,比如我们用的STC单片机,它可以直接通过串口往里面写程序,只需要三条线与计算机相连即可。而且现在的单片机内部都已经带有丰富的RAM,所以也不需要再扩展RAM了,因此ALE/PROG这个引脚的用处也已经不大。
        
        EA(31脚)EA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。EA接低电平时,单片机直接读取外部ROM。8031单片机内部是没有ROM的,所以在使用8031单片机时,这个引脚是一直接低电平的。8751单片机烧写内部EPROM时,利用此引脚输入21V的烧写电压。因为现在我们用的单片机都有内部ROM,所以一般在设计电路时此引脚始终接高电平。

            ③ I/O口引脚。如P0、P1、P2、P3、,4组8位I/O(需掌握)

            P0口(32脚~39脚)—双向8位三态I/O口,每个口可独立控制。51单片机P0口内部没有上拉电阻,为高阻状态,所以不能正常地输出高/低电平,因此该组I/O口在使用时务必要外接上拉电阻,一般我们选择接入10k欧的上拉电阻
            
    P1口(1脚~8脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。之所以称它为“准双向”是因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个“准”备过程,所以才称为准双向口。单片机P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
            
    P2口(21脚~28脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,与P1口相似。
            
    P3口(10脚~17脚)—准双向8位I/O口,每个口可独立控制,内带上拉电阻,作为第一功能使用时就当做普通I/O口,与P1口相似,作为第二功能使用时,各引脚的定义如下表所示。值得强调的是,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能。

    3 电平特性

            数字电路中只有两种电平:高电平和低电平
            单片机为TTL电平
                    高电平:5V或者3.3V,取决单片机电源。
                    低电平:0V
            计算机串口的RS232电平
                    高电平:-12V
                    低电平:+12V

            所以当我们用单片机跟电脑通信的时候,我们要通过各种元器件将单片机的电平转换为计算机可识别的电平才能跟电脑进行通信。

    4 二进制逻辑运算

            ① 按位取反 ~ 每一位上的0和1互换;
            ② 左移 << 左移运算运算符左边是移位对象,右边是整型表达式,代表左移的位数。左移时,右端(低位)补0;左端(高位)移出的部分舍弃。
            ③ 右移>> 右移时,右端(低位)移出的二进制舍弃,左端(高位)移入的二进制分两种情况:对于无符号整数和正整数,高位补0;对于负数,高位补1。

    short int a =-8,b;
    b=a>>2;
    //a的二进制码:1111111111111000
    //移位后     :1111111111111110

            ④ 按位与& 全1为1,其它为0;
            ⑤ 按位异或^ 不同为1,其它为0;
            ⑥ 按位或 | 有1为1,其它为0;

    5 单片机的基础知识介绍

    5.1 80C51系列介绍

            80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列单片机主要产品有:
                    ①Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;
                    ②ATMEL的:89C51、89C52、89C2051等;
                    ③Philips、华邦、Dallas 、STC、Siemens(Infineon)等公司的许多产品 。

    80C51的引脚封装

    P3口第二功能各引脚功能定义
    P3.0RXD串行口输入
    P3.1TXD串行口输出
    P3.2INT0外部中断0输入
    P3.3INT1外部中断1输入
    P3.4T0定时器0外部输入
    P3.5T1定时器1外部输入
    P3.6WR外部写控制
    P3.7RD外部读控制

            总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data  Bus), 地址总线 AB(Address  Bus)和控制总线 CBControl   Bus)
            CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
            RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
            ROM:用以存放程序、一些原始数据和表格;
            I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
            T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
            
    五个中断源的中断控制系统
            一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
            片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。

    5.2 单片机工作的基本时序

            机器周期指令周期
                    ①振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ。 
                    ②状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 
                    ③机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。 
                    ④指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。

    5.3 利用C语言开发单片机

            C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。
            一个简单的单片机C程序要有什么?

    #include<reg51.h>          //包涵头文件
    void main()                //程序主函数
    {
    	while(1)
    	{
    	}
    }
    C-51的基本语句
    if选择语句
    while 循环语句
    for循环语句
    switch/case多分支选择语句
    do-while循环语句

            if-else语句:

    //如果表达式的值为真(非0),则执行语句1,否则执行语句2 
    if(表达式) 
        {语句1;}
    else  
        {语句2;}

            while语句:

    //while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。
    while(表达式)
      {语句;}

            do-while 语句:

    //这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。
    do
      {语句;}
    while(表达式);

            for语句:

    //它的执行过程如下:
    //1)先求解表达式1。
    //2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
    //3)求解表达式3。
    //4)转回上面第2)步继续执行。
    //循环结束,执行for语句下面的一个语句。
    for(表达式1;表达式2;表达式3)
     {语句}

            switch语句:

    //其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
    switch(表达式)
    { 
      case常量表达式1:语句1;
      case常量表达式2:语句2;
       … 
      case常量表达式n:语句n;
      default        :语句n+1;
    }
    

            函数的定义:

    返回变量类型 函数名(输入变量类型)
    {
    	函数体;
    }
    unsigned char read(unsigned char addr)
    {
    	unsigned char dat;        //定义一个变量存放返回值
    	(do anything you want); //函数中的程序。
    	return dat;               //返回函数的返回值
    }

            函数的调用:在函数调用之前要在主函数前面加入上该函数的声明。(或者你可以放在头文件里面,包含该头文件时,就可以声明了。)

    5.4 C51中的基本数据类型

            大家在 C 语言的书籍上还能看到有short int, long int, signed short int 等数据类型, 在单片机的C 语言中我们默认的规则如下: short int 即为 int, long int 即为 long, 前面若无 unsigned 符号则一律认为是 signed 型。

    5.5 C51 数据类型扩充定义

            单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。对于大多数初学者来讲, 这些寄存器的声明已经完全被包含在 51 单片机的特殊功能寄存器声明头文件 " reg51.h" 中了, 初学者若不想深入了解,完全可以暂不操作它。
            ①sfr—(sfr 变量名=地址值;)—特殊功能寄存器的数据声明,声明一个8位的寄存器。
            ②sfr16—(sfr16 变量名=地址值;)—16位特殊功能寄存器的数据声明
            ③sbit—(sbit 变量名=地址值;)— 特殊功能位声明, 也就是声明某一个特殊功能寄存器中的某一位。
            ④bit—(bit 变量名=地址值;)—位变量声明,当定义一个位变量时可使用此符号。
            sfr SCON = Ox98;
            SCON 是单片机的串行口控制寄存器, 这个寄存器在单片机内存中的地址为 Ox98 。 这样声明后 , 我们在以后要操作这个控制寄存器时, 就可以直接对 SCON 进行操作, 这时编译器也会明白 , 我们实际要操作的是单片机内部Ox98 地址处的这个寄存器,而 SCON 仅仅是这个地址的一个代号或是名称而已,当然,我们也可以定义成其他的名称。
            sfr16 T2 = OxCC;
            声明一个16位的特殊功能寄存器, 它的起始地址为 OxCC 。
            sbit TI =SCON^1;
            SCON 是一个 8 位寄存器, SCON ^ 1 表示这个 8 位寄存器的次低位, 最低位是 SCON^O;SCON^7 表示这个寄存器的最高位。该语句的功能就是将 SCON 寄存器的次低位声明为 TI,以后若要对 SCON 寄存器的次低位操作, 则可直接操作 Tl。
     

    5.6 C51 常用到的一些预处理命令

            #define:

    #define A P0(注意后面不用加分号)

            #typedef:

    typedef unsigned char uint;(后面要加分号)

            重新定义一些常用的关键词,可以增强程序的可移植 性,因为在不同的编译软件上面,C语言的数据类型 的关键词的位宽是不一样的。

            #ifndef…#endif:

    #ifndef
    …
    #endif

            条件编译,常用于头文件的定义还有一些程序条件编译。

    5.7 C51中常用的头文件

            通常有 reg51.h,reg52.h, math.h,ctype.h,stdio.h, stdlib.h,absacc.h,intrins.h。但常用的却只有 reg51.hreg52.h,math.h
            reg51.hreg52.h定义 51 单片机或 52 单片机特殊功能寄存器和位寄存器的, 这两个头文件中大部分内容是一样的, 52 单片机比 51 单片机多一个定时器T2, 因此, reg52.h 中也就比 reg51.h 中多几行定义T2 寄存器的内容。
            math.h定义常用数学运算的, 比如求绝对值、求方根、求正弦和余弦等, 该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。
            当我们对特殊功能寄存器有了基本的了解后,大家就可以自己动手来写具有自己风格的头文件了。例如, 在 TX-l C 单片机学习板上, 我们用的是STC 公司的 51 内核单片机, 该单片机内部除了一般 51 单片机所具有的功能外, 还有一些特殊功能, 当我们要使用这些特殊功能时,就要对它进行另外的操作,此时就需要我们自己定义这些特殊功能寄存器的名称,我们可以根据芯片说明文档上所注明的各个寄存器地址来定义它们,关千这方面的扩展,我们会在以后的实际应用中再次提到。

    5.8 C51 中的运算符

            C51 算术运算、关系(逻辑)运算、位运算符如下表所示。

            “/” 用在整数除法中时, 10 /3=3, 求模运算也是在整数中, 如 10 对 3 求模即 10 当中含有多少个整数的 3, 即 3 个。当进行小数除法运算时, 我们需要这样写 10/3.0 , 它的结果是3.333333, 若写成 10/3 它只能得到整数而得不到小数, 这一点请大家一定注意。
            "%''求余运算, 也是在整数中, 如 10%3=1, 即 10 当中含有整数倍的 3 取掉后剩下的数即为所求余数
            "==“两个等号写在一起表示测试相等,即判断两个等号两边的数是否相等的意思,在写程序时我们再做详解。” !=, 判断两个等号两边的数是否不相等。
     

    5.9 学习单片机应该掌握的主要内容

            1)掌握单片机最小系统能够运行的必要条件。
                    ①电源
                    ②晶振
                    ③复位电路
            2)掌握对单片机任意 VO 口的操作。
                    ①IO输出控制电平高低。
                    ②IO输入检测电平高低。

                    上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻起到一个限流的作用,下拉就是下拉到低电平。
                    为什么要加上拉电阻?               
                            ①OC门要输出高电平,外部必须加上拉电阻。
                            ②加大普通IO口的驱动能力。
                            ③起到限流的作用。 
                            ④抵抗电磁干扰。
                    上拉电阻大小的选择?
                            ①从降低功耗方面考虑应该足够大,因为电阻越大,电流越小。
                            ②从确保足够的引脚驱动能力考虑应该足够小,电阻越小,电流才能越大。
                            ③开漏输出时,过大的上拉电阻会导致信号上升沿变缓。

            3)定时器: 重点掌握最常用的方式2 。
            4)中断: 掌握外部中断、定时器中断、串口中断。
            5)串口通信: 掌握单片机之间通信、单片机与计算机之间的通信。

            掌握了以上这几点知识后,可以说大家对单片机已经基本掌握了,其他的知识也就是在 这些知识点的基础上扩展出的, 只 要大家愿意积极尝试, 善于举一反三, 很 快便能将单片机相关的知识轻松掌握。

    展开全文
  • 毕设--基于51单片机数字电压表的设计
  • //SMG12232A2标准图形点阵型液晶显示模块的演示程序[C51编程语言][MCS51总线接口方式] //应用产品: SMG12232A2标准图形点阵型液晶显示模块 // 本演示程序适用于SMG12232A2液晶显示模块与MCS51系列单片机采用MCS51...
  • Proteus仿真C51的I2C

    千次阅读 2018-05-19 22:29:07
    第一次写博客,有点小紧张哈 首先介绍一下I2C总线:I...(为了避免总线信号的混乱和冲突,I2C总线接口电路均为漏极开路或集电极开路,因此总线上必须有上拉电阻,上拉电阻与电源电压VDD和SDA/SCL总线串接电阻有关,...
  • C51-01

    2018-12-05 10:56:50
    最小系统 AT89S51单片机最小系统,就是使单片机正常运行的最低配置:它有一系列模块组成 1)复位系统: 当引脚9出现2个机器周期以上高电平时,单片机复位,程序...VCC,和 GND引脚,供电电压4–5.5V. 对51系列单片...
  • 基于51单片机的流水灯程序

    千次阅读 2021-05-22 05:15:54
    可以看到8颗LED是阳极通过限流电阻共同连接到VCC上的,也就是说当LED的阴极有高电平的时候LED灯是灭的,相反当 LED的阴极是低电平的时候LED就会亮起来,并且由于限流电阻为510欧姆,电源VCC电压是5V,红光LED的电压...
  • 单片机课程设计-8个LED灯来回点亮

    千次阅读 2021-05-22 08:44:54
    通过本次设计的训练,可以使我在基本思路和基本方法上对基于89C51单片机的系统设计有一个比较感性的认识,并具备一定程度的设计能力。培养实践技能,提高分析和解决实际问题的能力。2.2设计要求(1)认真研究设计...
  • (3)单片机把温度传感器当前值与人为设定的正常温度范围进行比较。若当前温度值低于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时升温电路的继电器闭合使得加热管开启工作达到加温...
  • C51回顾一

    2015-01-27 08:26:55
    限流电阻的大小选择:电源电压减去发光二极管的导通压降/限流电阻的大小的值在3~20mA之间。如5-1.7/1000=3.3mA。直插式发光二极管的长脚为阳极,贴片式的有彩色标记的为阴极。 3.通常51核的单片机在上电时,如果...
  • 上一章中我们已经认识了单片机,并且完成了开发环境的搭建,这章中我们正式开始进入单片机编程的学习,本章的学习目标是点亮一盏LED灯。 一、创建一个Keil工程 1、双击运行Keil uVision5,选择Project->New uVision ...
  • 本文就是基于市场上一款比较使用的3.5寸TFT模块编写的,用户只需要帮该TFT模块当作普通的单色液晶的开发思路来使用,就可以很容易去编程。 一、 硬件选择 1、 MCU:AT89S51 2、 开发编译环境:Keil C51 3、 3.5寸...
  • 在本系统中选用以AT89C51单片机为控制核心,输入电压通过AD转换器,输出数字信号送入AT89C51单片机进行PID运算,运算完成后一路输出结果进入74ALS573锁存器。通过人机界面的设计,在LED上显示出来。其中键盘的三个...
  • 最后将处理后的信号输入到单片机中,通过单片机的显示器输出距离,并比较输出距离与1 m,0.5 m的关系,分别发出不同的警报,即通过单片机及其外围部件测量车和障碍物间的距离,最终实现引导驾驶员倒车的功能。...
  • 为防止信息丢失,可以把一组备用电源加到RST/VPD端,当VCC上的电压低于VPD上的电压时,备用电源通过VPD端,以低功耗保持内部RAM和SFR中的数据。 15. 8051单片机引脚ALE的作用是什么?当8051不外接RAM和ROM时,ALE上...
  • 修改记录: 由LED显示模数转换的结果,改变成由四位数码管显示电压值-------------------------------------------------------------------------* 功能描述: 采集电位器的模拟电压值,转换成数字量* 通过四位共阳...
  • 在一块集成电路芯片上集成中央处理器CPU和存储器,IO接口,构成了单片机 ROM:相当于硬盘 RAM:相当于内存条 1.2 单片机的内部结构 中间的线是数据总线 可编程的IO口: input口:单片机会连接一些外部的传感器,比如...
  • 当用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压,当“+”端电压高于“-”端时,输出管截止,相当于输出端...
  • 驱动模块: L298N是一个具有高电压大电流的H桥驱动,相应频率高,一片L298N可以控制两个直流电机,而且还带有控制使能端。用该模块作为电机驱动,操作方便,稳定性好,性能优良。 电机:采用直流减速电机。直流减速...
  • 51单片机怎样控制LED的光亮度

    千次阅读 2021-05-20 16:40:13
    而不能说成电压控制,调节电压大小也能控制啊(电压越大亮度超高), 1、PWM是脉冲宽度调制信号,注意其中的“宽度”,就是脉冲的高电平的时间。PWM信号调节LED亮度时,信号频率是不变的,改变的是脉冲的高电平的...
  • 课题题目基于单片机的火灾自动报警系统课题的目的、意义以及和本课题有关的国内外现状...2.意义:本系统是一个由单片机控制的火灾烟雾浓度、温度检测系统,它将传感器输出地电压信号进行A/D转换、滤波、线性化,...
  • C语言:51单片机看这一篇就够了

    千次阅读 2022-04-09 17:13:11
    } } 十三、单片机实操十一:模块化编程 1、在指定路径下创建工程并添加新文件 2、模块化编程 3、模块化编程框图 4、模块化编程注意事项 5、C预编译 6、增加中文注释 7、编写代码 main.c #include #include "Delay.h...
  • 单片机原理与技术(C51编程 张毅刚主编)
  • 和晶振并联的 两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当釆用石英晶振 时,电容可以在20?40pF 之间选择。 复位电路 复位操作通常有两种基本形式:上电自动复位和开关复位。上电瞬间,电容两 端...
  • 52(还有51,54,55,58,516,):2表示存储空间的大小,2*4K=8K 40:晶振最高频率40MHZ,单片机工作的速度 C(commercial):商业级。(还有I(industry):工业级)区别在于温度可用范围,商业级:0~85℃,工...
  • LCD1602液晶使用介绍--(完整版)

    万次阅读 多人点赞 2020-11-28 18:13:34
    lcd1602 +c51 介绍 文章目录LCD1602介绍1602引脚信号说明控制器接口介绍1、基本操作时许2、状态字说明3、指令说明RAM地址映射控制时序图代码实现写入命令写数据试验例程CGRAM自定义字模(简易汉字显示) LCD1602介绍...
  • 单片机c语言入门单片机c语言入门《新概念51单片机C语言教程:入门、提高、开发、拓展》从实际应用入手,以实验过程和实验现象为主导,循序渐进地讲述51单片机C语言编程方法以及51单片机的硬件结构和功能应用。...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 272
精华内容 108
关键字:

c51编程比较电压的大小

友情链接: HOW-TO-DIRVE-BY-ITSELF.rar