一、GPIO介绍

GPIO是单片机最常用的功能,XEP100单片机的并行I/O的资源很丰富,XEP100的IO有PORTA、PORTB、PORTH、PORTJ、PORTM、PORTP、PORTS、PORTT、PORTK和PORTE共10组IO。这些I/O口除了具有通用I/O功能外,还分别具有专用I/O的功能。可以根据需要进行设置,专用I/O功能启用后,通用I/O功能自动关闭。

在使用单片机的并行I/O时要进行一些设置,主要的设置如下所示:

1功能设置
每个I/O子系统都有一个功能设置寄存器,其中的几个位用于部分或者全部引脚的功能设定,设定为专用功能后,方向设置功能可能自然禁止,但上拉、下拉及降功率驱动功能一般仍然有效,具体取决于I/O子系统的要求。通常复位后,各引脚默认为通用I/O输入功能,具体取决于MCU的工作模式。

2方向设置
当引脚设定为通用I/O后,通过方向寄存器指定引脚的输入/输出,一般复位后默认为输入。设定为输出后,上拉、下拉功能禁止,但降功率驱动功能允许,而设定为输入后,降功率驱动功能禁止,而上拉、下拉功能允许。

3上拉/下拉
输入引脚一般可以设定是否激活上拉/下拉功能,激活后可以保证浮空引脚的输入值固定,对于非浮空引脚有时可以提高响应速度,增强抗干扰能力。

4驱动能力
输出引脚可以选择是否降低驱动功率,如果激活可以使驱动能力降低至约50%,这样可以减小对其他部分的射频辐射干扰,同时降低功率消耗,但可能少量延长过渡时间、降低响应速度,因此必须根据引脚的外部负载情况确定是否采用。

二、蜂鸣器测试

蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。有源蜂鸣器中自带震荡电路,而无源蜂鸣器中没有。普通电磁式的有源蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片和外壳等组成,振动膜在电磁线圈和磁铁的相互作用下周期性的振动发声。而无源蜂鸣器中没有振荡器,必须由外部信号来提供震荡。本开发平台上配备的是有源蜂鸣器,只要接通电源,蜂鸣器就可以发声。

在本实验中,蜂鸣器驱动电路的原理图如下图所示:

驱动电路采用三极管对蜂鸣器进行驱动,当BUZZ输入高电平时,三极管导通,蜂鸣器响; 当BUZZ输入低电平时,三极管不导通,蜂鸣器不响。

单片机对蜂鸣器的控制引脚为

PORTK5——BUZZ

采用下面的代码对蜂鸣器进行测试,其中INIT_BUZZ();为蜂鸣器的初始化代码,它将蜂鸣器的控制IO设置为输出。

void main(void) {DisableInterrupts;   //禁止中断INIT_BUZZ();EnableInterrupts;    //允许中断LEDCPU = 0;for(;;) {BUZZ = BUZZ_ON;     //蜂鸣器响delay();BUZZ = BUZZ_OFF;    //蜂鸣器不响delay();}
}

这个实验的代码,可以从本文的资源中下载。

将这个实验的代码烧写到单片机中,并运行,则蜂鸣器会滴滴的响。

三、发光二极管测试

发光二极管是半导体二极管的一种,可以把电能转化成光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压时就会发光,光的强弱与工作电流成正比。一般情况下,LED的正向工作电流在10mA左右,如果电流过大就会烧坏LED,因此使用时必须串联限流电阻以控制通过二极管的电流。限流电阻R可用下式计算:

R=(U-UD)/ID

式中U为电源电压,UD为LED的正向压降,ID为LED的一般工作电流。

普通发光二极管的正向饱和压降为1.6V~2.1V,正向工作电流为5~20mA。发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,并广泛应用于各种电子电路、家电、仪表等设备中,做电源或电平指示。

在单片机的应用中,一般一个比较初级的入门实验就是流水灯实验。这个实验我们就来运行一个流水灯程序,实验对应的硬件电路如下图所示。

上图中,PB0~PB7可以接5V或者悬空,也可以接地。以PB0为例,当PB0接5V或者悬空时,没有电流通过,LED灯的状态是熄灭的;当PB0接地时,两端压差是5V,所以LED灯被点亮。在数字电路中,接+5V为电平“1”,接地为“0”。通常“1”为高电平,“0”为低电平。

所以在设计中,将LED连接到单片机的I/O口,此时我们只需要控制单片机的I/0口为“1”或者为“0”就可以控制LED灯的亮灭了。

8个LED与单片机引脚的对应关系如下

PORTB0——LED1

PORTB1——LED2

PORTB2——LED3

PORTB3——LED4

PORTB4——LED5

PORTB5——LED6

PORTB6——LED7

PORTB7——LED8

实验的主要代码如下所示

void main(void) {DisableInterrupts;LED_dir=0xff;       //设置为输出LED=~data;          //点亮LED1EnableInterrupts;for(;;) {delay();data=data<<1;         //左移一位if(data==0)data=0x01;LED = ~data;}
}

在这段代码中data为LED控制的码值,将它取反后赋值给PORTB,就可以对LED进行控制,修改data的值,可以改变LED的点亮情况。

将上述代码烧写到单片机中,并运行,则发光二极管以流水灯方式闪烁。

这个实验的代码可以从本文的资源中下载

飞思卡尔16位单片机(三)——GPIO输出功能测试相关推荐

  1. 飞思卡尔16位单片机(五)——ADC模数转换模块测试

    一.介绍 ADC模块的作用是将模拟的电压信号转换为CPU可以处理的数字信号.一些低端的单片机上没有ADC模块,必须使用片外的ADC芯片,才能实现模数转换的功能.而飞思卡尔的单片机一般是集成了ADC模块 ...

  2. 飞思卡尔16位单片机(十四)—— CAN总线模块测试

    一.CAN模块介绍 这个实验我们来研究XEP100单片机内部的CAN模块. XEP100单片机的CAN的基本特性如下: • 实施CAN协议-2.0A/B版 - 标准和扩展数据帧 - 0-8字节数据长度 ...

  3. 飞思卡尔16位单片机(十五)—— 如何批量烧写芯片

    我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行.但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是 ...

  4. 飞思卡尔16位单片机(十)——PIT模块测试

    一.PIT模块介绍 PIT是周期中断定时器模块的简称,XEP100单片机的PIT定时器是一系列24位定时器的阵列.可以用来触发单片机的外围设备,也可以用来产生周期性的中断.XEP100单片机的PIT模 ...

  5. 飞思卡尔16位单片机(十二)—— IIC模块测试

    一.IIC模块介绍 目前市场上很多单片机都已经具有硬件IIC总线控制单元,这类单片机在工作时,IIC总线状态由硬件监测,无需用户介入,操作方便. IIC总线是双线.双向的串行总线,是与其它芯片交换数据 ...

  6. 飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08JM60开发板实践教程

    第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //oscillator  ...

  7. 飞思卡尔mc9s08烧录方法_(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程

    精品文档 精品文档 第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //o ...

  8. 飞思卡尔XS128系列(三) PIT

    刚报名参加了第五届飞思卡尔智能车竞赛的时候,知道要用飞思卡尔的16位单片机,当时也没在意,就随便买了本这方面的书,记得书名是:<基于HCS12的嵌入式系统设计>,我是因为这本书各模块后面的 ...

  9. freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置

    Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到 ...

  10. 飞思卡尔MC9S12系列单片机地址影射以及分页问题

    对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系.因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度.并且,对于DG128 XS128这样的MCU,默 ...

最新文章

  1. 怎样设计出优秀的测试用例?看看下面就知道了
  2. RDKit | 基于RDKit计算3D药效团指纹
  3. DL之FAN:基于人工智能算法偶像和明星渐变卡通形象
  4. CentOS安装jdk(无需配置环境变量)
  5. Java黑皮书课后题第5章:5.12(求满足n方>12000的n的最小值)使用while循环找出满足n方大于12000的最小整数n
  6. shell如何解决mysql交互式_shell脚本与mysql交互方法汇总
  7. Python离线环境
  8. 淘宝的生态灾难,谁来救赎?
  9. Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
  10. Web分页打印 细线表格+分页打印之终极攻略(转载)
  11. 学习笔记:工厂方法模式及简单工厂模式的对比
  12. 美团首次展现无人配送链条,发布末端配送机器人 | CES 2019...
  13. HDU 4731 Minimum palindrome 打表找规律
  14. OppoR17被查找手机锁死问题解锁
  15. CentOS7.6 安装Oracle12C(上)
  16. mac怎么搭建网站服务器,mac搭建本地服务器(示例代码)
  17. 全年营业额怎么计算_怎么查看一个公司的年营业额?
  18. 安全加密与证书签发工具--openssl
  19. EVE-NG打开Wireshark提示拒绝访问
  20. 【组织架构】中国铁路南宁局集团有限公司

热门文章

  1. 修复windows系统快捷方式图标变成白色的问题
  2. 时间序列分析:非平稳序列的确定性分析
  3. Java学习需要多长时间?
  4. 焓湿图软件 android,焓湿图计算软件
  5. mx250显卡天梯图_MX250相当于什么显卡?来看显卡天梯图
  6. 自动控制原理 卢京潮第二版 课后答案 免费PDF
  7. x64 - reject driver loading
  8. 四川绵阳:充分利用区块链等技术,为农民工证照办理提供线上便捷服务
  9. 证件照处理软件(IDPhoto Processor)免费版 v3.2.10
  10. 节约里程法解决VRP物流配送路径优化问题及局部优化改进-matlab代码