⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 中国腾达测控科技有限公司-学习下载-单片机试验及实践教程-at89s51单片机试验及实践教程之电子琴.htm

📁 电子琴 1. 实验任务  1. 由 4X4 组成 16 个按钮矩阵
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                <TD class=style28 vAlign=top width=114>
                  <P>DELAY </P></TD>
                <TD class=style28 vAlign=top width=114></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>曲调值 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>DELAY </P></TD></TR>
              <TR>
                <TD class=style28 vAlign=top width=114>
                  <P>调 4/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>125ms </P></TD>
                <TD class=style28 vAlign=top width=114></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>调 4/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>62ms </P></TD></TR>
              <TR>
                <TD class=style28 vAlign=top width=114>
                  <P>调 3/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>187ms </P></TD>
                <TD class=style28 vAlign=top width=114></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>调 3/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>94ms </P></TD></TR>
              <TR>
                <TD class=style28 vAlign=top width=114>
                  <P>调 2/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>250ms </P></TD>
                <TD class=style28 vAlign=top width=114></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>调 2/4 </P></TD>
                <TD class=style28 vAlign=top width=114>
                  <P>125ms </P></TD></TR></TBODY></TABLE>
            <P class=style28>对于不同的曲调我们也可以用单片机的另外一个定时 / 计数器来完成。 </P>
            <P class=style28>下面就用 AT89S51 单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。 </P>
            <P class=style28>在这个程序中用到了两个定时 / 计数器来完成的。其中 T0 用来产生音符频率, T1 用来产生音拍。 
            </P>
            <P class=style28><STRONG>5. 程序框图 </STRONG></P>
            <P class=style28><IMG height=422 
            src="中国腾达测控科技有限公司-学习下载-单片机试验及实践教程-AT89S51单片机试验及实践教程之电子琴.files/222.gif" 
            width=346> 
            <P class=style28><IMG height=188 
            src="中国腾达测控科技有限公司-学习下载-单片机试验及实践教程-AT89S51单片机试验及实践教程之电子琴.files/223.gif" 
            width=181></P>
            <P class=style28><STRONG>6. 汇编源程序 </STRONG></P>
            <P class=style28>KEYBUF EQU 30H </P>
            <P class=style28>STH0 EQU 31H </P>
            <P class=style28>STL0 EQU 32H </P>
            <P class=style28>TEMP EQU 33H </P>
            <P class=style28>ORG 00H </P>
            <P class=style28>LJMP START </P>
            <P class=style28>ORG 0BH </P>
            <P class=style28>LJMP INT_T0 </P>
            <P class=style28>START: MOV TMOD,#01H </P>
            <P class=style28>SETB ET0 </P>
            <P class=style28>SETB EA </P>
            <P class=style28>WAIT: </P>
            <P class=style28>MOV P3,#0FFH </P>
            <P class=style28>CLR P3.4 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY1 </P>
            <P class=style28>LCALL DELY10MS </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY1 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>CJNE A,#0EH,NK1 </P>
            <P class=style28>MOV KEYBUF,#0 </P>
            <P class=style28>LJMP DK1 </P>
            <P class=style28>NK1: CJNE A,#0DH,NK2 </P>
            <P class=style28>MOV KEYBUF,#1 </P>
            <P class=style28>LJMP DK1 </P>
            <P class=style28>NK2: CJNE A,#0BH,NK3 </P>
            <P class=style28>MOV KEYBUF,#2 </P>
            <P class=style28>LJMP DK1 </P>
            <P class=style28>NK3: CJNE A,#07H,NK4 </P>
            <P class=style28>MOV KEYBUF,#3 </P>
            <P class=style28>LJMP DK1 </P>
            <P class=style28>NK4: NOP </P>
            <P class=style28>DK1: </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV DPTR,#TABLE </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV P0,A </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV B,#2 </P>
            <P class=style28>MUL AB </P>
            <P class=style28>MOV TEMP,A </P>
            <P class=style28>MOV DPTR,#TABLE1 </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STH0,A </P>
            <P class=style28>MOV TH0,A </P>
            <P class=style28>INC TEMP </P>
            <P class=style28>MOV A,TEMP </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STL0,A </P>
            <P class=style28>MOV TL0,A </P>
            <P class=style28>SETB TR0 </P>
            <P class=style28>DK1A: MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JNZ DK1A </P>
            <P class=style28>CLR TR0 </P>
            <P class=style28>NOKEY1: </P>
            <P class=style28>MOV P3,#0FFH </P>
            <P class=style28>CLR P3.5 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY2 </P>
            <P class=style28>LCALL DELY10MS </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY2 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>CJNE A,#0EH,NK5 </P>
            <P class=style28>MOV KEYBUF,#4 </P>
            <P class=style28>LJMP DK2 </P>
            <P class=style28>NK5: CJNE A,#0DH,NK6 </P>
            <P class=style28>MOV KEYBUF,#5 </P>
            <P class=style28>LJMP DK2 </P>
            <P class=style28>NK6: CJNE A,#0BH,NK7 </P>
            <P class=style28>MOV KEYBUF,#6 </P>
            <P class=style28>LJMP DK2 </P>
            <P class=style28>NK7: CJNE A,#07H,NK8 </P>
            <P class=style28>MOV KEYBUF,#7 </P>
            <P class=style28>LJMP DK2 </P>
            <P class=style28>NK8: NOP </P>
            <P class=style28>DK2: </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV DPTR,#TABLE </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV P0,A </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV B,#2 </P>
            <P class=style28>MUL AB </P>
            <P class=style28>MOV TEMP,A </P>
            <P class=style28>MOV DPTR,#TABLE1 </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STH0,A </P>
            <P class=style28>MOV TH0,A </P>
            <P class=style28>INC TEMP </P>
            <P class=style28>MOV A,TEMP </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STL0,A </P>
            <P class=style28>MOV TL0,A </P>
            <P class=style28>SETB TR0 </P>
            <P class=style28>DK2A: MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JNZ DK2A </P>
            <P class=style28>CLR TR0 </P>
            <P class=style28>NOKEY2: </P>
            <P class=style28>MOV P3,#0FFH </P>
            <P class=style28>CLR P3.6 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY3 </P>
            <P class=style28>LCALL DELY10MS </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY3 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>CJNE A,#0EH,NK9 </P>
            <P class=style28>MOV KEYBUF,#8 </P>
            <P class=style28>LJMP DK3 </P>
            <P class=style28>NK9: CJNE A,#0DH,NK10 </P>
            <P class=style28>MOV KEYBUF,#9 </P>
            <P class=style28>LJMP DK3 </P>
            <P class=style28>NK10: CJNE A,#0BH,NK11 </P>
            <P class=style28>MOV KEYBUF,#10 </P>
            <P class=style28>LJMP DK3 </P>
            <P class=style28>NK11: CJNE A,#07H,NK12 </P>
            <P class=style28>MOV KEYBUF,#11 </P>
            <P class=style28>LJMP DK3 </P>
            <P class=style28>NK12: NOP </P>
            <P class=style28>DK3: </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV DPTR,#TABLE </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV P0,A </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV B,#2 </P>
            <P class=style28>MUL AB </P>
            <P class=style28>MOV TEMP,A </P>
            <P class=style28>MOV DPTR,#TABLE1 </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STH0,A </P>
            <P class=style28>MOV TH0,A </P>
            <P class=style28>INC TEMP </P>
            <P class=style28>MOV A,TEMP </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STL0,A </P>
            <P class=style28>MOV TL0,A </P>
            <P class=style28>SETB TR0 </P>
            <P class=style28>DK3A: MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JNZ DK3A </P>
            <P class=style28>CLR TR0 </P>
            <P class=style28>NOKEY3: </P>
            <P class=style28>MOV P3,#0FFH </P>
            <P class=style28>CLR P3.7 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY4 </P>
            <P class=style28>LCALL DELY10MS </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>
            <P class=style28>JZ NOKEY4 </P>
            <P class=style28>MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>CJNE A,#0EH,NK13 </P>
            <P class=style28>MOV KEYBUF,#12 </P>
            <P class=style28>LJMP DK4 </P>
            <P class=style28>NK13: CJNE A,#0DH,NK14 </P>
            <P class=style28>MOV KEYBUF,#13 </P>
            <P class=style28>LJMP DK4 </P>
            <P class=style28>NK14: CJNE A,#0BH,NK15 </P>
            <P class=style28>MOV KEYBUF,#14 </P>
            <P class=style28>LJMP DK4 </P>
            <P class=style28>NK15: CJNE A,#07H,NK16 </P>
            <P class=style28>MOV KEYBUF,#15 </P>
            <P class=style28>LJMP DK4 </P>
            <P class=style28>NK16: NOP </P>
            <P class=style28>DK4: </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV DPTR,#TABLE </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV P0,A </P>
            <P class=style28>MOV A,KEYBUF </P>
            <P class=style28>MOV B,#2 </P>
            <P class=style28>MUL AB </P>
            <P class=style28>MOV TEMP,A </P>
            <P class=style28>MOV DPTR,#TABLE1 </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STH0,A </P>
            <P class=style28>MOV TH0,A </P>
            <P class=style28>INC TEMP </P>
            <P class=style28>MOV A,TEMP </P>
            <P class=style28>MOVC A,@A+DPTR </P>
            <P class=style28>MOV STL0,A </P>
            <P class=style28>MOV TL0,A </P>
            <P class=style28>SETB TR0 </P>
            <P class=style28>DK4A: MOV A,P3 </P>
            <P class=style28>ANL A,#0FH </P>
            <P class=style28>XRL A,#0FH </P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -