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

📄 lcd19264a.h

📁 有关单片机仿真软件的例子建议 结合例子
💻 H
字号:
/*****************************************************************
* 文件:LCD19264A.H
* 说明:不支持以下特性
* (1) 不支持显示开关控制
* (2) 不支持设置显示起始行
*****************************************************************/

#include "vsm.hpp"


//LCD常量
#define LCD_BLK_NUM		3		//lcd block number
#define LCD_BLK_LEN		64		//lcd block length
#define LCD_LINE_NUM	8		//lcd line number
#define LCD_LENGTH		(LCD_BLK_LEN*LCD_BLK_NUM)		//lcd length
#define LCD_WIDTH		64		//lcd width
#define BLANK_WIDTH		50		//the width of blank
#define SYM_LINEWIDTH	28		//the width of symbol line

//LCD命令掩码
#define CMD_MASK		0xc0

//LCD命令
#define DISP_ONOFF		0x00	//开关背光
#define SET_STARTLINE	0xc0	//设置起始行
#define SET_XADDRESS	0x80	//设置X地址
#define SET_YADDRESS	0x40	//设置Y地址

//延时常量
#define DELAY_1s  1000000000000
#define DELAY_1ms 1000000000
#define DELAY_1us 1000000
#define DELAY_1ns 1000
#define DELAY_1ps 1


/*
	LCD元件既有数字电气特性,也有绘图特性,所以要继承IACTIVEMODEL和IDSIMMODEL
*/
class LCD19264A : public IACTIVEMODEL,public IDSIMMODEL
{
public:
	/* 电气模型成员函数 */

	//数字电路总是返回TRUE
	INT isdigital (CHAR *pinname);

	//当创建模型实例时被调用,做初始化工作
	VOID setup (IINSTANCE *inst, IDSIMCKT *dsim);

	//仿真运行模式控制,交互仿真中每帧开始时被调用
	VOID runctrl (RUNMODES mode);
	
	//交互仿真时用户改变按键等的状态时被调用
	VOID actuate (REALTIME time, ACTIVESTATE newstate);

	//交互仿真时每帧结束时被调用,通过传递ACTIVEDATA数据与绘图模型通信,从而调用animate()进行绘图
	BOOL indicate (REALTIME time, ACTIVEDATA *data);

	//当引脚状态变化时被调用,主要用来处理数据输入和输出
	VOID simulate (ABSTIME time, DSIMMODES mode);

	//可通过setcallback()设置在给定时间调用的回调函数
	VOID callback (ABSTIME time, EVENTID eventid);


	/* 绘图模型成员函数 */

	//当创建模型实例时被调用,做初始化工作
	VOID initialize (ICOMPONENT *cpt);

	//被PROSPICE调用,返回模拟电气模型
	ISPICEMODEL *getspicemodel (CHAR *device);

	//被PROSPICE调用,返回数字电气模型
	IDSIMMODEL *getdsimmodel (CHAR *device);

	//当原理图需要重绘时被调用
	VOID plot (ACTIVESTATE state);

	//当相应的电气模型产生活动事件时被调用,常用来更新图形
	VOID animate (INT element, ACTIVEDATA *newstate);

	//用来处理键盘和鼠标事件
	BOOL actuate (WORD key, INT x, INT y, DWORD flags);

private:
	IINSTANCE *instance;	//PROSPICE仿真原始模型
	IDSIMCKT *ckt;			//DSIM的数字元件
	ICOMPONENT *component;	//ISIS内部一个活动组件对象

	//引脚定义
	IDSIMPIN *di;	//D/I
	IDSIMPIN *rw;	//R/W
	IDSIMPIN *en;	//E
	IDSIMPIN *cs1;	//CS1
	IDSIMPIN *cs2;	//CS2
	IDSIMPIN *cs3;	//CS3
	IDSIMPIN *d[8];	//D0~D7
	IBUSPIN *databus;	//D[0..7]

	//LCD参数
	BYTE x_addr;	//X地址(见手册)
	BYTE y_addr;	//Y地址(见手册)
	BYTE status;	//状态(见手册)
	BYTE cur_blk;	//当前块号(总共分3块,见手册)
	BYTE DDRAM[LCD_BLK_NUM][LCD_BLK_LEN*LCD_WIDTH/8];	//LCD显示RAM
	BOOL new_flag;	//新数据到达标志

	//显示参数
	BOX lcdarea;	//LCD显示区域
	float pix_width, pix_height;	//每象素对应矩形的宽和高
};

⌨️ 快捷键说明

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