单片机课程设计报告模板Word格式.docx

上传人:b****6 文档编号:20094974 上传时间:2023-01-16 格式:DOCX 页数:19 大小:91.12KB
下载 相关 举报
单片机课程设计报告模板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、电子琴部分

由于市场上有许多的电子琴,从而想用单片机来实现电子琴的功能和音乐盒,通过7个按键代替市场上电子琴的按键,最后一个按键用来播放音乐。

音乐是由不同的频率所产生的声音,通过控制时间来给喇叭送电平,从而使喇叭发出不同的响声,在通过查找歌曲的音符,做成一个音符表。

通过按按键在由程序控制表的取的次序从而让喇叭发播放音乐。

通过滑动变阻器控制喇叭声音大小。

2、测温部分

测温部分是基于DS18B20温度传感器的探测,然后实时传输给数码显示器。

并且设有温度报警系统。

当外界温度高于50°

或者低于-20°

时状态指示灯亮,蜂鸣器发出警报。

3、计数部分

RR0加一,RR1减一,RR2加十,RR减十.

第三部分电路设计与参数选择

一、单片机最小系统电路设计和元件的选择

第四部分软件设计部分

一、<

主程序>

#include<

reg51.h>

hardware.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharTempTH0,TempTL0,bian;

//临时的Th0和Tl0,修改定时器中断时间用的变量

ucharYinFu,JiePai,shu,shu1,TimeSec=10;

staticuchartemp;

ucharcodeTabMusic[7][340];

bitFlag,ZF;

//0:

电子琴,1:

音乐盒

ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};

voiddelay5(uchar);

bitinit_ds18b20(void);

ucharreadbyte(void);

voidwritebyte(uchar);

ucharretemp(void);

voidwenxx(void);

voidDelay05ms(ucharDelay05msData);

voidDelay10ms(ucharDelay10msData);

voidFunKeyScan(void);

//电子琴程序

voidFunPlay(void);

//音乐盒播放程序

voidDisplay(uchartemp);

voidxianshi(void);

voidmain(void)

{

uchari;

TempTH0=0x00;

TempTL0=0x00;

TH0=TempTH0;

TL0=TempTL0;

TMOD=0x01;

TR0=0;

ET0=1;

EX0=1;

//0

EX1=1;

//1

IT0=1;

PX1=1;

EA=1;

ABC=0x00;

temp=retemp();

Delay05ms

(1);

while

(1)

{

while(shu==2)

xianshi();

while(shu==1)

{TR0=0;

if(i==0)temp=retemp();

if(++i==200)i=0;

Display(temp);

wenxx();

}

while(shu==0)

{

if(Flag==0)//电子琴

if(PKey!

=0xff)//发现按键按下

{

FunKeyScan();

//检测键盘并修改定时时间

TR0=1;

//发出声音

else//如果发现按键弹起,则关闭声音

{

TR0=0;

shu1=bian+1;

Display(shu1);

}

else//音乐盒功能

i=0;

while((TabMusic[bian][i]!

=255)&

&

(shu==0))//检查是否到了歌曲结束

{

YinFu=TabMusic[bian][i++];

//取得音符,

JiePai=TabMusic[bian][i++];

//取得节拍

FunPlay();

//根据音符控制定时器的频率

Delay10ms(JiePai*30);

//根据节拍控制频率的持续时间

if(Flag==0)

break;

//如果发现不是音乐盒状态,退出

}

Flag=0;

//自动播放结束,则自动转为电子琴状态

}

}

voidDisplay(uchartemp)

if(temp>

9)

wen=seg[temp/10];

//输出十位

dian1=1;

Delay05ms

(2);

//延时5ms

dian1=0;

wen=0xff;

}

dian2=1;

wen=seg[temp%10];

//输出个位

dian2=0;

/*--------------精确延时5us子程序---------*/

voiddelay5(ucharn)

do

_nop_();

n--;

while(n);

/*--------------初始化函数--------------------*/

bitinit_ds18b20(void)//检测到DS18B20返回0没检测到DS18B20则返回1

DQ=1;

DQ=0;

delay5(100);

//延时500US

delay5(12);

//延时60US

if(DQ==0)//检测到DS18B20则为0

while(DQ==0);

//等待DS18B20释放总线

return0;

//检测到DS18B20则为0

else

return1;

//没检测到DS18B20则返回1

/*--------------读取一字节函数----------------*/

ucharreadbyte(void)

uchari=0;

uchardate=0;

for(i=8;

i>

0;

i--)

DQ=0;

delay5

(1);

DQ=1;

//15微秒内拉释放总线

date>

>

=1;

if(DQ)

date|=0x80;

delay5(11);

return(date);

/*--------------写一字节函数------------------*/

voidwritebyte(uchardat)

for(i=8;

DQ=0;

DQ=dat&

0x01;

//写"

1"

在15微秒内拉低

delay5(12);

//写"

0"

拉低60微秒

DQ=1;

dat>

delay5(5);

/*--------------读取温度函数------------------*/

ucharretemp(void)

uchara,b;

uchart;

while(init_ds18b20());

writebyte(0xCC);

writebyte(0x44);

Delay05ms(16);

writebyte(0xBE);

a=readbyte();

b=readbyte();

a>

=4;

b<

<

t=b|a;

if((b&

0x80))

ZF=0;

//表示负温度

t=~t+1;

//温度在寄存器中为12位,分辨率为0.0625

elseZF=1;

return(t);

voidwenxx(void)

if(!

ZF)

wendu=1;

=20)

wendu1=1;

elsewendu1=0;

if(ZF)

wendu=0;

=50)

voidFunKeyScan(void)

switch(PKey)

case0xfe:

TempTH0=0xfc;

TempTL0=0x8f;

bian=0;

break;

case0xfd:

TempTL0=0xef;

bian=1;

case0xfb:

TempTH0=0xfd;

TempTL0=0x45;

bian=2;

case0xf7:

TempTL0=0x6c;

bian=3;

case0xef:

TempTL0=0xb4;

bian=4;

case0xdf:

TempTL0=0xf4;

bian=5;

case0xbf:

TempTH0=0xfe;

TempTL0=0x2d;

bian=6;

default:

voidFunPlay(void)

switch(YinFu)

case11:

TempTH0=0xf9;

TempTL0=0x1e;

TR0=1;

case12:

TempTL0=0xde;

case13:

TempTH0=0xfa;

TempTL0=0x8a;

case14:

TempTL0=0xd8;

//11---17表示低音音符

case15:

TempTH0=0xfb;

TempTL0=0x68;

case16:

TempTL0=0xe8;

case17:

TempTL0=0x5a;

case21:

case22:

case23:

case24:

//21---27中音符

case25:

case26:

case27:

case31:

TempTL0=0x47;

case32:

TempTL0=0x77;

case33:

TempTL0=0xa2;

case34:

TempTL0=0xb6;

case35:

TempTL0=0xda;

//31---37表示高音音符

case36:

TempTL0=0xfa;

case37:

TempTH0=0xff;

TempTL0=0x16;

voidFunTimer0()interrupt1

POut=!

POut;

voidDelay05ms(ucharDelay05msData)

uchari,j;

for(i=0;

i<

Delay05msData;

i++)

for(j=0;

j<

167;

j++);

voidDelay10ms(ucharDelay10msData)

Delay10msData;

Delay05ms(20);

voidFunEx0(void)interrupt0

Delay05ms(60);

if(PEX0==0)

Flag=!

Flag;

voidFunEx1(void)interrupt2

Delay05ms(46);

if(PEX1==0)

{shu++;

if(shu==3)shu=0;

//TabMusic[]偶数位为音符

//0:

休止符,200:

表示歌曲结束。

//奇数0-10表示音符的持续时间,比如,5表示500ms。

ucharcodeTabMusic[7][340]={

16,1,17,1,21,1,23,1,22,1,21,2,22,1,0,2,

16,1,17,2,21,2,17,2,15,1,0,2,

16,1,17,2,21,1,0,1,22,1,23,2,17,1,0,2,

16,1,17,1,21,1,25,1,23,1,21,1,22,1,0,2,

16,1,17,1,21,1,0,1,22,1,23,1,17,1,0,1,

16,1,26,1,26,1,26,1,26,1,31,1,27,1,27,1,

26,1,26,1,25,1,23,1,25,1,26,1,21,1,21,1,0,2,

16,1,26,1,26,1,26,1,26,1,31,1,27,1,26,1,

26,1,25,1,25,1,26,1,27,1,23,1,23,1,23,1,0,2,

16,1,26,1,25,1,26,1,26,1,31,1,27,1,27,1,

26,1,26,1,25,1,23,1,25,1,25,1,27,1,26,1,0,2,

26,1,27,1,31,1,31,1,31,1,31,1,31,1,

27,1,26,1,26,1,26,1,25,1,23,1,25,1,25,1,27,1,

26,1,0,4,255},//1

{16,1,16,1,15,2,16,1,23,1,23,2,22,1,23,1,

22,1,22,1,22,1,21,1,16,2,0,2,

16,1,0,2,16,1,16,1,15,1,16,1,21,2,22,1,

23,1,25,1,26,2,23,1,0,1,23,1,25,1,23,1,

26,1,27,1,26,1,26,1,25,1,23,2,23,1,21,1,

22,1,0,1,23,1,23,1,25,1,26,2,

22,1,22,1,23,1,22,1,23,2,22,1,15,1,22,1,

21,2,16,1,0,1,16,1,0,1,16,1,16,1,15,2,

16,1,23,1,23,2,22,1,23,1,22,1,22,1,22,1,

16,2,16,1,0,1,16,1,16,1,15,1,16,1,21,2,22,1,

23,1,25,1,26,2,23,1,0,1,23,1,0,1,23,1,

25,1,23,2,26,1,27,1,26,1,25,1,23,1,23,1,21,1,

22,1,22,1,23,1,23,1,0,1,23,1,22,1,23,1,

25,1,25,2,22,1,22,1,23,1,22,1,23,2,22,1,15,1,

22,1,21,1,16,1,0,1,16,1,0,1,26,2,

23,1,25,1,31,1,32,1,31,1,26,2,25,1,26,1,31,1,

26,1,25,1,26,1,25,1,23,1,0,4,255},//2

{26,1,25,1,25,1,23,1,25,1,0,2,26,1,25,1,

23,1,22,1,21,1,21,1,0,2,16,1,

21,1,22,1,23,1,25,1,0,1,23,1,22,1,21,1,

23,1,22,1,22,1,0,2,26,1,25,1,25,1,23,1,

25,1,0,2,26,1,25,1,23,1,22,1,21,1,0,2,

16,1,21,1,22,1,23,1,25,1,0,2,23,1,22,1,21,1,

16,1,21,1,22,1,21,1,21,1,

26,1,25,1,25,1,23,1,25,1,0,2,26,1,25,1,

0,4,255},//3

{23,1,25,1,23,1,22,1,23,1,22,1,23,1,23,1,

22,1,16,1,21,1,23,1,22,1,22,1,21,1,16,1,

21,1,22,1,23,1,25,1,22,1,23,1,26,1,25,1,

15,1,22,1,21,1,22,1,21,1,16,1,21,1,22,1,

23,1,25,1,22,1,23,1,26,1,25,1,25,1,23,1,

0,1,22,1,23,1,22,1,21,1,25,1,26,1,23,1,

16,1,25,1,23,1,22,1,23,1,23,1,25,1,31,1,

25,1,26,1,0,1,26,1,25,1,23,1,23,1,25,1,

25,1,23,1,25,1,26,1,31,1,32,1,31,1,25,1,

23,1,22,1,25,1,23,1,23,1,0,1,23,1,25,1,

31,1,25,1,26,1,31,1,32,1,31,1,25,1,23,1,

25,1,31,1,26,1,23,1,22,1,23,1,25,1,33,1,

32,1,32,1,31,1,0,1,31,1,0,1,23,1,25,1,

32,1,32,1,0,1,32,1,0,1,32,1,31,1,0,1,31,1,

0,1,31,1,0,1,31,1,0,1,31,1,0,1,31,1,0,1,

0,4,255},//4

{15,1,21,2,23,1,25,2,21,1,17,2,23,1,25,1,

0,1,25,1,26,1,27,1,31,2,26,1,26,1,25,1,

25,1,0,1,0,1,23,1,22,1,21,2,21,1,21,1,23,1,

22,1,21,2,21,1,21,1,23,1,22,1,21,2,21,1,21,1,

22,1,23,1,22,1,21,1,16,1,22,1,23,1,22,1,0,1,

0,1,15,1,22,2,16,1,17,1,21,1,22,1,21,1,0,1,

0,1,23,1,25,1,23,2,22,1,21,1,25,1,17,1,0,1,

0,1,16,1,17,1,16,2,17,1,16,2,15,1,23,1,0,1,

0,1,25,1,23,2,22,1,21,1,25,1,17,1,0,1,0,1,

16,1,17,1,21,2,21,1,21,1,22,1,23,1,22,1,0,1,

0,1,15,1,21,2,23,1,25,2,21,1,17,2,23,1,25,2,

25,1,26,2,27,1,31,2,26,1,26,1,25,1,25,1,0,1,

23,1,22,1,21,2,21,1,21,1,23,1,22,1,21,2,21,1,

21,1,22,1,23,1,22,2,16,1,17,1,21,1,22,1,21,1,

0,1,0,1,0,4,255},//5

{21,1,21,1,16,1,15,1,16,1,21,1,21,1,22,1,

23,1,0,1

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

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

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

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