《arm课程设计报告书..docx》由会员分享,可在线阅读,更多相关《arm课程设计报告书..docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、RISC微限制器嵌入式系统课程设计报告班级09计应3班学号 09106107 09106098姓名高原肖潇深圳职业技术学院计算机应用技术专业2023年6月第1页共6页实现手机的拨号功能1课程设计的任务1)在基于PXA270教学平台上实现手机的基本方法就是通过串口接入一个 GSM模块,然后用GSM模块编程指令(AT指令)来实现手机的功能。2)数字1-9是手机的数字键盘,字母B键是拨号键(相当于手机的接听键或 拨出键),字母C键是挂断键。3)在教学平台的键盘上输入要拨叫的电话(数字)时,会在串口显示输入 的数字,再按字母B键时,会从串口输出一串用于拨号的AT指令。这串指 令会限制GSM模块对相关号
2、码的呼叫。4)在教学平台的键盘上按字母C键时,会从串口输出挂断电话的AT指令。这 串指令会限制GSM模块挂断相应的呼叫。2课程设计实现的功能1)数字键盘扫描的具体过程和方法在初始化阶段,全部的行(输出端口)被强行设置为低电平。在没有任何键按下 时,全部的列(输入端口)将读到高电平。任何键的闭合将造成其中的一列变为 低电平。一旦检测到有键被按下,就须要找出是哪一个键。过程很简洁,微处理 器只需在其中一列上输出一个低电平。假如它在输入端口上发觉一个。值,微处 理器就知道在所选择行上产生了键的闭合。相反,假如输入输出端口全是高电 平,则被按下的键就不在那一行,微处理器将选择下一行,并重复该过程直到它
3、 发觉了该行为止。一旦该行被识别出来,则被按下键的具体列可通过锁定输入端 口上惟一的低电平来确定。分析相应代码:har KeypadGetData(void) /modified by hzhchar Key Data; 定义 Keypad unsigned int KPDataO; / Register data unsigned int KPDatal; / Register data unsigned int KPPress; / Keypad press countint timer; / Loop coutner/timer (for test timeout) unsigned i
4、nt kpc;KeyData = 0x30; / Inital setting = ASCII ? timer = 200;/ This will provide about a 10 second timeout kpc = KPC_REG;while (!(kpc & (KEYP_KPC_MI | KEYP_KPC_DI) & (timer != 0) DM_WaitMs(50); / Dealy 50 mS as part of timeout loop timer = timer -1; / Decrement timer第2页共6页kpc = KPC_REG;if(GPLR0&0x0
5、001) 查看按键D:其为GPIO的第。脚(DM_WaitMs(10);if(GPLR0&0x0001)(while(GPLR0&0x0001); 等待按健放开 return D;)if (timer = 0)(KeyData = 0x54; / ASCII T for Time out /return (KeyData);)/ Code picks up here if a key is pressedDM_WaitMs(50); / Dealy 50 mS for data to settle if(kpc & KEYP_KPC_DI) (UINT32 val = KPDK_REG;if(
6、val & (1UL31)(if(val&(l0)return *E;if(val&(ll)return F;if(val & (12) return O;) ) KPDataO 二 KPAS_REG;KPDatal = (KPDataO & OxFO) 4; / Extract Row data and right justifyKPPress 二(KPDataO & 0x7C000000) 26; / Extract key press count and right justifyKPDataO = KPDataO & OxF; / Isolate Column Data /printf
7、(HKPDataO = %08xrn KPDataO);/printf(nKey Count = %08xrnn, KPPress);第3页共6页KeyData = OxO A;if (KPPress = 1) / Decode only if 1 keypress has been detected (switch (KPDataO) ( case 0:if(KPDatal = 0) KeyData = A;if(KPDatal = 1) KeyData = 3;if(KPDatal = 2) KeyData =2;if(KPDatal = 3) KeyData = T; break; ca
8、se 1:if(KPDatal = 0) KeyData = B;if(KPDatal = 1) KeyData = 6;if(KPDatal = 2) KeyData = 5;if(KPDatal = 3) KeyData = 4; break;case 2:if(KPDatal = 0) KeyData = C;if(KPDatal = 1) KeyData =9;if(KPDatal = 2) KeyData = 8;if(KPDatal = 3) KeyData = 7;break;) ) return (KeyData);/ End of KeypadGetPress()2)手机拨号
9、功能及手机挂断功能的实现方法在基于PXA270教学平台上实现手机的基本方法就是通过串口接入一个GSM模块,然后用GSM模块编程指令(AT指令)来实现手机的功能。 数字1-9是手机的数字键盘,字母B键是拨号键(相当于手机的接听键 或拨出键),字母C键是挂断键(相当于手机的挂断键)。在教学平台的键盘上输入要拨叫的电话(数字)时,会在串口显示输 入的数字,再按字母B键时,会从串口输出一串用于拨号的AT指令。这 串指令会限制GSM模块对相关号码的呼叫。在教学平台的键盘上按字母C键时,会从串口输出挂断电话的AT指令。 这串指令会限制GSM模块挂断相应的呼叫。分析相应代码: 第4页共6页printf(nN
10、ow test keypad, press any key to view result, BOR Crn); while(l) (char KeyData = 0;接收输入信息;charpnum20=A,T,D;定义字符数组拨号信息char gua10=A,T,H,YW;同上,挂断int i=3;KeypadHWSetupO;启动键盘while(l)(KeyData = KeypadGetData。;/得到键盘输入信息if(KeyData=C)假如按 C (printf(”n%s”,gua);显示 gua,挂断 break;)if(KeyData! =0xA) 按回车键(printf(n%c
11、, KeyData);/显示键盘输入的信息pnumi=KeyData;/键盘输入号码j+;if(KeyData=B)按 B 起先拨号(pnumi-l=:;最终个输入字符减去 pnumi=(r;结束字符break;结论我们这次的课程设计的任务主要是基于PXA270串行口通信电路,利用串个寄存器的基本用途和编程来实现手机拨号功能,对于我们来说,无疑对于嵌 入式的操作与相识更深了一步,程序的起先阶段,老师要我们实现从数字键盘获 得数字数据,然后通过串口发送,测试能否输出字段,一起先的编程遇到了不少 问题,万是开头难,在起先的时候总是无从下手,后来探讨课堂上讲过的学问, 知道了获得数字键盘的学问,中间出现了一个大问题,就是字符输出的时候出现 自动换行的状况,使串口发送出现了问题,经过老师和我们学生的共同探讨,发 觉是硬件在某些时刻会自动产生换行符,最终顺当解决问题,最终一步在串口的 发送中没有遇到大问题,最终,通过查书籍和手册,我们完成了课程设计要求的 基本功能。第5页共6页通过这一次课程设计,让我们更加了解嵌入式许多方面的学问。虽然不能完全将 整个工程的代码都熟识透,但基本的实现代码都能够熟知和编写。第6页共6页
限制150内