ARM开发7.5.1 基础实训( 5 ) 4×4 矩阵键盘和 2 路 LED 显示系统( 1)--LPC21XX
运行效果:
启动仿真,每当按键被按一次,在二个数码 LED 上显示某个按键的编号
一:仿真图
二:代码详情
#include"LPC21xx.h"
//常量定义
const unsigned char LEDSEGCODE [] =
{0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 0x6D , 0x7D , 0x07 , 0x7F , 0x6F ,0x77 , 0x7C , 0x39 , 0x5e , 0x79 , 0x71 , 0x00 , 0x40
};
//这一个对应P0.14,P0.15为位选
const unsigned char LEDBITCODE [] = { 0xB0 , 0x70 };// 1110 0000 0000 ==>8 1101 0000 0000==>9 1011 0000 0000 0000==>14 0111 0000 0000 0000==>15
//书上用的这一个,位选端口也要改为P0.8 P0.9
//const unsigned char LEDBITCODE [] = { 0x0E , 0x0D };
unsigned char LEDBuffer [ 2 ] = { 0x00 , 0x01 };
unsigned char KSCANCODE [] = { 0x01 , 0x02 , 0x04 , 0x08 };
unsigned char keytab [ 4 ][ 4 ] =
{0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x00 , 0x01 , 0x02 , 0x03 ,0x04 , 0x05
};
void Delay_250us(void)//延时函数
{unsigned int i ;i=2500 ;// CCLK=60MHzwhile ( i-- );
}
unsigned char LEDScanpointer , DATApointer ;
int main ( void )
{//变量定义unsigned char keyval ;unsigned char row , col ;unsigned int i ;unsigned int j=0 ;PINSEL0=0x00000000 ;PINSEL1=0x00000000 ;//书上是这个,如果选用P0.14,P0.15为位选是不行的因为P0.14,Po.15未为输出模式//IO0DIR=0x00000FFF;IO0DIR=0x0000FFFF ;//P0.14,P0.15为位选IO1DIR=0x000F0000 ;// KR1~KR4 定义为输出 KC1~KC4 定义为输入IO0CLR=0x00000F00 ;//初始化 LED7 灭IO0SET=0x000000FF ;LEDScanpointer=0 ;DATApointer=0 ;keyval=0 ;
//无限循环体while ( 1 ){if ( j==0 ){//从 P0.8~P0.11 读入端口电平 //P0.8~p0.15for ( row=0 ; row<4 ; row++ ){IO1SET= ( 0x0F ) <<16 ;IO1CLR= ( KSCANCODE [ row ]) <<16 ;if (( IO1PIN&0x00F00000 ) !=0x00F00000 )//检测到键盘按下动作{Delay_250us(); //延时去抖动if (( IO1PIN&0x00F00000 ) !=0x00F00000 ) //确认是哪个键盘按下{if (( IO1PIN&0x00E00000 ) ==0x00E00000 ) col=0 ;else if (( IO1PIN&0x00D00000 ) ==0x00D00000 ) col=1 ;else if (( IO1PIN&0x00B00000 ) ==0x00B00000 ) col=2 ;else col=3 ;keyval=keytab [ row ][ col ];for ( i= ( sizeof ( LEDBuffer ) -1 ); i>0 ; i-- )LEDBuffer [ i ] =LEDBuffer [ i-1 ];LEDBuffer [ 0 ] =keyval ;j=20 ;}}}}LEDScanpointer=0 ;while ( LEDScanpointer<sizeof ( LEDBuffer )){IO0CLR|=0xFF ;//段码全部熄灭IO0SET|= ( LEDSEGCODE [ LEDBuffer [ LEDScanpointer ]] <<0 );IO0CLR|=0xFF00 ;//位码全部熄灭IO0SET|= ( LEDBITCODE [ LEDScanpointer ] <<8);//确定位输出LEDScanpointer++ ;Delay_250us();//调用延时函数}for ( i=0 ; i<10 ; i++ ) Delay_250us();if ( j !=0 ) j-- ;}
}
三:运行效果
ARM开发7.5.1 基础实训( 5 ) 4×4 矩阵键盘和 2 路 LED 显示系统( 1)--LPC21XX相关推荐
- 国家开放大学计算机基础实训项目一,国家开放大学电大专科《微机系统与维护》网络课实训11及实训12作业及答案...
国家开放大学电大专科<微机系统与维护>网络课实训11及实训12作业及答案 实训11 微机软件系统的维护实训报告 实训内容 操作系统维护工具的使用.注册表的维护.Windows优化大师软件的 ...
- ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
一 矩阵键盘按键控制TM1629ALED显示原理: 1.1 本实验实现矩阵键盘按键控制TM1629ALED显示1.2 实验思路:共阴极数码管,掌握数码管段选位选原理 熟悉TM1629A芯片手册1.3 ...
- 计算机应用基础项目化教程实训评价手册答案,计算机应用基础实训指导
<计算机应用基础实训指导>是"十二五"职业教育国家规划教材,也是新世纪高职高专教材编审委员会组编的公共基础课系列规划教材之一. 随着工业化.信息化的发展,各行各业不仅掀 ...
- 计算机文化基础分析总结,《计算机文化基础实训》教学方案设计与课题分析总结.doc...
<计算机文化基础实训>教学方案设计与课题分析总结.doc <计算机文化基础一实训>教学方案设计与课题分析总结 袁良风 [ ]我院自开展木课题研宄工作以来,紧紧围绕"项 ...
- 大学计算机基础实训指导第四版,大学计算机基础:学习指导与实训篇(第4版)...
大学计算机基础:学习指导与实训篇(第4版) 语音 编辑 锁定 讨论 上传视频 上传视频 <大学计算机基础:学习指导与实训篇(第4版)>是2012年9月电子工业出版社出版的图书,作者是白清华 ...
- UML软件建模技术-基于IBM RSA工具的基础实训
IBM Rational Software Architect基础实训 引言 本实训帮助软件设计和开发人员使用IBM RSA开始UML建模.学习者将获得使用IBM RSA的实际操作经验,熟悉IBM R ...
- 计算机应用基础实训项目三excel,计算机应用基础实训项目三 Excel 综合应用
计算机应用基础实训项目三 Excel 综合应用Tag内容描述: 1.计算机应用基础实训教程计算机应用基础实训项目二,Word,综合应用 以日常应用为基础,设计一个综合运用 Word 基本操作技能解决实 ...
- Arm Mbed OS 更适合大学实训平台
目前大学里面的嵌入式程序,物联网,电子专业的实验平台大多数采用各种各样的开发板.以前使用51系列单片机,现在许多大学开始使用Arm 32位 cortex-M系列单片机.软件多数采用keil开发环境裸机 ...
- 计算机基础操作与应用实训教程,计算机应用基础实训教程の第 3 章 Word 2003 基本操作.pdf...
计算机应用基础实训教程の第 3 章 Word 2003 基本操作.pdf (37页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 第 3 章 ...
- 大学计算机基础实训excel,大学计算机基础实训指导书
摘要: <大学计算机基础实训指导书>分为8章,内容包括第1章介绍了计算机基础知识,主要内容包括计算机的发展,计算机系统的组成,信息在计算机中的表示等;第2章介绍了操作系统基础知识,主要内容 ...
最新文章
- 一个 Mybatis 开发神器:Fast MyBatis 超好用
- R语言shapiro.test()函数实现Shapiro-Wilk正态分布检验
- CF858F Wizard's Tour 解题报告
- safehandle 和析构函数
- cpu封装技术 cpu知识 zol术语
- python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获
- 重新拾起VS2008加入战斗
- AspectJ声明式事务配置
- pytest测试框架(一)---安装及入门
- h.264并行解码算法分析
- Phaser开源2d引擎 html5游戏框架中文简介
- layui + jfinal 实现上传下载
- [UE4]关闭自动曝光
- 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)
- 霍兰德SI型如何选专业?霍兰德职业兴趣测试
- xenu死链检测工具使用教程
- 数据结构图---拓扑结构
- KIBA 和 Davis 数据集下载 以及部分学习笔记
- 自己做的本地识图软件DAMO_嗅图狗
- 图片压缩导致IOS内存不足导致崩溃
热门文章
- 移动云招聘,加入我们,搞点大事~
- 【水果识别】基于matlab PCA苹果酸甜度识别【含Matlab源码 1634期】
- 【裂缝识别】基于matlab GUI BP神经网络路面裂缝识别系统【含Matlab源码 1063期】
- 【数字信号处理】基于matlab GUI IIR低通+FIR高通信号时域+频谱分析【含Matlab源码 1029期】
- 【故障分析】基于matlab轴承故障分析(时频图+功率谱)【含Matlab源码 922期】
- 【CVRP】基于matlab节约算法求解带容量的车辆路径规划问题【含Matalb源码 157期】
- 【MTSP】基于matlab遗传算法求解多旅行商问题【含Matlab源码 016期】
- 城市ai大脑_激发AI研究的大脑五个功能
- # 畸变矫正_拒绝拍照边缘畸变 坚果Pro 3 Smartisan OS v7.2.0系统体验
- 时间linux防火墙策略,Linux防火墙简介 – iptables配置策略(示例代码)