文档详情

基于DSP的键控流水灯

大米
实名认证
店铺
DOC
100.50KB
约8页
文档ID:466465335
基于DSP的键控流水灯_第1页
1/8

电子电气工程学院学生实验报告一、实验预习实验序号5实验题目按键控制LED灯预习日期要求:1.实验目的;2.实验原理:3.画出实验原理图;4.实验设备;5.预习内容(该实验项目应完成内容);6.记录表格设计一、 实验目的1、 了解DSP开发系统里关于按键控制LED灯的原理2、 学会运用软件驱动按键控制LED3、 熟悉CCS3.1studio的使用二、实验原理实验电路如下:通过按键3来控制四个LED三、 实验内容将KEY文件COPY到CCS开发环境中MYPROJECT目录下,CCS中用PROJECT命令加载KEY目录下的KEYPJT;在CCS中用FILE PROGRAM 命令,加载KEY目录中DEBUG目录下;在CCS中用Debug Go Main 执行程序到main()函数处;当程序全速运行时,按下KEY键盘,则LED1不断闪烁,按第二下时,LED2不断闪烁,按第三下时,LED4不断闪烁,按第五下时,LED1—LED4循环依次闪烁,若再按按键,则如此反复循环二、实验报告要求:1.实验步骤;2.实验数据、波形、现象的记录;3.数据分析、处理(分析、讨论实验结果,说明实验结果与理论值的比较误差;讨论实验中存在的问题与解决方法。

);4.实验操作注意事项;5.实验习题;6.心得体会一、 实验步骤1、 打开CCS3.1软件将程序KEY加载到Project目录下2、 打开main() 函数,进行保存和编译3、 点击Debug下的connect连接DSP开发系统.4、 点击FILE下的load program选择KEY.out文件并运行.5、 按下按键KEY,观察按下按键的次数与LED的亮灭规律.6、 修改程序得到不一样的结果.二实验程序/*Main.c*/ /*按键与走马灯程序*/#include "global.c" void SystemInit();void Timer1Init(); void KickDog(); void KeyLed();void ScanKey(void);void delay(unsigned int num);unsigned int numled=0,numkey=0;main(){ SystemInit(); //系统初始化 MCRC=MCRC & 0xFF00; //IOPE0-7设为IO口模式 PEDATDIR=0xFF00; //所有LED=0, (1代表输出,0代表输入) MCRA=MCRA & 0x00FF; //IOPB0-7设为IO口模式 PBDATDIR = PBDATDIR & 0x00FF; asm(" CLRC INTM "); Timer1Init(); //定时器初始化 while(1) { ScanKey();numkey++;if (numkey > 5) numkey = 1; } }void SystemInit() {asm(" SETC INTM "); /* 关闭总中断 */ asm(" CLRC SXM "); /* 禁止符号位扩展 */ asm(" CLRC CNF "); /* B0块映射为 on-chip DARAM*/ asm(" CLRC OVM "); /* 累加器结果正常溢出*/ SCSR1=0x02FC; /* 系统时钟CLKOUT=20*2=40M */ WDCR=0x006F; /* 禁止看门狗,看门狗时钟64分频 */ KickDog(); /* 初始化看门狗 */ IFR=0xFFFF; /* 清除中断标志 */ IMR=0x0002; /* 打开中断2*/ } void Timer1Init() { EVAIMRA=0x0080; // 定时器1周期中断使能通用定时器功能: 具有计数/定时功能,可以为各种应用提供时基,并可以产生比较输出/PWM信号。

742ChEVAIMRAEVA的中断屏蔽寄存器A742FhEVAIFRAEVA的中断标志寄存器AEVAIFRA=0xFFFF; 11111 111 1111 1111 // 清除中断标志 742Fh,各位描述如下:位15-11 保留位读返回0,写无效位10 T1OFINT FLAG通用定时器1的上溢中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位9 T1UFINT FLAG通用定时器1的下溢中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位8 T1CINT FLAG通用定时器1的比较中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位7 T1PINT FLAG通用定时器1的周期中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位6-4 保留位读返回0,写无效位3 CMP3INT FLAG。

比较单元3中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位位2 CMP2INT FLAG比较单元2中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位1 CMP1INT FLAG比较单元1中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位位0 PDPINTA FLAG功率驱动保护中断标志 读 0:标志被复位;1:标志被置位 写 0:无效 1:复位标志位 GPTCONA=0x0000;0 0 0 00 00 00 0 00 00 00 7400hGPTCONA定时器控制寄存器AEVA位15 保留位位14 通用定时器2的状态,只读 0 递减计数位13 通用定时器1的状态,只读 1 递增计数位12-11 保留位位10-9 使用通用定时器2启动ADC事件 00 无事件启动ADC(模数转换)位8-7 使用通用定时器1启动ADC事件。

00 无事件启动ADC(模数转换)位6 比较输出使能,如果PDPINTx*有效则该 位设置为0 0 禁止所有通用定时器比较输出(所有比较输出 都置于高阻态)位5-4 保留位位3-2 通用定时器2比较输出极性 00 强制低位1-0 通用定时器1比较输出极性 00 强制低 T1PR=2500; // 定时器1初值,定时0.4us*2500=1ms 7403hT1PR定时器1的周期寄存器T1CNT=0;7401hT1CNT定时器1的计数寄存器T1CON=0x144E; 00 0 10 100 0 1 00 01 00 //增模式, TPS系数40M/16=2.5M,T1使能} 位15-14 仿真控制位 00 仿真挂起时立即停止 位12-11 4种计数模式选择 10 连续增计数模式 位10-8 输入时钟定标器 100 x/16 位7 使能位的来源 0:使用自身的使能位(TENABLE)位6 定时器使能与禁止 1 允许定时器操作位5-4 时钟源选择 00 内部时钟位3-2 定时器比较寄存器重载条件。

01 计数器的值为0或等于周期寄存器的值 时重载 位1 定时器比较使能与禁止0 禁止定时器比较操作位0 周期寄存器选择 0 使用自己的周期寄存器void ScanKey(void){unsigned int temp,temp1;unsigned int flag = 0;while(flag==0) temp = PBDATDIR ; 按键消抖程序,检测按键是否按下,只有当按按下又拿起时才视为按键完成了一次按键.temp = temp & 0x0080;(取高位)while(temp ==0x0080) {temp = PBDATDIR ;temp = temp & 0x0080;} delay(5000);temp = PBDATDIR ; temp = temp & 0x0080;(按键位按下为0,不按为1,且第七位为按键位) temp1 = temp;if (temp == 0x0080) flag = 0;else flag = 1; } temp = PBDATDIR ; temp = temp & 0x0080; while( temp != 0x0080){temp = PBDATDIR ;temp = temp & 0x0080;}}void delay(unsigned int num){volatile unsigned int i;for (i=0;i

下载提示
相似文档
正为您匹配相似的精品文档
相关文档