標題: CPU模型機的Proteus仿真設計 附單片機源碼與各部分原理圖說明 [打印本頁]
作者: hs1441353519 時間: 2018-10-12 18:08
標題: CPU模型機的Proteus仿真設計 附單片機源碼與各部分原理圖說明
CPU模型機的設計Proteus仿真附件包含DSN電路圖和各部分單元的文檔說明
首先打開NEWest.DSN。在AT89C51器件上雙擊,在Program File: 路徑選中該文件夾中的new.hex文件。然后可以按仿真開始按鈕。大概經過5~10秒程序寫入完畢。然后將一些開關撥回。即將SW15,SW18,SW10,SW9撥至右邊。SW14撥至上邊。和U41連接的LOGICSTATE撥為0,和U45連接的LOGICSTATE撥至1。然后可以按動START上的LOGICSTATE。整個系統開始運行。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (19.88 KB, 下載次數: 48)
下載附件
2018-10-13 00:19 上傳
此文檔為模型計算機的電路說明文檔。共分為四個部分。具體如下:
第一部分:ALU,PC及I/O部分
1.PC(74LS161)
圖 X-1
圖X-2
2.存儲器(6116)
3.寄存器(74LS374)
4.ALU(74LS181)
5.I/O部分
第二部分:微控制部分
1.控制臺轉移
2.地址轉移
3.微地址輸入
4.微命令輸入
5.微控制輸出
U38,U39,U40為3個3-8譯碼器,E1,E2,E3為1,0,0。輸入端為A,B,C字段,譯碼的情況如下:
第三部分:自動輸入
本系統若使用開關撥代碼及微程序,則由于數據量較多且容易撥錯,致使調試效率低下。因此用一個AT89C51來自動寫入代碼及微程序,省卻撥動開關的時間。下面是具體電路及寫入51的代碼,經驗證可正確寫入及讀出。
2.微程序存儲寫入部分
3.存儲器寫入部分
4.代碼部分
具體代碼如下:
- #include "reg51.h"
-
- sbit OE =P2^7; //控制微控器里三個6116(RAM)的輸出
- sbit WE =P2^6; //控制微控器里三個6116(RAM)的寫入
- sbit CS2=P2^5; //控制微控器里三個6116(RAM)的片選
- sbit CS1=P2^4;
- sbit CS0=P2^3;
- sbit t=P2^2; //給微地址寄存器寫入地址提供時序信號
- sbit WE_RAM=P2^1; //為主存儲器提供寫允許信號
- sbit LDRAM=P2^0; //給主存儲器寫入地址或數據的74LS245的允許信號
- sbit tr=P1^7; //為主存儲器提供地址的74LS273的時序信號
-
- #define n 100 //用于提供延時的變量
- void delay(void) //延時功能函數
- {
- char i,j;
- for(i=0;i<n;i++)
- for(j=0;j<n;j++)
- {}
- }
- void init(void) //初始化函數
- {
- OE=1;
- WE=1;
- CS2=1;
- CS1=1;
- CS0=1;
- WE_RAM=1;
- LDRAM=1;
- t=0;
- }
- void main(void)
- {
- char c2[25]= {0x01,0x01,0x00,0x00,0x00,0x01,0x95,0x00,0x00,0x01,0x01,
- 0x01,0x01,0x02,0x00,0x00,0x01,0x01,0x00,0x01,0x00,0x07,0x00,0x07,0x06};
- //微程序的高八位數據
- char c1[25]= {0x81,0xed,0xc0,0xe0,0xb0,0xa2,0x9a,0xe0,0x10,0xed,0xed,
- 0xed,0xed,0x82,0xe0,0xa0,0xed,0xed,0xa0,0x80,0x20,0x0a,0xd1,0x0a,0x8a};
- //微程序的中八位數據
- char c0[25]= {0x10,0x82,0x48,0x04,0x05,0x06,0x01,0x0d,0x01,0x83,0x87,
- 0x8e,0x96,0x01,0x0f,0x15,0x92,0x94,0x17,0x01,0x18,0x01,0x81,0x10,0x11};
- //微程序的低八位數據
-
- char ram[11]={0x00,0x10,0x0a,0x20,0x0b,0x30,0x0b,0x40,0x00,0x00,0x01};
- //主存儲器里的數據及指令
- char i;
-
- init();
- WE=0;
- for(i=0;i<=24;i++)
- {
- P1=i; //P1口用來提供微程序地址
- t=!t; //微地址寄存器的時序信號
-
- P0=c2[i]; //P0口用來提供微程序,先提供高八位程序
- CS2=0; //選中高八位的存儲器
- delay(); //延時
- CS2=1; //片選無效
-
- P0=c1[i];
- CS1=0; //選中中八位存儲器
- delay();
- CS1=1; //片選無效
-
- P0=c0[i];
- CS0=0; //選中低八位存儲器
- delay();
- CS0=1; //片選無效
- t=!t;
- }
-
- WE=1;
- CS2=0;
- CS1=0;
- CS0=0;
- OE=0;
-
- P0=0x00; //置微地址為0x00
-
- for(i=0;i<25;i++) //顯示微程序數據,用來檢查是否輸入有誤
- {
- P1=i;
- t=!t;
-
- t=!t;
- delay();
- }
-
- P1=0x01;
- t=!t;
- t=!t;
- delay();
-
- LDRAM=0;
- tr=0;
- for(i=0;i<11;i++)
- {
- P3=i; //提供主存儲器地址
-
- tr=!tr;
- tr=!tr; //將地址寫入地址寄存器
- P3=ram[i]; //提供主存儲器數據或指令
-
- WE_RAM=0; //主存儲器寫有效
- delay();
- WE_RAM=1;
-
- }
- P3=0x00;
- tr=!tr;
- tr=!tr;
-
- LDRAM=1;
- while(1){}
- }
復制代碼
此代碼在Keil μVersion2中編譯為*.hex文件,然后加載到Proteus中的AT89C51,便可運行。
第四部分:時序及控制
下圖為時序的部分控制電路:
單步執行與連續執行的開關定義,如圖
0.png (52.28 KB, 下載次數: 30)
下載附件
2018-10-13 00:22 上傳
全部資料51hei下載地址:
模型機.rar
(1.03 MB, 下載次數: 86)
2018-10-12 18:07 上傳
點擊文件名下載附件
仿真DSN文件和文檔說明
下載積分: 黑幣 -5
參考設計:http://www.zg4o1577.cn/bbs/dpj-181762-1.html
作者: 呆桃呀呀呀呀 時間: 2020-9-14 15:11
樓主您好,我想問一下你的操作說明文檔里寫的START是指哪里呀
作者: 呆桃呀呀呀呀 時間: 2020-9-14 15:37
樓主您好,請問在仿真電路圖上按你的寫得操作說明操作,沒有反應可能是因為什么啊
作者: 許立都 時間: 2021-6-12 15:14
需要把LED的阻值調低,太高了電流過不去
作者: 1024-3 時間: 2022-6-14 18:04
只有a.hex,哪來的new.hex
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
天天久
|
久久久久久久久久久久久9999
|
日韩免费看片
|
一区二区三|
成人中文网
|
国产精品乱码一二三区的特点
|
午夜视频在线免费观看
|
91精品国产91久久久久久最新
|
免费黄色在线
|
九九综合
|
国产精品明星裸体写真集
|
久久99深爱久久99精品
|
国产日韩欧美在线观看
|
欧美日韩在线视频观看
|
亚洲第一色站
|
男女免费在线观看视频
|
亚洲视频欧美视频
|
国产精品一区在线观看你懂的
|
久草在线在线精品观看
|
91观看
|
视频一区欧美
|
一区二区三区高清
|
亚洲成人精品在线观看
|
久久www免费人成看片高清
|
一区二区三区亚洲精品国
|
情侣黄网站免费看
|
午夜激情影院
|
国产精久久久
|
自拍视频网站
|
成人不卡|
日本在线视频不卡
|
国产午夜精品视频
|
91麻豆精品国产91久久久资源速度
|
亚洲一区二区日韩
|
91p在线观看
|
亚洲一区二区三区久久
|
日韩欧美精品一区
|
欧美午夜影院
|
日本黄色片免费在线观看
|
一区二区三区在线
|
国产精品高潮呻吟
|