dsp课程设计报告点阵显示广告牌显示.docx

上传人:b****8 文档编号:9990244 上传时间:2023-02-07 格式:DOCX 页数:27 大小:81.04KB
下载 相关 举报
dsp课程设计报告点阵显示广告牌显示.docx_第1页
第1页 / 共27页
dsp课程设计报告点阵显示广告牌显示.docx_第2页
第2页 / 共27页
dsp课程设计报告点阵显示广告牌显示.docx_第3页
第3页 / 共27页
dsp课程设计报告点阵显示广告牌显示.docx_第4页
第4页 / 共27页
dsp课程设计报告点阵显示广告牌显示.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

dsp课程设计报告点阵显示广告牌显示.docx

《dsp课程设计报告点阵显示广告牌显示.docx》由会员分享,可在线阅读,更多相关《dsp课程设计报告点阵显示广告牌显示.docx(27页珍藏版)》请在冰豆网上搜索。

dsp课程设计报告点阵显示广告牌显示.docx

dsp课程设计报告点阵显示广告牌显示

 

DSP课程设计说明书

 

题目:

霓虹灯广告牌

专业班级:

学生姓名:

学号:

一、设计目的

DSP应用的快速发展为数字信息产品带来广阔的发展空间,并将支持通信、计算机和消费类电子产品的数字化融合。

在无线领域,DSP遍及无线交换设备、基站、手持终端和网络领域,并涵盖从骨干基础设施到宽带入户的设备,包括VoIP网关和IP电话、DSL和CableModem等。

面向群体应用,DSP在媒体网关、视频监控、专业音响、数字广播、激光打印等应用中表现出色;面向个人应用,DSP在便携式数字音频和影像播放器、指纹识别和语音识别等应用中表现不俗;针对嵌入式数字控制应用,DSP极大地满足了工业界的需求,如数字变频电力电源设备、工业缝纫机等;DSP也极大地满足了消费电子的需求,如空调、冰箱、洗衣机等。

随着DSP生产技术和工艺的进步,新型的DSP产品将会不断涌现,并得到广泛应用。

通过此次课程设计,学习dsp芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉程序调试规程,并能最终熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。

二、系统分析

2.1、设计要求

5个按键,按下键1,LCD第一行显示“石家庄铁道大学”;按下键2,LCD第二行显示“电气工程学院”;按下键3,LCD第三行显示“欢迎您”;按下键5,LCD第三行显示“谢谢”;按下键4,LCD清屏。

2.2、设计思想

通过相应软件开发平台和相应实验箱进行程序调试DSP外设控制设备开发扩展。

用独立式控键控制DSP的管脚,使用DSP芯片控制LCD来显示汉字,用其中一个按键实现LCD的清屏,其它(4个)每个按键实现汉字的输出控制,通用DSP管脚控制LCD公告牌的文字显示

三、总体设计

3.1、硬件设计

硬件设计组成框图如图所示:

 

3.2、总体电路图设计

其中s1~s5为按键,R1~R5对管脚起保护作用。

该键盘为独立式键盘,分别和DSP芯片的管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接。

因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。

DSP芯片外接LCD作为输出,外接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设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。

Tms320lf2407a引脚图

五、运行描述

(1)CS运行环境,进行相应的设置,然后保存设置,在CCS运行环境下打开已编好的程序,进行调试,直至提示0个错误,然后保存调试成功后的文件。

(2)打开DSP试验箱电源,按照先前设计的电路原理图连接电路,其中电源部分应在确定为3.3v或小于3.3v时连接芯片电源,然后拷入刚才运行成功后的程序。

(3)由键盘作用分别向DSP芯片管脚输入低电平,各管脚分别调用相应程序来控制LCD的显示;

按键1:

LCD显示出“石家庄铁道大学”

按键2:

LCD显示出“电气工程学院”

按键3:

LCD显示出“欢迎您”

按键4:

LCD显示出“谢谢”

六、软件设计

7.1程序流程图

初始化程序后,f2407a一直处在等待判断状态,若有低电平,则调用显示程序,若没有低电平送来(5个按键有其中一个按下)。

则根据相应的程序设置地址判断时显示相应按键控制下的汉字还是清屏,如果没有低电平送来,则保持原来等待判断状态。

当清屏或显示汉字后,程序会自动回到等待判断状态,以此循环。

程序流程图如下:

7.2程序代码

#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile

#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile

#include"f2812a.h"

#include"DSP281x_GPio.h"

#include"lcd.h"

#defineLCDDELAY1

#defineLCDCMDTURNON0x3f//打开LCD

#defineLCDCMDTURNOFF0x3e//关闭LCD

#defineLCDCMDSTARTLINE0xc0//起始行

#defineLCDCMDPAGE0xb8//起始页

#defineLCDCMDVERADDRESS0x40//起始地址

inti,j,y=0;

//voidDelay(unsignedintnTime);//延时子程序

voidTurnOnLCD();//打开显示

voidLCDCLS();//清除屏幕显示内容

//延时

/*

voidDelay(unsignedintnTime)

{

intii;

intjj;

intkk=0;

for(ii=0;ii

{

for(jj=0;jj<100;jj++)

{kk++;}

}

}

*/

unsignedcharledkey1[7][32]=

{

{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,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,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,052h,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,020h0ch,020h,00h,00h,}

};

unsignedcharledkey2[6][32]=

{

{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,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,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,024h,0fch,024h,082h,028h,082h,030h,08eh,00h,00h,},

unsignedcharledkey3[3][32]=

{

{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,042h,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,},

};

unsignedcharledkey4[2][32]=

{

{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,},

{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,},

};

/*voidDelay(unsignedintnTime)

{

intii,jj,kk=0;

for(ii=0;ii

{

for(jj=0;jj<1024;jj++)

{kk++;

}

}

//}*/

/*

//r打开液晶显示

voidTurnOnLCD()

{

*(int*)0x108001=LCDCMDTURNON;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(2048);

*(int*)0x108001=LCDCMDSTARTLINE;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

voidLCDCLS()//清屏

{

inti,j;

*(int*)0x108001=LCDCMDSTARTLINE;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

for(i=0;i<8;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;j<64;j++)

{

*(int*)0x108003=0;

Delay(LCDDELAY);

*(int*)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;j<64;j++)

{

*(int*)0x108004=0;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

}

}*/

voidmain(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;//设置显示起始行

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);

//TurnOnLCD();//打开显示

y=0;

for(j=0;j<4;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;i<16;i++)

{

*(int*)0x108003=ledkey1[j][i];

Delay(LCDDELAY);

*(int*)0x108002=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;i<32;i++)

{

*(int*)0x108003=ledkey1[j][i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

y+=16;

}

y=0;

}

for(j=4;j<8;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;i<16;i++)

{

*(int*)0x108004=ledkey1[j][i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

*(int*)0x108001=LCDCMDPAGE+5;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

*(int*)0x108001=LCDCMDVERADDRESS+y;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

for(i=16;i<32;i++)

{

*(int*)0x108004=ledkey1[j][i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

y+=16;

}

if(GpioDataRegs.GPADAT.bit.GPIOA3==0)

{

//设置起始值

*(int*)0x108001=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);

TurnOnLCD();//打开显示

y=0;

for(j=0;j<4;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;i<16;i++)

{

*(int*)0x108003=ledkey2[j][i];

Delay(LCDDELAY);

*(int*)0x108002=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;i<32;i++)

{

*(int*)0x108003=ledkey2[j][i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

y+=16;

}

y=0;

for(j=4;j<8;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;i<16;i++)

{

*(int*)0x108004=ledkey2[j][i];

Delay(LCDDELA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

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

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