*本文及代碼參閱彭偉《單片機C語言程序設計實訓100例》 一,打開文件(可以隨文下載放置在文檔中打開)。(如下圖1所示) ![]() 圖1 二,調整原理圖大小,適合可視,另存工程文件。(如下圖2,3,4所示) ![]() 圖2 ![]() 圖3 ![]() 圖4 三,點擊Source Code標簽。(如下圖5所示) ![]() 圖5 四,編輯main.c 代碼如Proteus8.9 VSM Studio WINAVR編譯器仿真ATmega16系列a10_8255接口擴展 (如下圖6所示) ![]() 圖6 五,Main.c 代碼: //----------------------------------------------------------------- // 名稱: 用8255實現接口擴展 //----------------------------------------------------------------- // 說明: 8255的PA、PB端口分別連接8位數碼管的段碼和位碼, // PC端口連接三只按鍵,正常運行時數碼管顯示一組時間值, // PC端口的三只按鍵可對時間值的各部分分別進行調整. // //----------------------------------------------------------------- #include "myfunc01.h" //0-9的共陽數碼管段碼表,最后的0xBF表示"-" extern INT8U SEG_CODE[]; //待顯示信息緩沖12-30-50 extern INT8U Disp_Buffer[]; //上次按鍵狀態 extern INT8U Pre_Key_State; //----------------------------------------------------------------- // 主程序 //----------------------------------------------------------------- int main() { INT8U i; MCUCR |= 0X80; *COM= 0B10001001; while(1) { for(i= 0; i< 8; i++) { *PB= _BV(i); *PA= (INT8U) SEG_CODE[Disp_Buffer[ i]]; [ i] _delay_ms(2); Key_Process(); } } } Myfunc01.h //****************************************************************************************** #ifndef _MYFUNC01_H_ #define _MYFUNC01_H_ //#define F_CPU 2000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define INT8U unsigned char #define INT16U unsigned int //PA,PB,PC端口及命令端口地址定義 #define PA (INT8U*) 0xFF00 #define PB (INT8U*) 0xFF01 #define PC (INT8U*) 0xFF02 #define COM (INT8U*) 0xFF03 void Key_Process(); #endif 六,點擊構建工程按鈕,編譯工程。(如下圖7所示) ![]() 圖7 七,點擊窗口左下方仿真按鈕,可見虛擬數字屏顯示。 (如下圖8,9,10所示) ![]() 圖8 ![]() 圖9 ![]() 圖10 八,選擇release,點擊構建工程按鈕,編譯工程生成Hex文件。(如下圖11所示) ![]() 圖11 附件Proteus8.9 VSM Studio WINAVR編譯器仿真ATmega16系列a10_8255接口擴展在已安裝Proteus8.9的計算機文件夾中打開即可 需要進一步了解,請加入QQ群:976235464 |
128.81 KB, 下載次數: 8, 下載積分: 黑幣 -5
已安裝Proteus8.9的計算機文件夾中打開即可
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |