毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

VC++数字逻辑电子仿真器设计

更新时间:2010-5-19:  来源:毕业论文

VC++数字逻辑电子仿真器设计
 这是我毕业设计时做的,主要参考的是:Electronics Workbench这个软件。(图标都是偷他的☺ )时间有限,我只做了逻辑门,触发器没做。其它储如线性电路,非线性电路。由于我电子学得巨菜,且从小就深恶痛绝中。没办法做。还有,元件的移动,删除,新建,保存,都没时间做了,现在正考研复习中。
本程序用VC++6.0开发,界面如图1: 图1
其输出结果真值表如图2:
图2
 程序由几个大模块组成:元件数据结构模块,电路图编辑模块,元件库模块,计算结果(仿真)模块。
  元件数据结构模块
统一的元件数据结构可以提高程序运行速度,方便程序编制。不足是由于元件的不同存储空间上可能会有少许浪费。
所有的元件种类共有8种,如图3
图3  定义数据结构如下:
  typedef struct tagMyNode
{
   Mytype type;     //元件类型
  MySubtype Subtype;  //元件子类型
   tagMyNode* input1;   //输入端1
tagMyNode* input2;  //输入端1
  tagMyNode* output1;   //输出端1
   UINT input1value;     //输入端input1的值
   UINT input2value;     //输入端input2的值
  UINT output1value;    //输出端output1的值
   int inputs;            //当前已经有几个输入端有值
  int number;          //对于输入结点的序号
   CPoint Orgpoint;      //记录元件左上角位置
  int width;          //记录元件宽度
 int height;          //记录元件高度
}MyNode; 元件类型:元件类型Mytype type中Mytype是一个枚举类型定义如下:
enum Mytype
 {
  Node, //结点
  Gate, //门
 };
 分为两种类型:Node结点和Gate门。
 
 元件子类型:元件子类型MySubtype Subtype中MySubtype也是一个枚举类
型,定义如下:
 enum MySubtype
 {
  Input,       //输入端
  Output,     //输出端
  ANDGate, //与门
  ORGate,  //或门
  NOTGate, //非门
  NORGate, //或非门
  NANDGate, //与非门
  XORGate, //异或门
 };  指针连接: tagMyNode* input1;
tagMyNode* input2; 
       tagMyNode* output1
是指向此结点的指针。由于元件之间是要相互连接的,于是设置这几个指针用于元件之间的连接。其中特殊情况有:
 非门:由于非门只有一个输入端,所以非门不用tagMyNode* input2;
 输入结点:输入结点只有一个链接端(这里称之为触点),采用tagMyNode* output1
 输出结点:同输入结点,只有一个触点,采用tagMyNode* input1;
 保存触点值:由于要进行仿真计算,所以还需保存各个触点的值:
UINT input1value;    
   UINT input2value;    
  UINT output1value;
 同指针连接,有3种特殊情况:
  非门:不用UINT input2value;    
 输入结点:采用UINT output1value;
输出结点:采用UINT input1value;    
 进位标志:int inputs;
 在进行仿真计算时,要用进位标志辅助计算。如与门只有在两个输入端都有值时,即inputs==2时,才能进位。
 输入结点序号:int number;
 每个输入结点都有不同的序号,从1开始递增。
 元件位置和大小:
 CPoint Orgpoint;
 int width;
 int height;
 Orgpoint用于记录元件在视图中左上角的坐标
width用于记录元件宽度
 height用于记录元件高度 
 电路图编辑模块
电路图编辑模块又分为两个子模块:鼠标放置元件模块,鼠标连接元件模块
首先在工具栏中可以选择这两种状态,如图4
 图4在按钮上单击可以切换状态。
定义一个枚举类型MyStatus来记录当前状态:
enum MyStatus
{
 NONE,  //鼠标连接元件状态
 ANDGATE, 
 ORGATE,
 NOTGATE,
 NORGATE,
 NANDGATE,
 XORGATE,
 NODEINPUT,
 NODEOUTPUT};
MyStatus Status;
其中:NONE为鼠标连接状态,其他为鼠标放置状态。
 鼠标放置元件模块
其算法如图5:1216

[1] [2] [3] [4] [5] [6] [7] [8] 下一页

VC++数字逻辑电子仿真器设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。