ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:357.74KB ,
资源ID:3893889      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3893889.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一LED显示控制82C55A并行接口数码管显示控制实验Word文件下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验一LED显示控制82C55A并行接口数码管显示控制实验Word文件下载.docx

1、四 、程序代码录入程序时,请特别注意”1”与英文字母”l”的区别,文件的扩展名为C,即文件名一定是?-?.C。在每个源程序的开头必须加上如下的注解,并按各人实际填写。/*源程序的文件名:实验序号(01-08)-实验组号(01-24).C实验名称:_实验组号:学生姓名及学号:_ _*/#include dos.h#include “PCIcard.h”int d1=0,m_bit=0x1;void main() int err,rio,flagm; int m_k0(); void m_k1(); void m_k2(); void m_k3(); err=findPCIcard(); if (

2、err!=0) printf(The PCI card isnt found!n); flagm=0; err=getPCIbase0(); iobase0=iobase0&0xfffc;/从PCI配置空间读入的与地址空间有关的数据其bit 0位为1,IOBase0=%xHn,iobase0);/表明此空间为IO空间参与PCI总线地址译码 err=getPCIbase1(); iobase1=iobase1&IOBase1=%xHn,iobase1); err=getPCImembase1(); err=getPCImembase0(); membase0=membase0+membase1

3、(7) ; if (temp=0x1) m_bit=m_bit|0x80; void delay1() /延时 int i,j,a=0; for (i=1;i=5000;i+) for (j=1;junsigned long int iobase0,iobase1,membase0,membase1;unsigned long int interrupt_line,ioadd1=0x60;unsigned char bh;unsigned char bl;int findPCIcard(void); /找寻PCI卡的总线号及设备号及功能号int getPCIbase0(void); /获得PC

4、I卡的IO0的地址int getPCIbase1(void);int getPCImembase0(void);int getPCImembase1(void);int getPCIIRQ(void);struct dx int dl; int dh; mydx;int findPCIcard(void) /找寻PCI卡的总线号及设备号及功能号 union REGS regs; regs.h.ah=0xb1; regs.h.al=0x02; /寻找指定厂商和设备号的PCI卡的位置 regs.x.cx=0x8376; regs.x.dx=0x10eb; /输入要寻找的厂商号和设备号 regs.x

5、.si=0x00; /输入要寻找的PCI卡索引号 int86(0x1a,®s,®s); /调用指定的X86中断 bl=regs.h.bl; /返回的设备号高5位,低3位为功能号 bh=regs.h.bh; /返回的总线号 return(regs.h.ah); /返回状态int getPCIbase0(void) /获得PCI卡的IO0的地址 union REGS regs; /定义用C语言调用BIOS中断所用的寄存器组合 /调用PCI BIOS中断 regs.h.al=0x09; /配置空间用字的方式读入 regs.x.di=0x14; /PCI配置空间中基地址0的地址 regs.

6、h.bl=bl; /要读入配置空间的PCI卡的设备号和功能号 regs.h.bh=bh; /要读入配置空间的PCI卡的总线号 iobase0=regs.x.cx; /CX为返回的IO0的基地址int getPCIbase1(void) /同上 regs.x.di=0x1c; /PCI配置空间基地址1的地址 iobase1=regs.x.cx;int getPCImembase0(void) regs.x.di=0x18; /PCI配置空间存储器基地址0的低位地址 membase0=regs.x.cx;int getPCImembase1(void) regs.x.di=0x1a; /PCI配置

7、空间存储器基地址0的高位地址 membase1=regs.x.cx;int getPCIIRQ(void) regs.x.di=0x3c; /PCI配置空间中断线的地址 interrupt_line=regs.x.cx; return(regs.h.cl);五、思考题:1、在图1中,从数据端口送出”1”使LED亮,还是使LED灭?2、将K1L、K2L这一点亮退出功能修改为:自上而下一个一个点亮,然后自下而上一个一个熄灭,循环不断。3、根据框图和原理填写源程序中的空白处,并写出注解。(82C55A并行接口数码管实验部分)实验电路如图6所示。动态LED数码显示的原理如下:8255的A口工作简单输出

8、方式(1:亮,0:暗)输出数据(段码)控制所有数码管的不同段。PB03设置为输出,控制4个LED数码管公共端的电流通路(0:通,1:断),轮流使其中一个数码管亮,从而构成动态LED数码显示器。编程要求:设立一计数单元,该单元做09999的十进制加计数。编制动态LED数码显示的子程序和计数单元计数并显示的主程序。显示0F数字并循环。图6图7三、硬件实验步骤本实验在板上由G与B部分组成,有短路块与跳线两种方式。短路块为缺省方式。下面介绍跳线方式。1、把J16的短路块去掉2、通过跳线把G区的PA0与数码管部分的B区A相连;3、PA1与B相连4、PA2与C相连5、PA3与D相连6、PA4与E相连7、P

9、A5与F相连8、PA6与G相连9、PA7与DP相连10、把B区的J36、J38、J35、J39的短路块去掉11、J37的第1脚与PB0相连12、J37的第2脚与PB2相连13、J37的第3脚与PB1相连14、J37的第4脚与PB3相连四、程序框图BCD码头与7段码关系0 0c0H, 1 0f9H 2 0a4H 3 0b0H 4 99H5 92H 6 82H 7 0f8H 8 80H 9 98HA 88H B 83H C 0c6H D 0a1H E 86HF 8eH五.程序代码(八段数码显示)unsigned long int ic8255a=0x0,ic8255b=0x1,ic8255type

10、=0x3;int buffer110=0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98;int dis14=0,0,0,0; int err,count1,flagm=1,flag1=1; void plus1(); void mydisp1(); int mypckey(); ic8255a=ic8255a+iobase1; /获取8255 A、B口和控制寄存器的地址 ic8255b=ic8255b+iobase1; ic8255type=ic8255type+iobase1;Press e to exit: /显示提示字符 out

11、portb( (1) ); /初始化8255 outportb(ic8255a,(2) ); /灭所有的段 outportb(ic8255b,(3) ); /灭所有的位 count1=0xff; /设置计数值 plus1(); /将显示数据加1 flag1=1; /将小循环标志置位 do /小循环 mydisp1(); /调显示子程序 count1=count1-1; /计数值减1 if (count1=0) /判断是否退出小循环 flag1=0; while (flag1=1); flagm=mypckey(); /扫描键盘/ int mypckey() /扫描键盘子程序 int pckey

12、1(); int flagk,judge; judge=pckey1(); if (judge=e) flagk=1; int pckey1() /调用int 21H中断 regs.h.ah=0x6; regs.h.dl=0x0ff; int86(0x21,& return(regs.h.al); void plus1() /加1子程序 int i; dis10=dis10+1; for (i=0;=2; if (dis1i=10) dis1i=dis1i-10; dis1i+1=dis1i+1+1; if (dis13 dis13=0; void mydisp1() /显示子程序 int i

13、,a1,a2=0x0fe;=3; outportb(ic8255a,0x0ff); a1=buffer1dis1i; outportb(ic8255a,a1); outportb(ic8255b,a2); a2=a21; a2=a2| ( 4) ; /作用是:(5) void delay1() /延时子程序=50;i+) =1000;j+) a=a+0; 思考题:1本实验采用的LED数码管是共阳的还是共阴的?7407的作用是什么?28255的端口是如何初始化的? 如何实现动态显示的?用示波器观察PB口的波形,分别画出PB0,PB1,PB2,PB3的波形。3Delay1()的延时时间应在什么范围内,可以使LED没有闪烁感?4仔细观察LED为什么不该亮的段有隐隐的闪亮?仔细分析mydiap1()中输出数据的先后关系,如何改进可以消除上述现象?5分析main(),CPU 的时间主要花在哪个函数上?常用什么方法可以减少对CPU的占用时间?

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2