单片机实习报告(WORD档)_第1页
单片机实习报告(WORD档)_第2页
单片机实习报告(WORD档)_第3页
单片机实习报告(WORD档)_第4页
单片机实习报告(WORD档)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、精品单片机实习报告 项目一一要求二原理图三程序ORG 0000H :程序初值LJMP START;转到开始ORG 001BH;断程序初值LJMP INT;转到中断程序START:MOV A,#0FEH;主程序初值 MOV R1,#02H ;地址偏移量 MOV R0,#20;延迟系数 MOV TMOD,#10H,定时器方式一 MOV TL1,#0B0H;低八位 MOV TH1,#03CH;高八位 ORL IE,#88H;允许T1中断 SETB TR1;启动定时器LOOP: CJNE R0,#00,DISP;比较是否到时间 MOV R0,#20;重置R0 INC R1;累加器加1 CJNE R1,

2、#20,LOOP2;比较是否到表尾 MOV R1,#02HR1等于02HLOOP2:MOV A,R1R1等于A MOVC A,A+PC基址加变址寄存器 JMP DISP;跳转到DISP DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,00H,0FFH置首显示码量设地址偏移R1设延时系数R0DISP:MOV P2,A;用P2显示A JMP LOOP;跳转LOOPINT: DEC R0;R0减1 MOV TL1,#0B0H;低八位定时器初始化中断设置(IE) MOV TH1,#03CH;高八位

3、四,算法 主程序2时间到?是重置R0RI加1判断R1是否到表尾?是否到2否到1重置R11取显示码2显示中断子程序:中断入口R0-1重装计数初值中断返回五问题为什么灯按顺序亮,灭,全亮后,不能正常灭? 因为给的初值不对,应该为OFEH项目二一要求用硬件译码电路,在LED显示器上循环显示09十个数字二,电路图三程序 ORG 0000HSTART:MOV SP,#60H MOV R3,#0 设定要显示的第一个数字NEXT: MOV A,R3 ANL A,#0FH 屏蔽高半字节 MOV P1,A 送显示器 LCALL DEL_1S 停留1S INC R3 修改要显示的数字 CJNE R3,#0AH,N

4、EXT 若09还未显示一遍,则继续显示下一个数字 SJMP START 若显示一遍,则再从0开始显示 ORG 1000H 1S延迟子程序DEL_1S:MOV TMOD,#10H 定时器1, 方式1, 定时状态 MOV TL1,#0B0H MOV TH1,#3CH 送50ms定时处值 MOV R2,#20 设置软件计数器,使20*50ms=1s SETB TR1 启动定时器1LOOP: JNB TF1,$ 判断基本定时是否到(50ms) MOV TL1,#0B0H MOV TH1,#3CH 再送初值,保证每次的基本定时时间都是50ms CLR TF1 清除溢出标志 DJNZ R2,LOOP 判断

5、1s定时是否到 CLR TR1 关闭定时器1RET 1s定时结束END四,算法置首数字:0(R1)设延时系数:20(R0)中断初始化,设置IE,TMOD显示否判断R1=10?显示判断R0=0?是否R1加1是是把0送给R1五,问题为什么接好了电路图,写好了程序,灯还是不亮? 因为程序里面接到了P1,而实际接到了P2,最后换了图,才对了项目三一要求用软件译码电路,在LED显示器上显示十六进制09二电路图三,程序 ORG 0000H STARY: MOV SP,#60H MOV R3,#0 ;设首显示码 MOV DPTR,#TAB NEXT: MOV A,R3 ANL A,#0FH ;屏蔽高字节 M

6、OVC A,A+DPTR MOV P2,A ;送显示 LCALL DELAY INC R3 ;R3加1 CJNE R3,#0AH,NEXT ;判断R3与10 SJMP STARY ;显示完了再从0开始 ORG 1000H DELAY: MOV TMOD,#10H MOV TL1,#0B0H ;设初值 MOV TH1,#3CH MOV R2,#20 SETB TR1 ;开定时器 LOOP: JNB TF1,$ ;判断基本定时是否到 MOV TL1,#0B0H ;再设初值 MOV TH1,#3CH CLR TF1 ;清除溢出标志 DJNZ R2,LOOP ;判断1s定时是否到 CLR TR1 ;关

7、闭定时器1 RET TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END 四,算法,同二的算法一样。项目四一要求用按键方式在数码管上显示099二电路图三程序COUNT EQU 30HORG 0000HSTART: MOV COUNT,#00HNEXT: MOV A,COUNT MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,B MOVC A,A+DPTR MOV P2,AWT: JNB SP1,WTWAIT: JB SP1,WAIT LCALL DELY10MS

8、JB SP1,WAIT INC COUNT MOV A,COUNT CJNE A,#100,NEXT LJMP START DELY10MS:MOV R6,#20 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END四,算法开始COUNT=0数码管显示“00”判断按键测试是否成功是COUNT=COUNT+1COUNT=100?1否2233数码管显示1否问题1个位正常工作,十位不变,什么? 没有把数据传给P0项目五一,要求:让彩灯先从里往外亮,再从外往里亮,2,电路图

9、三,程序,ORG 0000HLJMP START:注释同项目一ORG 001BHLJMP INTSTART: MOV A,#00H MOV R1,#02H MOV R0,#20 MOV TMOD,#10H MOV TL1,#0B0H MOV TH1,#03CH ORL IE,#88H SETB TR1LOOP: CJNE R0,#00,DISP MOV R0,#20 INC R1 CJNE R1,#12,LOOP2 MOV R1,#02HLOOP2: MOV A,R1 MOVC A,A+PC JMP DISP DB 00H DB 7EH,0BDH,0DBH,0E7H DB 0E7H,0DBH,

10、0BDH,7EH DB 0FFHDISP: MOV P0,A JMP LOOPINT: DEC R0 MOV TL1,#0B0H MOV TH1,#03CH RETIEND四,算法,同一算法一样。项目六一要求,把做好的单片机下载到单片机里面,看看能不能发出滴答的响声,二原理图三程序TA EQU 30HTB EQU 31HFLAG BIT 00H ORG 00HLJMP STARTORG 0BHLJMP INT_T0START:MOV TA,#00HMOV TB,#00HCLR FLAGMOV TMOD,#01HMOV TH0,#(65536-50000)/256MOV TL0,#(65536-

11、50000) MOD 256SETB TR0SETB ET0SETB EASJMP $INT_T0:MOV TH0,#(65536-50000)/256MOV TL0,#(65536-50000) MOD 256INC TAMOV A,TACJNE A,#100,NEXTINC TBCJNE A,#04H,NEXTMOV TA,#00HMOV TB,#00HCPL FLAGNEXT:JB FLAG,DONEDONE:RETIEND四,算法开 始T02S=0,T05MS=0,FLAG=0TO初始化 TO启动定时并开启中断等待中断T0中断入口T02S+1TO2S=400?是FLAG取反FLAG=O

12、?是中断返回1否12否2 五问题为什么把程序下载到单片机内,没有声音? 因为没有接到P3口项目七一要求用按键的方式,让灯亮。二,原理图三,程序,SECOND EQU 30HORG 0000HSTART:MOV SECOND,#00HNEXT:MOV A,SECOND MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,AWT:JNB SP1,WTWAIT:JB SP1,WAIT LCALL DELAY10MS JB SP1,WAIT INC SECOND MOV A,SECOND CJNE A,#9,NEXT MOV SECOND,#00H LJMP STARTDELAY

13、10MS:MOV R6,#20D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RETTABLE:DB 0FH,0EH,0DH,0CH,0BH,0AH,09H,08H,07HEND四,算法开始 P3.4=0?是延时10msP3.4=0?是进行按键处理等待按键释放R1=R1+1显 示11否否222项目八一要求用按键控制矩阵键盘二,原理图三,程序KEYBUF EQU 30HORG 00HSTART:MOV P3,#00HWAIT:MOV P2,#0FFHMOV A,P2ANL A,#0FHXRL A,#0FHJ00Z NOKEY1LCALL DELY10MSMOV A,P2ANL

14、A,#0FHXRL A,#0FHJZ NOKEY1LCALL DELY10MSMOV A,P2ANL A,#0FHCJNE A,#0EH,NK1MOV KEYBUF,#0LJMP DK1NK1:CJNE A,#0DH,NK2MOV KEYBUF ,#4LJMP DK1NK2:CJNE A,#0BH,NK3MOV KEYBUF,#8LJMP DK1NK3:CJNE A,#07H,NK4MOV KEYBUF,#12LJMP DK1NK4:NOPDK1:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P3,ADK1A:MOV A,P2ANL A,#0FHXRL

15、 A,#0FHJNZ DK1ANOKEY1:MOV P2,#0FFH MOV A,P2 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P2 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P2 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#1 LJMP DK2NK5:CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2NK6:CJNE A,#0BH,NK7 MOV KEYBUF ,#9 LJMP DK2NK7:CJNE A,#07H,NK8 MOV K

16、EYBUF,#13 LJMP DK2NK8:NOPDK2:MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P3,ADK2A:MOV A,P2 ANL A,#0FH XRL A,#0FH JNZ DK2ANOKEY2:MOV P2,#0FFHMOV A,P2ANL A,#0FHXRL A,#0FHJZ NOKEY3LCALL DELY10MSMOV A,P2ANL A,#0FHCJNE A,#0EH,NK9MOV KEYBUF,#2LJMP DK3NK9:CJNE A,#0DH,NK10MOV KEYBUF,#6LJMP DK3NK10:CJNE A

17、,#0BH,NK11 MOV KEYBUF,#10 LJMP DK3NK11:CJNE A,#07H,NK12 MOV KEYBUF,#14 LJMP DK3NK12:NOPDK3:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P3,ADK3A:MOV A,P2 ANL A,#0FH XRL A,#0FH JNZ DK3ANOKEY3: MOV P2,#0FFH MOV A,P2 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P2 ANL A,#0FH XRL A,#0FH JZ NOKEY4

18、 MOV A,P2 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#3 LJMP DK4NK13:CJNE A,#0DH,NK14 MOV KEYBUF,#7 LJMP DK4NK14:CJNE A,#0BH,NK15 MOV KEYBUF,#11 LJMP DK4NK15:CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4NK16:NOPDK4:MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P3,A DK4A:MOV A,P2 ANL A,#0FH XRL A,#0FH JNZ DK

19、4ANOKEY4:LJMP WAITDELY10MS:MOV R6,#10D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HEND四,算法项目九一要求用数字钟,把你要显示的东西显示出来二,原理图三,程序LED1 EQU 30H ;初始化定义LED2 EQU 31HLED3 EQU 32H ;存放三个数码管的段码ADC EQU 35H ;存放转换后的数据EOC BIT P3.2 ;定义ADC0809的功能控制引脚ORG 00

20、00HLJMP MAIN ;跳转到主程序执行ORG 0030HMAIN: MOV LED1,#00H MOV LED2,#00H MOV LED3,#00H ;寄存器初始化WAIT: CLR ST SETB ST CLR ST ;在脉冲下降沿启动转换 JNB EOC,$ ;等待转换结束 SETB OE ;允许输出信号 MOV ADC,P0 ;暂存A/D转换结果 CLR OE ;关闭输出 MOV A,ADC ;将转换结果放入A中,准备个位数据转换 MOV B,#85 DIV AB MOV LED1,A ;将变换后的个位值送显示缓冲区LED1 MOV A,B ;将变换结果的余数放入A中,准备十分位变换 MOV B,#33 ;变换十分位调整值3送B DIV AB MOV LED2,A ;将变换后的十分位值送LED2

温馨提示

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

评论

0/150

提交评论