实验报告-LED显示控制_第1页
实验报告-LED显示控制_第2页
实验报告-LED显示控制_第3页
实验报告-LED显示控制_第4页
实验报告-LED显示控制_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验一LED显示控制硬件介绍C28X芯片提供了56个多功能引脚,用户可以将这些引脚作为片内外设的输入输出引脚,当不使用片内外设时,也可以将他们作为数字I/O口。本实验是将其用作GPIO口,如图1所示。图1GPIO口应用2)74HC164是一个8位的串并行数据转换的芯片,其时序图如图2所示。图274164工作时序图由图2知,输入端A和B相与是74HC164的输出,若输入信号只有一个(A端),则可以将其中一个输入端置1(B端),则可将输入的串行信号(A端)转化成并行输出(QA--QH)。CLEAR是低电平有效的复位信号,即CLEAR为低电平时,输出端(QA—QH)全部置0,其为高电平时芯片可正常工作。CLOCK是上升沿有效的时钟信号,即每来一个上升沿,输入的数据就会传一位,输出端QA会输出最新的输入信号,而QB则重复前一个时钟的QA,QC则重复前一个时钟的QB,……待满8个上升沿时,一个输入的8位串行数据就被转换成8位的并行数据输出。3)8×8LED的显示模块如图3所示。图38×8LED的显示模块由图3可知,若要是LED正常发光,将LED的正向加高电平,负向加低电平即可。显示图像或字可通过动态扫描得到结果。硬件连接实验模块控制模块GLEDDISPLAYADSPSECTIONLED_A2(J32)SPISIMOA(J34)LED_B2(J32)SPISOMIA(J34)CLKIN2(J32)SPICLKA(J34)/CLR2(J32)SPISTEA(J34)LED_A1(J5)PWM7(J35)LED_B1(J5)PWM8(J35)/CLKIN1(J5)PWM9(J35)/CLR1(J5)PWM10(J35)除此之外,通过用跳线头短接J6(GLEDDISPLAY)的VCC和U2VCC为LEDDISPLAY模块供电。用跳线头短接J61(ADSPSECTION)的GND和1DIR以及J62(ADSPSECTION)的GND和2DIR,将ADSPSECTION模块的缓冲设为输出。软件设计#include"DSP28_Device.h"#include"DSP28_Globalprototypes.h"#defineDINAGpioDataRegs.GPFDAT.bit.GPIOF0#defineDINBGpioDataRegs.GPFDAT.bit.GPIOF1#defineCLK2 GpioDataRegs.GPFDAT.bit.GPIOF2#defineCLEAR2 GpioDataRegs.GPFDAT.bit.GPIOF3#defineDINCGpioDataRegs.GPBDAT.bit.GPIOB0#defineDINDGpioDataRegs.GPBDAT.bit.GPIOB1#defineCLK1GpioDataRegs.GPBDAT.bit.GPIOB2#defineCLEAR1GpioDataRegs.GPBDAT.bit.GPIOB3//Prototypestatementsforfunctionsfoundwithinthisfile.//interruptvoidISRTimer2(void);voiddelay_loop(void);voidGpio_select(void);voidsendto1(unsignedchardab);voidsendto2(unsignedchardat);voidDELAY(void);unsignedintvar1=0;unsignedintvar2=0;unsignedintvar3=0;unsignedcharsendBdata[8]={0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff};unsignedchardispdata[8]={0x7c,0x48,0x48,0xff,0x48,0x48,0x7c,0x00};//中//unsignedchardispdata[4]={0x18,0x3c,0x7e,0xff};//candyunsignedchardispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xDf,0xBf,0x7f};//unsignedchardispbit[4]={0xe7,0xc3,0x81,0x00};//candyunsignedcharkdab;unsignedcharkdat;voidmain(void){unsignedchari; InitSysCtrl(); //DisableandclearallCPUinterrupts: DINT; IER=0x0000; IFR=0x0000; //InitializePieControlRegistersToDefault InitPieCtrl(); InitPieVectTable(); //RunGPIOtest var1=0x0000; //setsGPIOMuxsasI/Os var2=0xFFFF; //setsGPIODIRasoutputs var3=0x0000; //setstheInputqualifiervalues Gpio_select(); //ToggleI/OsusingDATAregisterforever for(i=0;i<200;i++); CLEAR2=0; CLK2=1; CLEAR1=0; CLK1=1; DINA=1; DINB=1; DINC=1; DIND=1; CLEAR2=1; CLEAR1=1; while(1) {sendto1(0x0ff);//static/striamap// for(i=0;i<8;i++)// { //sendto1(sendBdata[i]); //GpioDataRegs.GPBDAT.all=0X00FF;// sendto2(dispdata[i]);// sendto1(dispbit[i]); //GpioDataRegs.GPBDAT.all=dispbit[i];// DELAY();// DELAY();// DELAY();// DELAY();// DELAY();// DELAY();// }//static/striamap//expandedwindowsendto1(dispbit[0]);//发送列的第一个数据 sendto2(dispdata[0]);//发送行的第一个数据 DELAY();//延时 DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[1]);//发送列的第二个数据 sendto2(dispdata[1]);//发送行的第二个数据 DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[2]);//发送列的第三个数据 sendto2(dispdata[2]);//发送行的第三个数据 DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[3]);//发送列的第四个数据 sendto2(dispdata[3]);//发送行的第四个数据DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[4]);//发送列的第五个数据 sendto2(dispdata[4]);//发送行的第五个数据DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[5]);//发送列的第六个数据 sendto2(dispdata[5]);//发送行的第六个数据DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[6]);//发送列的第七个数据 sendto2(dispdata[6]);//发送行的第七个数据DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); sendto1(dispbit[7]);//发送列的第八个数据 sendto2(dispdata[7]);//发送行的第八个数据DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); DELAY(); //expandedwindow } } voidGpio_select(void){ EALLOW;//使CPU能对寄存器操作 GpioMuxRegs.GPBMUX.all=var1;//0x0000GpioMuxRegs.GPBDIR.all=var2; //0xFFFF,GPIODIRselectGPIOsasoutputGpioMuxRegs.GPBQUAL.all=var3;//0x0000GpioMuxRegs.GPFMUX.all=var1;GpioMuxRegs.GPFDIR.all=var2; //GPIODIRselectGPIOsasoutputEDIS;//停止CPU对寄存器的操作}voidsendto1(unsignedchardab){unsignedchari;CLK1=0;kdab=dab;for(i=0;i<8;i++){if((kdab&0x01)==0x01){DINC=1;}elseDINC=0;CLK1=1;//产生一个上升沿,使数据输入CLK1=0;kdab=kdab>>1;}}voidsendto2(unsignedchardat){unsignedchari; CLK2=0; kdat=dat; for(i=0;i<8;i++) { if((kdat&0x01)==0x01) { DINA=1; }elseDINA=0; CLK2=1; C

温馨提示

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

评论

0/150

提交评论