- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)