生产实习报告记录单片机电子琴Word下载.docx
- 文档编号:14281987
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:28
- 大小:453.33KB
生产实习报告记录单片机电子琴Word下载.docx
《生产实习报告记录单片机电子琴Word下载.docx》由会员分享,可在线阅读,更多相关《生产实习报告记录单片机电子琴Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
先设计好外围电路模块的原理图。
根据自己的板子的实际情况安排布线并依据原理图进行焊接。
再设计程序流程图,分别编写简单程序调试各个外围电路是否可以正常工作。
学习使用单片机程序开发环境,编译下载程序等。
比如:
单独的跑马灯;
双位数码管按秒计数;
蜂鸣器1s一响;
按键控制LED点亮(8个按键对应8个LED)。
设计程序运行的状态图以及程序流程图,编写程序代码并调试。
1.3原理图
1.4PCB图
器件名称
实物图片
数量
器件名称
单片机STCS90C52RC
1
四角按键开关
4
单排插针(4针)
1
六角自锁开关
30pF瓷片电容
2
10KΩ电阻
晶振11.0592M
导线
若干
10uf电解电容
万能版
编程接口板
杜邦线
40脚IC座
LED(红色)
8
双位数码管
三极管8050
3
1KΩ电阻
14
排阻
1.5器件清单
表1-1器件清单
(1)
1.6程序流程图
图主程序流程图图数码管子程序
1.7程序代码
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
ucharcodeleds1[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
//P0口控制8位LED
ucharcodeleds2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,
0xef,0xf7,0xfb,0xfd};
sbitle1=P3^5;
//左边数码管位选
sbitle2=P3^4;
//右边数码管位选
sbitfeng=P3^7;
//蜂鸣器控制位
sbitkey1=P2^0;
//模式切换
sbitkey2=P2^1;
//暂停和开始
sbitkey3=P2^2;
//功能复位
uintti,count,shi1,ge1,k;
uintflag=1;
voiddelay()//延时固定时间
{inti,j;
for(i=500;
i>
0;
i--)
for(j=100;
j>
j--);
}
voiddelayms(uintms)//延时ms毫秒
{
inti,j;
for(i=ms;
for(j=110;
voidkeyscan()
if(key2==1)
delayms(10);
if(key2==1)
{
while(key2);
TR0=!
TR0;
P2=0x00;
}
if(key1==1)
while(key1);
flag=!
flag;
//flag=1为默认模式1,为0为模式2
if(key3==1)
if(key3==1)
while(key3);
count=0;
P0=0xfe;
voidinit()
P0=0xfe;
//二极管
P2=0x00;
//按键
le1=0;
le2=0;
feng=0;
TMOD=0x01;
//设置定时器1工作模式设置T0/T1
TH0=(65536-45872)/256;
//给定时器装入初值
TL0=(65536-45872)%256;
EA=1;
//打开中断
ET0=1;
//打开定时器中断
TR0=0;
}
voiddisplay(uintshi,uintge)//数码管扫描
{uinti,j;
i=shi;
j=ge;
P1=table[i];
le1=1;
delayms(10);
P1=table[j];
le2=1;
intmain()
{
init();
while
(1)
if(feng==1&
&
TR0==0&
k==0)
delay();
shi1=count/10;
ge1=count%10;
keyscan();
display(shi1,ge1);
voidtimer()interrupt1
{
//定时时间为1s,公式
ti++;
if(ti==20)//每累加到20的时间为1秒
{
ti=0;
//ti标志置0
count++;
if(count==100)
count=0;
if(flag==1)
k=count%8;
P0=leds1[k];
if(k==0)
feng=1;
else
feng=0;
else
k=count%14;
P0=leds2[k];
2提高部分
2.1设计任务
在基础项目的前提下设计电子琴,让电子琴可以播放简单的歌曲,可以用按键进行简单的弹奏。
在弹奏过程中,led灯会根据不同的按键,点亮不同的灯。
2.2设计思路
根据自己的板子的实际情况安排布线画出PCB图,并依据PCB图进行焊接。
焊接完成之后根据设计任务设计程序流程图,再根据流程图编写程序,下载到单片机之后根据硬件情况进行调试。
直到完成设计任务为止。
2.3原理图
2.4PCB图
2.5器件清单
表2-1器件清单
(2)
数量
18
LED
8
蜂鸣器
9
2.6程序流程图
2.7程序代码
2.7.1头文件
#ifndef__SOUNDPLAY_H_REVISION_FIRST__
#define__SOUNDPLAY_H_REVISION_FIRST__
//**************************************************************************
#defineSYSTEM_OSC11059200//定义晶振频率12000000HZ
#defineSOUND_SPACE4/5//定义普通音符演奏的长度分率,//每4分音符间隔
#defineplay1
#definestop0
sbitBeepIO=P3^7;
//定义输出管脚
unsignedintcodeFreTab[12]={262,277,294,311,330,349,369,392,415,440,466,494};
//原始频率表
unsignedcharcodeSignTab[7]={0,2,4,5,7,9,11};
//1~7在频率表中的位置
unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64};
unsignedcharSound_Temp_TH0,Sound_Temp_TL0;
//音符定时器初值暂存
unsignedcharSound_Temp_TH1,Sound_Temp_TL1;
//音长定时器初值暂存
charstate_song;
voidInitialSound(void)
BeepIO=0;
Sound_Temp_TH1=(65535-(1/1200)*SYSTEM_OSC)/256;
//计算TL1应装入的初值(10ms的初装值)
Sound_Temp_TL1=(65535-(1/1200)*SYSTEM_OSC)%256;
//计算TH1应装入的初值
TH1=Sound_Temp_TH1;
TL1=Sound_Temp_TL1;
TMOD|=0x11;
ET0=1;
ET1=0;
EX0=1;
EX1=1;
TR0=0;
TR1=0;
EA=1;
IT0=1;
IT1=1;
voidint0()interrupt0
state_song=stop;
voidBeepTimer0(void)interrupt1//音符发生中断
BeepIO=!
BeepIO;
TH0=Sound_Temp_TH0;
TL0=Sound_Temp_TL0;
voidint1()interrupt2
state_song=play;
voidPlay(unsignedchar*Sound,unsignedchar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生产 实习 报告 记录 单片机 电子琴