接口技术实验3报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

上海大学计算机学院《计算机接口技术》实验3专业:计算机科学与技术班级:周一1~3节姓名:学号:计算机工程与科学学院报告日期2012年10月27日实验名称:可编程并行接口8255实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。(1)流水灯实验:利用8255的A口、B口循环点亮发光二极管。(2)交通灯实验:利用8255的A口模拟交通信号灯。(3)I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。二、实验原理1、8255A的内部结构:(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。(3)A组和B组控制电路:根据CPU输出的控制字来控制8255工作方式的电路,它们共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位命令字。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。2、8255A的工作方式:方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式。三、实验步骤1、流水灯实验:(1)实验连线该模块的WR、RD分别连到总线接口模块的IOWR、IORD。该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到总线接口模块的数据(LAD0~QD7)、地址线(LA0~LA7)。8255模块选通线CE连到总线接口模块的28H。(系统已接好以上线路。)请将8255的PB0~PB7连到发光二极管的L1~L8。(2)查找实验使用的源程序:ShiftLed文件夹;(3)编译链接运行可执行程序,观察记录发光二极管情况;(4)寻找并修改参数,改变流水灯的点亮频率,记录相关语句。2、交通灯实验:(1)实验连线:系统已接好数据、地址及控制线路。请连线8255的PA0-L1(黄灯)、PA1-L2(绿灯)、PA2-L3(红灯)、PA3-L7(黄灯)、PA4-L8(绿灯)、PA5-L9(红灯)。(2)查找实验使用的源程序:Traxffic文件夹;(3)编译链接运行可执行程序,观察发光二极变化情况,记录红绿灯的变化时间;(4)寻找并修改参数,改变黄灯的闪烁次数为8次及加快闪烁速度,记录相关语句及所在位置。(5)修改程序,改变交通灯状态跟现实一样。(东西方向:绿灯闪,变黄灯,再变红灯;南北方向:东西方向黄灯时,红黄灯亮,再变绿灯。)3、I/OPA控制PB实验:(1)实验连线系统已接好数据、地址及控制线路。请连接8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L1~L8。(2)打开源程序建立工程,在Kaiguan文件夹;(3)编译并生成可执行程序,运行程序,拨动开关,观察发光二极管与开关的关系;(4)查看源程序,尝试改变开关控制方式,记录相关语句。四、分析与体会1、实验结果分析实验一:修改如下:数字越大越慢,频率为1/900Hz。实验二:修改的部分的代码如下//*****************************************************************************///*初始状态全为红灯*///SNEW//XXRGYRGY//*****************************************************************************voidst0(){outp8(P8255A,~0x24);//00100100Sleep(10);}/*东西:绿灯闪,变黄灯,再变红灯;南北:东西方向黄灯时,红黄灯亮,再变绿灯。*///*****************************************************************************voidst1(){outp8(P8255A,~0x14);//00001100ONSleep(2000);}voidst2(){for(inti=0;i4;i++){outp8(P8255A,~0x14);//00001100ONSleep(300);outp8(P8255A,~0x04);//00000100offSleep(300);}}//*****************************************************************************//*****************************************************************************voidst3(){outp8(P8255A,~0x0D);//00001100ONSleep(1000);}//*****************************************************************************//*****************************************************************************voidst4(){outp8(P8255A,~0x22);//00100010Sleep(2000);}//*****************************************************************************//*****************************************************************************voidst5(){for(inti=0;i5;i++){outp8(P8255A,~0x22);//00001100onSleep(300);outp8(P8255A,~0x20);//00000100offSleep(300);}}voidst6(){outp8(P8255A,~0x29);//00100010Sleep(1000);}/****东西方向:绿灯闪,变黄灯,再变红灯;南北方向:东西方向黄灯时,红黄灯亮,再变绿灯。*/UINTComd(LPVOIDpParam){outp8(P8255MODE,0x80);st0();while(ISSTART){st1();st2();st3();st4();st5();st6();}return0;}实验三:代码如下//KaiguanDlg.cpp:implementationfile//#includestdafx.h#includeKaiguan.h#includeKaiguanDlg.h#include..\pci9054ioctl.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif#defineP8255A0x28#defineP8255B0x29#defineP8255C0x2a#defineP8255MODE0x2b#defineP8255CntW0x90CWinThread*Thread_Comd;//要创建的两个线程HWNDhWnd;BOOLISSTART=false;UINTComd(LPVOIDpParam){if(!outp8(hDevice,(ULONG)P8255MODE,(ULONG)P8255CntW))return0;while(ISSTART){for(inti=0;i10000;i++){inp8(hDevice,(ULONG)P8255A,prd.Data);if(!outp8(hDevice,(ULONG)P8255B,prd.Data))return0;}Sleep(50);}return1;}///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public:CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CKaiguanDlgdialogCKaiguanDlg::CKaiguanDlg(CWnd*pParent/*=NULL*/):CDialog(CKaiguanDlg::IDD,pParent){//{{AFX_DATA_INIT(CKaiguanDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);}CKaiguanDlg::~CKaiguanDlg(){ISSTART=FALSE;Sleep(100);if(hDevice)CloseHandle(hDevice);hDevice=INVALID_HANDLE_VALUE;}voidCKaiguanDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CKaiguanDlg)//NOTE:theClassWizardwilladdDDXa

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功