单片机原理与应用实验指导书.doc_第1页
单片机原理与应用实验指导书.doc_第2页
单片机原理与应用实验指导书.doc_第3页
单片机原理与应用实验指导书.doc_第4页
单片机原理与应用实验指导书.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用实验指导书机电工程系2009.9.10目 录一项目设计的目的3三、程序电路4四、单片机实验系统制版图4五、软件实验仿真演示4六、硬件实物展示5七、硬件功能实现演示5八、功能实现程序代码5九、实验总结26十参考文献27一项目设计的目的1 进一步熟悉和掌握单片机的结构及工作原理。2 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。4 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应工作打下基础。二项目设计具体要求a) 原理图设计。1 原理图设计要符合项目的工作原理,连线要正确。2 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。3 原理图要完整,CPU,外围器件,扩器接口,输入/输出装置要一应俱全。b) 程序设计1 根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。2 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。c) 程序调试将设计完的程序输入,汇编,排除语法错误,生成.hex文件。1 按所设计的原理图,在实验平台上连线,检查无误。2 将汇编后生成的.hex文件传送到实验装置的,执行该程序,检查该程序、是否达到设计要求,若未达到,修改程序,直到达到要求为止.d) 设计说明书1 原理图设计说明简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。2 程序设计说明对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。3 画出工作原理图,程序流程图并给出程序清单。目前,单片机已广泛应用到图民经济建设和日常生活的许多领域,成为测控技术现代化必不可少的重要工具。三、程序电路(见图1)四、单片机实验系统制版图(见附图2)五、软件实验仿真演示(MEDWIN)1、编程实现通过端口P1来观察灯的点亮,并观察寄存器和相关特殊功能寄存器内容的变化。参考程序:ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#01H MOV P1,A MOV A,#F0H MOV P1,A END2、编程实现通过端口P1来观察灯的循环点亮(练习使用循环程序)并观察寄存器和相关特殊功能寄存器内容的变化。参考程序:ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#00H L1: MOV P1,A INC A LJMP L1 END3、编程实现通过端口P1来观察灯延迟一定的时间来循环点亮(练习使用循环程序、编写延时子程序),并观察寄存器和相关特殊功能寄存器内容的变化。参考程序:ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#00H L1: MOV P1,A LCALL DELAY INC A LJMP L1 END六、硬件实物展示学生自行焊接实现的开放式试验系统。七、硬件功能实现演示八、功能实现程序代码;段码取反;K1键:;按2次计数功能;3次定时功能;4次显示计数上限;5次显示温度;K2键计数或定时清零;K3键驱动P1.4口的设备;K5键设定计数上限Dat EQU P2; 数码管数据口Bit1 BIT P0.0; 数码管第1位选择Bit2 BIT P0.1; 数码管第2位选择Bit3 BIT P0.2; 数码管第3位选择Bit4 BIT P0.3; 数码管第4位选择TempPinER_LEQU 29h; 从18b20读取的温度低字节TempPinER_HEQU 28h; 从18b20读取的温度高字节FLAG_18b20bit 38h; 18B20是否按装标志TempPinBIT P1.7; 18B20引脚,2号板为P0。6 。KVALUEL EQU 30H ;用于存放计数上限(低两位 压缩BCD码形式存放)KVALUEH EQU 31H ;用于存放计数上限(高两位 压缩BCD码形式存放) TEMP EQU 32H ;用于存放临时数据 JSL EQU 33H ;用于存放计了多少个数(低两位 压缩BCD码形式存放) JSH EQU 34H ;用于存放计了多少个数(高两位 压缩BCD码形式存放) TIMECOUNT EQU 35H ;用于存放当前定时中断次数,每20次为1秒 TIML EQU 46H ;存放当前的秒数 TIMH EQU 47H ;存放当前的分数 TIMHH EQU 48H;存放小时 GW EQU 36H ;显示缓冲区个位 SW EQU 37H ;显示缓冲区十位 BW EQU 38H ;显示缓冲区百位 QW EQU 39H ;显示缓冲区千位 WW EQU 3AH SWW EQU 3BH COUNT EQU 3CH ;用于存放来自键盘设置计数个数 MONEY1 EQU 3DH MONEY2 EQU 3EH FLAG1 BIT 00H ;标志位1,为0时把秒表值送入显示缓冲区,为1时把计数值送入显示缓冲区 FLAG2 BIT 01H ;标志位2,为1时把按键值装入显示缓冲区,为0时则根据Flag1判断要显示的内容 FLAG3 BIT 02H FLAG4 BIT 03H ;启动/停止串行通信 FLAG5 BIT 04H ORG 0000H LJMP INIT ORG 0003h LJMP INTA ORG 000BH LJMP TIMD ;T0中断入口 T0定时 方式1 0.05秒 ORG 001BH LJMP TIMJ ;T1中断入口 T1计数 方式1 初值FF FF ORG 0030H INIT: MOV SP,#60H MOV GW,#00 MOV SW,#00 MOV BW,#00 MOV QW,#00 MOV WW,#00 MOV SWW,#00 CLR FLAG1 CLR FLAG2 CLR FLAG3 MOV COUNT,#00 MOV JSL,#00 MOV JSH,#00 MOV TIML,#00 MOV TIMH,#00 MOV TIMHH,#00 mov temp,#00 MOV TMOD,#61H;T0方式2计数,T1方式1定时 MOV TH1,#0FFH;计数器1初值 MOV TL1,#0FFH MOV TH0,#3CH MOV TL0,#0B0H;定时器0的0。0.5秒时间常数 MOV TIMECOUNT,#20 MOV KVALUEL,#99H MOV KVALUEH,#99H SETB ET0 SETB ET1 SETB EX0 SETB EA SETB TR1 SETB TR0 MAIN: LCALL KEYSCAN JNB FLAG3,HJG;FLAG3为1显示温度 lcall Get_TempPiner lcall Display1 SJMP BB2 HJG: LCALL DISP BB2: SJMP MAIN KEYSCAN:LCALL KEY ;检测是否有键按下 JZ KEYEXIT ;若无按键按下则继续扫描键盘 LCALL DELAY ;去除抖动 LCALL KEY ;再次检测是否有键按下 JZ KEYEXIT ;若无按键按下则返回到主程序 LJMP KEYBAT ;若有按键按下则进行按键识别操作KEYEXIT: RET KEY: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 NOP NOP MOV A,P1 CPL A ANL A,#0FH RET DISP:ACALL DISPLAY ;把要显示的内容送显示缓冲区 MOV DPTR,#num ;把字形码首地址送DPTR JNB FLAG1,SHIJ MOV A,GW ;显示个位 MOVC A,A+DPTR MOV P2,A CLR P0.0 ACALL DEL SETB P0.0 MOV A,SW MOVC A,A+DPTR MOV P2,A CLR P0.1 ACALL DEL SETB P0.1 MOV A,BW ;显示百位, 若为时间显示分个位 MOVC A,A+DPTR MOV P2,A CLR P0.2 ACALL DEL SETB P0.2 MOV A,QW ;显示千位 MOVC A,A+DPTR MOV P2,A CLR P0.3 ACALL DEL SETB P0.3 SJMP HY2 SHIJ:MOV A,BW ; MOVC A,A+DPTR JNB FLAG5,NBH anL A,#7fH SJMP HH1 NBH:ORL A,#80H HH1:MOV P2,A CLR P0.0 ACALL DEL SETB P0.0 MOV A,QW ;显示千位 MOVC A,A+DPTR MOV P2,A CLR P0.1 ACALL DEL SETB P0.1 MOV A,WW ; MOVC A,A+DPTR MOV P2,A CLR P0.2 ACALL DEL SETB P0.2 MOV A,SWW ; MOVC A,A+DPTR MOV P2,A CLR P0.3 ACALL DEL SETB P0.3 HY2:RET DISPLAY: ;JB FLAG3,DI4 ;显示温度 JB FLAG2,DI2 ;flag2为1时显示键盘输入数值 JNB FLAG1,DI1 ;flag1为1时显示定时,为0时显示计数 MOV A,JSL ;把jsl进行十进制调整 ADD A,#00H DA A MOV JSL,A MOV A,JSH ADDC A,#00H DA A MOV JSH,A MOV A,JSL ANL A,#0FH ;把JSL JSH中存放的压缩BCD码分离出来,送往显示缓冲区 MOV GW,A MOV A,JSL ANL A,#0F0H SWAP A MOV SW,A MOV A,JSH ANL A,#0FH MOV BW,A MOV A,JSH ANL A,#0F0H SWAP A MOV QW,A SJMP DI3DI1:MOV A,TIML ;把TIML进行十进制调整 ADD A,#00 DA A MOV TIML,A MOV A,TIMH ADDC A,#00H DA A MOV TIMH,A MOV A,TIMHH ADDC A,#00 DA A MOV TIMHH,A MOV A,TIML ANL A,#0FH ;把TIML TIMH中存放的压缩BCD码分离出来,送往显示缓冲区 MOV GW,A MOV A,TIML ANL A,#0F0H SWAP A MOV SW,A MOV A,TIMH ANL A,#0FH MOV BW,A MOV A,TIMH ANL A,#0F0H SWAP A MOV QW,A MOV A,TIMHH ANL A,#0FH MOV WW,A MOV A,TIMHH ANL A,#0F0H SWAP A MOV SWW,A SJMP DI3DI2:MOV A,KVALUEL ;把按下的数字送显示缓冲区 ANL A,#0FH MOV GW,A MOV A,KVALUEL ANL A,#0F0H SWAP A MOV SW,A MOV A,KVALUEH ANL A,#0FH MOV BW,A MOV A,KVALUEH ANL A,#0F0H SWAP A MOV QW,A setb flag1 SJMP DI3DI4: lcall Get_TempPiner lcall Display1DI3:RETKEYBAT: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 NOP MOV 59H,P1 LCALL DELAY LCALL DELAY MOV A,59H ANL A,#0FH JB ACC.0,KJ1 LCALL DELAY LCALL DELAY JNB P1.0,$ AKB: LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY JB P1.0,AK1 LCALL DELAY LCALL DELAY INC TEMP JNB P1.0,$ SJMP AKB AK1:MOV A,TEMP CJNE A,#01,AK11 MOV TEMP,#0 SETB FLAG1 CLR FLAG2 CLR FLAG3 CLR FLAG5 LJMP KEND AK11:MOV A,TEMP CJNE A,#02,AK12 MOV TEMP,#00 CLR FLAG1 CLR FLAG2 CLR FLAG3 CLR FLAG5 LJMP KEND AK12:MOV A,TEMP CJNE A,#03,AK13 SETB FLAG2 CLR FLAG1 CLR FLAG3 CLR FLAG5 MOV TEMP,#0 LJMP KEND AK13: MOV A,TEMP CJNE A,#04,AK14 MOV TEMP,0 SETB FLAG3 AK14: LJMP KEND KJ1:JNB P1.1,$ JB ACC.1,KJ2 CLR FLAG2 CLR FLAG3 MOV JSL,#00 MOV JSH,#00 MOV TIMH,#00 MOV TIMHH,#00 LJMP KEND KJ2:JNB P1.2,$ JB ACC.2,KJ3 JNB P1.2,$ CPL P1.4 LJMP KEND KJ3:JB P1.3,$ ;JB ACC.3, KEND JNB FLAG1,DINGSHI SETB FLAG2 MOV A,GW CJNE A,#09,TG1 MOV GW,#00 SJMP TGA1 TG1:INC GW SJMP TGEND TGA1:MOV A,SW CJNE A,#09,TG2 MOV SW,#00 SJMP TGA2 TG2:INC SW SJMP TGEND TGA2:MOV A,BW CJNE A,#09H,TG3 MOV BW,#00 SJMP TGA3 TG3: INC BW SJMP TGEND TGA3:MOV A,QW CJNE A,#09,TG4 MOV QW,#00 SJMP TGEND TG4: INC QW TGEND:MOV A,SW SWAP A ORL A,GW MOV KVALUEL,A MOV JSL,A MOV A,QW SWAP A ORL A,BW MOV KVALUEH,A MOV JSH,A LJMP KEND DINGSHI: ;LCALL DELAY1 JB P1.3,KENDA1 TIAO:MOV A,TIMH CJNE A,#60H,SV1 MOV TIMH,#00 SJMP SU1 SV1:INC TIMH MOV A,TIMH ADD A,#00 DA A MOV TIMH,A SJMP KENDA1 SU1:MOV A,TIMHH CJNE A,#23H,SV2 MOV TIMHH,#00 SJMP KENDA1 SV2:INC TIMHH MOV A,TIMHH ADD A,#00 DA A MOV TIMHH,A ;LCALL DELAY ; kenda1:jnb p1.3,tiao KENDA1:MOV A,TIMH ANL A,#0FH MOV BW,A MOV A,TIMH ANL A,#0F0H SWAP A MOV QW,A MOV A,TIMHH ANL A,#0FH MOV WW,A MOV A,TIMHH ANL A,#0F0H SWAP A MOV SWW,A SETB TR0KEND: RETDELAY: SETB RS0L2: MOV R1,#180L1: MOV R2,#100 DJNZ R2,$ DJNZ R1,L1 CLR RS0 RETDELAY1:MOV R4,#2 AV2:MOV R6,#255 AV1:MOV R5,#255 DJNZ R5,$ DJNZ R6,AV1 DJNZ R4,AV2 RETJIESHOU: PUSH TMOD PUSH TL1 PUSH TH1 MOV TMOD, #21H MOV TH1,#0F4H MOV TL1,#0F4H MOV SCON,#0C0H MOV PCON,#00H SETB TR1 SETB RS1 SETB RS0 MOV R0,#38H MOV R7,#4 SETB REN WAIT: JNB RI,$ MOV A,SBUF CLR RI MOV R0,A INC R0 DJNZ R7,WAIT CLR PSW.5;位标志置1 POP TH1 POP TL1 POP TMOD CLR RS1 CLR RS0 RET DEL:;* 延 时 * SETB RS0 MOV R0,#250 DJNZ R0,$ CLR RS0 RETTIMJ: CLR TR1 MOV A,JSL CJNE A,#99H,TI1 MOV JSL,#00H JMP TI2TI1: INC JSL JMP TI3TI2: MOV A,JSH CJNE A,#99H,TI4 MOV JSH,#00 JMP TI3TI4: INC JSHTI3: SETB TR1 CLR C MOV A,JSL ADD A,#00 DA A MOV JSL,A MOV A,JSH ADDC A,#00 DA A MOV JSH,A MOV A,KVALUEL CJNE A,JSL,TIRET MOV A,KVALUEH CJNE A,JSH,TIRET MOV JSH,#00 MOV JSL,#00 CLR P1.6TIRET:SETB TR1 RETITIMD:PUSH PSW PUSH ACC CLR TR0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ TIMECOUNT,TI16 MOV TIMECOUNT,#20 MOV A,TIML CJNE A,#59H,TI11 MOV TIML,#00H JMP TI12TI11:INC TIML JMP TIENTI12:MOV A,TIMH CJNE A,#59H,TI14 MOV TIMH,#00H JMP TI13TI14:INC TIMH SJMP TIENTI13:MOV A,TIMHH CJNE A,#23H,TI15 MOV TIMHH,#00 SJMP TIENTI15:INC TIMHHTIEN:NOP CLR C MOV A,TIML ADD A,#00 DA A MOV TIML,A MOV A,TIMH ADDC A,#00H DA A MOV TIMH,A MOV A,TIMHH ADDC A,#00 DA A MOV TIMHH,ATI16:MOV A,TIMECOUNT MOV B,#10 DIV AB MOV A,B CJNE A,#0,ASD CPL FLAG5 ASD: POP ACC POP PSW SETB TR0 RETI Init_18b20:setb TempPin; 拉高电平nopclr TempPin; 拉低电平; 主机发出537us的复位脉冲mov r1,#3TSR1:mov R0,#107djnz r0,$djnz r1,TSR1setb TempPinnopnopnopnopmov r0,#25hTSR2:jnb TempPin,TSR3djnz r0,TSR2ljmp TSR4TSR3:setb FLAG_18b20; 标志位,表示DS18B20存在ljmp TSR5TSR4:clr FLAG_18b20ljmp TSR7TSR5:mov r0,#177TSR6:djnz r0,TSR6TSR7:setb TempPinret;=; 读出转换后的温度值;=Get_TempPiner:setb TempPinlcall Init_18B20; 复位18b20jb FLAG_18b20,TSS2; 判断是否存在18b20clr TempPinretTSS2:mov A,#0CCH; Skip ROM 命令lcall Write_18b20mov A,#44H; Convert T 命令lcall Write_18b20lcall Display1; 延时750mslcall Init_18b20mov A,#0CCH; Skip ROM 命令lcall Write_18b20mov A,#0BEH; Read Scratchpad 命令lcall Write_18b20lcall Read_18b20; 读取温度数据ret;=; 写18b20的子程序;=Write_18b20:mov R2,#8clr CWR1:clr TempPinmov R3,#5djnz R3,$rrc Amov TempPin,Cmov R3,#21djnz R3,$setb TempPinnopdjnz R2,WR1setb TempPinret;=; 读18b20子程序;=Read_18b20:mov R4,#2mov R1,#TempPinER_LRE00:mov r2,#8RE01:clr Csetb TempPinnopnopclr TempPinnopnopNOPsetb TempPinmov R3,#8RE10:djnz R3,RE10mov C,TempPinmov R3,#21RE20:djnz R3,RE20rrc Adjnz R2,RE01mov R1,Adec R1djnz R4,RE00ret;=; 显示子程序;=Display1: mov A,29H MOV B,#16 DIV AB MOV 27H,A MOV A,B MOV B,#10 MUL AB MOV B,#16 DIV AB MOV GW,a mov a,28h mov B,#16 MUL AB ADD A,27H MOV B,#10 DIV AB MOV SW,b MOV B,#10 DIV AB MOV BW,b MOV A,28H MOV QW,#10h jb ACC.7,SA MOV QW,#00 sa:mov DPTR,#NUMmov A,GWmovc A,A+DPTRmov Dat,Aclr Bit1acall D1mssetb Bit1mov A,SWmovc A,A+DPTRanl a,#7fhmov Dat,Aclr Bit2acall D1mssetb Bit2mov A,BWmovc A,A+DPTRmov Dat,Aclr Bit3acall D1mssetb Bit3mov A,QWmovc A,A+DPTRmov Dat,Aclr Bit4acall D1mssetb Bit4retD1ms:mov R7,#250djnz R7,$retNUM:DB 0C0H,0F9H,0A4H,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论