小学期项目总结
一、原理图PCB以及部分示波器波形第一版发射端由于电阻阻值不合适导致正弦波失真然后 将R3 4换成20千欧后就不失真了接收端电路最开始没有给驻极体接五伏电源后来又重新打板修改接收端的方波二、相关代码以下是我的程序RS BIT P1.0EN BIT P1.2LCD_PORT DATA P1FLAG_1S BIT 20H.0PULSE_L EQU 30H ; INT0 脉冲计数 低字节PULSE_M EQU 31H ; 中字节PULSE_H EQU 32H ; 高字节FREQ_L EQU 33H ; 频率快照FREQ_M EQU 34HFREQ_H EQU 35HCNT_MS EQU 36HORG 0000HLJMP STARTORG 0003H ; INT0 中断LJMP INT0_ISRORG 001BH ; T1 中断LJMP T1_ISRORG 0030HSTART:MOV SP, #5FHMOV LCD_PORT, #82H ; P110000010, RS/EN0, data0CLR RSCLR ENLCALL DELAY_20MSLCALL DELAY_20MSLCALL LCD_INITLCALL DELAY_10MSMOV A, #80H ; 第一行开头LCALL WRITE_CMDMOV DPTR, #STR_FREQLCALL SHOW_STR ; 显示 Freq:MOV PULSE_L, #00HMOV PULSE_M, #00HMOV PULSE_H, #00HMOV FREQ_L, #00HMOV FREQ_M, #00HMOV FREQ_H, #00HMOV CNT_MS, #00HCLR FLAG_1S; T1: 16位定时器, INT0: 边沿触发MOV TMOD, #10HMOV TH1, #4CHMOV TL1, #00HSETB IT0 ; INT0 下降沿触发SETB EX0 ; 开 INT0SETB ET1 ; 开 T1SETB EASETB TR1; 主循环 MAIN:JNB FLAG_1S, MAINCLR FLAG_1SLCALL DISP_FREQSJMP MAIN; INT0 脉冲计数 INT0_ISR:PUSH ACCINC PULSE_LMOV A, PULSE_LJNZ INT0_RETINC PULSE_MMOV A, PULSE_MJNZ INT0_RETINC PULSE_HINT0_RET:POP ACCRETI; T1 50ms 中断 T1_ISR:PUSH ACCPUSH PSWMOV TH1, #4CHMOV TL1, #00HINC CNT_MSMOV A, CNT_MSCJNE A, #20, T1_RETMOV CNT_MS, #00HCLR EX0MOV FREQ_L, PULSE_LMOV FREQ_M, PULSE_MMOV FREQ_H, PULSE_HMOV PULSE_L, #00HMOV PULSE_M, #00HMOV PULSE_H, #00HSETB EX0SETB FLAG_1ST1_RET:POP PSWPOP ACCRETI; 显示频率 (4位) DISP_FREQ:MOV R5, FREQ_LMOV R6, FREQ_MMOV R7, FREQ_HMOV R0, #40HMOV R1, #4 ; 4位数字DF_CNV:LCALL DIV24_10MOV A, R4ADD A, #0MOV R0, AINC R0DJNZ R1, DF_CNV; 40H个位, 41H十位, 42H百位, 43H千位MOV A, #85H ; 第一行第6列Freq:之后LCALL WRITE_CMDMOV R0, #43H ; 最高位千位地址MOV R1, #4MOV R2, #1DF_DISP:MOV A, R0CJNE R2, #1, DF_OUTCJNE R1, #1, DF_CHKSJMP DF_OUTDF_CHK:CJNE A, #0, DF_NZMOV A, # ; 前导零消隐显示空格DF_OUT2:LCALL WRITE_DATADEC R0DJNZ R1, DF_DISPSJMP DF_UNITDF_NZ:MOV R2, #0DF_OUT:LCALL WRITE_DATADEC R0DJNZ R1, DF_DISPDF_UNIT:MOV A, #HLCALL WRITE_DATAMOV A, #zLCALL WRITE_DATARET; 24位÷10 DIV24_10:MOV R4, #00HMOV R3, #24DV_S:CLR CMOV A, R5RLC AMOV R5, AMOV A, R6RLC AMOV R6, AMOV A, R7RLC AMOV R7, AMOV A, R4RLC AMOV R4, ACLR CSUBB A, #10JC DV_NMOV R4, AINC R5DV_N:DJNZ R3, DV_SRET; LCD 4位 (P1.6-3D4-7) LCD_INIT:MOV R2, #3INIT_LOOP:CLR RSMOV A, #30HLCALL WRITE_NIBBLELCALL DELAY_5MSDJNZ R2, INIT_LOOPCLR RSMOV A, #20HLCALL WRITE_NIBBLELCALL DELAY_5MSMOV A, #28HLCALL WRITE_CMDMOV A, #08HLCALL WRITE_CMDMOV A, #01HLCALL WRITE_CMDLCALL DELAY_5MSMOV A, #06HLCALL WRITE_CMDMOV A, #0CHLCALL WRITE_CMDRETWRITE_CMD:CLR RSSJMP WRITE_BYTEWRITE_DATA:SETB RSWRITE_BYTE:PUSH ACCANL A, #0F0HLCALL WRITE_N4POP ACCSWAP AANL A, #0F0HLCALL WRITE_N4RETWRITE_N4:RR A ; bits7-4 → bits6-3ANL A, #78H ; 保留 bits6-3ANL LCD_PORT, #87H ; 清 P1.6-3ORL LCD_PORT, ASETB ENNOPNOPCLR ENLCALL DELAY_200USRETWRITE_NIBBLE:RR AANL A, #78HANL LCD_PORT, #87HORL LCD_PORT, ASETB ENNOPNOPCLR ENRETSHOW_STR:CLR AMOVC A, ADPTRJZ SS_RETLCALL WRITE_DATAINC DPTRSJMP SHOW_STRSS_RET:RET; 延时 (11.0592MHz) DELAY_20MS: MOV R5, #36D20_1: MOV R6, #250DJNZ R6, $DJNZ R5, D20_1RETDELAY_10MS: MOV R5, #18D10_1: MOV R6, #250DJNZ R6, $DJNZ R5, D10_1RETDELAY_5MS: MOV R5, #9D5_1: MOV R6, #250DJNZ R6, $DJNZ R5, D5_1RETDELAY_200US: MOV R7, #92DJNZ R7, $RETSTR_FREQ: DB Freq:, 0END三、项目技术总结本次项目分为音频发射板与接收板两部分发射板依靠NE555产生载波搭配LM358、LM386完成信号调制放大接收板用麦克风拾音经运放调理后送入STC89C52单片机处理最终通过1602液晶显示信号状态完成音频收发整套流程综合运用了模电、单片机相关知识。四、反思与收获反思调试时遇到过运放波形失真等问题大多靠调整电阻电容解决。后续可以换成更稳定的主控芯片增加抗干扰电路进一步提升信号传输稳定性。收获1. 熟练看懂原理图熟悉嘉立创EDA软件操作能熟练独立进行布局布线精进了元器件焊接、万用表与示波器调试等基础操作2. 打通了模拟电路到单片机数字处理的完整流程把课本理论落到实操对一个项目从模拟到实物操作以及调试过程有了更清晰的认识帮助我们建立起完整的项目思维。