⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main__.c

📁 ld2330语音模块程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <mega128.h>
#include <delay.h>
#include <string.h>
#include "Board_Driver.c"

//本文件为mega128板的底层驱动与定义文件                         

/*===========mega128开发板引脚定义======================================
1.-------公共引脚---------
          WR:                     PG.0
          RD:                      PG.1
          ALE:                    PG.2
          RST0:                  PG.4                          //用于外设高电平复位
          RST1:                  PG.3                          //用于外设低电平复位
          CD:                      PB.4                          //用于选择外设的命令或数据端口
          TBZ:                    PE.2                          //用于判断触摸板是否转换完成
          
          MCU_CS0:          PD.4
          MCU_CS1:          PD.5
          MCU_CS2:          PD.6
          CSEN:                 PD.7
          
          SPI_MISO:          PB.3
          SPI_MOSI:          PB.2
          SPI_SCLK:          PB.1
          SPI_CS:               PB.0
          
          PWM0:                PB.5                           //单片机OC1A
          PWM1:                PB.6                           //单片机OC1B
          PWM2:                PB.7                           //单片机OC2/OC1C
                                              
          INT0:                   PD.0                           //单片机外部中断0
          INT1:                   PD.1                           //单片机外部中断1
          INT2:                   PD.2                           //单片机外部中断2
          INT3:                   PD.3                           //单片机外部中断3
          INT4:                   PE.4                           //单片机外部中断4
          INT5:                   PE.5                           //单片机外部中断5
          INT6:                   PE.6                           //单片机外部中断6
          INT7:                   PE.7                           //单片机外部中断7
          
2.-----------------------外设引脚-------------------------------------------------
          1>                8位并行端口JP1
          ---------------------------------------------------------------------
          1: +5V                             2: DATA0 (PA.0)         
          3: WR (PG.0)                  4: DATA1 (PA.1)
          5: RD (PG.1)                   6: DATA2 (PA.2)
          7: CS1                             8: DATA3 (PA.3)
          9: CD (PB.4)                   10: DATA4 (PA.4)
          11: INT1 (PD.1)             12: DATA5 (PA.5)
          13: RST1 (PG.3)            14: DATA6 (PA.6)
          15: GND                         16: DATA7 (PA.7) 
          -----------------------------------------------------------------------
          
          2>                8位并行端口JP2
          ----------------------------------------------------------------------- 
          1: +5V                             2: DATA0 (PA.0)         
          3: WR (PG.0)                  4: DATA1 (PA.1)
          5: RD (PG.1)                   6: DATA2 (PA.2)
          7: CS2                             8: DATA3 (PA.3)
          9: CD (PB.4)                   10: DATA4 (PA.4)
          11: INT2 (PD.2)             12: DATA5 (PA.5)
          13: RST1 (PG.3)            14: DATA6 (PA.6)
          15: GND                         16: DATA7 (PA.7) 
          -----------------------------------------------------------------------
          
          3>                SPI串行端口JP14
          -----------------------------------------------------------------------
          1: +5V                             2: MCU_ADC0 (PF.0)       
          3: INT6 (PF.6)                4: MISO  (PB.3)
          5: RST1 (PG.1)               6: MOSI  (PB.2)
          7: CS4                             8: SCLK  (PB.1)
          9: GND                            10: SPI_CS  (PB.0)
          ----------------------------------------------------------------------- 
          
          4>            nRF24L01接口JP13
          -----------------------------------------------------------------------
          1: GND                             2: +3.3V
          3: CE/MCU_ADC0(PF.0) 4: CS3
          5: SCLK (PB.1)                6: MOSI (PB.2)
          7: MISO (PB.3)                 8: INT7 (PE.7)
          ------------------------------------------------------------------------
          
          5>            TFT液晶屏与触摸板接口
          ------------------------------------------------------------------------
          ***************液晶屏接口**************
          1: +3.3V                         2: GND        
          3: DATA0 (PA.0)            4: DATA1 (PA.1)
          5: DATA2 (PA.2)            6: DATA3 (PA.3)
          7: DATA4 (PA.4)            8: DATA5 (PA.5)
          9: DATA6 (PA.6)            10: DATA7 (PA.7)
          11: DATA8 (PC.0)          12: DATA9 (PC.1)          
          13: DATA10 (PC.2)        14: DATA11 (PC.3)
          15: DATA12 (PC.4)        16: DATA13 (PC.5)
          17: DATA14 (PC.6)        18: DATA15 (PC.7)
          19: CS6                           20: CD (PB.4)
          21: WR (PG.0)                 22: RD (PG.1)
          23: PWM2 (PB.7)            24: RST1 (PG.1)
          ***************触摸板接口*************** 
          25: DOUT/MISO (PB.3)  26: INT3 (PD.3)
          27: DIN/MOSI (PB.2)      28: TBZ (PE.2)
          29: SCLK (PB.1)             30: CS5
          ----------------------------------------------------------------------------       
          
          6>           USB(375A)并行接口
          ------------------------------------------------------------------------
          DTAT:   PORTA                 CS: CS0
          WR:       PG.0                     RD:        PG.1          
          INT0:    PD.0                      RST0:    PG.4
          CD:        PB.4
          -------------------------------------------------------------------------
          
          7>          VS1003控制引脚
          -------------------------------------------------------------------------
          SI/MOSI: PB.2                    SO/MISO: PB.3
          SCLK:     PB.1                    DREQ/INT5: PE.5
          xCS/SPI_CS: PB.0              xDCS/MCU_ADC1: PF.1
          xRESET/RST1: PG.1
          -------------------------------------------------------------------------
          
          8>          PS2接口                  
          -------------------------------------------------------------------------
          SCLK/PS2_SCLK:       INT4 (PE.4)
          SDAT/PS2_DATA:       PE.3
          --------------------------------------------------------------------------
=================================================================
*/


//============板级宏定义===========================================
//***********************引脚定义类***********************************
#define     xDATA_IN     PINA
#define     xDATA_OUT  PORTA
#define     xADDR_LOW    PORTA
#define     xADDR_HIGH   PORTC
#define     xDATAH        PORTC
#define     xDATAL         PORTA
#define     CH375_INT        PIND.0
//***********************引脚电平控制类*******************************
#define     CLI_WR          PORTG&=0xFE;                     //复位WR
#define     SET_WR         PORTG|=0x01;                       //置位WR
#define     CLI_RD           PORTG&=0xFD;                     //复位RD
#define     SET_RD          PORTG|=0x02;                       //置位RD
#define     CLI_CD           PORTB&=0xEF;                     //复位CD
#define     SET_CD          PORTB|=0x10;                       //置位CD
#define     CLI_RST0       PORTG&=0xEF;                    //复位RST0
#define     SET_RST0      PORTG|=0x10;                      //置位RST0
#define     CLI_RST1       PORTG&=0xF7;                    //复位RST1        
#define     SET_RST1      PORTG|=0x08;                      //置位RST1 
#define     SET_xCS         PORTB|=0x01;                     //置位xCS
#define     CLI_xCS          PORTB&=0xFE;                   //复位xCS
#define     SET_xDCS       PORTF|=0x02;                     //置位xDCS
#define     CLI_xDCS       PORTF&=0xFD;                    //复位xDCS     
#define     SET_CE           PORTF|=0x01;                      //置位nRF24L01 CE引脚
#define     CLI_CE            PORTF&=0xFE;                    //复位nRF24L01 CE引脚
#define     DATA_OUT     DDRA=0xFF;                         //A口数据输出
#define     DATA_IN         DDRA=0x00;                         //A口数据输入
//***********************外部片选类************************************
#define     SEL_CS0        PORTD=0x80;                        //选中外设0
#define     SEL_CS1        PORTD=0x90;                        //选中外设1
#define     SEL_CS2        PORTD=0xA0;                        //选中外设2
#define     SEL_CS3        PORTD=0xB0;                        //选中外设3
#define     SEL_CS4        PORTD=0xC0;                        //选中外设4
#define     SEL_CS5        PORTD=0xD0;                        //选中外设5
#define     SEL_CS6        PORTD=0xE0;                        //选中外设6
#define     SEL_CS7        PORTD=0xF0;                        //选中外设7
#define     SEL_NON       PORTD=0x00;                        //选中空外设
#define     SET_CSN       PORTD&=0x7F;                     //暂时放弃外设
#define     CLI_CSN        PORTD|=0x80;                       //使能恢复外设
//***********************373数据锁存***********************************
#define     ADDR_LOCK  PORTG|=0x04;PORTG&=0xFB;         //单次锁存数据
#define     ADDR_ENOUT PORTG|=0x04;                                    //使能数据输出,直通
#define     ADDR_DISOUT PORTG&=0xFB;                                //禁止数据输出,隔断
//************************************************************************            
//************************外部操作***************************************
#define     WaitSpiReady    while(!(SPSR&0x80));                //等待SPI接口完成本次传送
#define     WaitDreqReady while(!(PINE&0x20));                 //等待VS1003中断              


//====================硬件SPI接口初始化===============================
void SPI_Init()
{                                
          SPDR=0x00;                    //清空数据缓冲寄存器
          SPCR=0x51;                    //B7:中断使能  B6:SPI使能  B5:首发极性L1H0  B4: M1S0
                                                    //B3:结束沿电平选择 B2:采样沿选择 B1-B0:Fsclk
          SPSR=0x01;                    //B7:中断标志  B6:写冲突标志  B0:倍速Fsclk
}
//==================================================================

//====================SPI读操作======================================
void SPI_ReadBytes(unsigned char *Pstr,unsigned char Num)
{                                 
          while(Num--){
                 SPDR=*Pstr;                        //写数据至SPI发送寄存器
                 WaitSpiReady                        //等待发送结束
                 *Pstr++=SPDR;                   //取接收字符
          }          
}
//==================================================================

//====================SPI写操作======================================
void SPI_WriteBytes(unsigned char *Pstr,unsigned char Num)
{
          while(Num--){
                 SPDR=*Pstr++;                      //写数据至SPI发送寄存器
                 WaitSpiReady                       //等待发送结束
          }
}
//==================================================================







//============板初始化===============================================
void Board_Init(void)
{                               
          PORTA=0x00;        //初始化A口为输入状态         
          DDRA=0xFF;                                                  
          PORTB=0x00;        //B口初始化为输出
          DDRB=0xFF;                                      
          PORTC=0x00;        //C口初始化为输出
          DDRC=0xFF;                                      
          PORTD=0x00;        //D口初始化
          DDRD=0xF0;
          PORTE=0x00;        //E口初始化        PS2_SCLK输入   PS2_DATA输入 MISO输入
          DDRE=0x05;                                                                                                                
          PORTF=0x00;        //F口初始化        MCU_ADC0输出  MCU_ADC1输出
          DDRF=0x03;                                                                                                
          PORTG=0x03;        //G口初始化       WR=1 RD=1 ALE=0
          DDRG=0xFF;                                                       
          //**************初始化SPI接口*************
          SPI_Init();  
          //**************初始化PWM波**************//用于TFT亮度控制
          
          //**************外设复位*******************
          SET_RST0
          CLI_RST1
          delay_ms(300);
          CLI_RST0
          SET_RST1          
}
//===================================================================
#include "RAI8803.c"
#include <delay.h>
#include <math.h>
    
#define CLI_CS PORTD=0x90;
#define SET_CS PORTD=0x00;

//****************************************************
//送一帧数据
void Post_Msg(unsigned char Msg)
{
 DATA_OUT                                       
 xDATA_OUT=Msg;
 SET_CD
 SEL_CS1
 CLI_WR
 SET_WR
 SEL_NON
}

//*************************************
//送一帧命令
//*************************************
void Send_Com(unsigned char Addr,unsigned char Data)
{                 
   DATA_OUT 
   xDATA_OUT=Addr;
   CLI_CD
   SEL_CS1
   CLI_WR
   SET_WR
   SEL_NON
   xDATA_OUT=Data;
  CLI_CD
  SEL_CS1
  CLI_WR
  SET_WR
  SEL_NON
}
//*************************************************




void LCD_INIT()
{  
 
   Send_Com(0x00,0xCD);                     //WLCR: 电源正常模式,进入文本模式,屏幕开启,屏幕不闪烁,正向显示
   Send_Com(0x01,0x03);                     //MISC: CLKOUT禁止,BUSY高电平触发,12MHz频率      
   Send_Com(0x02,0x00);                     //APSR: ROM/RAM30ns读取速度,禁止ROM直读,开机滚动复位禁止
   Send_Com(0x03,0x80);                     //ADSR: 显示数据正序,水平,垂直卷动效显禁止
   Send_Com(0x10,0x2F);                     //WCCR: 读DDRAM定地址,写自加,中英文对齐,正向存储,字体正常粗细,光标ON,闪烁

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -