ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:19.37KB ,
资源ID:5170809      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5170809.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP技术课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP技术课程设计.docx

1、DSP技术课程设计DSP技术课程设计计算机与信息工程学院 2012级 通信31班 xxx2xx3指导教师 xxx 教师 摘要 本文提供了DSP应用技术设计思路,主要应用CCS软件实现各个模块之间的相互连接,使用C语言和汇编语言编程在CCS中实现软件仿真,在CCS中进行硬件仿真并通过试验箱实现关键词 CCS编译环境;C语言;硬件仿真;1. 设计任务和要求 使用DSP试验箱的流水灯模块、键盘模块以及显示模块相连接并在CCS集成开发环境中使用图形显示工具显示输入和输出波形。 2. 工作原理由键盘模块控制流水灯模块,在按键的同时调用显示模块。键盘模块:在运行键盘模块的程序中,程序首先判断是否有按键,若

2、没有将进入等待按键的状态,如有便通过扫描函数来确定被按下键的具体地址,然后将其地址值返回。流水灯模块:有8个流水灯,使用的是二进制数的代码,通过二进制数的代码控制流水灯的状态。显示模块:用PCtoLCD2002软件,勾画出想出现的文字、字体以及形状,然后将其导入显示模块的程序。3设计步骤和方法 先定义一个变量将键盘的返回值存起来,通过这个值来控制流水灯的循环,流水灯的设计采用八条赋值语句和八条延时语句来实现,由于延时语句是汇编语言而键盘模块以及显示模块用的都为C语言,所以要注意汇编与C语言之间的转换。用五种不同的八条赋值语句和八条相同的延时语句设计出5中不同的花型。将显示模块与键盘模块连接起来

3、,在按键模块确定具体被按下键的地址的部分调用显示的语句,即之前设计好的字体和形状,在显示的语句中同时也要定义一个变量i实现每次执行显示语句的时候是字体或形状在显示屏上可以动起来。4, 程序代码#include /*-*/void Wr_c_l(char com);void Wr_c_r(char com);void Wr_d_l(char data);void Wr_d_r(char data);void Init_Lcd();void Cls_Lcd();void lcd_dsp(char lorr,char page_cnt,char line,char numx);char temp,c

4、lr_page_cnt,clr_byte_cnt,page_cnt,colm_cnt;/*DSP的IO空间,扩展发光二极管、键盘、液晶等外围设备*/ioport unsigned port0800;/lcd dataioioport unsigned port1000;/lcd resetioport unsigned port0c00;/lcd diioport unsigned port1400;/lcd cs1ioport unsigned port1800;/lcd cs2/对端口的定义ioport unsigned port2C00;/faguangchar past=254;cha

5、r keyvalue1; int i=0; /*To Decide The AIC Sample Frequency*/*-*/*DSP的IO空间,扩展发光二极管、数码管、键盘、液晶等外围设备*/ioport unsigned port1C00;/键盘行列线/*-*/char num26=0,0x7F,0x49,0x49,0x49,0x49,0x00,0x00;/E=26Hchar num2d=0,0x7F,0x40,0x40,0x40,0x40,0x00,0x00;/L=2DHchar num30=0,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00;/O=30Hchar

6、 num37=0,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00;/V=37Hchar num10=0,0x32,0x49,0x79,0x41,0x3E,0x00,0x00;/=10Hchar num0 =0,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00;/0=00Hchar num1 =0,0x00,0x42,0x7F,0x40,0x00,0x00,0x00;/1=01Hchar num2 =0,0x42,0x61,0x51,0x49,0x46,0x00,0x00;/2=02Hchar num3 =0,0x21,0x41,0x45,0x4B,0x

7、31,0x00,0x00;/3=03Hchar num4 =0,0x18,0x14,0x12,0x7F,0x10,0x00,0x00;/4=04Hchar num5 =0,0x27,0x45,0x45,0x45,0x39,0x00,0x00;/5=05Hchar num6 =0,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00;/6=06Hchar numl1=0x44,0x44,0xFC,0x44,0x44,0x10,0xD0,0xFF;char numl2=0x90,0x00,0xD0,0xFF,0xD0,0x10,0x10,0x00;char numl3=0x08,0

8、x08,0x07,0x14,0x08,0x06,0x01,0xFF;char numl4=0x04,0x03,0x00,0xFF,0x01,0x0E,0x08,0x00;char numj1=0x00,0x08,0x08,0x08,0x88,0x48,0x38,0xFF;char numj2=0x18,0x28,0x48,0x88,0x88,0x08,0x00,0x00;char numj3=0x40,0x32,0x02,0x01,0x10,0x60,0x00,0x07;char numj4=0x10,0x60,0x00,0x00,0x11,0x63,0x01,0x00;/所需要的汉字、数字和

9、字符的显示代码char rdkey() ;char scan_key();void mmm();void main() char keyvalue = 255;c54_init(); for (;) keyvalue = scan_key(); if(keyvalue!=255) past=keyvalue; if(past=0) port2C00=0xfd; loop0(); port2C00=0xfb; loop0(); port2C00=0xf7; loop0(); port2C00=0xef; loop0(); port2C00=0xdf; loop0(); port2C00=0xbf

10、; loop0(); port2C00=0x7f; loop0(); i=i+1; mmm(); i=0; else if(past=1) port2C00=0x7f; loop0(); port2C00=0xbf; loop0(); port2C00=0xdf; loop0(); port2C00=0xef; loop0(); port2C00=0xf7; loop0(); port2C00=0xfb; loop0(); port2C00=0xfd; loop0(); port2C00=0xfe; loop0(); i=i+1; mmm(); i=0; else if(past=2) por

11、t2C00=0xe7; loop0(); port2C00=0xdb; loop0(); port2C00=0xbd; loop0(); port2C00=0x7e; loop0(); port2C00=0xbd; loop0(); port2C00=0xdb; loop0(); port2C00=0xe7; loop0(); port2C00=0xff; loop0(); else if(past=3) port2C00=0x7e; loop0(); port2C00=0x3c; loop0(); port2C00=0x18; loop0(); port2C00=0x00; loop0();

12、 port2C00=0x18; loop0(); port2C00=0x3c; loop0(); port2C00=0x7e; loop0(); port2C00=0xff; loop0(); else if(past=4) port2C00=0xaa; loop0(); port2C00=0x55; loop0(); /循环和流水灯花样的控制char rdkey()char keyin; port1C00 = 0x0 ; keyin = port1C00 ; keyin = keyin & 0xF ; if (keyin = 0xF) return 0 ; else return 1 ;ch

13、ar scan_key()char keyornot;int keyin;int keyvalue; keyornot = rdkey() ; if (!keyornot) return 255; delay3(); keyornot = rdkey() ; if (keyornot ) /某个键按下! port1C00 = 0xe ; keyin = port1C00 & 0xF ; if ( keyin != 0xF) keyvalue = 0; keyin = keyin; keyvalue = keyin + keyvalue-7; while (keyornot = rdkey()

14、/等键松下 delay3(); port1C00 = 0xd ; keyin = port1C00 & 0xF ; if ( keyin != 0xF) keyvalue = 1; keyvalue = keyin + keyvalue ; while (keyornot = rdkey() delay3(); port1C00 = 0xb ; keyin = port1C00 & 0xF ; if ( keyin != 0xF) keyvalue = 9; keyvalue = keyin + keyvalue ; while (keyornot = rdkey() delay3(); po

15、rt1C00 = 0x7 ; keyin = port1C00 & 0xF ; keyin = port1C00 & 0xF ; if ( keyin != 0xF) keyvalue = 17; keyvalue = keyin + keyvalue ; while (keyornot = rdkey() delay3(); if (keyvalue=0x7) keyvalue=0; lcd_dsp(0,8,1,num1); goto proecess; if (keyvalue=0x6) keyvalue=1; lcd_dsp(0,8,1,num2); /调用显示语句,显示数字 goto

16、proecess; if (keyvalue=0x4) keyvalue=2; lcd_dsp(0,8,1,num3);/调用显示语句,显示数字 goto proecess; if (keyvalue=0x0) keyvalue=3; lcd_dsp(0,8,1,num4);/调用显示语句,显示数字 goto proecess; if (keyvalue=0xf) keyvalue=4; lcd_dsp(0,8,1,num5);/调用显示语句,显示数字 goto proecess; if (keyvalue=0xe) keyvalue=5; lcd_dsp(0,8,1,num6);/调用显示语

17、句,显示数字 goto proecess; if (keyvalue=0xc) keyvalue=6; goto proecess; if (keyvalue=0x8) keyvalue=7; goto proecess; if (keyvalue=0x17) keyvalue=8; goto proecess; if (keyvalue=0x16) keyvalue=9; goto proecess; if (keyvalue=0x14) keyvalue=10; goto proecess; if (keyvalue=0x10) keyvalue=11; goto proecess; if

18、 (keyvalue=0x1f) keyvalue=12; goto proecess; if (keyvalue=0x1e) keyvalue=13; goto proecess; if (keyvalue=0x1c) keyvalue=14; goto proecess; if (keyvalue=0x18) keyvalue=15; goto proecess; proecess: return keyvalue; return 255;void mmm() temp = port1000 ; / /RES=0,reset lcd delay2(); port1000 = temp ;

19、/ /RES=1,enable lcd Init_Lcd(); /initialize lcd Cls_Lcd(); /清屏 lcd_dsp(0,1,1,numl1); /显示文字的初始位置 lcd_dsp(0,1,2,numl2); lcd_dsp(0,2,1,numl3); lcd_dsp(0,2,2,numl4); lcd_dsp(0,7,1,numj1); lcd_dsp(0,7,2,numj2); lcd_dsp(0,8,1,numj3); lcd_dsp(0,8,2,numj4); delay2(); /延时 Cls_Lcd(); /清屏 lcd_dsp(0,1,1+i,numl1

20、); /使每次显示的文字的位置发生变化达到动起来的效果 lcd_dsp(0,1,2+i,numl2); lcd_dsp(0,2,1+i,numl3); lcd_dsp(0,2,2+i,numl4); lcd_dsp(0,7,i+1,numj1); lcd_dsp(0,7,i+2,numj2); lcd_dsp(0,8,i+1,numj3); lcd_dsp(0,8,i+2,numj4); delay2(); /延时 Cls_Lcd(); /清屏 lcd_dsp(1,1,1,numl1); /(哪半屏,第几页,第几个字,字符数据) lcd_dsp(1,1,2,numl2); lcd_dsp(1,

21、2,1,numl3); lcd_dsp(1,2,2,numl4); lcd_dsp(1,7,1,numj1); lcd_dsp(1,7,2,numj2); lcd_dsp(1,8,1,numj3); lcd_dsp(1,8,2,numj4); delay2(); /延时 Cls_Lcd(); /清屏 lcd_dsp(1,1,1+i,numl1); /在右半屏的初始位置 lcd_dsp(1,1,2+i,numl2); lcd_dsp(1,2,1+i,numl3); lcd_dsp(1,2,2+i,numl4); lcd_dsp(1,7,i+1,numj1); lcd_dsp(1,7,i+2,nu

22、mj2); lcd_dsp(1,8,i+1,numj3); lcd_dsp(1,8,i+2,numj4); delay2(); Cls_Lcd(); /清屏 lcd_dsp(1,1,2+i,numl1); /(哪半屏,第几页,第几个字,字符数据) lcd_dsp(1,1,3+i,numl2); lcd_dsp(1,2,2+i,numl3); lcd_dsp(1,2,3+i,numl4); lcd_dsp(1,7,i+2,numj1); lcd_dsp(1,7,i+3,numj2); lcd_dsp(1,8,i+2,numj3); lcd_dsp(1,8,i+3,numj4); delay2()

23、; Cls_Lcd(); /清屏 lcd_dsp(0,4,1,num2d); / L lcd_dsp(0,4,2,num30); /O lcd_dsp(0,4,3,num37); /V lcd_dsp(0,4,4,num26); /E lcd_dsp(1,4,1,num2d); /? lcd_dsp(1,4,2,num30); lcd_dsp(1,4,3,num37); lcd_dsp(1,4,4,num26); lcd_dsp(0,1,1,numl1); /最终定位不在清屏 lcd_dsp(0,1,2,numl2); lcd_dsp(0,2,1,numl3); lcd_dsp(0,2,2,n

24、uml4); lcd_dsp(1,7,1,numj1); lcd_dsp(1,7,2,numj2); lcd_dsp(1,8,1,numj3); lcd_dsp(1,8,2,numj4); void lcd_dsp(char lorr,char page_cnt,char line,char numx) /写入一个8*8的字符char clr_byte_cnt; page_cnt = (page_cnt - 1) | 0xb8; /设置页号 line = (line-1)*8 + 0x40 ; /改字符的起始列 if (lorr=0) /写-l块(左半屏) Wr_c_l(page_cnt);

25、Wr_c_l(line); for(clr_byte_cnt=1;clr_byte_cnt=8;clr_byte_cnt+) /将numx写入 Wr_d_l(numxclr_byte_cnt-1);/在对应列写入一字节数据 else /写-r块(右半屏) Wr_c_r(page_cnt); Wr_c_r(line); for(clr_byte_cnt=1;clr_byte_cnt=8;clr_byte_cnt+) Wr_d_r(numxclr_byte_cnt-1); void Wr_c_r(char com) /向块1写指令(右半屏)char temp; temp = port1400 ;

26、/ cs1=0 delay1(); port1800 = temp ; / cs2=1,选中块1 delay1(); temp = port0c00 ; / di=0 delay1(); temp = port0800 & 0x80; / E=1,读状态字,判忙 delay1(); while (temp = 0x80) temp = port0800 & 0x80; delay1(); port0800 = com ; /E=1,将com作为指令写入 delay1();void Wr_c_l(char com) /向块2写指令(左半屏)/char temp; port1400 = temp ; / cs1=1 delay1(); temp = port1800 ; / cs2=0,选中块2 delay1(); temp = port0c00 ; / di=0 delay1(); temp = port0800 & 0x80; /读状态字,判忙 delay1(); while (temp = 0x80) temp = port0800 & 0x80; delay1(); port0800 = com ; del

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1