单片机创新实验模板测控 1.docx
《单片机创新实验模板测控 1.docx》由会员分享,可在线阅读,更多相关《单片机创新实验模板测控 1.docx(15页珍藏版)》请在冰豆网上搜索。
单片机创新实验模板测控1
创新实验报告
课程名称:
单片机开发与应用创新实验
设计题目:
七彩炫丽心形彩灯
专业班级:
测控13-2电气13-2
学生姓名:
徐豪辉刘武全刘小波
指导教师:
刘霞段志伟
开课院系:
电气信息工程学院测控技术与仪器系
实验中心名称:
测控创新实验中心
2015年5月10日
一、实验目的
1、掌握KeilC软件的使用方法;
2、掌握程序下载及调试方法;
3、掌握IO口控制发光二极管亮灭的方法;
4、熟悉C51IO口控制程序、延时程序、函数等的编写方法。
二、设计任务
设计一款心形流水灯,可按照不同顺序点亮和闪烁。
三、设计要求
1、基本要求
(1)点亮P0.0、P1.0、P2.0、P3.0发光管.
(2)让P1.0发光管闪烁
(3)设计P1口流水灯效果
(4)设计心形流水灯效果
2、扩展要求
(1)顺时针依次点亮;
(2)逆时针依次点亮;
(3)从中心依次左右点亮。
四、设计方案
图4-1系统硬件方框图
五、硬件电路设计
1、电源电路
2、单片机晶振与复位电路
(1)STC单片机简介
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
(2)电路连接
3、程序下载电路
5、发光二极管驱动电路
六、软件设计
1、主程序设计
图6-1主程序流程图
2、延时程序设计
七、系统调试(系统连接情况说明、调试步骤、遇到问题及解决方法)
系统连接时先将写好的程序通过STC-ISP程序导入到89c52型单片机中,之后按开关使单片机按照所导入的程序运行,外在表示为单片机上的灯泡以一定的顺序按程序亮起与熄灭。
调试:
当单片机上的灯泡不是按照所预想的那个亮起,将原程序打开,将原程序顺一遍,找出错诶点经行改正,之后将程序导入到单片机中,若还是错误,则对程序经行逐一分析,并将改正后的程序导入到单片机中经行验证直至正确。
遇到的问题:
在经行顺时针和逆时针亮起时,有P17,P27,P37,P00四个孔在转一圈之后依旧闪烁
解决方法:
打开原程序,发现在P0端口循环的程序中在最后忘记了将最后一个灯熄灭,即P0=0xff,同理,在P1,P2,P3端口循环的程序中也有在最后有个灯未熄灭的情况,同理的解决方法。
八、实物展示(实物图、实物连线图、工作效果图)
单片机实物图
单个亮起:
灯泡全亮起:
顺时针:
逆时针:
中间开花:
九、程序代码
单个亮起:
#include
sbitp=P2^0;
main()
{
while
(1)
{
p=0;
}
}
四个灯亮起
#include
sbitc1=P0^0;
sbitc2=P1^0;
sbitc3=P2^0;
sbitc4=P3^0;
main()
{
while
(1)
{
c1=c2=c3=c4=0;
}
}
延时程序
voiddelay(uinty)
{
uintm,n;
for(m=0;mfor(n=112;n>0;n--);
}
逆时针与顺时针闪烁
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharcodetable1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchari;
voiddelay(uchart);
voidmain()
{
uchari;
while
(1)
{
///逆时针流
for(i=0;i<8;i++)
{
P1=table0[i];
delay(200);
}
P1=0xff;
for(i=0;i<8;i++)
{
P3=table0[i];
delay(200);
}
P3=0xff;
for(i=0;i<8;i++)
{
P2=table0[i];
delay(200);
}
P2=0xff;
for(i=0;i<8;i++)
{
P0=table1[i];
delay(200);
}
P0=0xff;
///顺时针流
for(i=0;i<8;i++)
{
P0=table0[i];
delay(200);
}
P0=0xff;
for(i=0;i<8;i++)
{
P2=table1[i];
delay(200);
}
P2=0xff;
for(i=0;i<8;i++)
{
P3=table1[i];
delay(200);
}
P3=0xff;
for(i=0;i<8;i++)
{
P1=table1[i];
delay(200);
}
P1=0xff;
}
}
voiddelay(uinty)
{
uintm,n;
for(m=0;mfor(n=112;n>0;n--);
}
中间开花
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable0[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
ucharcodetable1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
ucharcodetable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
ucharcodetable3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
uchari;
voiddelay(uchart);
voidmain()
{
uchari;
while
(1)
{
for(i=0;i<8;i++)
{
P1=table0[i];
P0=table0[i];
delay(200);
}
for(i=0;i<8;i++)
{
P3=table0[i];
P2=table1[i];
delay(200);
}
for(i=0;i<8;i++)
{
P1=table2[i];
P0=table2[i];
delay(200);
}
for(i=0;i<8;i++)
{
P3=table2[i];
P2=table3[i];
delay(200);
}
}
}
voiddelay(uinty)//延时子函数
{
uintm,n;
for(m=0;mfor(n=112;n>0;n--);
}
东北石油大学创新实验成绩评价表
课程名称
单片机开发与应用创新实验
题目名称
七彩炫丽心形彩灯
学生姓名
学号
指导教
师姓名
刘霞
段志伟
职称
教授
副教授
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的实验内容,工作努力,遵守纪律,动手能力强,出勤率高,工作作风严谨,善于与他人合作。
40
2
实验报告质量
实验报告内容充实,原理阐述清楚,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
实验验完成
情况
能完成基本实验内容和扩充实验内容。
20
总分
评语:
指导教师:
年月日