零基础入门单片机(2)学会控制IO引脚你就入门啦

发布者:SparkleMagic最新更新时间:2022-12-07 来源: zhihu关键字:单片机  控制IO 手机看文章 扫描二维码
随时随地手机看文章

【一】单片机引脚介绍

1.电源引脚
●VSS:接地。
●VCC:外接5V电源。
2.外接晶振引脚
●XTAL1:当单片机使用内部振荡电路时,接外部晶体的一端和微调电容。当单片机采用外部时钟信号时,此引脚接地。
●XTAL2:当单片机使用内部振荡电路时,接外部晶体的一端和微调电容。当单片机采用外部时钟信号时,用来输入时钟脉冲。
3.控制引脚
●RST/VPD:复位信号输入端,高电平有效。当此引脚保持两个机器周期的高电平时,进行复位操作。该引脚的第二功能是备用电源
●ALE/PROG:地址锁存允许信号端。当MCS-51单片机上电后,ALE引脚不断向外输出振荡器频率fosc 1/6的正脉冲信号。此引脚具有第二功能PROG,其作为对带有片内可编程ROM单片机进行固化程序写入操作时的编程脉冲输入端。
●EA/VPP:外部程序存储器地址允许输入端。当EA引脚接高电平时,CPU先访问片内程序存储器并执行其中的指令,然后再访问外部程序存储器。当EA引脚接低电平时,CPU只访问外部程序存储器并执行其中的指令,此时并不管该单片机是否具有片内程序存储器。该引脚的第二功能是作为对 EPROM 型单片机进行编程时的编程电源。
●PSEN:程序存储允许输出信号端。在访问片外程序存储器时,该引脚输出负脉冲作为读片外存储器的选通信号。在CPU从外部程序存储器取指令期间,PSEN信号在每个机器周期中两次有效。
4.输入/输出引脚
●P0口:8位漏极开路型双向I/O口,能驱动8个LS TTL负载。当访问外部存储器时,分时传送低字节和数据。
●P1口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。
●P2口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。当访问外部存储器时,输出高8位地址。
●P3口:带有内部上拉电阻的8位准双向I/O口,能驱动4个LS TTL负载。此外还具有第二功能,见表2.5。

【2】C51的程序结构

C51的程序也是由各个函数组成的。其中最重要的是main()函数,它也是必须存在的一个函数。作为程序的入口,程序每次执行均从main()函数开始,每次调用完其他函数后都将返回到main()函数,而当执行完main()函数中的所有代码后,结束整个程序。整个过程并不关心函数的排列顺序。


一个函数一般由两部分组成:函数说明部分和函数体部分。


函数说明部分包括函数名、函数类型、函数属性、函数参数。函数名后紧跟一个圆括号(),函数参数列于其中。一个函数也可以没有参数。


在函数说明部分后边紧跟的就是函数体部分。函数体的全部内容在一个大括号 {} 中,其中还包括变量说明和执行代码,函数运行时依次执行其中的代码。


一个标准的C51函数的格式如下所示。

函数类型 函数名(函数参数表)

{

变量说明部分;

执行代码部分;

}

下面是一个C51函数的实际例子,该函数的功能为完成一次加法运算。

int fun plus(int A,int B)

{

int result;

result=A+B;

return(result);

}

对于用户来说,C51函数可以使用标准库函数,或者自定义函数。

标准库函数在C51库文件中已经定义好,并在相关的头文件中也已加以说明,用户只需要直接调用即可。

自定义函数是用户根据自己的需要自己定义并调用的一类函数。

下边是一个完整的C51程序结构例子。

# include <reg52.h>       //包含头文件

void main(void)         //主函数部分

{

    sbit P1.0=P1^0;       //P1端口位定义

    sbit P1.1=P1^1;

    P1.0=1;          //给位定义的变量赋初值

    P1.1=1;

    delay();          //调用延时子程序

    while(1)           //P1.0、P1.1交替赋值,实现LED交替闪烁的效果

    {

        P1.0=0;

        P1.1=1;

        delay();

        P1.0=1;

        P1.1=0;

        delay();

    }

}

void delay(void)         //延时子程序部分

{

    uint i;

    for(i=0;i <256;i++);

}


对于用户来说,只需要将两个LED的正极接高电平,串联一个电阻后分别连接到MCS-51单片机的P1^0和P1^1引脚,利用上述代码即可实现LED交替闪烁的效果。

这是个很小的成功的C51程序,可以看到,它清楚地包括头文件和程序主题。头文件中包含了硬件信息,并给外部模块提供可使用的函数和变量说明。程序代码中sbit P1.0=P1^0的P1^0便是在头文件reg52.h定义的。该程序函数包括main()函数和自定义子函数delay()。在main()函数运行过程中曾多次调用子函数实现延时功能,这样,LED的闪烁不至于快到人肉眼无法分辨的程度。

该程序对应的单片机电路如图4.1所示。

利用Keil来进行MCS-51单片机C51程序的开发,通常使用项目来进行管理。

项目一般分为两大块:C文件块和头部文件块。将不同功能写在不同的C文件中,依靠项目的管理,最后将所有文件连接,从而得到可以刻录的HEX文件或BIN文件。在所有这些C文件中,有且只有一个main()函数,头文件将各个C文件互相连接。

图4.1 LED交替闪烁单片机电路图



关键字:单片机  控制IO 引用地址:零基础入门单片机(2)学会控制IO引脚你就入门啦

上一篇:零基础入门单片机(3)案例就是一种外存
下一篇:Proteus入门单片机(4)例程分析

推荐阅读最新更新时间:2024-11-16 20:59

基于单片机的智能太阳能路灯控制系统的设计方案
摘要:随着世界能源危机日益严重,利用太阳能成为解决能源问题的一大途径,在此背景下开发智能太阳能路灯意义重大。本文介绍了智能太阳能路灯系统的组成及工作原理,采用LPC935 单片机作为主控制器,结合密封铅酸蓄电池充电专用芯片UC3906,实现了对密封铅酸蓄电池最佳充电所需的全部控制和检测功能,延长了系统的使用寿命。通过热释电红外、微波双鉴传感器技术及以无线通讯技术,实现了红外微波探测、相邻路灯间的无线通讯以及主副灯的智能化切换,达到了节能减排的效果。   随着科学技术的迅速发展,世界能源危机日益严重,利用常规能源已不能适应世界经济快速增长的需要,开发和利用新能源越来越引起各国的重视。太阳能源本身的安全可靠、无噪声、无污染和可再
[工业控制]
基于<font color='red'>单片机</font>的智能太阳能路灯<font color='red'>控制</font>系统的设计方案
德州仪器C2000 F281x微控制器连续12年稳居领先地位
为多种电机控制应用提供理想的集成特性,德州仪器通过Delfino™ 与Piccolo™ MCU系列持续巩固C2000 F281x MCU组合所取得的成功。 2014年8月11日,北京讯---日前,德州仪器(TI)热烈庆贺其C2000™ TMS320F2812与TMS320F2810微控制器(MCU)在电机控制应用中连续12年稳居领先地位。F281x MCU将高性能数字信号处理、高精度模拟和闪存功能在一个单芯片上进行集成,使其在驱动器和自动化、汽车、航空航天、数字电源、太阳能和智能电网技术等多个应用中成为客户的首选。推出12年来,TI已向世界各地的客户提供了数千万的C2000 F281x MCU。此外,TI还通过其Delf
[单片机]
使用PIC单片机连接旋转编码器的方法
旋转编码器(Rotary Encoder)是一种帮助用户与系统交互的输入设备。它看起来更像是一个无线电电位器,但它输出一系列脉冲,使其应用独特。当旋转编码器的旋钮时,它以小步进的形式旋转,这有助于它用于步进/伺服电机控制、导航菜单序列和增加/减少数字的值等等。 在本篇文章中,我们将了解不同类型的旋转编码器及其工作原理。我们还将它连接到PIC单片机PIC16F877A,并通过旋转编码器控制整数值,然后在LCD液晶屏1602显示其值。在本文结束时,您将熟悉为项目使用旋转编码器。让我们开始吧… 旋转编码器及其类型 旋转编码器通常称为轴编码器。它是一种机电换能器,意味着它将机械运动转换为电子脉冲,或者换句话说,它将角位置或运动或轴
[单片机]
使用PIC<font color='red'>单片机</font>连接旋转编码器的方法
十年坚持自主可控,爱普特成RISC-V MCU头号玩家
有这么一家国产MCU公司,自从2012年成立,就没有采用当时已然流行的Arm Cortex-M内核,而是始终坚持纯国产化MCU路线。 日前,在中国RISC-V产业联盟、芯原微电子和上海集成电路产业集群发展促进机构共同主办的首届滴水湖中国RISC-V产业论坛上,深圳市爱普特微电子有限公司董事兼副总经理袁永生介绍了公司在非Arm MCU上的发展历程,并揭晓了公司全新推出的64位大小核的RISC-V MCU——APT32F706。 爱普特微电子有限公司董事兼副总经理袁永生 坚持独立自主的硕果 袁永生表示,公司自2012年成立以来,就和平头哥的前身中天微合作,所以公司并不是从Arm转向RISC-V,而是一直坚持全国产自主的
[单片机]
十年坚持自主可控,爱普特成RISC-V <font color='red'>MCU</font>头号玩家
单片机控制的直流调速系统
1 引言 直流电动机具有良好的起、制动性能,宜于在广泛范围内平滑调速,在轧钢机、矿井卷扬机、挖掘机、高层电梯等需要高性能可控电力拖动的领域中应用历史悠久。大功率直流调速系统通常采用三相全控桥式整流电路对电动机进行供电,从而控制电动机的转速,传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因为元件容易老化和在使用中易受外界干扰影响,并且线路复杂、通用性差,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。 目前,直流电动机调速系统数字化已经走向实用化,其主要特点是:结构简单、维修方便、动态参数调整方便、系统可靠性高、可采用数字滤波来提高系统的抗干扰性能、可采用数字反
[单片机]
<font color='red'>单片机</font><font color='red'>控制</font>的直流调速系统
实时单片机通讯网络中的内存管理
      摘要:为提高单片机通讯的实时性,采用了动态的内存管理方法,并将其应用到AUTO 2000DCS系统中,获得了满意的效果。      关键词: 动态分区 静态分区 最先适应法 内存表      在AUTO 2000 DCS系统中,我们采用了单片机实时通讯网络.这是一种具有不确定控制站监控的主从式总线网络.大致的工作过程是网络系统上电,各站点进行控制权争夺确立控制站和非控制站;控制站轮询各站点,被轮询的站点若有数据发送即成为主站,执行主机/从机的通讯;通讯结束后(无论成功与否)主站将控制权归还给控制站;控制站然后轮询下一个站点,周而复始。        为了提高通讯效率,采取了
[缓冲存储]
51单片机12M晶振的延时程序
这是本人慢慢调出来的参数,有误差是必须的,除非用汇编才会精确,后续我会更新修改,尽量精确。 调试环境:Keil V4.02 源代码如下: #include reg52.h #include intrins.h //--延时0.2*n(ms)函数,若需延时1ms,则*5。适合延时50ms以下或左右的--// void DelayMSx02(unsigned char n) { unsigned char x, y; for(x=n; x 0; x--) for(y=96; y 0; y--); //for循环中的 -- 位置前后都可以 } //--延时t*2+5(us)函数 --// void DelayUS
[单片机]
PIC16系列单片机与PC机串行通信的软硬件实现
摘 要介绍一种运用PIC16F84单片机实现与PC机串行通信的方法,并给出其硬件接口电路及通信源程序。 1 前言 美国Microchip公司的PIC16系列单片机是一种新型的CMOS工艺的8位单片机。其中,PIC16FXX单片机的程序存储器为电可擦除闪速存储器(flash),可多次修改程序,甚至可以在线编程。PIC16F83和PIC16F84片内数据存储器除RAM外,还有64字节的EEPROM,可以当作一般的或非易失性的数据存储器使用,简单方便。它还具有片内上电复位、延时电路、看门狗电路等。另外,PIC16系列单片机功耗极低,因而是一种非常适合在各种便携式设备中使用的高性价比的单片机,并已经得到了越来越广泛的应用。 但是在许多需
[单片机]
PIC16系列<font color='red'>单片机</font>与PC机串行通信的软硬件实现
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved