




免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025建筑项目贷款资金监管合同
- 《2025年终止劳动合同协议书范本》
- 2025-2030年新能源行业专利布局与竞争格局报告
- 2025河南省农民工劳动合同格式范本
- 新能源行业2025年资本市场洞察报告:技术创新引领市场新机遇
- 2025年中国工业秤和部件行业市场全景分析及前景机遇研判报告
- 2025年中国个人安全报警器行业市场全景分析及前景机遇研判报告
- 2025年新能源产业环保政策与可持续发展报告
- 对仗和押韵的特点
- 煤炭资源开发企业股权变更及经营管理权移交合同
- SY-T 5333-2023 钻井工程设计规范
- 中山红色文化
- 维保的可行性报告
- 海南省2023年中考历史试题(含答案)
- 车载测试行业分析
- 教学案例的撰写讲稿分析课件
- 定制手办目标市场调研
- 微商新手培训课件
- 美发与形象设计-高级美发全套教学课件
- 产品耐压、绝缘、接地测试报告
- 慢性鼻窦炎鼻息肉护理查房课件
评论
0/150
提交评论