原创 点击下载Study-2812增强版上Verilog源码

2008-5-5 23:30 3116 7 7 分类: FPGA/CPLD

点击下载Study-2812增强版上Verilog源码(maxplus2环境下):点击下载


主要修改内容:


1.规范了LCD的访问:


如:


void LcdObj::SendCommand(char cCommand)
{
 if ((SpiRclkRegs & 0xff)  == 0xa5)
 {
  LCDRS = 0;//设置命令方式//RS
  LCDRW = 0;//写LCD//RW
  LCDE = cCommand;//写LCD命令//E,DB7~0


    if (cCommand == 0x01)//清除显示命令,需要等待时间相对较长
  {
   _delay_loop_(1600);//st7920要求等待1.6mS
  }
    else
  {
   _delay_loop_(72);//st7920要求等待72uS
  }
 }
 else//LCD非正规模式
 {
  LcdComH = cCommand;
  LcdComL = cCommand;
    if (cCommand == 0x01)//清除显示命令,需要等待时间相对较长
  {
   _delay_loop_(1600);//st7920要求等待1.6mS
  }
    else
  {
   _delay_loop_(72);//st7920要求等待72uS
  }
 }
}


void LcdObj::SendData(char cData)
{
 if ((SpiRclkRegs & 0xff)  == 0xa5)
 {
  LCDRS = 1;//设置数据方式//RS=1
  LCDRW = 0;//写LCD//RW=0
  LCDE = cData;//写LCD数据//E=1->0,DB7~0
     _delay_loop_(72);//st7920要求等待72uS
 }
 else//LCD非正规模式
 {
  LcdDatH = cData;
  LcdDatL = cData;
     _delay_loop_(72);//st7920要求等待72uS
 }
}


2.发送74HC595的RCLK脉冲加入了密码


interrupt void ISRTimer2(void)
{
//以下定义为共阳数码管
static const unsigned char LedTab[] =
{//显示字符表存放在ROM中
  LedChar0, LedChar1, LedChar2, LedChar3,
  LedChar4, LedChar5, LedChar6, LedChar7,
  LedChar8, LedChar9, LedCharA, LedCharB,
  LedCharC, LedCharD, LedCharE, LedCharF
};
 if ((Timer.Count1 & 0x0f) == 0)
 {
  System.SpiReadWrite(~LedTab[Timer.Count2 & 0x0f]);
  Timer.Count2++;
  if ((SpiRclkRegs & 0xff)  == 0xa5)
  {
   SpiRclkRegs = Paddword;//直接产生74HC595密码的RCLK脉冲
  }
  else//CPLD旧版本需要模拟RCLK信号
  {
   SpiRclkRegs = 0;
   SpiRclkRegs = 1;
  }
 }
}


 


哈哈~~~虽然Verilog的程序很简单,但很实用~~~

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条