1 概览
本指南使用的文件随NI电路设计套件软件一起安装,位于...\samples\Getting Started中。
本指南采用Getting Started MCU.ms10,由于需要,该文件存取了LCDWorkspace文件夹中的内容。
LCD图形显示电路的例子,描述了基于Toshiba T6963C控制器和外部显示RAM的Multisim中,PIC微控制器对图形LCD显示元件的控制。为了控制LCD的显示,微控制器通过LCD数据线和控制线,将信号发送至LCD。为微控制器编写的软件程序决定了管脚电平的高低,以发送命令或数据到LCD显示。
2 关于指南
LCD U2的数据线连接到微控制器U1的RB0 – RB7管脚。LCD 的控制线连接到微控制器的RA0 – RA2管脚。MCU U1与LCD U2通过这些连线进行通信。数据并行发送到U2,控制线上的数据决定了时序和发送的数据类型(即地址或数据)。
LCD图形显示有三种操作模式:文本模式、图形模式和文本图形混合模式。该例子描述了文本图形混合模式下对LCD图形显示的控制。MCU运行的软件包含在MCU的工作空间中,在Design Toolbox中显示为LCDWorkspace。该工作空间中有一个名为project1的工程,这个工程只包含一个源代码文件main.asm。
?? 如何查看文件:
1. 在Design Toolbox中双击main.asm。在工作空间中会弹出一个名为main.asm的标签页,显示汇编程序。
?? 选择MCU/Show Line Numbers可以显示行号。
?? 仿真该电路:
1. 选择Simulate/Run。如果先前没有构建程序,将弹出一个对话框,提示结构体中不包含数据,询问是否需要建立一个程序。单击Yes。创建的结果显示在Spreadsheet View中的Result选项卡中。如果没有错误或警告,则程序创建成功。(范例程序应当没有错误)。
该程序在文本模式下显示字符串“Graphical LCD T6963C for Multisim”;然后LCD切换到图形模式,在文本的上方以点阵方式画出一个倒置的“V”。
字符串显示后,文本先向右滚动随后向左。这是通过移动LCD显示中的文本缓冲器的起始地址实现的。这同时表明了LCD中包含两个缓冲器,一个用于存储图形,另一个用于存储文本。这还显示了LCD的其他特性,例如文本闪烁、字符擦除等。周期地执行LCD显示程序,以显示所有这些效果。
?? 选择Simulate/Stop停止仿真。
.2.1 理解汇编程序
常量和数据
为了让程序便于理解,在程序的开始,采用常量对LCD显示命令和MCU中存储地址和数据的临时缓冲区进行预定义:
对某些微控制器,LCD上显示的文本存储在数据表中,但是没有PIC汇编指令允许你直接录址程序存储器中的数据,因此,可以将值装载到W寄存器,这样可以编写一个基于索引以返回字符串值的程序。RETLW指令装载一个常数到W寄存器,并在这条指令中执行RETURN。
TXPRT程序获取在LCD上显示的文本数据。LCD显示的字符代码在T6963C控制器的参考手册中有相关定义(例如:字母“G”的代码是0x27,“r”是0x52):
初始化
如下面程序段所示,初始化代码从START标签处开始。微控制器的管脚设为输出管脚,管脚状态都被复位。LCD显示元件由微控制器初始化,并设为图形文本混合模式。LCD的内部图形和文本缓冲器的起始地址分别设为0x0000和0x2941,这些地址决定了从什么地方开始显示缓冲区数据。最后,控制信号控制LCD显示信号的读写。
显示文本和图形
下面的程序通过MCU的控制线RA0到RA2向LCD发送图形显示指令,通过数据线向LCD发送图形显示数据。
例如:上面是摘自程序中主循环的一段程序,将TXPRT子程序中定义的字符串以文本模式发送到LCD进行显示。
下面的代码将LCD设为自动写模式:
MOVLW CMD_AWRON
MOVWF CMD_BUFFER
CALL CMD
从此处开始,程序开始计数,执行LOOP_READ_DATA2 循环35次。该循环调用TXPRT子程序重新获取文本数据并将其装载到W寄存器中,然后再调用子程序ADT。在ADT子程序中调用SEND_DATA,将W寄存器中的值写到端口B,等待发送到LCD的数据线上。一旦数据发送成功,微控制器端口A发送适当值至LCD的控制线,让其知道可以读数据了。所有子程序在调用完后,最终都返回至下一条指令。不断重复直至所有的35个字符都发送出去。上面程序段的最后三条指令,是在循环退出时关闭LCD的自动写模式。
下面的几条指令在图形显示模式下,画出水平线和斜线。
3 高级特性
本节逐步演示Multisim MCU模块的调试功能。重要的是,应完全按照本文顺序执行下列步骤,否则,说明将不再适用。当你理解了断点和单步执行的特性,你就可以探究高级MCU调试技巧。
4.3.1 调试视窗概览
不管是用C或者汇编来编写一个微控制器程序,都要将源代码文件(.asm, .inc, .c, .h)作为MCU工作区的一部分。反过来,这些文件都可以源代码窗口中进行编辑。
?? 进入源代码窗口:
1. 在Design Toolbox中的MCU工作空间中双击文件名(如:main.asm)。
仿真过程中,附加的调试信息可帮助理解MCU内部所发生的事件。例如,通过切换观察,你可以看到高级语言源代码的执行过程,也可以看到汇编指令代码中的事件。其中汇编指令代码还显示了正由MCU执行的指令的真实操作码。
源代码视窗无法显示所有信息。不过,电路设计中的每一个MCU元器件都有自己的Debug View,可以显示调试信息。
?? 进入调试窗口
1. 选择MCU/MCU PIC 16F84A U1/Build
注意:调试视窗只有在成功编译好代码后才可见,所以前述步骤仅须执行一次。 |