




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、自制元件例一 - CSI24WC02CSI24WC02是串行E2PROM,兼容400 kHz I2C 總線控制。一個元件可以只實現(xiàn)繪圖模型或電氣模型,也可以電氣和繪圖模型都實現(xiàn)。該例子我們只實現(xiàn)繪圖模型。詳細信息見幫助的Styles :Component creation或Styes: Component creation部分。管腳描述 CSI24WCXX系列E2PROM提供標準的8腳DIP封裝和8腳表面安裝的SOIC封裝。 其管腳功能描述如下: SCL 串行時鐘這是一個輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘 SDA 串行數(shù)據(jù)/地址 這是一個雙向傳輸端用于傳送地址和所有數(shù)據(jù)的發(fā)送或接收它
2、是一個漏極開路端因此要求接一個上拉電到Vcc 端典型值為100KHz 是為10K 400KHz 時為1K 對于一般的數(shù)據(jù)傳輸僅在SCL為低期間SDA才允許變化在SCL為高期間變化留給指示START開始和STOP停止條件 A0 A1 A2 器件地址輸入端 這些輸入端用于多個器件級聯(lián)時設置器件地址當這些腳懸空時默認值為0 CSI24WC01 除外 WP 寫保護 如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護只能讀當WP 管腳連接到Vss或懸空允許器件進行正常的讀/寫操作繪制元件 單擊2D Graphics Box Mode > COMPONENT,畫一個框。 單擊Device Pins Mod
3、e > DEFAULT,畫管腳。 右擊引腳 > Edit Properties,輸入管腳名稱,例如A0;輸入默認管腳號,例如1,確定。 選擇所設計的圖形(翻紅)> Library > Make Device,在Device Name中輸入器件名,例如CSI24WC02;在Reference Prefix中輸入引用前綴(放置器件時的默認名稱),例如U ,其他保持不變,Next>。 單擊ADD/Edit添加封裝 選擇一個封裝,例如DIL08,單擊Assign Package(s,指派封裝。 Next 組件屬性與定義,保持默認,Next>。 器件數(shù)據(jù)手冊和幫助文件
4、定義,沒有手冊和幫助,略過,Next>。 索引和庫選擇,單擊New,輸入器件目錄,例如My Device,OK,OK。完成?,F(xiàn)在就可以使用該元件了,從Pick Devices的目錄My Device中也可以找到該元件。自制元件例二 7段數(shù)碼管我們也可以通過改造原有器件來創(chuàng)建新器件,這樣我們就不必從頭開始創(chuàng)建一個新器件。下面我們以7段共陽綠色數(shù)碼管7SER-COM-AN-GRN為例創(chuàng)建一個新器件。這個數(shù)碼管原來不帶封裝,我們通過改造給它加上封裝,并重新命名為新器件。 在設計圖紙上防置一個7SER-COM-AN-GRN。 右擊該器件 > Decompose,分解該器件。下面是分解后的器
5、件。 選擇所設計的圖形(翻紅)> Library > Make Device,保持Device Name中的器件名;在Reference Prefix中輸入引用前綴(放置器件時的默認名稱),例如D,其他保持不變,Next>。 單擊ADD/Edit添加封裝1 先在Packabe Device對話框中的A列中隨意輸入管腳編號,例如1、2、3(原來沒有管腳編號)。2 單擊Add,選擇一個封裝,例如7SEG.3+A。3 依據(jù)封裝重新輸入管腳編號。4 單擊Assign Package(s,指派封裝。 組件屬性與定義,指定默認封裝為7SEG.3+A,Next>。 器件數(shù)據(jù)手冊和幫助
6、文件定義,沒有手冊和幫助,略過,Next>。 索引和庫選擇,單擊New,輸入器件目錄,例如My Device,OK,OK。完成?,F(xiàn)在就可以使用該元件了,從Pick Devices的目錄My Device中也可以找到該元件。 如果以前圖上有該器件,更新圖中該器件的實例,OK。 將以前器件的PCB Package屬性改為7SEG.3+A,并添加組件引用名,例如:D1。注意:器件必須有引用名才能在ARES中布局。一、Proteus VSM仿真模型簡介 在使用Proteus仿真單片機系統(tǒng)的過程中,經(jīng)常找不到所需的元件,這就需要自己編寫。Proteus VSM的
7、一個主要特色是使用基于DLL組件模型的可擴展性。這些模型分為兩類:電氣模型(Electrical Model)和繪圖模型(Graphical Model)。電氣模型實現(xiàn)元件的電氣特性,按規(guī)定的時序接收數(shù)據(jù)和輸出數(shù)據(jù);繪圖模型實現(xiàn)仿真時與用戶的交互,例如LCD的顯示。一個元件可以只實現(xiàn)電氣模型,也可以都實現(xiàn)電氣和繪圖模型。Proteus為VSM模型提供了一些C+抽象類接口,用戶創(chuàng)建元件時需要在DLL中實現(xiàn)相應的抽象類。VSM模型和Proteus系統(tǒng)通信的原理如下圖: 繪圖模型接口抽象類:ICOMPONENTISIS內(nèi)部一個活動組件對象,為VSM模型提供在原理圖上繪圖和用戶交互的服務。I
8、ACTIVEMODEL用戶實現(xiàn)的VSM繪圖模型要繼承此類,并實現(xiàn)相應的繪圖和鍵盤鼠標事件處理。電氣模型接口抽象類:IINSTANCE一個PROSPICE仿真原始模型,為VSM模型提供訪問屬性、模擬節(jié)點和數(shù)據(jù)引腳的服務,還允許模型通過仿真日志發(fā)出警告和錯誤信息。ISPICECKT(模擬)SPICE擁有的模擬元件,提供的服務:訪問、創(chuàng)建和刪除節(jié)點,在稀疏矩陣上分配空間,同時還允許模型在給定時刻強制仿真時刻點的發(fā)生和掛起仿真。ISPICEMODEL(模擬)用戶實現(xiàn)的VSM模擬元件要繼承此類,并實現(xiàn)相應的載入數(shù)據(jù),在完成的時間點處理數(shù)據(jù)等。IDSIMCKT(數(shù)字)DSIM擁有的數(shù)字元件,提供的服務:訪
9、問數(shù)字系統(tǒng)的變量,創(chuàng)建回調(diào)函數(shù)和掛起仿真。IDSIMMODEL(數(shù)字)用戶實現(xiàn)的VSM數(shù)字元件要繼承此類,并實現(xiàn)相應的引腳狀態(tài)變化的判斷和回調(diào)事件的處理。IDSIMPIN(數(shù)字)數(shù)字組件的引腳,提供檢測引腳狀態(tài)和創(chuàng)建輸出事務事件的服務。IDBUSPIN(數(shù)字)數(shù)字組件的數(shù)據(jù)或地址總線,提供檢測總線狀態(tài)和創(chuàng)建總線輸出事務事件的服務。IMIXEDMODEL(混合)同時繼承了ISPICEMODEL 和 IDSIMMODEL,元件既有模擬特性,又有數(shù)字特性。 為了讓Proteus訪問用戶模型中的成員函數(shù),必須創(chuàng)建用戶模型的一個實例
10、。這不能通過類的接口來實現(xiàn),只能通過從DLL中導出幾個C函數(shù)來實現(xiàn),在用戶模型中必須實現(xiàn)這些C函數(shù),達到構造和析構用戶模型實例的效果。(1)構造和析構繪圖模型實例:IACTIVEMODEL *createactivemodel (CHAR *device, ILICENCESERVER *ilsVOID deleteactivemodel (IACTIVEMODEL *model(2)構造和析構模擬電氣模型實例:ISPICEMODEL *createspicemodel (CHAR *device, ILICENCESERVER *ilsVOID deletespicemodel (ISPIC
11、EMODEL *model(3)構造和析構數(shù)字電氣模型實例:IDSIMMODEL *createdsimmodel (CHAR *device, ILICENCESERVER *ilsVOID deletedsimmodel (IDSIMMODEL *model(4)構造和析構混合電氣模型實例:IMIXEDMODEL *createmixedmodel (CHAR *device, ILICENCESERVER *ilsVOID deletemixedmodel (IDSIMMODEL *model二、Proteus VSM仿真模型開發(fā)流程1繪制元件圖形、引腳和相關符號。2制作元件,設置元件屬
12、性。3用C+編寫元件,實現(xiàn)電氣和繪圖模型,編譯生成DLL。4搭建電路仿真測試。三、VSM模型開發(fā)實例下面以TG19264A點陣式液晶顯示元件的開發(fā)為實例詳細講解開發(fā)過程。1打開Proteus,選擇菜單 查看>>Snap 10 th,選擇左邊繪圖工具欄的2D graphics box,繪制如圖所示的三個圖形。 2選擇2D graphics line,給出兩條直線,設置width為36th,顏色為灰色。選擇2D graphics circle,給四個角繪制安裝孔。選擇Markers for component origin,給三個圖形分別繪圖符號原點(圖中紅色部分)。
13、0;3選擇Device pin,順時針旋轉(zhuǎn)90度,放置20個引腳,如圖所示。GND、VCC、V0、Vee、LED+的電氣類型選擇PP-Power Pin,D/I、R/W、E、CS1、RET、CS2、CS3的電氣類型選擇IP-Input,D0D7的電氣類型選擇IO- Bidirectional。 4右鍵拖出選擇框選擇第一個符號,選擇菜單庫>>制作符號,命名為LCD19264A_C,確定。同理,第二和第三個分別命名為LCD19264A_1 和LCD19264A_0。當用戶調(diào)用drawsymbol (-1,將繪制LCD19264A_C,調(diào)用drawsymbol (1
14、,將繪制LCD19264A_1,調(diào)用drawsymbol (0,將繪制LCD19264A_0。 5右鍵拖出選擇框選擇符號LCD19264A_C,選擇菜單庫>>制作元件,Device Properties設置如圖, 點擊Next>。跳過封裝設置,點擊Next>。組件屬性設置如圖, 點擊Next>。選擇數(shù)據(jù)手冊(可選),點擊Next>。選擇器件庫,點擊OK。 CODE:/* 文件:LCD19264A.H* 說明:不支持以下特性* (1 不支持顯示開關控制* (2 不支持設置顯示起始行*/i nclude &q
15、uot;vsm.hpp"/*LCD元件既有數(shù)字電氣特性,也有繪圖特性,所以要繼承IACTIVEMODEL和IDSIMMODEL*/class LCD19264A : public IACTIVEMODEL,public IDSIMMODELpublic:/* 電氣模型成員函數(shù) */數(shù)字電路總是返回TRUEINT isdigital (CHAR *pinname;/當創(chuàng)建模型實例時被調(diào)用,做初始化工作VOID setup (IINSTANCE *inst, IDSIMCKT *dsim;/仿真運行模式控制,交互仿真中每幀開始時被調(diào)用VOID runctrl (RUNMODES mode
16、;/交互仿真時用戶改變按鍵等的狀態(tài)時被調(diào)用VOID actuate (REALTIME time, ACTIVESTATE newstate;/交互仿真時每幀結束時被調(diào)用,通過傳遞ACTIVEDATA數(shù)據(jù)與繪圖模型通信,從而調(diào)用animate(進行繪圖BOOL indicate (REALTIME time, ACTIVEDATA *data;/當引腳狀態(tài)變化時被調(diào)用,主要用來處理數(shù)據(jù)輸入和輸出VOID simulate (ABSTIME time, DSIMMODES mode;/可通過setcallback(設置在給定時間調(diào)用的回調(diào)函數(shù)VOID callback (ABSTIME time
17、, EVENTID eventid;/* 繪圖模型成員函數(shù) */當創(chuàng)建模型實例時被調(diào)用,做初始化工作VOID initialize (ICOMPONENT *cpt;/被PROSPICE調(diào)用,返回模擬電氣模型ISPICEMODEL *getspicemodel (CHAR *device;/被PROSPICE調(diào)用,返回數(shù)字電氣模型IDSIMMODEL *getdsimmodel (CHAR *device;/當原理圖需要重繪時被調(diào)用VOID plot (ACTIVESTATE state;/當相應的電氣模型產(chǎn)生活動事件時被調(diào)用,常用來更新圖形VOID animate (INT element,
18、 ACTIVEDATA *newstate;/用來處理鍵盤和鼠標事件BOOL actuate (WORD key, INT x, INT y, DWORD flags;private:IINSTANCE *instance; /PROSPICE仿真原始模型IDSIMCKT *ckt; /DSIM的數(shù)字元件ICOMPONENT *component; /ISIS內(nèi)部一個活動組件對象/引腳定義IDSIMPIN *di; /D/IIDSIMPIN *rw; /R/WIDSIMPIN *en; /EIDSIMPIN *cs1; /CS1IDSIMPIN *cs2; /CS2ID
19、SIMPIN *cs3; /CS3IDSIMPIN *d8; /D0D7IBUSPIN *databus; /D0.7/LCD參數(shù)BYTE x_addr; /X地址(見手冊)BYTE y_addr; /Y地址(見手冊)BYTE status; /狀態(tài)(見手冊)BYTE cur_blk; /當前塊號(總共分3塊,見手冊)BYTE DDRAMLCD_BLK_NUMLCD_BLK_LEN*LCD_WIDTH/8; /LCD顯示RAMBOOL new_flag; /新數(shù)據(jù)到達標志/顯示參數(shù)BOX lcdarea; /LCD顯示區(qū)域float pix_width, pix_height; /每象素對應矩
20、形的寬和高;CODE:/* 文件:LCD19264A.CPP* 說明:不支持以下特性* (1 不支持顯示開關控制* (2 不支持設置顯示起始行*/i nclude i nclude "LCD19264A.h"/-/電氣模型的實現(xiàn)/構造數(shù)字電氣模型實例extern "C" IDSIMMODEL _declspec(dllexport * createdsimmodel (CHAR *device, ILICENCESERVER *ils/授權認證ils->authorize(0x88888888, 0x69; /版本為6.9return new LC
21、D19264A; /創(chuàng)建模型實例/析構數(shù)字電氣模型實例extern "C" VOID _declspec(dllexport deletedsimmodel (IDSIMMODEL *modeldelete (LCD19264A *model; /刪除模型實例/數(shù)字電路總是返回TRUEINT LCD19264A:isdigital (CHAR *pinnamereturn 1;/當創(chuàng)建模型實例時被調(diào)用,做初始化工作VOID LCD19264A:setup (IINSTANCE *inst, IDSIMCKT *dsiminstance = inst; /PROSPICE仿真
22、原始模型ckt = dsim; /DSIM的數(shù)字元件/獲取引腳di = instance->getdsimpin("D/I,d/i", true;di->setstate(FLT; /FLOATrw = instance->getdsimpin("R/W,r/w", true;rw->setstate(FLT;en = instance->getdsimpin("E,e", true;en->setstate(FLT;cs1 = instance->getdsimpin("
23、;CS1,cs1", true;cs1->setstate(FLT;cs2 = instance->getdsimpin("CS2,cs2", true;cs2->setstate(FLT;cs3 = instance->getdsimpin("CS3,cs3", true;cs3->setstate(FLT;d0 = instance->getdsimpin("D0,d0", true;d0->setstate(FLT;d1 = instance->getdsimpin(&q
24、uot;D1,d1", true;d1->setstate(FLT;d2 = instance->getdsimpin("D2,d2", true;d2->setstate(FLT;d3 = instance->getdsimpin("D3,d3", true;d3->setstate(FLT;d4 = instance->getdsimpin("D4,d4", true;d4->setstate(FLT;d5 = instance->getdsimpin("D5,d
25、5", true;d5->setstate(FLT;d6 = instance->getdsimpin("D6,d6", true;d6->setstate(FLT;d7 = instance->getdsimpin("D7,d7", true;d7->setstate(FLT;/為方便操作,將D0D7映射為8位總線databus = instance->getbuspin("LCD_DBUS", d, 8;databus->settiming(100,100,100; /設置時間延
26、遲databus->setstates(SHI,SLO,FLT; /設置總線邏輯為1,0,三態(tài)時的驅(qū)動狀態(tài)/lcd modelx_addr = 0; /X地址(見手冊)y_addr = 0; /Y地址(見手冊)status = 0; /狀態(tài)(見手冊)new_flag = TRUE; /新數(shù)據(jù)到達標志/仿真運行模式控制,交互仿真中每幀開始時被調(diào)用VOID LCD19264A:runctrl (RUNMODES mode/交互仿真時用戶改變按鍵等的狀態(tài)時被調(diào)用VOID LCD19264A:actuate (REALTIME time, ACTIVESTATE newstate/交互仿真時每幀
27、結束時被調(diào)用,通過傳遞ACTIVEDATA數(shù)據(jù)與繪圖模型通信,從而調(diào)用animate(進行繪圖BOOL LCD19264A:indicate (REALTIME time, ACTIVEDATA *dataif(new_flag /有新數(shù)據(jù)到達 data->type = ADT_REAL; /call back animate( to refresh lcd data->realval = (floattime*DSIMTICK;return TRUE;/當引腳狀態(tài)變化時被調(diào)用,主要用來處理數(shù)據(jù)輸入和輸出VOID LCD19264A:simulate (AB
28、STIME time, DSIMMODES modeBYTE data;if(en->isnegedge( /E的下降沿到達 if(rw->istate(=SLO|(rw->istate(=WLO /R/W為低表示寫 /讀塊選擇 if(cs1->istate(=SLO|(cs1->istate(=WLO cur_blk = 0; else if(cs2->istate(=SLO|(cs2->istate(=WLO
29、; cur_blk = 1; else if(cs3->istate(=SLO|(cs3->istate(=WLO cur_blk = 2; else return; /not select block data = (BYTEdatabus->getbusvalue(; /讀數(shù)據(jù) if(di->istate(=SHI|(di->istate(=WH
30、I /D/I為高表示數(shù)據(jù) DDRAMcur_blkx_addr*LCD_BLK_LEN+y_addr = data; /寫入數(shù)據(jù) new_flag = TRUE; /新數(shù)據(jù)到達標志 y_addr = (y_addr+1%LCD_BLK_LEN; /y地址自動加1 if(y_addr=0 x_addr = (x_addr+1%LCD_LINE_NUM; /自動換行 els
31、e /D/I為低表示命令 switch(data&CMD_MASK case DISP_ONOFF: /開關背光 break; case SET_STARTLINE: /設置起始行 break; case SET_XADDRESS: /設置X地址 x_a
32、ddr = (data&0x07; /bit2bit0 break; case SET_YADDRESS: /設置Y地址 y_addr = (data&0x3f; /bit5bit0 break; default: break; else
33、60; /E的下降沿到達,R/W為高表示讀結束 databus->drivetristate(time; /驅(qū)動總線為三態(tài) else if(en->isposedge( /E的上升沿到達 && (rw->istate(=SHI|(rw->istate(=WHI /R/W為高表示讀 if(di->istate(=SHI|(di->istate(=WHI /D/I為高表示數(shù)據(jù) /讀塊選擇 if(cs1->ist
34、ate(=SLO|(cs1->istate(=WLO cur_blk = 0; else if(cs2->istate(=SLO|(cs2->istate(=WLO cur_blk = 1; else if(cs3->istate(=SLO|(cs3->istate(=WLO cur_blk = 2; else return; /not select
35、block data = DDRAMcur_blkx_addr*LCD_BLK_LEN+y_addr; databus->drivebusvalue(time, data; /輸出數(shù)據(jù) y_addr = (y_addr+1%LCD_BLK_LEN; /y地址自動加1 if(y_addr=0 x_addr = (x_addr+1%LCD_LINE_NUM; /自動換行 else /D/I為低表示命令 &
36、#160; databus->drivebusvalue(time, status; /輸出狀態(tài) /可通過setcallback(設置在給定時間調(diào)用的回調(diào)函數(shù)VOID LCD19264A:callback (ABSTIME time, EVENTID eventid/-/繪圖模型的實現(xiàn)/ Exported constructor for active component models.extern "C" IACTIVEMODEL _declspec(dllexport * createactivemodel (CHAR *device, ILICENCE
37、SERVER *ilsils->authorize (0x88888888,0x69; /6.9return new LCD19264A;/ Exported destructor for active component models.extern "C" VOID _declspec(dllexport deleteactivemodel (IACTIVEMODEL *modeldelete (LCD19264A *model;/當創(chuàng)建模型實例時被調(diào)用,做初始化工作VOID LCD19264A:initialize (ICOMPONENT *cpt/獲
38、取ICOMPONENT接口和初始化component = cpt;component->setpenwidth(0;component->setpencolour(BLACK;component->setbrushcolour(BLACK;/獲取顯示區(qū)域component->getsymbolarea(0,&lcdarea;/計算每象素對應矩形的寬和高pix_width = (float(lcdarea.x2-lcdarea.x1-BLANK_WIDTH*2-SYM_LINEWIDTH*2/LCD_LENGTH;pix_height = (float(lcdar
39、ea.y2-lcdarea.y1-BLANK_WIDTH*2-SYM_LINEWIDTH*2/LCD_WIDTH;/被PROSPICE調(diào)用,返回模擬電氣模型ISPICEMODEL *LCD19264A:getspicemodel (CHAR *return NULL;/被PROSPICE調(diào)用,返回數(shù)字電氣模型IDSIMMODEL *LCD19264A:getdsimmodel (CHAR *return this;/當原理圖需要重繪時被調(diào)用VOID LCD19264A:plot (ACTIVESTATE state/繪制LCD19264A_C元件基本圖形component->drawsymbol(-1;/刷新LCD數(shù)據(jù)顯示new_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 舊貨零售與城市懷舊情感考核試卷
- 毛皮制品加工行業(yè)質(zhì)量管理工具與方法考核試卷
- 智能穿戴設備在圖書館管理與閱讀體驗優(yōu)化中的應用考核試卷
- 森林公園生態(tài)旅游產(chǎn)品開發(fā)與推廣考核試卷
- 器件在電力系統(tǒng)黑啟動解決方案中的作用考核試卷
- 放射性金屬礦的氣體排放與減排技術考核試卷
- 水產(chǎn)罐頭原料品質(zhì)鑒定與篩選技巧考核試卷
- 植物油精煉工藝與技術考核試卷
- 基于客戶反饋的產(chǎn)品改進計劃
- 前沿技術在課堂教學中的應用計劃
- 作業(yè)批改符號
- 2024年金融工作中心工作總結及2024年工作計劃
- 《威尼斯商人》課本劇劇本:一場人性與金錢的較量(6篇)
- 《圖書館資源利用》課件
- 北師大版七年級生物下冊第9章人體內(nèi)的物質(zhì)運輸?shù)?節(jié)血液循環(huán)第2課時課件
- 2024年10月自考01685動漫藝術概論試題及答案含評分參考
- 2024 IMT-2030(6G)推進組白皮書 -面向6G的智能超表面技術研究報告
- 中華人民共和國保守國家秘密法實施條例培訓課件
- 八年級數(shù)學分式經(jīng)典練習題分式的乘除
- 設備工程師招聘面試題與參考回答
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
評論
0/150
提交評論