免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP实验报告实验名称: 矩阵键盘扫描实验 院 系: 物理与机电工程学院 专业班级: 2009级电子信息工程(2)班姓 名: 郑 俊 强 学 号: 2009041648 指导教师: 罗 锦 彬 完成时间: 2012年 5月22日 报告成绩: 评阅意见: 评阅教师 日期 矩阵键盘扫描实验一、 实验目的 1. 掌握键盘信号的输入,DSP I/O的使用;2. 掌握键盘信号之间的时序的正确识别和引入。二、 实验设备 1. 一台装有CCS软件的计算机; 2. DSP试验箱的TMS320F2812主控板; 3. DSP硬件仿真器。三、 实验原理实验箱上提供一个 4 * 4的行列式键盘。TMS320F2812的8个I / O口与之相连,这里按键的识别方法是扫描法。当有键被按下时,与此键相连的行线电平将由此键相连的列线电平决定,而行线的电平在无法按键按下时处于高电平状态。如果让所有的列线也处于高电平,那么键按下与否不会引起行线电平的状态变化,始终为高电平。所以,在让所有的列线处于高电平是无法识别出按键的。现在反过来,让所有的列线处于低电平,很明显,按键所在的行电平将被拉成低电平。根据此行电平的变化,便能判断此行一定有按键被按下,但还不能确定是哪个键被按下。假如是5键按下,为了进一步判定是哪一列的按键被按下,可在某一时刻只让一条列线处于低电平,而其余列线处于高电平。那么按下键的那列电平就会拉成低电平,判断出哪列为低电平就可以判断出按键号码。模块说明: 此模块共有两种按键,KEY1KEY4是轻触按键,在按键未按下时为高电平输入FPGA,当按键按下后对FPGA输入低电平,松开按键后恢复高电平输入,KEY5KEY8是带自锁的双刀双掷开关,在按键未按下时是低电平,按键按下时为高电平并且保持高电平不变,只有再次按下此按键时才恢复低电平输入。每当按下一个按键时就对FPGA就会对此按键进行编码,KEY1KEY8分别对应的是01H、02H、03H、04H、05H、06H、07H、08H。在编码的同时对DSP产生中断INT1,这个时候DSP就会读取按键的值,具体使用方法可以参考光盘例程key,prj。实验程序流程图如下:四、实验步骤1把2812 模块小板插到大板上;打开液晶模块的电源开关;2按下键盘按键,液晶会显示所按键的号码。3设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行4启动Code Composer Studio 2.21选择菜单DebugReset CPU。5打开工程文件打开本实验的工程编译Example_key.prj浏览Example_key.c文件的内容,理解各语句作用。6编译并下载程序,生成输出文件.OUT,通过仿真器把执行代码下载到DSP 芯片;7运行;按下键盘按键,液晶会显示所按键的号码。五、实验原程序代码#include include/DSP281x_Device.h / DSP281x Headerfile Include File#include include/DSP281x_Examples.h / DSP281x Examples Include Fileunsigned short key,keyvalue;unsigned char nAsciiDot = / ASCII/ASCII字模的数据表- /* ;void Gpio_select(void);void delay(int time) int i,j; for(i=0;itime;i+) for(j=0;j1200;j+);void wcom(unsigned char com) Reg08=com; void wdata(unsigned char dat)Reg07=dat; void lcdinit(void)wcom(0xa4);wcom(0xad);wcom(0x03);wcom(0xac);wcom(0xe2); /initialize interal functiondelay(10); wcom(0xa2); /set nomal display wcom(0xa0); /ADC select SEG1 to SEG132wcom(0xc8); /set SHL COM1 to COM64 start page setup wcom(0x2c); /power control(VB,VR,VF=1,1,1) wcom(0x2e); /power control(VB,VR,VF=1,1,1) wcom(0x2f); /power control(VB,VR,VF=1,1,1) wcom(0x25); wcom(0x81); /set reference voltage mode wcom(0x20); /set reference voltage wcom(0x40); /Initial Display Line was first line wcom(0xa6); /set nomal display wcom(0xa4); /set nomal display wcom(0xaf); /display onvoid clear(void)unsigned char page;unsigned char seg; for(page=0xb0;page0xb9;page+) /写页地址共页 0xb0-0xb8 wcom(page); wcom(0x10); wcom(0x00); for(seg=0;seg128;seg+) wdata(0x00); void lcdwritechar(char codenum ,char y ,char x ) unsigned char seg; unsigned int coden; codenum-=0x20; coden=codenum1)&0x0f); wcom(0x00|(x3)&0x0f); for(seg=0;seg1)&0x0f); wcom(0x00|(x3)&0x0f); for(seg=0;seg8;seg+) wdata(nAsciiDotcoden+);main() InitSysCtrl(); EALLOW; EDIS; Gpio_select(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitXintf(); / For this example, init the Xintf lcdinit(); clear(); while(1) keyvalue=0; GpioDataRegs.GPADAT.all =0xefff; Reg05=0x00; key=GpioDataRegs.GPADAT.all; if(key!=0xefff) if(key=0xe7ff)keyvalue=D; if(key=0xebff)keyvalue=#; if(key=0xef7f)keyvalue=0; if(key=0xefbf)keyvalue=*; Reg05=0x00; GpioDataRegs.GPADAT.all =0xdfff; Reg05=0x00; key=GpioDataRegs.GPADAT.all;if(key!=0xdfff) if(key=0xd7ff)keyvalue=A; if(key=0xdbff)keyvalue=3; if(key=0xdf7f)keyvalue=2; if(key=0xdfbf)keyvalue=1; Reg05=0x00; GpioDataRegs.GPADAT.all =0xbfff; Reg05=0x00; key=GpioDataRegs.GPADAT.all; if(key!=0xbfff) if(key=0xb7ff)keyvalue=B; if(key=0xbbff)keyvalue=6; if(key=0xbf7f)keyvalue=5; if(key=0xbfbf)keyvalue=4; Reg05=0x00; GpioDataRegs.GPADAT.all =0x7fff; Reg05=0x00; key=GpioDataRegs.GPADAT.all; if(key!=0x7fff) if(key=0x77ff)keyvalue=C; if(key=0x7bff)keyvalue=9; if(key=0x7f7f)keyvalue=8; if(key=0x7fbf)keyvalue=7; Reg05=0x00; if(keyvalue!=0) lcdwritechar(k,4,3);lcdwritechar(e,4,4);lcdwritechar(y,4,5);lcdwritechar( ,4,6);lcdwritechar(i,4,7);lcdwritechar(s,4,8);lcdwritechar( ,4,9);lcdwritechar(keyvalue,4,10); Reg05=0x00; void Gpio_select(void) Uint16 var1, var2, var3; var1= 0x0000;/ sets GPIO Muxs as I/Os var2= 0xf000;/ sets GPIO DIR as outputs var3= 0x0000;/ sets the Input qualifier values EALLOW;GpioMuxRegs.GPAMUX.all=var1; GpioMuxRegs.GPADIR.all=var2;/ GPIO PORTs as output GpioMuxRegs.GPAQUAL.all=var3; / Set GPIO input qualifier values EDIS;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北化工医药职业技术学院《模拟集成电路分析与设计》2024-2025学年第一学期期末试卷
- 马鞍山师范高等专科学校《应急管理概论》2024-2025学年第一学期期末试卷
- 云南省鲁甸县第二中学2025-2026学年生物高一第一学期期末质量跟踪监视试题含解析
- 2025年山东省菏泽市单县第五中学高二上数学期末检测模拟试题含解析
- 浙江诸暨中学2025-2026学年化学高二第一学期期末联考模拟试题含解析
- 检验科常见疾病检测手册
- 血液科白血病化疗药物不良反应护理指南
- 外科脊柱手术术后康复指南
- 产品机会陈述评估
- 白内障术前评估
- 江苏省盐城市大丰区实验初中教育集团联考2024-2025学年九年级上学期10月期中物理试题
- GB/T 3487-2024乘用车轮辋规格系列
- 低层模块化生态钢结构mehouse介绍
- 同心共育静待花开 课件高一下学期期中考试分析家长会
- 总工会招聘考试考前必做500道
- 2024年秋季新外研版三年级上册英语课件 Unit 4 第2课时 (Start up)
- 房产代持协议范本
- 田径运动会各种记录表格
- 二手人防车位使用权转让协议书
- Python数据分析与可视化(微课版) 课件 ch05 数据清理案例实战
- 全面质量管理的七种统计分析方法
评论
0/150
提交评论