arm嵌入式系统——基于ads1.2及proteus仿真教学课件作者邓力讲义gpio程序实验.doc
文本预览下载声明
课时授课计划
课 题
(章节名称)
GPIO程序设计与电路仿真实验
时间
2012年3月21日
教学目的与要求
掌握LPC2100中GPIO寄存器的使用
教学重点
IO口高低电平的设置
教学难点
IOSET、IOCLR的使用
教学方法
讲授法
教学时数
2
课外作业
主要内容
时间分配
一、完成LPC2106ADS工程项目的建立。
二、编写单个LED灯闪烁控制的主程序
三、完成单个LED闪烁控制程序和电路仿真
四.一位数码管静态显示程序和电路设计实验
15
15
25
35
课后小结
一、完成LPC2106ADS工程项目的建立。
二、编写单个LED灯闪烁控制的主程序
使用P0.9的输出功能来控制一个LED闪烁。采用灌电流的方式驱动LED,即输出低电平时LED点亮。首先进行引脚功能选择寄存器(PINSEL0和PINSEL1)配置,然后进行IODIR寄存器设置,设置P0.9为输出模式,通过对IOSET和IOCLR寄存器进行置1或置0控制LED闪烁。
其主程序如下:
/******************************************************************************
*File:Main.c
*功能:LED闪烁控制。对发光二极管进行控制,采用软件延时方法
* 使用I/O口直接控制LED,采用灌电流方式
******************************************************************************/
#include config.h
#define LEDCON 0 /*P0.9引脚控制LED,低电平点亮*/
/*****************************************************************************
*名称:DelayNS()
*功能:长软件延时
******************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly0;dly--)
for(i=0;i50000;i++);
}
/******************************************************************************
*名称:main()
*功能:控制LED闪烁
******************************************************************************/
int main(void)
{ PINSEL0=0 //设置所有引脚连接GPIO
PINSEL1=0
IODIR=LEDCON; //设置P0.9连接的LED控制为输出
while(1)
{ IOSET=LEDCON;
DelayNS(30);
IOCLR=LEDCON;
DelayNS(30);
}
//return(0);
}
三、使用Proteus完成电路的仿真
仿真电路图如图所示:
启动仿真,D1不断闪烁。
四.一位数码管静态显示程序和电路设计
74HC595是一个8位串入并出的移位寄存器,本程序通过3个GPIO口模拟SPI对74HC595进行控制,驱动数码管显示0~F字符。
主程序流程图如下:
发送数据字程序流程图:
程序如下:
/*******************************************************************************
*File: Main.c
*功能: LED数码管显示
* 通过I/O模拟同步串口与74HC595进行连接,控制74HC595驱动LED数码管显示
*******************************************************************************/
#include config.h
#define SPI_CS 0 /*P0.8*/
#define SPI_DATA 0 /*P0.6*/
#define SPI_CLK 0 /*P0.4*/
#define SPI_I
显示全部