1、dsp课程设计报告 点阵显示 广告牌显示DSP课程设计说明书题 目 : 霓虹灯广告牌专业班级 : 学生姓名 : 学 号 : 一、 设计目的DSP应用的快速发展为数字信息产品带来广阔的发展空间,并将支持通信、计算机和消费类电子产品的数字化融合。在无线领域,DSP遍及无线交换设备、基站、手持终端和网络领域,并涵盖从骨干基础设施到宽带入户的设备,包括VoIP网关和IP电话、DSL和Cable Modem等。面向群体应用,DSP在媒体网关、视频监控、专业音响、数字广播、激光打印等应用中表现出色;面向个人应用,DSP在便携式数字音频和影像播放器、指纹识别和语音识别等应用中表现不俗;针对嵌入式数字控制应用
2、,DSP极大地满足了工业界的需求,如数字变频电力电源设备、工业缝纫机等;DSP也极大地满足了消费电子的需求,如空调、冰箱、洗衣机等。随着DSP生产技术和工艺的进步,新型的DSP产品将会不断涌现,并得到广泛应用。通过此次课程设计,学习dsp芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉程序调试规程,并能最终熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。二、 系统分析21、设计要求5个按键,按下键1,LCD第一行显示“石家庄铁道大学”;按下键2,LCD第二行显示“电气工程学院”;按下键3,LCD第三行显示“欢迎您”;按下键5,LCD第三行显示“谢谢”;按下键4,LCD清
3、屏。22、设计思想 通过相应软件开发平台和相应实验箱进行程序调试DSP外设控制设备开发扩展。用独立式控键控制DSP的管脚,使用DSP芯片控制LCD来显示汉字,用其中一个按键实现LCD的清屏,其它(4个)每个按键实现汉字的输出控制, 通用DSP管脚控制LCD公告牌的文字显示 三、 总体设计3.1、硬件设计硬件设计组成框图如图所示: 3.2、总体电路图设计 其中s1s5为按键,R1R5对管脚起保护作用。该键盘为独立式键盘,分别和DSP芯片的管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接。因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。DSP芯片外接LCD作为输出,外接
4、5个单按键作为输入。在程序中构建汉字字模,并能够使用查找法提取。3.3最小系统图四、 单元电路设计4.1 按键电路 该键盘为独立式键盘,分别和DSP芯片的GPIO管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接,因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。当开关S断开时,其管脚为高电平;当开关闭合时,其管脚变为低电平;以此来控制DSP芯片的管脚。其中PWM1为清屏,其余控制LCD显示汉字。4.2. DSP与LCD接口设计本设计采用间接访问方式来实现DSP与LCD之间的时序匹配,即在程序中加入大量延时语句。由于DSP 为3.3V 设备,而液晶显示模块属于5V 设备
5、,所以在连接控制线、数据线时需要加电平隔离和转换设备。Tms320lf2407a引脚图五、 运行描述(1)CS运行环境,进行相应的设置,然后保存设置,在CCS运行环境下打开已编好的程序,进行调试,直至提示0个错误,然后保存调试成功后的文件。(2)打开DSP试验箱电源,按照先前设计的电路原理图连接电路,其中电源部分应在确定为3.3v或小于3.3v时连接芯片电源,然后拷入刚才运行成功后的程序。(3) 由键盘作用分别向DSP芯片管脚输入低电平,各管脚分别调用相应程序来控制LCD的显示;按键1: LCD显示出“石家庄铁道大学”按键2: LCD显示出“电气工程学院”按键3: LCD显示出“欢迎您” 按键
6、4: LCD显示出“谢谢”六、 软件设计 7.1程序流程图 初始化程序后,f2407a一直处在等待判断状态,若有低电平,则调用显示程序,若没有低电平送来(5个按键有其中一个按下)。则根据相应的程序设置地址判断时显示相应按键控制下的汉字还是清屏,如果没有低电平送来,则保持原来等待判断状态。当清屏或显示汉字后,程序会自动回到等待判断状态,以此循环。程序流程图如下: 7.2程序代码#include DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Inclu
7、de File#include f2812a.h#include DSP281x_GPio.h#include lcd.h#define LCDDELAY 1#define LCDCMDTURNON 0x3f /打开LCD#define LCDCMDTURNOFF 0x3e /关闭LCD#define LCDCMDSTARTLINE 0xc0 /起始行#define LCDCMDPAGE 0xb8 /起始页#define LCDCMDVERADDRESS 0x40 / 起始地址int i,j,y=0;/void Delay(unsigned int nTime); / 延时子程序void Tu
8、rnOnLCD(); / 打开显示void LCDCLS(); / 清除屏幕显示内容 /延时 /*void Delay(unsigned int nTime) int ii; int jj; int kk=0; for(ii=0;iinTime;ii+ ) for(jj=0;jj100;jj+ ) kk+; */unsigned char ledkey1732= 040h,010h,040h,020h,040h,040h,040h,080h,043h,0ffh,04dh,02h,071h,02h,041h,02h,041h,02h,041h,02h,041h,02h,041h,02h,041h
9、,0ffh,040h,00h,040h,00h,00h,00h,08h,02h,034h,092h,024h,092h,024h,094h,025h,024h,025h,028h,0a6h,04ah,065h,091h,024h,0feh,024h,020h,024h,050h,024h,088h,025h,08h,02ch,04h,030h,04h,00h,00h, ,00h,00h,00h,01h,00h,06h,01fh,0f8h,010h,02h,010h,082h,010h,082h,010h,082h,090h,082h,077h,0feh,010h,082h,010h,082h,
10、010h,082h,010h,082h,010h,082h,00h,02h, ,04h,080h,08h,080h,034h,080h,0e7h,0feh,024h,084h,024h,088h,02h,01h,03ch,082h,08h,08ch,08h,0b0h,0ffh,0c0h,08h,0b0h,08h,08ch,08h,082h,00h,081h,00h,00h, ,02h,00h,02h,02h,042h,04h,033h,0f8h,00h,04h,010h,02h,097h,0fah,055h,052h,01bh,052h,015h,052h,015h,052h,055h,052
11、h,097h,0fah,010h,02h,00h,02h,00h,00h, ,04h,01h,04h,01h,04h,02h,04h,04h,04h,08h,04h,030h,04h,0c0h,0ffh,00h,04h,0c0h,04h,030h,04h,08h,04h,04h,04h,02h,04h,01h,04h,01h,00h,00h,02h,020h,0ch,020h,088h,020h,069h,020h,09h,020h,09h,022h,089h,021h,069h,07eh,09h,060h,09h,0a0h,019h,020h,028h,020h,0c8h,020h,0ah,
12、020h0ch,020h,00h,00h,;unsigned char ledkey2632= 00h,00h,00h,00h,01fh,0f8h,011h,010h,011h,010h,011h,010h,011h,010h,0ffh,0feh,011h,011h,011h,011h,011h,011h,011h,011h,01fh,0f9h,00h,01h,00h,0fh,00h,00h,04h,00h,08h,00h,032h,00h,0e2h,00h,02ah,00h,02ah,00h,02ah,00h,02ah,00h,02ah,00h,02ah,00h,02ah,00h,02bh,
13、0f0h,020h,0ch,020h,02h,00h,0fh,00h,00h,00h,04h,020h,04h,020h,04h,020h,04h,020h,04h,020h,04h,020h,04h,03fh,0fch,020h,04h,020h,04h,020h,04h,020h,04h,020h,04h,020h,04h,00h,04h,00h,00h, ,024h,010h,024h,060h,025h,080h,07fh,0ffh,0c4h,080h,044h,060h,00h,02h,07ch,092h,044h,092h,044h,092h,044h,0feh,044h,092h
14、,044h,092h,07ch,092h,00h,082h,00h,00h, ,02h,020h,0ch,020h,088h,020h,069h,020h,09h,020h,09h,022h,089h,021h,069h,07eh,09h,060h,09h,0a0h,019h,020h,028h,020h,0c8h,020h,0ah,020h,0ch,020h,00h,00h, ,00h,00h,07fh,0ffh,044h,020h,05ah,010h,061h,0e0h,08h,01h,030h,082h,024h,08ch,024h,0f0h,0a4h,080h,064h,080h,02
15、4h,0fch,024h,082h,028h,082h,030h,08eh,00h,00h,unsigned char ledkey3332=00h,00h,020h,08h,024h,010h,022h,060h,021h,080h,026h,041h,039h,032h,02h,04h,0ch,018h,0f0h,060h,013h,080h,010h,060h,010h,018h,014h,04h,018h,02h,00h,01h,02h,00h,02h,02h,042h,04h,033h,0f8h,00h,04h,00h,02h,03fh,0f2h,020h,022h,040h,042
16、h,00h,02h,03fh,0feh,020h,042h,020h,022h,03fh,0c2h,00h,02,00h,00h, ,04h,02h,08h0ch,010h,00h,03fh,0eeh,0c8h,01h,08h,081h,011h,011h,0ech,04dh,020h,021h,02fh,0c1h,020h,01h,024h,07h,02ah,00h,031h,088h,00h,06h,00h,00h, ,;unsigned char ledkey4232=00h,00h,02h,00h,042h,00h,033h,0fch,00h,08h,00h,054h,03fh,0c8
17、h,06ah,052h,0aah,061h,03fh,0feh,01h,00h,08h,0c2h,08h,01h,0ffh,0feh,08h,00h,08h,00h, ,00h,00h,02h,00h,042h,00h,033h,0fch,00h,08h,00h,054h,03fh,0c8h,06ah,052h,0aah,061h,03fh,0feh,01h,00h,08h,0c2h,08h,01h,0ffh,0feh,08h,00h,08h,00h, ,;/*void Delay(unsigned int nTime)int ii ,jj,kk=0;for(ii=0;iinTime;ii+)
18、for(jj=0;jj1024;jj+) kk+;/*/*/r打开液晶显示void TurnOnLCD() *(int *)0x108001=LCDCMDTURNON; Delay(LCDDELAY); *(int *)0x108002=0; Delay(2048); *(int *)0x108001=LCDCMDSTARTLINE; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY);void LCDCLS() /清屏 int i,j; *(int *)0x108001=LCDCMDSTARTLINE; Delay(LCDDELAY);
19、*(int *)0x108002=0; Delay(LCDDELAY); for ( i=0;i8;i+ ) /左屏 *(int *)0x108001=LCDCMDPAGE+i; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS; /地址 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY) for ( j=0;j64;j+ ) *(int *)0x108003=0; Delay(LCDDELAY); *(int *)
20、0x108002=0; Delay(LCDDELAY); /右屏 *(int *)0x108001=LCDCMDPAGE+i; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for ( j=0;j64;j+ ) *(int *)0x108004=0; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY);
21、*/void main(void) EALLOW; GpioMuxRegs.GPAMUX.all=0x0000; /管脚定义为I/O口 GpioMuxRegs.GPADIR.all=0x0000; /定义管脚为输入口 EDIS; TurnOnLCD(); / 打开显示 LCDCLS(); for(;) if(GpioDataRegs.GPADAT.bit.GPIOA0=0) LCDCLS(); / 清除显示内存 if(GpioDataRegs.GPADAT.bit.GPIOA1=0) /设置起始值 *(int *)0x108001=LCDCMDSTARTLINE; / 设置显示起始行 Dela
22、y(LCDDELAY); /延时 *(int *)0x108002=0; /辅助命令控制字 Delay(LCDDELAY); *(int *)0x108001=LCDCMDPAGE; / 设置操作页=0 Delay(LCDDELAY); *(int *)0x108002=0; /辅助命令控制字 Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS; / 起始列=0 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY);/ TurnOnLCD(); / 打开显示 y=0; for(j=0;j4;j
23、+) *(int *)0x108001=LCDCMDPAGE+2; /设置页 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY) *(int *)0x108001=LCDCMDVERADDRESS+y; /设置地址 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=0;i16;i+) *(int *)0x108003=ledkey1ji; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108
24、001=LCDCMDPAGE+3; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=16;i32;i+) *(int *)0x108003=ledkey1ji; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); y+=16; y=0; for(j=4;j8;j+) *(int *)0x1
25、08001=LCDCMDPAGE+4; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=0;i16;i+) *(int *)0x108004=ledkey1ji; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDPAGE+5; Delay(
26、LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=16;i32;i+) *(int *)0x108004=ledkey1ji; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); y+=16; if(GpioDataRegs.GPADAT.bit.GPIOA3=0) /设置起始值 *(int *)0x1
27、08001=LCDCMDSTARTLINE; / 设置显示起始行 Delay(LCDDELAY); /延时 *(int *)0x108002=0; /辅助命令控制字 Delay(LCDDELAY); *(int *)0x108001=LCDCMDPAGE; / 设置操作页=0 Delay(LCDDELAY); *(int *)0x108002=0; /辅助命令控制字 Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS; / 起始列=0 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); T
28、urnOnLCD(); / 打开显示 y=0; for(j=0;j4;j+) *(int *)0x108001=LCDCMDPAGE+2; /设置页 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; /设置地址 Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=0;i16;i+) *(int *)0x108003=ledkey2ji; Delay(LCDDELAY); *(int *)0x108
29、002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDPAGE+3; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=16;i32;i+) *(int *)0x108003=ledkey2ji; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); y+=16; y=0; for(j=4;j8;j+) *(int *)0x108001=LCDCMDPAGE+4; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); *(int *)0x108001=LCDCMDVERADDRESS+y; Delay(LCDDELAY); *(int *)0x108002=0; Delay(LCDDELAY); for(i=0;i16;i+) *(int *)0x108004=ledkey2ji; Delay(LCDDELA
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2