单片机竞赛论文 电子琴1Word文件下载.docx
- 文档编号:22755612
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:25
- 大小:232.48KB
单片机竞赛论文 电子琴1Word文件下载.docx
《单片机竞赛论文 电子琴1Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机竞赛论文 电子琴1Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
1480
65198
554
64633
高5SO
1568
65217
中2RE
587
64684
1661
65235
622
64732
高6LA
1760
65252
中3M
659
64777
1865
65268
中4FA
698
64820
高7SI
1967
65283
下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据
低音0-19之间,中音在20-39之间,高音在40-59之间
TABLE:
DW0,63628,63835,64021,64103,64260,64400,64524,0,0
DW0,63731,63928,0,64185,64331,64463,0,0,0
DW0,64580,64684,64777,64820,64898,64968,65030,0,0
DW0,64633,64732,0,64860,64934,64994,0,0,0
DW0,65058,65110,65157,65178,65217,65252,65283,0,0
DW0,65085,65134,0,65198,65235,65268,0,0,0
DW0
2、音乐的音拍,一个节拍为单位(C调)
曲调值
DELAY
调4/4
125ms
62ms
调3/4
187ms
94ms
调2/4
250ms
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。
在这个程序中用到了两个定时/计数器来完成的。
其中T0用来产生音符频率,T1用来产生音拍。
4.程序框图
5.汇编源程序
KEYBUFEQU30H
STH0EQU31H
STL0EQU32H
TEMPEQU33H
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVTMOD,#01H
SETBET0
SETBEA
WAIT:
MOVP3,#0FFH
CLRP3.4
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY1
LCALLDELY10MS
CJNEA,#0EH,NK1
MOVKEYBUF,#0
LJMPDK1
NK1:
CJNEA,#0DH,NK2
MOVKEYBUF,#1
NK2:
CJNEA,#0BH,NK3
MOVKEYBUF,#2
NK3:
CJNEA,#07H,NK4
MOVKEYBUF,#3
NK4:
NOP
DK1:
MOVA,KEYBUF
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVB,#2
MULAB
MOVTEMP,A
MOVDPTR,#TABLE1
MOVSTH0,A
MOVTH0,A
INCTEMP
MOVA,TEMP
MOVSTL0,A
MOVTL0,A
SETBTR0
DK1A:
MOVA,P3
JNZDK1A
CLRTR0
NOKEY1:
CLRP3.5
JZNOKEY2
CJNEA,#0EH,NK5
MOVKEYBUF,#4
LJMPDK2
NK5:
CJNEA,#0DH,NK6
MOVKEYBUF,#5
NK6:
CJNEA,#0BH,NK7
MOVKEYBUF,#6
NK7:
CJNEA,#07H,NK8
MOVKEYBUF,#7
NK8:
DK2:
DK2A:
JNZDK2A
NOKEY2:
CLRP3.6
JZNOKEY3
CJNEA,#0EH,NK9
MOVKEYBUF,#8
LJMPDK3
NK9:
CJNEA,#0DH,NK10
MOVKEYBUF,#9
NK10:
CJNEA,#0BH,NK11
MOVKEYBUF,#10
NK11:
CJNEA,#07H,NK12
MOVKEYBUF,#11
NK12:
DK3:
DK3A:
JNZDK3A
NOKEY3:
CLRP3.7
JZNOKEY4
CJNEA,#0EH,NK13
MOVKEYBUF,#12
LJMPDK4
NK13:
CJNEA,#0DH,NK14
MOVKEYBUF,#13
NK14:
CJNEA,#0BH,NK15
MOVKEYBUF,#14
NK15:
CJNEA,#07H,NK16
MOVKEYBUF,#15
NK16:
DK4:
DK4A:
JNZDK4A
NOKEY4:
LJMPWAIT
DELY10MS:
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
MOVTH0,STH0
MOVTL0,STL0
CPLP1.0
RETITABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE1:
DW64021,64103,64260,64400
DW64524,64580,64684,64777
DW64820,64898,64968,65030
DW65058,65110,65157,65178
END
二、时钟系统
1原理图
2工作原理
利用单片机89S52作为本系统的中控模块。
电路设有四个按键,一个为功能选择开关,能够选择调节时间、日期、第一个闹钟、第二个闹钟;
第二个为“加”按钮,能够实现数字的累加;
第三个为“减”按钮,能够实现数字的递减;
第四个为确定选择开关。
电路程序取用单片机内部其中一个定时中断系统作为基准秒频,这样能够使CPU达到最大利用。
功能调节时显示电路仍然能够达到同步显示。
当调节的闹钟时间与时钟显示的时间相等时,声光报警电路动作,取用LM386能够放大单片机输出的音频信号,推动扬声器发出乐耳的音乐,时钟程序的整体设计方案是用单片机驱动电路控制时钟显示,为显示提供电源,用软件程序控制时种运行和各种调节功能。
三、LED列阵扫描显示系统
1.
原理图
我们把行列总线接在单片机的i0口,然后把上面分析到的扫描代码送入总线,
就可以得到显示的汉字了。
在这个例子里,由于一共用到16行,16列,
如果将其全部接入89c51
单片机,
一共使用32条io口,这样造成了io资源的耗尽,系统也再无扩充的余地。
实际应用中我们使用4-16线译码器74ls154来完成列方向的显示。
而行方向16条线则接在p0口和p2口。
3.相关C程序内容
#include<
AT89X52.H>
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodegraph[3][8]={{0x12,0x14,0x3c,0x48,0x3c,0x14,0x12,0x00},
{0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},
{0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00}
};
unsignedcharcount;
unsignedcharcnta;
voidmain(void)
{
unsignedchari,j;
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
ET0=1;
EA=1;
while
(1)
{
if(P2_0==0)
for(i=5;
i>
0;
i--)
for(j=248;
j>
j--);
count++;
if(count==3)
count=0;
}
while(P2_0==0);
}
voidt0(void)interrupt1using0
P3=tab[cnta];
P1=graph[count][cnta];
cnta++;
if(cnta==8)
cnta=0;
}
四:
LCD字符显示
1C程序:
#include<
reg52.h>
#defineucharunsignedchar
sbitrs=P1^2;
sbitrw=P1^1;
sbite=P1^0;
delay(uchartime)
{while(time>
0)
{time--;
voidenrw()
{rs=0;
rw=0;
e=0;
delay(250);
e=1;
write_data(ucharc)
{P2=c;
rs=1;
init_lcd(void)//初始化
{
P2=0x01;
//清屏幕
enrw();
P2=0x38;
//数据长度为8位,双行显示,5*7字符。
P2=0x0c;
//打开显示开关
P2=0x06;
//地址计数递增,显示屏不移动
write_cmd(ucharm)//写命令,注意与写数据的区别
{P2=m;
enrw();
position(ucharrow,ucharcolum)//写位置
{ucharp;
if(row==1)
p=0x82+colum-1;
else
p=0xC0+colum-1;
write_cmd(p);
display(uchar*s)//写字符串,简单的指针应用
for(;
*s!
='
\0'
;
s++)
write_data(*s);
voidmain()
{unsignedintm,n;
m=1;
n=2;
init_lcd();
position(m,1);
display("
wolcome"
);
position(n,1);
congratulations"
while
(1){;
2:
3:
液晶的显示
1.线段的显示点阵图形式液晶由M行×
N列个显示单元组成,假设LCD显示屏
有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16×
8=128
个点组成,屏上64×
16个显示单元和显示RAM区1024个字节相对应,每一字节的内容
和屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H~00FH的16个字
节的内容决定,当(000)=FFH时,则屏的左上角显示一条短亮线,长度为8个点;
当(3FFH)
=FFH时,则屏的右下角显示一短亮线;
当(000H)=FFH,(001H)=00H,(002H)=FFH,
(003H)=00H,…(00EH)=FFH,(00FH)=00H时,则在屏的顶部显示一条由8段亮线
和8条暗线组成的虚线。
这就是LCD显示的基本意思。
2.字符的显示当用LCD显示一个字符时就较复杂了,因为一个字符由6×
8或8
×
8点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8个字节,并且要使每个
字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组
成某个字符。
但对于内带字符发生器的控制器(如T6963C)来说,显示字符就比较简单了,
可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM
对应的地址,设立光标,在此送上该字符对应的代码即可。
3.汉字的显示汉字的显示一般采用图形方式,事先从微机中提取要显示的汉字的
点阵码,每个汉字占32字节,分左右两半部,各占16字节,左边为1、3、5…,右边为2、
4、6…,根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设
立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二字节,换行按列对齐,
送第三字节…直到32字节显示完就可在LCD上得到一个完整的汉字。
内带T6963C的液晶图形显示模块和8031单片机的连接
1.LCD显示控制器T6963CT6963C是点阵式液晶图形显示控制器,能直接和8031
单片机连接(见附图);
可以以图形、字符方式或合成显示;
内部有字符发生器,共128个
字符,允许CPU随时访问显示RAM,并可进行位操作。
2.内带T6963C的液晶图形显示模块(MGLS12864T)和8031单片机的连接内
带T6963C的液晶图形显示模块MGLS12864T和8031单片机的连接见附图。
由图可以看
出,MGLS12864T的数据线和8031的数据总线相接,它的C/D接8031的地址线A0,/CE
2
接8031外扩系统地址译码器74LS138的一个输出端;
MGLS12864T的/WR,/RD分别和8031
的/WR,/RD相接,/RESET,VCC,/HALT接+5V,VO接-5V~-15V可调,VEE接-
5V~-15V;
FG、GND接8031的GND。
T6963C的主要指令见表1。
参数1参数2指令代码功能
1.水平位置垂直位置21H光标指针设置
2.地址(低5位)00H22HCGRAM偏置地址设置
3.低字节高字节24H地址指针位置
4.低字节高字节40H文本区首址
5低字节00H41H文本区宽度(字节数/行)
6.低字节高字节42H图形区首址
7.低字节00H43H图形区宽度(字节数/行)
8.无无8XH显示方式设置
9.无无9XH光标闪烁,显示,文本,图形显示
10.无无AXH光标形状选择
11.无无BXH数据自动读/写方式设置
12.D1(仅写才有)无C0—C5H数据一次写/读,地址加1或不变
13.无无D0H屏读
14.无无D8H屏拷贝
15.无无FXH位操作
对T6963C进行操作前应先读状态字,T6963C的状态字中的各位含意如表2。
表2
位状态10
STA0:
指令读写状态准备好忙
STA1:
数据读写状态准备好忙
STA2:
数据自动读状态准备好忙
STA3:
数据自动写状态准备好忙
STA4:
未用
STA5:
控制器运行检测可能性可能不能
STA6:
屏读/拷贝出错状态出错正确
STA7:
闪烁状态检测正常显示关显示
五、参考书目
1、《单片机原理及应用》主编:
万文略重庆大学出版社
2、《单片及应用技术与实例》主编:
沙占友电子工业出版社
3、《C程序设计》主编:
谭浩强清华大学出版社
组号:
第23组
参赛队员:
尤明
段宁
邵凌
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机竞赛论文 电子琴1 单片机 竞赛 论文 电子琴