单片机实习报告Word格式文档下载.docx

上传人:b****6 文档编号:19570534 上传时间:2023-01-07 格式:DOCX 页数:19 大小:2.77MB
下载 相关 举报
单片机实习报告Word格式文档下载.docx_第1页
第1页 / 共19页
单片机实习报告Word格式文档下载.docx_第2页
第2页 / 共19页
单片机实习报告Word格式文档下载.docx_第3页
第3页 / 共19页
单片机实习报告Word格式文档下载.docx_第4页
第4页 / 共19页
单片机实习报告Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机实习报告Word格式文档下载.docx

《单片机实习报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实习报告Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

单片机实习报告Word格式文档下载.docx

王超,龚馨,李帅鹏,张宏,杨仁刚

题目名称

音乐灯设计

题目内容

音符对应简码数字1-8,事先编写一组音符,然后每次取出一个音符,根据音符数值对应亮灯,例如:

音符为1亮灯L1,音符为2亮灯L1~L2,音符为3,亮灯L1~L3,依此类推。

(每次亮灯顺序为L1先亮,然后L2,然后L3……间隔时间应低于0.2秒,每个音符的灯组亮完后应全部熄灭)

设备

电脑一台,led灯八只,导线8条,仿真器一个

设计步骤

1、先根据题目要求的内容画出电路连接图

2、根据题目要求构思出程序流程并画出程序流程图

3、根据程序流程图编写程序并编译

4、按照电路连接图将电路连接出来

5、使用仿真器连入电路并运行

6、观察运行效果、记录出现问题

7、分析问题、修改程序,再次调试以优化出最佳程序

硬件设计图

流程图

代码

设计记录

#include<

reg51.h>

unsignedchartable[]={0x03,0x05,0x01,0x07,0x04,0x03,0x08,0x02,0x06,0x04};

voiddelay()

{unsignedchari,j;

for(i=0;

i<

200;

i++)

for(j=0;

j<

100;

j++);

}

voidmain()

{

unsignedcharw=0x00;

while

(1)

{

P1=0xff;

delay();

P1=0xfe;

if(table[w]==0x01)break;

P1=0xfc;

if(table[w]==0x02)break;

P1=0xf8;

if(table[w]==0x03)break;

P1=0xf0;

if(table[w]==0x04)break;

P1=0xe0;

if(table[w]==0x05)break;

P1=0xc0;

if(table[w]==0x06)break;

P1=0x80;

if(table[w]==0x07)break;

P1=0x00;

if(table[w]==0x08)break;

w++;

if(w==0x0a)

w=0X00;

现象及问题

分析

每次只能显示前几个音符效果,检查发现为数组部分编译时出现错误,经多次试验后发现数组内使用16进制数时错误消失

延时略长,与真实效果相差,通过修改延时函数的外层循环次数改正

设计总结

本题目设计中,原本是的设计思路是使用2个数组,用其中一个数组去调用另一个显示,后来在程序编写过程中发现无法实现,随即重新改为现在所用方式

本次设计中遇到的比较麻烦的问题就是数组的调用,虽然在百般尝试之下让实验做成功了,但由于编译过程让程序运行出错还是让人难以解决

关于单片机的

收获体会

在编写程序时总会有一些问题出现,但这些都能找到解决,但是调试时出现的问题却让人有些难以解决,有时候预期效果并不好实现

问题及建议

仿真软件在编译程序时总会出现一些问题,难以解决

8x8led点阵显示

效果要求:

在一个8×

8的LED点阵区域,显示符号“◆”,画面无明显闪烁为宜。

8X8点阵显示器,导线16根,电脑,51仿真器

unsignedchari,j;

voiddelay(j)

j;

i++);

P1=0x82;

P3=0xef;

delay(200);

//显示第1,7排效果

P1=0x00;

P3=0xff;

delay(10);

//清屏

P1=0x44;

P3=0xc7;

//显示第2、6排效果

P1=0x28;

P3=0x83;

显示第3、5排效果

P3=0xff;

//清屏

P1=0x10;

P3=0x01;

//显示第4排效果

呈无规则显示效果,检查为点阵字模计算时未将字模软件显示方式设置好,重新设置后计算后正常

有微弱闪烁现象,初始延时设计刚好使闪烁频率达到24hz,太过于理想化,将延时改短后闪烁消失

由于之前做过16x16点阵显示的项目,初始设计时设计为使用数组,再调用显示。

编写程序时发现要求显示图片较为简单,使用数组再调用增加了程序结构,显得较为复杂,于是改为相同内容排同时显示,再轮流显示不同内容排

在本次试验中再次熟悉了点阵显示器的使用方法及原理,

对kile的使用还不是很熟练,关于单片机的c语言了解与积累不够,编写程序时显得有些生疏

倒计时设计

设计一个倒计时装置,倒计时时间默认99秒,使用LED灯显示倒计时效果,99秒显示10011001,98秒显示10011000,依此类推。

计时归0的时候,L1~L8同时闪烁3轮,然后重新开始倒计时。

电脑,led灯8只,导线8根,51仿真器1台

inttable[]={0x6f,0x7f,0x8f,0x9f,0xaf,0xbf,0xcf,0xdf,0xef,0xff};

inttble[]={0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};

unsignedchart01s,t10s,t0ms,t2000ms;

unsignedchari;

voiddelay5ms()

{TH1=0x3c;

TL1=0xb0;

TR1=1;

while(!

TF1);

TF1=0;

voiddelay1s()

{for(i=0;

delay5ms();

voidmain()

{t01s=0x00,t10s=0x00,

t2000ms=0xa0;

t0ms=0x01;

TMOD=0X01;

while

(1)

{delay5ms();

t2000ms--;

if(t2000ms==0x00)

{t2000ms=0xa0;

t01s++;

if(t01s==0x0a)

{t01s=0x00;

t10s++;

if(t01s==0x0a,t10s==0x0a)

{P1=0x00;

delay1s();

P1=0x00;

t01s=0x00,t10s=0x00,

t2000ms=0x64;

}if(t10s==0x0a)

{t10s=0x00;

}

}}

t0ms++;

if(t0ms==0x03)

{t0ms=0x01;

P1=0xff;

switch(t0ms)

{case0x01:

{P1=tble[t01s];

}break;

case0x02:

{P1=table[t10s];

倒计时实际时间大于预期时间,发现为计算延时参数时未计算程序执行时所需时间,导致延时效果与预期效果不同,对照减少延时时间后正常

本次设计延用了以前简易秒表设计的延时部分设计理念,由于是倒计时,初始计划为修改计数部分,由原来的加法计数改为减法计数,后发现运行无法显示0效果,改回加法计数,反向显示来实现题目要求效果

在设计程序时并非内部所有程序都与设计要求相同,只要组合最终效果能够达到题目各项要求即可

实际效果总是达不到预期效果

记分牌设计

用两组LED灯组表示计数效果,每组4灯,表示范围0~15。

开关A控制A组灯,每开关一次,A组计数值加1;

开关B控制B组灯,每开关一次,B组计数值加1。

当其中任何一组灯组计数值达到15时,该组4个LED全亮并开始闪烁,另一组全灭,持续一段时间后复位,重新开始计数。

电脑,led灯8只,导线10根,开关2个,51仿真器

unsignedinti=0,l=0,w,y;

charcodetable1[]=

{0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0};

charcodetable2[]=

{0xff,0xef,0xdf,0xcf,0xbf,0xaf,0x9f,0x8f,0x7f,0x6f,0x5f,0x4f,0x3f,0x2f,0x1f,0x0f};

{

unsignedcharj,k;

for(k=0;

k<

k++)

for(j=0;

255;

voiddelay1()

unsignedintt;

for(t=0;

t<

t++);

voidint_0()interrupt0

{i++;

if(i==15){for(w=0;

w<

3;

w++)

{P1=0xf0;

}i=0;

l=0;

P1=table1[i];

voidint_2()interrupt2

{l++;

if(l==15){for(y=0;

y<

y++)

{P1=0x0f;

P1=0x0f;

P1=table2[l];

voidmain(){

EA=1;

EX0=1;

IT0=1;

EX1=1;

IT1=1;

TMOD=0x01;

while

(1){

delay1();

P1=table2[l];

灯光效果有闪烁情况,由于采用频闪方式显示,且初始设计延时出现误差,显示效果不稳定,将基本延时改小后正常。

拨动开关时,输出效果不稳定,容易触发多次效果,检查后发现为硬件自身接触不稳定,改为单脉冲开关后稍有改善

本题设计最大的问题在于如何使开关能够完美达到题目要求的效果,普通的读开关不能做到每开关一次计数加一的效果,于是采用了下降沿方式触发的中断来实现,每一次中断计数加一

在本次设计中使用了中断技术,让我们对中断的原理,及使用都有了更加深刻的理解

试验箱上有些原件并不标准,容易产生一些误差

《单片机课程设计》日志

自动化工程系专业:

电气自动化年(班)级:

1331姓名:

罗欢学号:

周次

设计日期

设计内容

个人设计情况记录

20

2015-1-12

音乐灯程序调试修改

数组调用出现错误,经多次试验后发现数组内使用16进制数时错误消失

2015-1-13

8x8点阵显示程序调试修改

点阵字模计算时将显示方式弄错了,呈无规则显示效果,重新计算后正常

初始延时设计刚好使闪烁频率达到24hz,有微弱闪烁现象,将延时改短后闪烁消失

2014-1-14

倒计时程序调试修改

原延时函数延时超过正常计时,发现为未计算程序执行时所需时间,导致延时效果与预期效果不同,对照减少延时时间后正常

2014-1-15

记分牌调试修改

由于有两组灯光信号需要同时显示,故采用频闪方式显示,初始设计延时出现误差,显示效果不稳定,将原延时改小后正常。

初始设计为使用拨键开关触发中断以达到计时效果,调试时发现拨键开关拨动时输出不稳定,容易触发多次效果,后改为单脉冲开关

2014-1-16

独立拓展点阵程序,使用16x16点阵显示器显示“单片机”

未发现驱动端P1与pa的端口顺序是相反的,显示时下半部分倒过来了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1