飞思卡尔16位单片机(三)——GPIO输出功能测试
一、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输出功能测试相关推荐
- 飞思卡尔16位单片机(五)——ADC模数转换模块测试
一.介绍 ADC模块的作用是将模拟的电压信号转换为CPU可以处理的数字信号.一些低端的单片机上没有ADC模块,必须使用片外的ADC芯片,才能实现模数转换的功能.而飞思卡尔的单片机一般是集成了ADC模块 ...
- 飞思卡尔16位单片机(十四)—— CAN总线模块测试
一.CAN模块介绍 这个实验我们来研究XEP100单片机内部的CAN模块. XEP100单片机的CAN的基本特性如下: • 实施CAN协议-2.0A/B版 - 标准和扩展数据帧 - 0-8字节数据长度 ...
- 飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行.但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是 ...
- 飞思卡尔16位单片机(十)——PIT模块测试
一.PIT模块介绍 PIT是周期中断定时器模块的简称,XEP100单片机的PIT定时器是一系列24位定时器的阵列.可以用来触发单片机的外围设备,也可以用来产生周期性的中断.XEP100单片机的PIT模 ...
- 飞思卡尔16位单片机(十二)—— IIC模块测试
一.IIC模块介绍 目前市场上很多单片机都已经具有硬件IIC总线控制单元,这类单片机在工作时,IIC总线状态由硬件监测,无需用户介入,操作方便. IIC总线是双线.双向的串行总线,是与其它芯片交换数据 ...
- 飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08JM60开发板实践教程
第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //oscillator ...
- 飞思卡尔mc9s08烧录方法_(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程
精品文档 精品文档 第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //o ...
- 飞思卡尔XS128系列(三) PIT
刚报名参加了第五届飞思卡尔智能车竞赛的时候,知道要用飞思卡尔的16位单片机,当时也没在意,就随便买了本这方面的书,记得书名是:<基于HCS12的嵌入式系统设计>,我是因为这本书各模块后面的 ...
- freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置
Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到 ...
- 飞思卡尔MC9S12系列单片机地址影射以及分页问题
对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系.因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度.并且,对于DG128 XS128这样的MCU,默 ...
最新文章
- 怎样设计出优秀的测试用例?看看下面就知道了
- RDKit | 基于RDKit计算3D药效团指纹
- DL之FAN:基于人工智能算法偶像和明星渐变卡通形象
- CentOS安装jdk(无需配置环境变量)
- Java黑皮书课后题第5章:5.12(求满足n方>12000的n的最小值)使用while循环找出满足n方大于12000的最小整数n
- shell如何解决mysql交互式_shell脚本与mysql交互方法汇总
- Python离线环境
- 淘宝的生态灾难,谁来救赎?
- Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
- Web分页打印 细线表格+分页打印之终极攻略(转载)
- 学习笔记:工厂方法模式及简单工厂模式的对比
- 美团首次展现无人配送链条,发布末端配送机器人 | CES 2019...
- HDU 4731 Minimum palindrome 打表找规律
- OppoR17被查找手机锁死问题解锁
- CentOS7.6 安装Oracle12C(上)
- mac怎么搭建网站服务器,mac搭建本地服务器(示例代码)
- 全年营业额怎么计算_怎么查看一个公司的年营业额?
- 安全加密与证书签发工具--openssl
- EVE-NG打开Wireshark提示拒绝访问
- 【组织架构】中国铁路南宁局集团有限公司
热门文章
- 修复windows系统快捷方式图标变成白色的问题
- 时间序列分析:非平稳序列的确定性分析
- Java学习需要多长时间?
- 焓湿图软件 android,焓湿图计算软件
- mx250显卡天梯图_MX250相当于什么显卡?来看显卡天梯图
- 自动控制原理 卢京潮第二版 课后答案 免费PDF
- x64 - reject driver loading
- 四川绵阳:充分利用区块链等技术,为农民工证照办理提供线上便捷服务
- 证件照处理软件(IDPhoto Processor)免费版 v3.2.10
- 节约里程法解决VRP物流配送路径优化问题及局部优化改进-matlab代码