收藏 分享(赏)

课程设计任务书:实现手机的拨号功能.doc

上传人:weiwoduzun 文档编号:4358047 上传时间:2018-12-24 格式:DOC 页数:6 大小:58.50KB
下载 相关 举报
课程设计任务书:实现手机的拨号功能.doc_第1页
第1页 / 共6页
课程设计任务书:实现手机的拨号功能.doc_第2页
第2页 / 共6页
课程设计任务书:实现手机的拨号功能.doc_第3页
第3页 / 共6页
课程设计任务书:实现手机的拨号功能.doc_第4页
第4页 / 共6页
课程设计任务书:实现手机的拨号功能.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、第 1 页 共 6 页RISC 微控制器嵌入式系统课程设计报告班 级 学 号 姓 名 深圳职业技术学院计算机应用技术专业2011 年 6 月第 2 页 共 6 页实现手机的拨号功能1 课程设计的任务 1) 在基于PXA270教学平台上实现手机的基本方法就是通过串口接入一个GSM模块,然后用GSM模块编程指令(AT指令)来实现手机的功能。2) 数字1-9是手机的数字键盘,字母B键是拨号键(相当于手机的接听键或拨出键) ,字母C键是挂断键。3) 在教学平台的键盘上输入要拨叫的电话(数字)时,会在串口显示输入的数字,再按字母B键时,会从串口输出一串用于拨号的AT指令。这串指令会控制GSM模块对相关号

2、码的呼叫。4) 在教学平台的键盘上按字母C键时,会从串口输出挂断电话的AT指令。这串指令会控制GSM模块挂断相应的呼叫。2 课程设计实现的功能 1) 数字键盘扫描的详细过程和方法在初始化阶段,所有的行(输出端口)被强行设置为低电平。在没有任何键按下时,所有的列(输入端口)将读到高电平。任何键的闭合将造成其中的一列变为低电平。一旦检测到有键被按下,就需要找出是哪一个键。过程很简单,微处理器只需在其中一列上输出一个低电平。如果它在输入端口上发现一个 0 值,微处理器就知道在所选择行上产生了键的闭合。相反,如果输入输出端口全是高电平,则被按下的键就不在那一行,微处理器将选择下一行,并重复该过程直到它

3、发现了该行为止。一旦该行被识别出来,则被按下键的具体列可通过锁定输入端口上惟一的低电平来确定。分析相应代码:har KeypadGetData(void) /modified by hzhchar KeyData; / 定义 Keypadunsigned int KPData0; / Register dataunsigned int KPData1; / Register dataunsigned int KPPress; / Keypad press countint timer; / Loop coutner/timer (for test timeout)unsigned int kp

4、c;KeyData = 0x30; / Inital setting = ASCII ?timer = 200; / This will provide about a 10 second timeoutkpc = KPC_REG;while (!(kpc / Dealy 50 mS as part of timeout looptimer = timer -1; / Decrement timer第 3 页 共 6 页kpc = KPC_REG;if(GPLR0if(GPLR0 /等待按健放开return D; if (timer = 0)KeyData = 0x54; / ASCII “T

5、“ for Time out/return (KeyData);/ Code picks up here if a key is pressedDM_WaitMs(50); / Dealy 50 mS for data to settleif(kpc if(val / Extract Row data and right justifyKPPress = (KPData0 / Extract key press count and right justifyKPData0 = KPData0 / Isolate Column Data/printf(“KPData0 = %08xrn“, KP

6、Data0);/printf(“Key Count = %08xrn“, KPPress);第 4 页 共 6 页KeyData = 0x0A;if (KPPress = 1) / Decode only if 1 keypress has been detectedswitch (KPData0)case 0:if(KPData1 = 0) KeyData = A;if(KPData1 = 1) KeyData = 3;if(KPData1 = 2) KeyData = 2;if(KPData1 = 3) KeyData = 1;break;case 1:if(KPData1 = 0) Ke

7、yData = B;if(KPData1 = 1) KeyData = 6;if(KPData1 = 2) KeyData = 5;if(KPData1 = 3) KeyData = 4;break;case 2:if(KPData1 = 0) KeyData = C;if(KPData1 = 1) KeyData = 9;if(KPData1 = 2) KeyData = 8;if(KPData1 = 3) KeyData = 7;break;return (KeyData);/ End of KeypadGetPress()2) 手机拨号功能及手机挂断功能的实现方法在基于PXA270教学平

8、台上实现手机的基本方法就是通过串口接入一个GSM模块,然后用GSM模块编程指令(AT指令)来实现手机的功能。数字1-9是手机的数字键盘,字母B键是拨号键(相当于手机的接听键或拨出键) ,字母C键是挂断键(相当于手机的挂断键) 。在教学平台的键盘上输入要拨叫的电话(数字)时,会在串口显示输入的数字,再按字母B键时,会从串口输出一串用于拨号的AT指令。这串指令会控制GSM模块对相关号码的呼叫。在教学平台的键盘上按字母C键时,会从串口输出挂断电话的AT指令。这串指令会控制GSM模块挂断相应的呼叫。分析相应代码:第 5 页 共 6 页printf(“Now test keypad, press any

9、 key to view result, BOR Crn“);while(1)char KeyData = 0;/接收输入信息;char pnum20=A,T,D;/定义字符数组拨号信息char gua10=A,T,H,;,0;/同上,挂断int i=3;KeypadHWSetup();/启动键盘while(1)KeyData = KeypadGetData();/得到键盘输入信息if(KeyData=C)/如果按 Cprintf(“n%s“,gua);/显示 gua,挂断break;if(KeyData!=0xA)/按回车键printf(“%c“, KeyData);/显示键盘输入的信息pn

10、umi=KeyData;/键盘输入号码j+;if(KeyData=B)/按 B 开始拨号pnumi-1=;/最后个输入字符减去pnumi=0;结束字符break;结论我们这次的课程设计的任务主要是基于 PXA270 串行口通信电路,利用串口个寄存器的基本用途和编程来实现手机拨号功能,对于我们来说,无疑对于嵌入式的操作与认识更深了一步,程序的开始阶段,老师要我们实现从数字键盘获取数字数据,然后通过串口发送,测试能否输出字段,一开始的编程遇到了不少问题,万是开头难,在开始的时候总是无从下手,后来研究课堂上讲过的知识,知道了获取数字键盘的知识,中间出现了一个大问题,就是字符输出的时候出现自动换行的情况,使串口发送出现了问题,经过老师和我们学生的共同研究,发现是硬件在某些时刻会自动产生换行符,最后顺利解决问题,最后一步在串口的发送中没有遇到大问题,第 6 页 共 6 页最后,通过查书籍和手册,我们完成了课程设计要求的基本功能。通过这一次课程设计,让我们更加了解嵌入式很多方面的知识。虽然不能完全将整个工程的代码都熟悉透,但基本的实现代码都能够熟知和编写。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 教学研究

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报