单片机基础之PIC单片机之I/O控制

发布者:qpb1234最新更新时间:2018-11-21 来源: eefocus关键字:单片机  PIC单片机  I  O控制 手机看文章 扫描二维码
随时随地手机看文章

 I/O控制对于单片机而言是最基础最核心的东西,其实单片机除了AD DA 转换之外的事情。其他大部分的事情I/O口都能做的到。I/O控制简单却能千变万化。


单片机在大部分应用中做的事情,莫过于 输入高低电平 ,输出高低电平。就是通过这简单的控制电平来实现大多数的应用控制。


什么是I/O口?


什么是I/O 就是 IN/OUT 就是 输入/输出。


I/O具体能做什么呢?


如果你是刚刚步入电子的新手,那你最好要知道一下I/O口具体能做什么。感性的认识对你的学习是很有帮助的。I/O口输出一个高(低)电平可以用来点亮一个LED灯,可以接通过一个继电器,来开启电机,来开启音响。开启许多的东西,也可以用于通信等等。输入一个高(低)电平 可以用来检测按键,检测红外线输入 ,检测信号,等等。


I/O口和寄存器之间的对应关系


首先看下一个芯片的原理图。 注意 RA5~RA0这些口



在看看RA口的方向控制寄存器TRISA



在看看RA口的数据控制寄存器PORTA



可以看出 芯片原理图中的第二脚 RA5 口 和 TRISA 寄存器中的TRISA5位对应 和PORTA寄存器中的 RA5位对应的,RA4~RA0都是如此对应的。


也就是说TRISA 寄存器中的TRISA5位 和PORTA寄存器中的 RA5位来控制 第二脚的RA5口。


如何控制I/O口?


其实控制单片机,就是控制寄存器上的各个位,设置成高设置成低。就好像给你一台机器有 8个的按钮。然后你根据说明书上介绍,根据你的需要按下 或者松开相应的按键 来得到你想得到的功能。只不过我们用的不是手而是C语言来按下和松开这些按键。


TRISA寄存器是方向控制寄存器。就是控制I/O输入还是输出。比如 TRISA寄存器中的TRISA5位 设置成为0 RA5口是输出 设置成为1 RA5口为是输入。


c语言的具体实现:


将RA5口设置成输入的几种方式


第一种 TRISAbits.TRISA5=1; //简单明了,只影响一个位 设置单个I/O比较方便


第二种 TRISA |= 0x20;//不够明了,只影响一个位


第三种 TRISA =0x20;//不够明了,影响到其他位,设置多个I/O用比较方便


将RA5口设置成输出的几种方式


第一种 TRISAbits.TRISA5=0;


第二种 TRISA &= ~0x20;


第三种 TRISA =0x00;


PORTA寄存器是数据控制寄存器。如果是输出状态:PORTA寄存器中的RA5位为0 则RA5口输出低电平,PORTA寄存器中的RA5位为1 则RA5口输出高电平。


如果是输入状态:PORTA寄存器中的RA5位为0 则说明RA5口当前为低电平,PORTA寄存器中的RA5位为1 则说明RA5口当前为高电平。


实例程序:


如果在RA5口上连接着一个LED灯。我们将如何点亮他呢?


/*


开发环境为 MPLAB X IDE,芯片型号为PIC16LF1823


*/


#include //头文件


__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON


&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去


__CONFIG(PLLEN_OFF&LVP_OFF) ;//配置位


int main(int argc, char** argv) {


ANSELA=0;//将RA口全部设置成数字口,


TRISAbits.TRISA5=0;//设置RA5为输出


PORTAbits.RA5=1;//设置输出高电平点亮LED


while(1);//程序在此无限循环


}


头文件:程序中只要有了#include编译器就会去自动找到相应型号的头文件,头文件中定义好了每个寄存器的地址,位的地址等。


配置位:这是十分重要即使程序没有任何错误 配置位没配置好程序一样不能用。具体如何配置可以看( 基于MPLAB X IDE配置位设置讲解 )。


模拟数字口:在使用I/O口的时候要确保对应的I/O口是被设置成数字口的。


关键字:单片机  PIC单片机  I  O控制 引用地址:单片机基础之PIC单片机之I/O控制

上一篇:PIC单片机基础知识之AD转换
下一篇:实例讲解PIC单片机之中断程序

推荐阅读最新更新时间:2024-03-16 16:18

51例程---led点阵
一、LED点阵发光原理 (1)8*8单色单片机结构图如下: 从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。 (2)51单片机中一般用74HC595芯片驱动led点阵,单片机端口直接驱动。因为直接驱动8*8的点阵需要2个IO端口(16个IO口)、要驱动16*16的点阵需要4个IO端口(32个IO口)。使用74HC595驱动16*16点阵只需要4个74HC595+3个IO口即可(数据口、SCLK、RCLK)。 (3)74HC595的三个关键端口为SEG、SCLK、RCLK。SER进行数据的串行输入,SCLK提供移位时钟,RCLK提供锁存时钟。SCLK
[单片机]
51例程---led点阵
基于LCD12864和51单片机的简单小游戏Proteus仿真程序
以lcd12864作为显示屏,实现一个按钮控制的简单小游戏。主要工作集中于游戏的图形化以及相关逻辑的实现。人物场景设计通过字模提取软件转换成为段码预先储存在单片机中,动画的实现采取局部刷新的方式以提高显示的速度。 仿真原理图如下 单片机源程序如下: #include reg51.h #define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//ye #define LCDCol_Add 0x40//lie #define Start_Line 0xC0//hang /*****液晶显示器的端口定义*****
[单片机]
基于LCD12864和51<font color='red'>单片机</font>的简单小游戏Proteus仿真程序
基于51单片机的两路温度控制器的设计方案
1.引言 目前,温度控制器存在的问题是如何缩减成本,减少功耗,温度测量的准确性和多路温度的同时显示。本方案设计的实现基于C51单片机的两路温度控制器,做到成本最低化,精确度高,两路温度的显示和控制,能在温度超出设定的最高温度时启动电风扇进行降温,在温度低于设定的最低温度时启动蜂鸣器报警,能够用户设定最高最低温。 2.系统结构 温度控制器系统包括以下几个主要部分:温度传感器,报警电路,LED显示电路,键盘控制,89C51控制部分。如图所示:     本系统设计实现:启动温度控制器后,绿灯亮起,四位LED数码显示器上前两位为温度传感器1所测的环境温度,后两位为温度传感器2所测的环境温度。 3.硬件结构 3.1 温度传感器 本设计采用
[电源管理]
基于51<font color='red'>单片机</font>的两路温度<font color='red'>控制</font>器的设计方案
基于单片机的LED汉字显示屏设计与制作
1 引 言 在大型商场、车站、码头、地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示图形和汉字。LED行业已成为一个快速发展的新兴产业,市场空间巨大,前景广阔。随着信息产业的高速发展,LED显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。 本文基于单片机(AT89C51)讲述了16×16 LED汉字点阵显示的基本原理、硬件
[家用电子]
基于<font color='red'>单片机</font>的LED汉字显示屏设计与制作
DDS芯片AD9850的工作原理及其与单片机的接口
1 AD9850简介 随着数字技术的飞速发展,用数字控制方法从一个参考频率源产生多种频率的技术,即直接数字频率合成(DDS)技术异军突起。美国AD公司推出的高集成度频率合成器AD9850便是采用DDS技术的典型产品之一。 AD9850 采用先地蝗CMOS工艺,其功耗在3.3V供电时仅为155mW,扩展工业级温度范围为-40~80℃,采用28脚SSOP表面封装形式。AD9850的引脚排列如图1所示,图2为其组成框图。图2中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9850的主要组成部分。 AD9850 内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器
[单片机]
DDS芯片AD9850的工作原理及其与<font color='red'>单片机</font>的接口
AVR单片机(ATMEGA16)定时器程序
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #pragma interrupt_handler timer1:9 uchar i,temp; void delay(uint x) { uint y,z; for(y=x;y 0;y--) for(z=1111;z 0;z--); } void main(void) { i=0; temp=0x01; TCCR1B=0x04; //T/C1时钟源,256分频 TCNT1H=0x85;
[单片机]
AVR<font color='red'>单片机</font>(ATMEGA16)定时器程序
基于单片机和半导体的单相远程费控智能电表设计
本文给出了基于RENESAS半导体公司的R5F212B8SNFP为MCU的一款新型单相远程费控智能电表的设计。    1系统功能设计   1.1总体结构   基于RENESAS半导体的单片机R5F212B8SNFP(以下简称2B8)完成单相远程费控智能电表设计,其功能:648k字节Flash闪速存储器,3k字节内部RAM,45个可编程CMOS I/O口,可选择上拉电阻,2个专用输入口,6个位定时/计数器,5个外部中断,23个内部中断,4个软件中断,7级中断结构,3个全双工串行通信口,16位硬件乘法器,片内高低速振荡器及时钟电路,2种低功耗电工作方式。是一个比较适合于国网智能电表开发的高性价比单片机。   该智能电能表功
[工业控制]
基于<font color='red'>单片机</font>和半导体的单相远程费控智能电表设计
8051单片机的历史_8051单片机的应用领域
  目前,有关8051单片机的说法很多:8051单片机是Intel发明的,可与8位系列处理器一起使用。现在,8051单片机已广泛应用于各个行业以及家庭的各种家用电器上。      一、8051单片机的历史   如果我们回顾历史,8051单片机是由微处理器巨头Intel于1980年首次发明的,并且逐渐被全世界所接受,并且随着未来的每一天,8051单片机的重要性正在不断提高。当它由英特尔发明时,它是通过NMOS技术开发的,但作为NMOS技术却不是很有效。   为了提高效率和生产率,英特尔通过实施CMOS技术对它进行了改型,并出现了一个新版本,名称中带有字母“C”,比如:“80C51”。新版8051单片机具有两条总线,一条总线用于程序
[单片机]
8051<font color='red'>单片机</font>的历史_8051<font color='red'>单片机</font>的应用领域
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved