Rowley CrossWorks和MAXQ2000评估板入

[09-13 17:04:35]   来源:http://www.88dzw.com  控制技术   阅读:8614

文章摘要:现在可以演示MAXQ2000评估板的一个更有用的性能,即复位(RESET)按钮。在MAXQ2000评估板的左下侧有一个标注为SW2和RESET的开关。按下此按钮,观察LCD屏。读数应该立即从0重新开始。该RESET按钮连接至MAXQ2000的复位引脚。如果需要重新启动应用程序,就按此按钮。 初始化MAXQ2000的LCD控制器MAXQ2000提供一个液晶显示(LCD)硬件控制模块,可运行在全偏压、1/2偏压和1/3偏压模式下,实现静态、x2、x3或x4复用显示方式。也就是说,在x4复用显示器上,MAXQ2000-RAX (COM0到COM3,SEG0到SEG32)上可专用于LCD驱动功能的37

Rowley CrossWorks和MAXQ2000评估板入,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com

现在可以演示MAXQ2000评估板的一个更有用的性能,即复位(RESET)按钮。在MAXQ2000评估板的左下侧有一个标注为SW2和RESET的开关。按下此按钮,观察LCD屏。读数应该立即从0重新开始。该RESET按钮连接至MAXQ2000的复位引脚。如果需要重新启动应用程序,就按此按钮。

初始化MAXQ2000的LCD控制器

MAXQ2000提供一个液晶显示(LCD)硬件控制模块,可运行在全偏压、1/2偏压和1/3偏压模式下,实现静态、x2、x3或x4复用显示方式。也就是说,在x4复用显示器上,MAXQ2000-RAX (COM0到COM3,SEG0到SEG32)上可专用于LCD驱动功能的37条线最多可驱动132个LCD段(33段X 4个公共信号)。

每个打开的LCD段都需要连续的电压波形来驱动,该电压波形由连接该段的段线和公用信号线提供。驱动电压波形使各段按要求打开或关闭,而不会产生可能损坏LCD的直流偏压。MAXQ2000的LCD控制器在后台自动产生这些电压波形。也就是说,当LCD的显示段发生改变时,只需要修改LCD控制器的寄存器内容。

如上例,第一步是初始化用于控制显示的LCD控制器寄存器。
void initLCD(void)
{
  LCRA = 0x03E0;    // Set LCD configuration
  LCFG = 0xF3;     // Set up all segments as outputs, normal operation
             //  mode, and enable display.
}
LCRA寄存器控制3项重要功能:显示形式,本例中为静态;VADJ和地之间的可调电阻,用来修改显示对比度;以及LCD段驱动波形的频率。LCFG寄存器控制LCD控制器的开/关,并控制哪些两用引脚作为端口引脚使用,哪些用作LCD段。

向显示器写入数值

各LCD段分别由一个LCD控制显示寄存器的一位进行控制,与使用的LCD类型和多路复用方式无关。此位置高就打开(黑)该段;清除此位就关闭(透明)该段。我们的MAXQ2000评估板所用的LCD段与存储器映射关系,如图6所示。

图6. LCD段与LCD显示存储寄存器位的映射关系
图6. LCD段与LCD显示存储寄存器位的映射关系

LCD的各位占用一个LCD显示存储寄存器,各个位的分布形式相同。因此,我们可以使用查找表,找到各位0到9的段寄存器值,并将该数值写到LCD显示寄存器。
#define LCD_PATTERN_0   0x03F
#define LCD_PATTERN_1   0x006
#define LCD_PATTERN_2   0x05B
#define LCD_PATTERN_3   0x04F
#define LCD_PATTERN_4   0x066
#define LCD_PATTERN_5   0x06D
#define LCD_PATTERN_6   0x07D
#define LCD_PATTERN_7   0x007
#define LCD_PATTERN_8   0x07F
#define LCD_PATTERN_9   0x067

int PATTERNS[] = {
  LCD_PATTERN_0, LCD_PATTERN_1, LCD_PATTERN_2, LCD_PATTERN_3, LCD_PATTERN_4,
  LCD_PATTERN_5, LCD_PATTERN_6, LCD_PATTERN_7, LCD_PATTERN_8, LCD_PATTERN_9
};


/******************************************************************************
 * Returns the value that will need to be placed in one of LCD0-LCD3 to display
 * a digit 0-9. No bounds checking is done here. If you ask for a digit other
 * than 0-9, you will get a bogus display.
 */
int getLCDDigit(int digit)
{
  return PATTERNS[digit];
}
这些程序准备好后,我们可以采用以下方法,向显示器写入计数器值(4位,特殊情况下“1”对应第5位):
int show(int value)
{
  if (value >= 10000)
   LCD4 = 0x40;
  else
   LCD4 = 0;
  LCD3 = getLCDDigit((value / 1000) % 10);
  LCD2 = getLCDDigit((value / 100) % 10);
  LCD1 = getLCDDigit((value / 10) % 10);
  LCD0 = getLCDDigit((value) % 10);
  return 0;
}

去抖按钮输入

按钮SW4和SW5是本应用程序的另外两个人机交互元件,分别通过DIP开关部件SW6与端口引脚P5.2和P7.1相连。(RESET开关不需要编程支持,它直接与MAXQ2000低电平有效复位引脚连接)。

所有MAXQ2000端口引脚(对应JTAG 接口的P4.0到P4.3除外)的上电缺省模式都为输入模式,端口引脚和VDDIO之间具有内部弱上拉。SW4和SW5开关的连接方式是当按下时将端口引脚拉到地,因此端口引脚已经是我们需要的配置方式了。端口引脚状态可以非常简单地通过检查端口引脚输入位(SW4为PI5.2,SW5为PI7.1)来获得;位值为0时表示按钮按下,为1时表示按钮松开。

上一页  [1] [2] [3] [4] [5] [6]  下一页


Tag:控制技术计算机控制技术,工厂电气控制技术控制技术

《Rowley CrossWorks和MAXQ2000评估板入》相关文章