微机原理与接口技术实验讲稿PPTppt课件

上传人:无*** 文档编号:163523711 上传时间:2022-10-21 格式:PPT 页数:183 大小:1.12MB
返回 下载 相关 举报
微机原理与接口技术实验讲稿PPTppt课件_第1页
第1页 / 共183页
微机原理与接口技术实验讲稿PPTppt课件_第2页
第2页 / 共183页
微机原理与接口技术实验讲稿PPTppt课件_第3页
第3页 / 共183页
点击查看更多>>
资源描述
微机原理与接口技术微机原理与接口技术实验讲稿(PPT)实验项目w 实验箱简介 w 基于 EPP接口的LED显示w 8255并行接口原理及编程w 8253计数器原理及分频实验w 8253计数器在测频中的应用w 双积分式A/D 转换器7109 的原理及编程w 逐次比较式A/D转换器0809的原理及编程w D/A转换器0832的原理实验w DAC0832在程控信号源中的应用w LED点阵显示w 基本并行输入/输出口在键盘接口中的应用w 8250串行通信w 电子称实验 实验箱简介w实验箱的组成原理 实验主板的原理 实验主板是由并行I/O、定时器/计数器、A/D转换器、D/A转换器及LED显示器等接口部件构成,采用了总线结构,各功能部件均通过内部总线进行连接,如下图所示。实验主板的内总线结构 D0D7外部扩展口并行数字显示A/D、D/A定时/计数器并行I/O译码器A0A7实验主板的布局电源EPP接口 LED 数字显示 A/D转换器(7109)应用 8255并行口 应用 D/A转换器(0832)应用实验 外接扩展板 接口 A/D转换器 (0809)应用8253计数器 应用实验w EPP接口原理 EPP信号特性,其引脚定义如下图引脚SPP信号EPP信号方向EPP功能描述1STOBEnWrite输出读写信号,低写高读2 9Data0 7Data0 7双向双向数据/地址线10ACKInterrupt输入中断请求线,上升沿触发11BUSYnWait输入握手信号,低表示开始一个周期,高表示结束一个周期12PE用户自定义 输入按不同外设自定义13SELECT用户自定义 输入按不同外设自定义14AUTO LFnDataSTB输出数据选通信号,低表示正在进行数据读写操作15ERROR用户自定义 输入按不同外设自定义16INTInReset输出外设复位信号,低有效17SLCT INnAddrSTB输出地址选通信号,低表示正在进行地址读写操作18 25GNDGNDGND信号地 EPP端口寄存器 端口地址如表下图所示。表中BASE为并口基地址,地址端 口 名 称方 向BASE+0数据端口(SPP)写BASE+1状态端口(SPP/EPP)读BASE+2控制端口(SPP/EPP)写BASE+3地址端口(EPP)读/写BASE+4数据端口(EPP)读/写BASE+5未定义(16/32bit Transfer)-BASE+6未定义(32bit Transfer)-BASE+7未定义(32bit Transfer)-状态寄存器和控制寄存器各位具体定义如下图所示。中断使能位1有效 DIR IRQEN ASTRB INIT DSTRB WRITE方向位1=输入0=输出地址选通位0有效初始化位1有效数据选通位0有效读/写状态位1=读0=写控制寄存器(BASE+2)D7 D6 D5 D4 D3 D2 D1 D0WAIT INTR USER1 USER2 USER3 TMOUT状态寄存器(BASE+1)Wait状态位1有效中断请求状态位1有效用户自定义保留(EPP1.7)超时标志位(EPP1.9)1=超时;0=未超时 EPP接口初始化 在使用EPP之前应将并口置于正向传输模式(输出),即将控制寄存器的方向位(Bit5)置0。可编写EPP初始化函数epp_init()如下:void epp_init(void)outportb(0 x37a,0 x04);EPP时序 数据/地址写周期时序 nW ritenW aitV alidD atanD ataS T BD ataIS A(IO W)nW ritenW aitV alidD atanA ddS T BD ataIS A(IO W)数据/地址读周期时序 n D a ta S T Bn W riten W a itD a taV a lid D a taIS A(IO R)n A d d S T Bn W riten W a itD a taV a lid D a taIS A(IO R)EPP端口读写 计算机要同外设实验箱通信,就要通过EPP接口来读写数据,因此,首先应向EPP地址端口(BASE+3)写入欲访问的外设地址,然后从EPP数据端口(BASE+4)读写数据,每次读写1个字节 EPP端口写函数epp_write_data()void epp_write_data(unsigned char paddr,unsigned char data)outportb(0 x37b,paddr);epp_check_clear();outportb(0 x37c,data);epp_check_clear();EPP端口读函数epp_read_data()void epp_read_data(unsigned char paddr,unsigned char*data)outportb(0 x37b,paddr);epp_check_clear();*data=inportb(0 x37c);epp_check_clear();w EPP接口与本实验平台的连接,如下ABCE1E2Y0Y1Y2Y3Y4Y5Y6Y7D1.D8CLKQ1Q2Q3Q4Q5Q6Q7Q8A0.A7EDIRB0.B7ABCE1E2Y0Y1Y2Y3Y4Y5Y6Y7 nWait信号产生电路nDataSTBnAddrSTBnWritenWaitAD0.AD7WRRD1Y01Y11Y21Y31Y41Y5 1Y61Y7 2Y02Y12Y22Y3 2Y4 2Y52Y62Y7DB0.DB7EPP接口74LS24574LS273D0.D7A0A1A5A6A7A2nReadDB0.DB7w 扩展接口扩展接口的原理及管脚定义如下图所示。A0EDIRB0B1B2B3B4B5B6B7ED0ED1ED2ED3ED4ED5 ED6ED7 D0RD1Y61Y7A0A1A21Y71Y6RDWRnDataSTBAIN+扩展接口15161712345678910111213141819202122232425262728293031323334AGNDAI7AI6AI5AI4AI3AI2F0FX+12V-12VAGNDVCCGNDINTERRUPTGND74LS245A7.D7w 键盘、点阵实验扩展板,原理框图如下:ED0.ED7扩展接口ABCE1E2Y0Y7E374LS138ABCE1E2Y0Y7E374LS138D1D8CLRCLKQ1Q2Q3Q4Q874LS273.VCCQ1Q3Q1Q3Q4VCCED0ED7ABCE1E2E3Y0Y1Y2Y3Y4Y5Y6Y7Y0Y1Y2Y3 Y7.D1D8CLKQ1Q2Q3Q4Q5Q6Q7Q874LS2732Y4.2Y11Y4.1Y12A4.2A11A4.1A12G1G74LS244.键盘矩阵的行键盘矩阵的列ED0ED2ED0ED7CLRVCCA0A1A2nDataSTBVCC1Y71Y6RDWRGND2803VCCQ1Q8D1D8Q1Q8D1D8CLRCLKQ1Q874LS273.VCCGND2803VCCQ1Q8D1D8Q1Q8D1D8CLRCLKQ1Q874LS273.VCC.VCCVCCED0ED7.ED0ED7Q474LS13816*16点阵前八行16*16点阵后八行16*16点阵左边八列16*16点阵右边八列w 串口实验扩展板,原理框图如下:ED0.ED7扩展接口D0.D7CS0CS1CS2INTRXTAL1晶振源CTSRTST2inT1inR2outR1outT2outT1outR2inR1inDTRSOUTDSRSINBAUDOUTRCLKA0A1A21A1EN1YVCC输出电路OUT2OUT11Y7A0A1A2DISTRDOSTRRDWRRLSDDOSTRDISTRADSMR复位电路1Y6Interrupt实验箱配备的串口通讯线DTRTXDDSRRXDED0 ED7TC2328250w 端口地址 为了方便同学们的在实验中更快,更方便的找到实验板上各个芯片的端口地址,在实验指导书上详细列出了各个端口的地址及其简要的功能描叙。w 头文件 在本实验指导书的附录里,列举了部分实验的参考源程序,以便同学们在学习的过程中参考。为了使程序更简化、直观,将常用的地址端口和函数定义成头文件的形式,其头文件有:paddr.h 对实验板内地址进行了宏定义。eppinit.h EPP接口初始化。epprw.h EPP端口的读/写。displed.h LED数字显示函数。实验一实验一 EPP接口驱动LED显示 w 实验目的1熟悉EPP接口的输入/输出及读/写操作。2掌握七段LED显示驱动原理及接口方法。3熟悉C语言。w 实验任务 1分析实验主板电路,指出输入/输出口地址。2编写LED显示程序,使实验主板上的四个LED显示任意四位数字和任意一位的小数点,并通过调试。w 实验原理 LED显示器原理 7段LED显示器的结构和8位字节数的对应关系如下图:abcdefghhgfedcbaD7.D01亮;0灭(共阴极)1灭;0亮(共阳极)(每一位相同)LED显示实验电路 实验箱主板上带有的四位LED显示器采用四片CD4511(BCD七段锁存译码器)来驱动。其原理图如下:D4D72Y32Y02Y12Y12Y0D4D7D0D3D0D3D0D374LS273D0D7CD4511CD4511CD4511CD4511 4位LED显示的端口操作为:D7D6D5D4D3D2D1D02Y1第四位小数点亮;1亮;0灭第一位小数点亮;1亮;0灭第二位小数点亮;1亮;0灭第三位小数点;1亮;0灭D7D6D5D4D3D2D1D02Y0D7D6D5D4D3D2D1D02Y3第一位第二位第三位第四位8421w 本实验共用到的端口地址及其功能介绍00H(2Y0):输出口,用作后两位显示译码驱动器4511 的锁存使能信号。01H(2Y1):输出口,用作前两位显示译码驱动器4511 的锁存使能信号。03H(2Y3):输出口,用作4位小数点锁存器74LS273的 控制CLK信号。w 编程与调试 程序说明 该程序设计功能为:先从最高位开始依次显示1,2,3,4,显示时只有一位显示,其它位熄灭。从高到低轮流点亮小数点。依 次 显 示 0 0 0 0,1 1 1 1,2 2 2 2,3333,.一直到9999。编程思路 开 始E P P 初 始 化结 束L E D显 示 数 字 编程步骤 调用自定义头文件#include paddr.h#include epprw.h#include displed.h#include eppinit.h EPP端口初始化 epp_init();LED的数字显示 在LED上显示某个数,只要在对应的字节上写入这个数即可,例如:要在第二位LED上显示1,第一位LED上显示5,只要先向EPP地址端口写入这两位的地址0 x00(D_LED),再向EPP数据端口写入相应的数据。epp_write_data(D_LED,0 x15);如果想要熄灭某个LED,只要在相应的位上写入10到15的任意一个数。程序中利用此方法循环点亮LED。w思考和练习题 1.若不对EPP接口进行初始化,会发生什么现象?为什么?2.编写循环点亮四位小数点的程序。3.可以同时点亮四位的小数点吗?如果可以,应怎样设置其端口控制字?实验二 8255并行接口原理及编程 w 实验目的 1.熟悉8255内部结构和外部引脚定义。2.熟悉8255并行接口的原理和接口方法。3.掌握8255的简单应用编程。w 实验任务 1编写出8255的初始化程序。2编写出循环控制发光二极管的显示程序,并运行通过 3编写出交通灯控制模拟程序。4理清8255的一些与实验板上其他芯片相连接的I/O端口电路。5掌握对8255PC口的位操作。w 实验原理 8255工作原理 8255有8条数据引脚D0D7,它们全部是双向、三态,用来与数据总线相连接;另外,还有6条输入控制引脚,分别是:RESET:复位输入信号,高电平有效。当RESET有效时,将梭鱼哦内部寄存器,包括控制寄存器清零,而且把A、B、C三个都设为输入方式,对应的PA7PA0、PB7PB0、PC7PC0引脚均为高阻态。CS:芯片选中信号,输入低电平有效。只有当它为低电平时,8255才被CPU选中。A0和A1:芯片内部寄存器的选中信号。当有效时,8255被选中,再由A0、A1的编码决定选中通道A、B、C,还是控制寄存器。RD:读信号。输入低电平有效。当它为低电平时,由CPU读出8255的数据或者状态信息。WR:写信号。输入低电平有效当它为低电平时,由CPU将数据或命令写到8255。CS、A0、A1、WR、五根引脚的电平与8255操作的关系,详见下表 8255通道选择和基本操作表 A1A0RDWRCS操作001010000111000A口数据总线B口数据总线C口数据总线输入00110101111100000000数据总线 A 口数据总线 B 口数据总线 C 口数据总线控制寄存器输出110111100端口输出为“高阻”非法端口输出为“高阻”禁止 8255控制字 8255方式选择控制字 1 D6 D5 D4 D3 D2 D1 D0方式选择控制字的标志位A组方式选择00方式001方式11X方式2通道A:00输入 11输出PC3PC0:1 输入0输出通道B:1输入0输出B组方式选择:0方式01方式1PC7 PC4:1输入0输出方式0基本输入/输出方式1选通输入/输出方式2双向数据传送 8255按位置位/复位的控制字 通道C的每一位都可以通过向控制寄存器写入置位/复位控制字,而使它相应位置位(即输出为1)或复位(即输出为0)。通道C置位、复位控制字的具体格式下图所示。0 D6 D5 D4 D3 D2 D1 D0按位置位/复位标志 1置1 0复位未用C口01234567D101010101D200110011D300001111 实验电路图 PA0PA7PB0PB7PC0PC1PC2PC3PC4PC5PC6PC7D0D1D2D3D4D5D6D7RDWRA0A1RESETCSVCCVCC7109(STATUS)8253(CLK0)7109(RUN/HOLD)0809(EOC)8253(OUT1)RDWRA0A11Y1VCCD0.D7本实验用到的端口地址:23H(1Y1):输出口,8255的控制端口20H(1Y1):输出口,8255端口A的地址21H(1Y1):输入口,8255B端口B的地址22H(1Y1):输入/输出口,8255端口C的地址 w 编程与调试(一)交通灯实验1程序说明 通过对8255的A口读/写命令,来循环点亮与A口相 连接的红、黄、绿三个发光二级管。在点亮的过程中,同时在LED上显示时间,从60秒开始倒计时,60秒到6 秒红灯亮,5秒到1秒黄灯亮,然后再从从60秒开始倒 计时,60秒到6秒绿灯亮,5秒到1秒黄灯亮。依次循环。2编程思路 初始化8255EPP初始化开始结束YN点亮红色指示灯(E5 55秒)点亮绿色指示灯(E5 55秒)点亮黄色指示灯(E5 5秒)点亮黄色指示灯(E5 5秒)循环是否结束?3编程步骤 调用自定义头文件(同上实验一)。EPP端口初始化(同上实验一)。初始化8255。在本实验中设计为方式0、A口输出、B口输入,故向控制寄存器写入的数据为0 x82。在交通灯的实验中,我们就用到A口的输出。8255的片选由1Y1来控制,其控制寄存器的地址为0 x23(CW_8255)。epp_write_data(CW_8255,0 x82);向8255的A口写数据。由指示灯的硬件电路可知,与其相连的端口输出为低电平,指示灯亮;输出为高电平,指示灯灭。在本实验中我们要依次点亮红色、黄色、绿色、黄色。epp_write_data(PA_8255,0 xfe);/*点亮红色指示灯*/delay(10000);/*延时*/epp_write_data(PA_8255,0 xfd);/*点亮黄色指示灯*/delay(10000);epp_write_data(PA_8255,0 xfb);/*点亮绿色指示灯*/delay(10000);epp_write_data(PA_8255,0 xfd);/*点亮黄色指示灯*/点亮实验板上的LED。在点亮指示灯的同时,要在LED上显示点亮时间,这个数字显示程序可直接调用上面介绍过的LED数字显示程序。epp_write_data(PA_8255,0 xfe);/*点亮红色指示灯*/for(i=60;i5;i-)/*点亮时间55秒*/displed(i,0);/*调用LED数字显示函数*/for(j=0;j100;j+)delay(1000);if(kbhit()exit(0);4源程序清单 参考指导书附录I-2。(二)A、B并行口实验1程序说明 该程序为通过操作与8255的B口相连的开关键,来控制与8255的A口相连的发光二极管的亮和灭。2编程思路启动8255读B口输入量EPP初始化开始数据处理结果输出到A口结束是否退出?YN3编程步骤 调用自定义头文件(同上)。EPP端口初始化(同上)。初始化8255(同上)。读取8255的B端口的数据 与8255的B端口相连接的是8个开关控制器,通过操作这些开关可以使与其相连的B端口呈现高电平“1”或者低电平“0”。epp_read_data(PB_8255,&data);向A端口写数据 epp_write_data(PA_8255,data)4源程序清单 参考实验指导书附录I-3。w 思考和练习 1交通灯实验中如何同时点亮多个指示灯。2.能否从A口输出C口的获取量。3在不同的工作方式下,考虑I/O口的外设连接。实验三 8253计数器原理及分频实验 w 实验目的1.熟悉8253定时器/计数器的功能及接口方法。2.熟悉8253的分频原理。3.掌握8253的分频应用编程。w 实验任务 1分析本实验主板上8253的硬件电路原理。2熟悉8253的工作原理后,编写出8253的 初始化程序。3编写出8253分频程序,观察实验显现。w 实验原理 8253的引脚 8253有3个独立的16位减计器通道,每一个通道有三条引线:CLK、GATE和OUT。CLK:输入时钟,8253规定,加在CLK引脚的输入时钟周期不能小于380ns。GATE:门控信号输入引脚。这是控制计数器工作的一个外部信号。当GATE引脚为低时,通常都是禁止计数器工作的;只有 GATE为高时,才允许计数器工作。OUT:输出引脚。当计数到“0”时,OUT 引脚上必然有输出,输出信号波形取决于工作方式。8253内部端口的选择及每个通道的读/写操作的选择如下表所示 RDWRA1A0寄存器选择和操作1000写入计数器 01001写入计数器 11010写入计数器 21011写入控制寄存器0100读计数器 00101读计数器 10110读计数器 20111无操作(3 态)8253的端口控制子D7D6D5D4D3D2D1D000 选择计数器001 选择计数器110 选择计数器211 非法选择00 计数器锁存命令01 只读/写最高有效字节 (高8位)10 只读/写最低有效字节 (低8位)11 先写最低有效字节 再写最高有效字节000 方式0001 方式1x10 方式2x11 方式3100 方式4101 方式50 二进制1 BCD 8253的工作方式和输出波形 方式功 能输 出 波 形0计 完 最 后 一 个 数 中 断写 入 计 数 值N后,经 过N+1个CLK脉 冲 输 出 变 高1硬 件 再 触 发 单 拍 脉 冲单 拍 脉 冲 的 宽 度 为N个CLK脉 冲2速 率 发 生 器每N个CLK脉 冲,输 出 一 个 宽 度 为CLK周 期 的 脉 冲3方 波 速 率 发 生 器写 入 N后,输 出1/2N个 CLK高 电 平,1/2N个 CLK低 电 平(N为 偶 数)(N+1)/2个 CLK高 电 平,(N-1)/2N个 CLK低 电 平(N为 奇 数)4软 件 触 发 选 通写 入N后,过N+1个CLK,输 出 一 个 宽 度 为1个CLK的 脉 冲5硬 件 触 发 选 通门 控 触 发 后,过N+1个CLK,输 出 一 个 宽 度 为1个CLK的 脉 冲实验电路组成原理框图 OUT0GATE0CLK0OUT1GATE1CLK1OUT2GATE2CLK2CSRDWRA0A1111091314151617182MHZfx2122232019DSDCDCLKQQVccD0.D71Y5RDWRA0A1VccPC3AO2FX自激振荡(自D/A输出)(外部输入 TTL)(实验主板振荡电路)指示灯电路D0D7VccVccVcc本实验共用到六个端口地址:23H(1Y1):输出口,8255的控制端口22H(1Y1):输出端口(PC3),发出计数器0的闸门信 号(0为关,1为开)A0H(1Y5):输入/输出端口,8253计数器0 的读写口A1H(1Y5):输入/输出端口,8253计数器1的读写口A3H(1Y5):输出端口,8253的控制寄存器的端口 w 编程与调试1.1.程序说明 对8253的计数器0和1写入初值,使计数器1输出一定频率的方波,从而使得与计数器1输出端相连接的指示灯循环亮和灭。2.编程思路 开始EPP初始化8255初始化8253初始化8255的PC3口置1结束3.编程步骤 调用自定义头文件(同上实验一)。EPP端口初始化(同上实验一)。初始化8255。8255的控制字应该定义C口的低位为输出口,工作方式为方式0。epp_write_data(CW_8255,0 x8a);PC3口置“0”,阻止脉冲输入。初始化8253前,要阻止脉冲输入,就要向PC3口置0,8255的C口的各个端口可以直接置位和复位。epp_write_data(CW_8255,0 x06);初始化8253。8253的计数器0、计数器1,工作方式分别为方式2和方式3,都是先写低字节再写高字节和BCD码计数。向计数器0置入初值是1000,向计数器1置入的初值也是1000。/*8253的0口初始化,写1000进去*/epp_write_data(CW_8253,0 x35);epp_write_data(CT0_8253,0 x00);epp_write_data(CT0_8253,0 x10);/*8253的1口初始化,设置时间为1s*/epp_write_data(CW_8253,0 x77);epp_write_data(CT1_8253,0 x00);epp_write_data(CT1_8253,0 x10);PC3置“1”,允许脉冲输入。epp_write_data(CW_8255,0X07);4.4.源程序清单 参考实验指导书附录I-4。w 思考和练习题 1向计数器0和计数器1写入不通的值,指示灯 会出现什么现象?2计数器0和1采用不同的工作方式,指示灯有 什么现象。38253的初始化要在一个脉冲的作用下才能完 成,这对实验中计数器输出信号的频率有没 有影响?实验四 8253计数器在测频中的应用 w 实验目的 1了解频率测量原理。2.掌握8253的应用编程。w 实验任务 1.进一步理解8253的硬件电路原理。2.根据测频原理,编写出8253的测频程序,并运行通过。w 实验原理 频率测量原理 所谓“频率”,就是周期性信号在单位时间变化的次数。若在一定时间间隔T内,计得这个周期信号得重复变化次数为N,则其频率可表达为:fN/T。电子计数器就是严格按照该定义进行测频得。其原理方框图和工作时间波形下图所示。脉冲形成电路闸门电子计数器门控电路时基信号发生器12543Fx 时基T12345 8253的工作原理。自激振荡电路 R2R1RwCf图中将滑动变阻器Rw左边的阻值设为Rx,令R=RxR1。当R=R2时,当R8)-0 xa1;/*寻找字符在汉字库中的区*/qu=(point_quwei&0 x00ff)-0 xa1;rec=(qu*94+wei)*32L;ASC码与相应区位码的转换 ASC码的所有符号全在区位码的第三区,位码的偏移量为0 x21H。ASC码在字库中的偏移量为:(区码*94+(位码-21H)*32L由此可编辑偏移量的源代码为:inter_code.ed0=charactercount;point_quwei=inter_code.ed;/*寻找字符咱汉字库中的位*/wei=(point_quwei&0 x00ff)-0 x21;qu=0 x03-0 x01;/*寻找字符在汉字库中的区*/rec=(qu*94+wei)*32L;LED点阵式显示器实验电路 行扫描码锁存器D0D0D7D700H0FHED0.ED3C2HC3HC1H锁存器锁存器锁存器驱动器驱动器驱动器ED0.ED7.w 本实验共用到的端口地址(地址跳线选择1Y6):C1H(Y0):输出口,行扫描码锁存器地址C2H(Y2):输出口,字形行码左锁存器地址C3H(Y3):输出口,字形行码右锁存器地址 w 编程与调试(一)简单的汉字显示 1程序说明 该程序为根据每个字符的点阵码(1616),直接在LED点阵上显示汉字“电子科大”。2编程思路 根 据 字 符 的 点 阵 码 点 亮 LED循 环 是 否 结 束开 始结 束N初 始 化EPP口Y3编程步骤 根据需要选择自定义头文件(同实验一)。EPP端口初始化(同实验一)。选择点亮行。要点亮某行的LED,先要向行地址端口写入行数,例如要点亮第一行:epp_write_out(ROW_DOT,0 x00);写入每列的点阵码。要点亮某行的LED,向行地址写入数据后,先向左边列写数据再向右边列写数据。例如我们要点亮第一行的第一、三、五、七、九、十一、十三、十五列:epp_write_out(ROW_DOT,0 x00);/*选择第几行*/epp_write_out(L_DOT,0 xaa);/*向左边列写入数据*/epp_write_out(H_DOT,0 xaa);/*向右边列写入数据*/4源程序清单 参考程序见实验指导书附录I-12。(二)在点阵上显示任意字符 1程序说明 点阵不仅可以显示汉字,任意字符它都可以显示。可以根据字库的存储原理,在字库中查找要显示字符的点阵码,再将这些点阵码写到的实验板子上,就可以在LED点阵上显示任意想要的字符。2编程思路 开始结束N初始化EPP接口根据字符种类获取字符的区位码循环结束?Y根据区位码读取字符的点阵码向实验板写入点阵码点亮LED点阵关闭文件打开文件读取将要显示的字符YN3编程步骤 根据需要选择自定义头文件(同实验一)。EPP端口初始化(同实验一)。输入字符显示速度。printf(Please input the speed within range of 50 and 1000 n);scanf(%d,&speed);打开文件。例如:当文件Hzk16j.dot和hz.txt都存放在F盘win98文件中的dot子文件中,则:fpk=fopen(F:win98dotHzk16j.dot,rb)fpt=fopen(F:win98dothz.txt,r);读取将要显示的字符。word=fgetc(fpt);获取字符的区位码。如果的字符是为数字或者特殊符号:inter_code.ed1=wordcount1;point_quwei=(unsigned short*)inter_code.ed;wei=(*point_quwei)&0 x00ff)-0 x21;qu=0 x03-0 x01;rec=qu*94+wei;addr_dot=rec*32L;如果字符是为汉字:inter_code.ed1=wordcount1;point_quwei=(unsigned short*)inter_code.ed;wei=(*point_quwei)&0 xff00)8)-0 xa1;qu=(*point_quwei)&0 x00ff)-0 xa1;rec=qu*94+wei;addr_dot=rec*32L;根据区位码读取字符的点阵码。/*将指针指向字库中将要显示的字符的点阵码的位置*/fseek(fpk,addr_dot,0);/*读取所要显示的字符的点阵码,并储存在数组font中*/fread(font,2,32,fpk);向实验板写入点阵码,点亮LED点阵。4.源程序清单 参考程序详见实验指导书附录I-13。w 思考题和练习 1.写出以下两个图形的点阵码。2编写一个程序,在点阵面板上显示以上两个图形。3思考:相邻两行的扫描时间间隔对显示效果的影响(特 别注意延长相邻两行的扫描时间间隔后的显示效果)。4编写显示字符(非汉字)的程序段。5编写一个程序,在点阵面板上连续显示多个字符。实验十实验十 基本并行输入基本并行输入/输出在键盘输出在键盘接口中的应用接口中的应用 w 实验目的 1.掌握矩阵键盘的接口驱动原理。2.掌握基本并行I/O和键盘的硬件接口方法。3.熟悉矩阵键盘的应用编程。w 实验任务 1.写出键盘扫描的选通码。2.编写出矩阵键盘识键、判键的程序段。w 矩阵式键盘 简介 键盘是由若干按键组合而成的,常采用矩阵式连接,称为矩阵式键盘,即每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当需要的键数比较多时,采用矩阵连接可以减少I/O口的占有。w 矩阵式键盘的编程 矩阵式键盘连接可分为编码式和非编码式两种。本键盘共24键,采用非编码式连接。其应用编程可分为三部分:判键、识键和键处理。判键 判键即指判断是否有键按下。确定矩阵式键盘上何键被按下采用一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。首先在程序启动时,把74LS273输出口(地址为1Y6C0H,作为行扫描输出)初始化到高电平(注意:列线状态由74LS244输入口(地址为1 Y6C7H)输入,常态下通过拉高电阻为高电平)。这样,所有的行输出都是高电平,列输入也都是高电平,代表无键按下。如果行线输出有低电平,一旦有键按下,则列线输入就会被拉低,这样,通过读入列线的状态就可得知是否有键按下。识键 识键即指在判断有键按下时,识别该键是哪个键。这可根据3行扫描输出线哪列为低,8列输入线哪一列为低,即由该按下键的行列位置,组合成代表的该键值。具体编程方法:依次将行线置为低电平,即在置某行线为低电平时,其它线为高电平。在确定某位行线置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键,进而确定该键的键值。下面给出一个具体的例子:输入值为0 xFE、输出值为0 xBF,则此键值为第一行第二列的交叉点的键值;若输入值为0 xFD,则此键值为第二行第八列的交叉点的键值。键处理 键处理即在识别到某键按下(由键值表示)后,作出不同的处理。在应用上,一般将键盘分为功能键和数字键(也可两者复用),功能键一般采用散转的办法,让程序执行不同的操作。实际上,键盘处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,这种复杂并不来自于设备的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再编写代码。本键盘共24个键,定义了功能键F1、F2、F3、F4;U1、U2、U3、U4、和4个方向键配合功能键使用,数字键定义了09和小数点,以及“回车/确认(CR)”共十二个。为了方便,使用者可以自己定义每个键的功能和相应的处理。w 矩阵式键盘实验电路 矩阵式键盘连接如下图:COHC7H锁存器接收器B0F1U1F3U3F4U4147258369。0CRB1B0B1B2B3B4B5B6B7D0-D7B2FEHFDHFBH7FHBFHDFHEFHF7HFBHFDHFEH输出位码输入键码F1F2F2F3123.U1U2U3U44560789CRw 键盘对应标志符w 键盘控制字 第一列第二列第三列第四列第五列第六列第七列第八列Y7=C7H0=本列有键按下1=本列无键按下 (每一位都相同定义)输入列码(读)D7 D6 D5 D4 D3 D2 D1 D0第三行第二行 第一行Y0=C0H0=扫描本行1=不扫描本行 (每一位都相同定义)输出行扫描码(写)w 本实验用到的端口地址(地址跳线都选1Y6):C0H(Y0):输出口,通过74LS273输出锁存器,控制 扫描键盘的行线。C7H(Y7):输人口,通过74LS244总线接收器,读取 扫描键盘的列线。w 编程与调试(一)程序说明 本实验是键盘和点阵综合实验。包含了矩阵式(非编码)键盘编程的三个部分:判键、识键和键处理,其中键处理(在点阵上显示其相应的内容)在此程序中只是为了说明编程思路。例如按下F1键,实验主板上的LED开始显示数字1,2,39999;在数字显示的过程中按下F2键,LED停止显示;按下数字键主板上的LED显示相应的数字,按下CR键程序退出。用户在自己编写程序的时候,可以自己定义键盘中按键的功能并加以控制相应的操作。(二)编程思路 开始结束初始化EPP接口读取按键值F1键响应数字键响应LED循环显示数字检测是否有 F2键按下YNLED上显示相应的数字CR键响应LED全部熄灭(三)编程步骤 1根据需要选择自定义头文件。2EPP端口初始化。3编写显示函数display()。当有F1键按下,则实验主板上的LED要循环显示0,1,29999,显示过程中还要判断是否有F2键按下。为方便起见,将这一部分功能写成函数(displed()的形式,当有F1键按下的时候,直接调用这个函数。函数内容详见本实验的参考程序。4判断是哪一行有键按下。根据键盘的行扫描原理,先将第一行置“0”,再读取74LS244的数据端;如果全部为高就将第二行置“0”,再读74LS244的数据端;如果全部为高就将第三行置“0”,再读取74LS244的数据端,依次类推,通过输出的行码和读入的列码中“0”的位置确定按下的键。while(keyz=0 xff)flage=1;keyz=epp_key(0 xfe);/*判断是否是第一行的按键按下*/if(keyz=0 xff)flage=2;keyz=epp_key(0 xfd);/*判断是否是第二行的按键按下*/if(keyz=0 xff)flage=3;keyz=epp_key(0 xfb);/*判断是否是第三行的按键按下*/5判断是哪个键按下,并执行相应的操作。在判断是哪一行有键按下时,再读74LS244的数据端,哪位显示低电平“0”,其对应的那列就有按键按下。知道了哪一行哪一列有键按下,就能确定是哪个键按下,例如当第一行的第一列显示低电平时,就说明有F1键按下。判断有F1键按下的语句:if(flage=1&keyz!=0 xff)/*第一行有键按下*/if(keyz=0 x7f)/*判断是否为第一行第一列有键按下*/printf(Keyname:x46x31n);display();/*调用显示函数*/return;在显示函数(display())中,要查询是否有F2键按下,如有则实验主板上LED全部熄灭。判断是否有F2键按下的语句为:epp_write_data(OUT_KEY,0 xfe);/*键盘第一行置“0”*/epp_read_data(IN_KEY,&keyz2);/*读取键盘列的状态*/if(keyz2=0 xbf&falge=1)/*判断是否有F2键按下*/epp_write_data(G_LED,0 xaa);/*如有F2键按下,led熄灭*epp_write_data(D_LED,0 xaa);当有数字键按下时,在主板的LED上直接显示相应的数字,此时直接调用头文件(displed.h)中的LED显示函数(displed())。例如当有“5”键按下时:if(flage=2&keyz!=0 xff)/*第二行有键按下*/if(keyz=0 xfb)/*判断是否为第二行第六列有键按下*/printf(Keyname:x35n);displed(5);(四)源程序清单 参考程序见实验指导书附录I-14。w思考和练习题 1去掉去抖延时时间,对按键的实际效果有何影响?2写出F1F4的键值表。3你对本实验的体会,有何收获。4自己编写用按键控制的程序实验,例如当有键盘相应时在点阵上显示相应的字符,参考程序可见实验指导书附录I-15。实验十一实验十一 82508250串口通信串口通信 w 实验目的 1.掌握8250 的工作原理及应用。2.了解串行通信的RS232协议及电平转换接口芯片。3.完成对8250串口通信的程序设计。w 实验任务 1熟悉8250内部寄存器的设置,编写初始化程序,分析它们对串行通信的管理机能和工作过程。2在分析实验电路的基础上,编写PC机和实验平台上的8250的串行通信实验程序,并在实验主板上运行成功。3编写PC机间通过实验板串行通信程序。w 串行通信协议 基本的通信方式分为并行通信和串行通信两种,串行通信又分为同步和异步两种方式,本实验采用的是RS-232C异步串行通信方式。为发送和接收一个信息字符所需的一切数据和控制信息都应该在单根数据线上传送,每次传一位,这就需要一个格式协议。逻辑位1逻辑位0起始位数据位奇偶位停止位异步通信的格式如图所示。每幀信息由四部分组成:1起始位,规定为低电平“0”。258位数据位,它紧跟在起始位后面,是要传送的有效信息。规定 从低位至高位依次传送。301位奇偶校验位。41位、1.5位或2位停止位,规定为高电平。w 接口信号 实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通信中一般只使用3-9条信号线。RS-232-C最常用的9条引线的信号内容见下表所示。引 脚 序 号信 号 名 称符 号流 向功 能2发 送 数 据TXDDTE?DCEDTE发 送 串 行 数 据3接 收 数 据RXDDTE?DCEDTE接 收 串 行 数 据4请 求 发 送RTSDTE?DCEDTE请 求DCE将 线 路 切 换 到 发 送 方 式5允 许 发 送CTSDTE?DCEDCE告 诉DTE线 路 已 接 通 可 以 发 送 数 据6数 据 设 备 准 备 好DSRDTE?DCEDCE准 备 好7信 号 地 GND信 号 公 共 地8载 波 检 测DCDDTE?DCE表 示DCE接 收 到 远 程 载 波20数 据 终 端 准 备 好DTRDTE?DCEDTE准 备 好22振 铃 指 示RIDTE?DCE表 示DCE与 线 路 接 通,出 现 振 铃w 接口的电气特性 在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1”为-5-15V;逻辑“0”为+5+15V。噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1”。w 接口适配器 常PC机均配有两个串行接口,分别为COM1和COM2,通过一个25芯和一个9芯的D型连接器连接(也有些微机采用两个9芯D型连接器)。9芯D型连接器外型结构示意图及其信号定义如图所示。DCDRXDTXDDTRGNDDSRRTSCTSRI123456789引脚序号123456789信号名称载波检测接收数据发送数据数据终端准备好信号地数据设备准备好请求发送允许发送振铃指示符号DCDRXTTXDDTRGNDDSRRTSCTSRI 本实验平台配备了一个5芯连接器(另一头为9芯D型,可与PC机连接),连接图如下图所示。实验板RS232插座微机RS232插座RXDTXDDSRDTRGNDRXDTXDDSRDTRGND主wRS-232电平转换接口芯片的应用 RS232接口采用的是负逻辑,其逻辑电平与TTL的电平不同,因此,必须进行电平转换。常用的MAX232即为单电源工作(内含电源变换)的双通道RS232C驱动/接收器。w 8250的引脚 MRD0D1D2D3D4D5D6D7ADSDISTRDISTRDOSTRDOSTRDDISA0A1A2CS0CS1CS21716915343124301011333238373639XTAL2XTAL1RCLKBAUDOUTOUT1OUT2CSOUTINTRPTSINSOUTDTRRTSRLSDDSRCTSRIw 实验电路 MRD0D1D7DISTRDOSTRA0A1A2CS0CS1CS2XTAL1OUT1OUT2INTRPTRTSCTSSOUTDTRSINDSRT1inT2iNR1outR2outT1outT2outR1inR2inTC232TXTDTRRXDDSRVCCINTnRESETDB0DB1DB7RDWRA0A1A2VCCA825082501.8432MHz晶振w 实验主板上8250的各寄存器地址如下:E0H:8250的片选端 选通地址E3H:线路控制寄存器地址E5H:线路状态寄存器地址E0H:DLAB=0;接受发送缓冲寄存器地址E1H:DLAB=0;中断允许寄存器地址E2H:中断识别寄存器地址E4H:调制解调器控制寄存器地址E6H:调制解调器状态寄存器地址E0H:DLAB=1;除数寄存器低字节地址E1H:DLAB=1;除数寄存器高字节地3f8H:PC机上COM1的地址 w 编程与调试(一)实验板上自发自收串口通讯1程序说明 实验前将串口实验板子上的RXD和TXD直接相连。程序中从键盘输入一个数字,经过实验板上的8250自发自收,在PC机的CRT上又将这个数字显示出来 2编程思路 读 线 路 状 态 寄 存 器EPP接 口、8250初 始 化YN发 送 数 据置 DTR 1开 始发 送 保 持 器 空?读 线 路 状 态 寄 存 器读 线 路 状 态 寄 存 器接 收 数 据 就 绪?N读 取 数 据 并 显 示结 束Y读 MSR,检 测DSR=1?NY3编程步骤 调用自定义头文件。初始化EPP端口。8250初始化epp_write_data(LCR,0 x80);/*允许访问除数寄存器*/epp_write_data(DLL,0 x0c);/*向除数寄存器的低字节写0 x0c*/epp_write_data(DLH,0 x00);/*向除数寄存器的高字节写0 x00*/epp_write_data(LCR,0 x0f);/*设定串行通讯的数据格式*/epp_write_data(IER,0 x00);/*屏蔽多有中断*/发送数据 do epp_resd_data(MSR,&msr);/*判断数据中断是否准备就绪*/msr=msr&0 x20;while(msr=0);do delay(20000);/*为了保证字符被接受,加适当的延时*/epp_resd_data(LSR,lsr);/*读通信线状态寄存器的值*/lsr=lsr&0 x20;while(lsr=0);epp_resd_data(TBR,n);/*检测若发送寄存器空,则发送*/接受数据/*设置调制解调控制寄存器,令DTR=1,表示准备好接收数据*/epp_write_data(MCR,0 x03);Do epp_resd_data(LSR,&lsr);/*读通信线状态寄存器的值*/lsr=lsr&0 x01;while(lsr=0);epp_resd_data(RBR,&re_chr);/*读接收缓冲器的值*/将读取值显示在PC机 的CRT上printf(%5d,re_chr);4.源程序清单参考程序详见实验指导书附录I-16。(二)PC机串口通讯 1程序说明 用实验箱自带的串口通讯线将实验板与另外PC机的串口(COM1)相连接,实现PC机间的通讯。实验前选择发送或者接收数据。选择发送数据,就在本PC机上输入数据,在另外的PC机上显示已经所发送的数据;选择接收数据,则在本机接收对方发送过来的数据,并将其显示在本PC机的CRT上。在两台不通的PC机之间通讯时,要将传送方和接受方的数据格式设为相同。2编程思路 EPP接口、8250初始化置 DTR1开始读线路状态寄存器接收数据就绪?N读取数据并显示结束Y选择接受或发送读线路状态寄存器YN发送数据发送保持器空?读线路状态寄存器读MSR,检测DSR=1?NY发送接受结束3编程步骤 头文件的调用,EPP端口的初始化都同上(自发自收串口通讯实验)。8250的初始化。初始化的理论同上,所不同的是,因是在不同PC机之间通过串口(COM1)和实验板的通讯,其端口地址都应在原来的地址基础上加上PC机的串口COM1的地址base(0 x3f8)。epp_write_data(base+LCR,0 x80);/*允许访问除数寄存器*/epp_write_data(base+DLL,0 x0c);/*向除数寄存器的低字节写0 x0c*/epp_write_data(base+DLH,0 x00);/*向除数寄存器的高字节写入0 x00*/epp_write_data(base+LCR,0 x0f);/*设定串行通讯的数据格式*/epp_write_data(base+IER,0 x00);/*屏蔽多有中断*/选择发送还是接受。printf(nPlease enter s or r to choose send or receive!);select=getch();择s执行发送函数,选择r执行接收函数。4源程序清单 参考程序详见实验指导书附录I-17。w思考题 1在8250的收发数实验中,如果不设置调制解调器寄存器,会出现 什么现象?为什么?2在8250的收发数实验中,当发生接收数据错误时,应如何处理?试编写一段数据出错处理子程序。3.要采用中断方式应怎样编程?4.为了保证PC机发送到实验板上的数据完整的被接收,应怎样操作?5考虑在实验板内或PC机间如何发送多个数据或者连续的数据,程序 应该怎么写?实验十二实验十二 电子称重实验电子称重实验 w 实验目的 1了解传感器的原理。2熟悉利用实验主板的做实验。3进一步理解A/D7109的工作原理。w 实验任务1根据传感器的原理,分析如何由测得电压计算砝码 重量。2利用实验主板上的A/D转换器7109,编写出测量砝码 重量的实验程序。w 实验原理w 金属的电阻应变效应 当金属丝在外力作用下发生机械变形时,其电阻值将发生变化,这种现象称为金属的电阻应变效应设有一根长度为l、截面积为S、电阻率为的金属丝,在未受力时,原始电阻为:当金属电阻丝受到轴向拉力F作用时,其长度L伸长,横截面积S相应减小,电阻率因晶格变化等因素的影响也要改变,故引起电阻值R的变化。w 应变片测量原理 各种电阻应变片的结构大体相同,用应变片测量受力应变时,将应变片粘贴于被测对象表面上。在外力作用下,被测对象表面产生微小机械变形时,应变片敏感栅也随同变形,其电阻值发生相应变化。应变片应用很广泛,是由于有如下优点:测量应变的灵敏度和精确度高,性能稳定、可靠,可测12,误差小于1。应变片尺寸小、重量轻、结构简单、使用方便、响应速度快。测量时对被测件的工作状态和应力分布影响较小。既可用于静态测量,又可用于动态测量。测量范围大。既可测量弹性变形,也可测量塑性变形。变形范围可从12至20。适应性强。可在高温、超低温、高压、水下、强磁场以及核辐射等恶劣环境下使用。便于多点测量、远距离测量和遥测。w 直流电桥的工作原理 R1R2R3R4RLILU平衡条件为:w 测量电路原理 REFINHINLMODESTATUSCE/LOADORPOLB9B12B1B8D0D71Y1(PC2)1Y1(PC4)RD1Y41Y3ICL 7109.测量放大电路V+V-OIOO+5V-5V2.048V基准电压04.096V2 运放26220181940283534212223363.579MHzRUN/HOLDLBENHBEN跳线选择被测电压AIN+D0.D7D0.D5w 电压与力的关系 本实验所用的压力传感器,加在它上的砝码质量和输出电压成正比例线性关系。在传感器两端加+12V电压,加入砝码质量M为5千克时,其输出电压V0值为12mv。其比例系数k为:根据此比例系数,在传感器上加上不同质量M的砝码,就有不同的电压输出V:w 编程与调试 1.程序说明 实验前将电子秤的红色端接到电源正极(12V)、黑色端接到电源负极
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!