基于单片机的函数发射器_毕业论文设计(编辑修改稿)内容摘要:
01H 指向 A 口地址 MOVX A,@ DPTR 读入 A 口的开关数据 JNB , K10H 判断是否“ 4 键”,是则转输出 10Hz信号 JNB , K100H 判断是否“ 5 键”,是则转输 100Hz信号 JNB , K500H 判断是否“ 6键”,是则转输出 500Hz信号 JNB , K1K 判断是否“ 7 键”,是则转输出 1KHz信号 AJMP MAIN 无键按下则返回等待 ,以显示 10HZ 为例,其他原理相同不做论述: K10H: MOV 30H, 00H 显示 10Hz MOV 31H, 00H 初始化显示缓冲段 MOV 32H, 00H MOV 33H, 00H 11 MOV 34H, 01H MOV 35H, 00H LCALL LED1 调显示子程序 MOV TMOD, 00H 写定时器工作方式 MOV TL0, 15H 置新的时间常数 MOV TH0, 9EH AJMP PD ,下面以显示 10HZ 为例,其他原理相同不做论述: K10H: MOV 30H, 00H 显示 10Hz MOV 31H, 00H MOV 32H, 00H MOV 33H, 00H MOV 34H, 01H MOV 35H, 00H LCALL LED1 调用显示子程序 : LED1: MOV R3, 06H 设置 6 个 LED显示 MOV R2, 01H 选通第一位 LED数据 MOV R1, 30H 送显示缓冲区首址 GN1: MOV DPTR, 7F03H 指向 C 口地址 MOV A, R2 位选通数据送 A MOVX @ DPTR, A 位选通数据送 C 口 RL A 通下一位 MOV R2, A 位选通数据送 R2中保存 MOV A, @ R1 取键值 MOV DPTR, TAB 送 LED 显示软件译码表首址 MOVC A,@ A+DPTR 查表求出键值显示的段码 MOV DPTR, 7F02H 指向 B 口地址 MOV @ DPTR, A 段码送显示 LCALL LOOP1 调延时子程序 INC R1 指向下一位显示缓冲区地址 12 DJNZ R3, GN1 循 环显示 6 个 LED RET : GN: SETB TR0 启动定时器 SETB ET0 开定时器 0 中断 SETB EA 开总中断 8.判断波形: PD: JNB , KE0 “ 0”号键按下,若是则转方波输出 JNB , KE1 “ 1”号键按下,若是则转正弦方波输出 JNB , KE2 “ 2”号键按下,若是则转三角波输出 JNB , KE3 “ 3”号键按下,若是则转锯齿波输出 LJMP PD 无键按下则返回等待 波形子程序的流程图 : 13 图 子程序流程图 如图 所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。 下面说明子程序流程图的程序实现: : LJMP TC0 绝对跳转到中断服务程序 : TC0: CJNE R7, 00H, TC1 判断是否是方波,不是则跳转 MOV DPTR, TAB1 送方波数据表首址 MOV A, R6 发送数据寄存器 MOVC A,@ A+DPTR MOV DPTR, 0AFFFH 指向 DAC0832( 2) MOVX @ DPTR, A DAC0832( 2)输出 MOV A, R6 Y 14 INC A MOV R6, A CJNE A, 32, QL1 MOV R6, 00H AJMP QL1 : TC1: CJNE R7, 01H, TC2 判断是否是正弦波,不是则跳转 MOV DPTR, TAB2 送正弦波数据表首址 MOV A, R6 MOVC A, @ A+DPTR MOV DPTR, 0AFFFH 指向 DAC0832( 2) MOVX @ DPTR, A DAC0832( 2)输出 MOV A, R6 INC A MOV R6, A CJNE A, 32, QL1 MOV R6, 00H AJMP QL1 : TC2: CJNE R7, 02H, QL1 判断是否是三角波,不是则跳转 MOV DPTR, TAB3 送三角波数据表首址 MOV A, R6 MOVC A,@ A+DPTR MOV DPTR, 0AFFFH 指向 DAC0832( 2) MOVX @ DPTR, A DAC0832( 2)输出 MOV A, R6 INC A MOV R6, A CJNE A, 32, QL1 MOV R6, 00H 15 AJMP QL1 : TC3:: CJNE R7, 03H, QL1 判断是否是锯齿波,不是则跳转 MOV DPTR, TAB4 送锯齿波数据表首址 MOV A, R6 MOVC A, @ A+DPTR MOV DPTR, 0AFFFH 指 向 DAC0832( 2) MOVX @ DPTR, A DAC0832( 2)输出 MOV A, R6 INC A MOV R6, A CJNE A, 32, QL1 MOV R6, 00H . 电路原理图及源程序 16 源程序: ORG 0000H AJM MAIN ORG 000BH LJMP TC0 ORG 0030H MAIN: MOV DPTR, 9FFFH 指向 DAC0832( 1) MOV A, 70H MOVX @ DPTR, A DAC0832( 1) 输出 17 MOV DPTR, 7F00H 指向 8255A命令字端口地址 MOV A, 06H 设置 A 口为输入, B 口、 C 口为输出 MOVX @ DPTR, A 命令字 MOV DPTR, 7F01H 指向 A 口地址 MOVX A,@ DPTR 读入 A 口的开关数据 JNB , K10H 判断是否“ 4”,是则转输出 10Hz信号 JNB , K100H 判断是否“ 5”,是则转输 100Hz信号 JNB , K500H 判断是否“ 6”,是则转输出 500Hz信号 JNB , K1K 判断是否“ 7”,是则转输出 1KHz信号 AJMP MAIN LED1: MOV R3, 06H 设置 6 个 LED显示 MOV R2, 01H 选通第一位 LED数据 MOV R1, 30H 送显示缓冲区首址 GN1: MOV DPTR, 7F03H 指向 C 口地址 MOV A, R2 位选通数据送 A MOVX @ DPTR, A 位选通数据送 C 口 RL A 选通下一位 MOV R2, A 位选通数据送 R2中保存 MOV A, @ R1 取键值 MOV DPTR, TAB 送 LED显示软件译码表首址 MOVC A,@ A+DPTR 查表求出键值显示的段码 MOV DPTR, 7F02H 指向 B 口地址 MOV @ DPTR, A 段码送显示 LCALL LOOP1 调延时子程序 INC R1 指向下一位显示缓冲区地址 DJNZ R3, GN1 循环显示 6 个 LED 18 RET LOOP1: MOV R4, 08H 延时子程序 LOOP: MOV R5, 0A0H DJNZ R5, $ DJNZ R4, LOOP RET K10H: MOV 30H, 00H 显示 10Hz MOV 31H, 00H MOV 32H, 00H MOV 33H, 00H MOV 34H, 01H MOV 35H, 00H LCALL LED1 调显示子程序 MOV TMOD, 00H MOV TL0, 15H MOV TH0, 9EH AJMP PD K100H: MOV 30H, 00H 显示 100Hz MOV 31H, 00H MOV 32H, 00H MOV 33H, 01H MOV 34H, 00H MOV 32H, 01H MOV 33H, 00H MOV 34H, 00H MOV 35H, 00H LCALL LED1 调显示子程序 MOV TMOD, 00H MOV TL0, 01H MOV TH0, 0FFH PD: JNB , KE0 判断是否“ 0”号键按下,若是则转方 19 波输出 JNB , KE1 判断是否“ 1”号键按下,若是则转正弦方波输出 JNB , KE2 判断是否“ 2”号键按下,若是则转三角波输出 JNB , KE3 判断是否“ 3”号键按下,若是则转。基于单片机的函数发射器_毕业论文设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。