- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
昆明理工大学信息工程与自动化学院学生实验报告
(2011 —2012 学年第 2 学期)
课程名称:嵌入式技术基础与实验 开课实验室:信自楼2012年5月10日
年级、专业、班
学号
姓名
成绩
实验项目名称
键盘中断实验
指导教师
教
师 评 语
教师签名:
年 月 日
注:报告内容按实验须知中七点要求进行。
一、 实验目的
1、 熟练运用CodeWarrior嵌入式开发系统环境、汇编、C语言、调试方式;
2、 复习串行通信接口 (SCI)的内容;
3、 加强键盘中断基本原理及编程原理的理解;
4、 理解行扫描法的原理并能进行键值识别和键值编码;
5、 理解键盘接线原理图。(如图5-1所示)
二、 实验原理及基本技术路线图(方框原理图)
木实验采川4x4矩阵式键盘。PTG4、PTD2、PTD3、PTD7分别接四根线,定义为输入11上拉, PTG0-PTG3分别接川根行线,口定义为输出行打描法是使每一行输出低电平,,其余行为高电平, 然后读取列值,如果列值小有低电平,则表明该行和列交点处的键被按下;若为全高则再扌描下一 行,知道扫描完全部的行为止。这样就可以知道哪一行哪一列交点键被按下。
MCU与键盘接线原理如下
MCU内部上拉电阻一nr图3-1讎盘扌妄邈原理图
MCU内部上拉电阻一
nr
图3-1讎盘扌妄邈原理图4
14
2心
32
4亠
54
6a
7a
2
接MCU的 PTA弓I脚Q
图3-1 I/O 口引脚的连接图
三、所用仪器、材料(设备名称、型号、规格等)
飞思卡尔试验箱
四、实验方法、步骤低电平
1、资源使用
键盘的-数据线分别接在MCU G 口的0-4号引脚、 D 口的2、3、7号引脚。MCU的SCI发送 引脚E 口的0号引脚接MAX232的TTL电平接收引脚(11号,MCU的SCI接收引脚 E 口的1 号引脚接MAX232的TTL电平发送引脚(12号)
2、硬件设计
先阅读源程序,查看相应的端口的宏定义,再根据端口号来接线。
键盘AW60
键盘
AW60
计算机MAX232
计算机
3、软件设计(主要的程序流程图)
4、编程(关键性程序段)
sender,PC接收函数
sender,
private void SCIPort_DataReceived(object
System.IO.Ports.SerialDataReceivedEventArgs e)
{
String str = String.Empty;
bool Flag;//标记串口接收数据是否成功
int lcn;〃标记接收的数据的长度
〃调用串口接收函数,并返回结果
Flag = sci.SCIReceiveData(SCIPort,ref PublicVa i*.g_ReceiveByte Array); if (Flag == true)//串口接收数据成功
{
len = PublicVar.^ReceiveByteArray.Length;
〃对于字符串形式,考虑到可能有汉字,
〃直接调用系统定义的函数,处理整个字符串
str = Encoding.Default.GetString(PublicVa r.g_ReceiveByte Array);
SCIUpdateRevtxtbox(TbShowString, str);
〃十进制和十六进制形式按字节进行处理 for (int i = 0; i len; i++)
//十进制都是按照三位來显示,字节之间有空格表示区分
SCIUpdateRevtxtbox(TbShowDec,
PublicVa r.g_ReceiveByteArray[i].ToString(”D3) + ” “);
〃十六进制都是按照两位来显示,字节Z间有空格表示区分
SCIUpdateRevtxtbox(TbShowHex,
PublicVar.g_ReceiveByteArray[i].ToString(MX2H) + ” “);
)
this.TSSLState.Text = ”过程提示:数据接收成功! ”;
1
〃接收数据失败
else
this.TSSLState.Text = ”过程提示:数据接收失败! ”;
}
main函数
#includc Includes.h
void main(void)
{
//I关总中断
Disablelnterrupt(); 〃禁止总中断
//2芯片初始化
MCUInit();
〃3模块初始化
//3.1 SCI初始化
SCIInit(SCI_NUM_ 1 ,SYSTEM_CLOCK,38400);//用 SCT1,系统时钟为时钟源,波特率为 9600
//3.2键盘初始化
KBInit();
//4开中断
〃4」开键盘中断
EnableKBint();
//4.2
文档评论(0)