通信工程课程设计报告.docx_第1页
通信工程课程设计报告.docx_第2页
通信工程课程设计报告.docx_第3页
通信工程课程设计报告.docx_第4页
通信工程课程设计报告.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信工程专业课程设计实验报告班级: 姓名: 指导老师:时间: 2014年10月15目录一、实验目的41.实验内容简介42实验主要目的4二 实验设备4三 实验原理41LED工作原理42蜂鸣器工作原理53. 键盘工作原理64. 实验原理及过程7四、实验现象8五、代码说明91、重要变量和函数的定义92、系统初始化程序103、按键中断函数104、时间生成函数115、LED显示136、蜂鸣器167、按键与LED的链接161、 实验内容1. 实验内容利用软件编程实验设计一个数字计时器,完成00:00:00到23:59:59的计时功能,具有保持计数,以及清零的功能。2. 实验目的1 了解并熟练应用ADS v1.2软件;2 学会ARM中C语言编程方法;3 熟悉微处理器SEP3203的GE01开发板硬件平台,并掌握SEP3203各功能模块的使用及配置方法;4 实现数字钟功能,并下载至开发板上进行硬件实现2、 实验原理1. 键盘工作原理如图所示:该矩阵键盘工作过程如下: 通过软件设置GPIO的PORTE使Pe4-Pe2循环输出为(110,101,011),每次保证只有一位输出为0,Pe7-Pe5配置为中断输入;无键按下时,Pe7-Pe5=111,Pe4-Pe2=000,此时无中断。当有键按下时,设5号键按下,此时,B线和F线相连,当Pe4-Pe2的输出为101时,Pe6位输入为低,其他位为高,则GPIO口有中断从Pe6输入,判断为有键按下。2. 数字钟实验原理1 数字钟原理框图: 2 系统时钟程序流程图:3 实现功能说明:1. 完成00:00:00到23:59:59的计时功能,2. enter键为计时的停止及启动键;3. 按下enter键后再按下“*”键后可数据清零;3、 程序语言说明1. 定义变量及说明: 定义了3个static变量:key_code,time_value,Enter_Flag , U8 key_code; U8 Enter_Flag; U8 time_value8=0;key_code:接收键盘的键值; time_value8:用于存储数字钟的时间值;Enter_Flag:键盘中断的标志位,为1时正常计时,为0时计时停止,等待键盘的相应操作;2. 使用函数说明:ModuleRtc():时钟计时函数;keyhandler():键盘中断处理函数,通过按键控制计时;LedDisPlay():LED显示函数,主函数中调用;LedDisPlay(time_value); 用于在数码管上显示时间。3. 程序语言说明1 初始化程序system_init(); keyboardinit(); GPIO_init();/初始化管脚 ModuleStepMotor();2 counter函数while(1) int i;for(i=0;i=10) ge=0;shi+;if(shi=6)shi=0;bai+;if(bai=10)bai=0;qian+;if(qian=6)qian=0;wan+;if(shiwan!=2)&(wan=10)wan=0;shiwan+;if(shiwan=2)&(wan=4)wan=0;shiwan=0;Zhuan_Shu0=ge;Zhuan_Shu1=shi;Zhuan_Shu2=16;Zhuan_Shu3=bai;Zhuan_Shu4=qian;Zhuan_Shu5=16;Zhuan_Shu6=wan;Zhuan_Shu7=shiwan;3 LED display程序void LedDisPlay(U8 data)U8* SegData;Hex2Seg(data, SegData);/ 十六进制数字翻译成7段译码值LedOut(SegData, 1);/ 在led上显示void GPIO_Init()*(RP)PORTD_SEL = 0x7;/ 设定GPIO口 PD0/1/2 为通用口*(RP)PORTD_DIR = 0x0;/ 设定GPIO口 PD0/1/2 为数据输出void Hex2Seg (U8 hexdata, U8 * p)int i;for (i=0;i8;i+)*p+ = SEGMENThexdatai; / 将要显示的数值,通过查找7段译码表翻译成码值void LedOut(U8 data, U32 times)int Segment_i,Bit_i,i;U8 Segment_Data;U8 tempData;for (Bit_i = 0; Bit_i 8 ;Bit_i+)/ 依次串行导入八个led的显示内容Segment_Data=*(data + Bit_i);/ 获得一个led显示的码值for (Segment_i = 0; Segment_i Segment_i) & 0x1;/ 得到一段发光管的译码值*(RP)PORTD_DATA = tempData;/ 写入74HC595的输入端,同时拉低PD3tempData |= 0x04; *(RP)PORTD_DATA = tempData;/ 拉高PD3,触发74HC595,移位寄存/delay(0x100000);/LedUpdate();/ 显示到LED上LedUpdate();/ 显示到LED上void LedUpdate(void)/ 74HC595锁存锁存输出,即led显示使能*(RP)PORTD_DATA |= 0x2;void delay(int cycle)int j = 0;for(j = 0; j cycle; j+);return;4 Interrupt程序 if (key_code) /排除无效按键 wucb(0x5a, 0); /所有的列线置0 while (rucb(0x5a) & intstatus) = 0) /按键还未抬起 int i; if (dly+ = 0) for (i = 0; i =8) count=0; else for(i = 0; i KEYTIME2; i +); printf(key = %cn, key_code); wucb(0x5a,0x0);/ 下一次的判断周期 5 LED与按键的链接void change_shu(void) if(Enter_Flag=1)&(key_code!=E)&(key_code!=*) switch(count) case 0: ge=key_code; Zhuan_Shu0=ge; printf(ge = %cn, ge+0); break; case 1: shi=key_code; Zhuan_Shu1=shi; printf(shi = %cn, shi+0); break; case 2: break; case 3: bai=key_code; Zhuan_Shu3=bai; printf(bai = %cn, bai+0); break; case 4: qian=key_code; Zhuan_Shu4=qian; printf(qian = %cn, qian+0); break; case 5: break; case 6: wan=key_code; Zhuan_Shu6=wan; printf(wan = %cn, wan+0); break; case 7: shiwan=key_code; Zhuan_Shu7=shiwan; printf(shiwan = %cn, shiwan+0); break; if(Enter_Flag=1)&(key_code=*) ge=0;shi=0;bai=0;qian=0;count=0;wan=0;shiwan=0; Zhuan_Shu0=ge;Zhuan_Shu1=shi;Zhuan_Shu2=16;Zhuan_Shu3=bai;Zhuan_Shu4=qian;Zhuan_Shu5=16;Zhuan_Shu6=wan;Zhuan_Shu7=shiwan; 4、 实验总结 通过我们小组成员的共同努力,这次试验还是达到了理想的效果。这次试验提供了实验参考书里面最基本的程序,要求我们看懂实验程序的整个设计过程的基础上研究编程语言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论