微机原理综实验报告.doc

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理综实验报告

实验报告 课程名称: 微机原理及其应用 指导老师: 徐习东 成绩: 实验名称: 综合实验 实验类型: 同组学生姓名: 目录 一、实验内容与要求 2 二、实验原理 2 1、数码管显示原理 2 2、键盘接口 4 3、脉冲宽度调制(PWM) 5 4、LED绿灯的控制: 5 5、红灯的控制: 6 6、模数转换器ADC 7 三、部分功能程序设计思路 8 1、主程序设计流程图 8 2、时间自增变化程序设计流程图 9 1)设计思路一 9 2)设计思路二 11 3、调时程序设计流程图 13 1)设计思路一 13 2)设计思路二 15 四、程序设计与分析 18 五、实验思考 39 一、实验1、利用上的八段数码管设计显示具有“、分、秒”数字钟。用按键控制时分秒的增减。 用按键直接输入数字改变时钟显示数字。4、用按键选择功能切换 5、在八段数码管上显示电压值。 6 输入电压U时,第一盏灯亮度占空比为:U/3 第六盏灯亮度占空比为:(3-U)/3 其余四盏灯亮度按等差方式排列。 7、扩展功能:改变时钟数字值时,按下键值的二进制数在红灯上显示出来。红灯。8、通过实验,掌握直接控制外围设备的方法。 9、发光二极管与绿灯)事件管理器()模数转换器()的控制编程方法。 1、数码管显示原理 : 图1 扫描式键盘数码管接口 DSP的SPI控制串转并芯片如图 图2 SPI串转并 8个串转并芯片级联在一起,级联多口控制,由锁存信号控制暂态余辉;写入一个字符会引起一串变化。 为控制8个LED,建立8个元素的显示数组;如果要改显示内容,先改显示数组,然后再调用循环传送程序。 2、键盘接口 图3 键盘接口 其中两个键盘控制芯片对应键盘控制输入片选控制,:/名称 74LVC138译码器控制输入片选输入片选输入片选输入片选LCD CSA片选 1 0 0 LCD CSB片选 1 0 1 表1 片选控制 外部扩展片选电路如下: 图4 外部扩展片选电路 3、脉冲宽度调制(PWM) 固定幅值、周期,通过改变占空比使得波形能量与要求的波形基本相等。脉宽调制可以直接从DSP输出。 事件管理器(EV)的比较单元又称为全比较/PWM单元,功能主要用来产生PWM波形,每一个比较单元可以产生一对(两路)互补的PWM波,每一路PWM波可以控制一个LED的亮灭状态。 4、ED绿灯的控制: 共阳极发光二极管原理图如下 图5发光二极管原理图 通过GPIO控制发光二极管DS20~DS25的亮灭。当GPIOFx=0时,对应的发光二极管被点亮。 GPIO端口:GPIOF13~GPIOF8 5、红灯的控制: LED接口如图: 图6 红灯LED接口 1)、一端接电源高电平红灯的控制: 2)、一端接锁存器的输出; 3)、由两个锁存器控制16盏灯; 两个锁存器: 1)、输入数据为GPIOB8 ~GPIOB15; 2)、锁存信号由GPIOE0 ~GPIOE2 控制 ; 点灯控制: 1)、先确定第几组,第几盏; 2)、GPIOE输出组号,GPIOB输出位号; 3)、延时,GPIOE输出锁存信号 6、模数转换器ADC 模数转换器ADC可以将模拟量转换为数字 由于ADC结果寄存器的数字量位于高,低4位,当读取中的转换结果需要将其右移四位,计算当输入电压为右移四位,x0FFF,即4095。根据线性转换关系数字量为: 图7 ADC输入引脚 三、功能程序 1、主程序流程图 2、时间自增变化程序设计图 1思路一: 对应功能程序段:interrupt void cpu_timer0_isr(void) { CpuTimer0.InterruptCount++; if(CpuTimer0.InterruptCount==10) //当寄存器为10时,即0.1s*10=1s { Sec++; //秒加1 CpuTimer0.InterruptCount=0; //寄存器清零 if(Sec==60) //当秒增加到60时,分加1,秒清零 { Min++; Sec=0; if(Min==60) //当分加到60时,小时加1,分清零 { Hor++; Min=0; if(Hor==24) //当小时加到24时,小时清零

文档评论(0)

linjuanrong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档