版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广工 - 单片机实验报告全部实验报告课程名称 _单片机原理及应用_学生学院信息工程学院专业班级 13 级应用电子专业4 班学号3113002512姓名陈文威指导教师李优新2015 年 12月 12 日2HRER: JNB P2.0,HRERMOV P0,AAJMPLOOPDELAY_100MS:MOV R6,#64HD22:MOV R5,#0F9HD21:DJNZR5,D21DJNZR6,D22RETEND一实验心得:通过本次试验,熟悉了keil软件的使用。初步掌握单片机的编程及调试实验二定时器和中断应用程序设计与调试一实验目的:4掌握单片机的定时器,中断功能系统的应用二实验内容和要求:编写程
2、序,用 AT89C51 的内部定时器 / 计数器 T0 的方式 1 产生周期为 0.2 秒的 TTL 脉冲( TCH和 TCL 溢出的时候,产生一个中断) ,从 P05 输出。计算如下:振荡器的频率f=6M=6000000,方式 1 计数器的长度为 L=16.2 的 16 次方即 65536定时时间(溢出时间)t=0.1s定时常数TC=65536-6000000 x0.1/12=65536-50000=15536 ,将15536 转换成 16 进制为 3CB0,TCH=3CH(高八位 ) ,TCL=B0H(低八位 ) 。三实验主要仪器设备和材料:1 AMC51单片机综合开发系统一台2.微机一台
3、四实验方法,步骤及结果测试开启 ANC51实验装置,检查跳线,一般无需改动。运行 Keil 调试程序,具体操作步骤参考实验一。参考以下电路图和流程图编写程序。编译程序,把生成的 .HEX目标文件下载到 AT89S51运行。5. 观察 AMC51实验装置的 LED在运行程序时闪烁的情5况。参考程序代码:ORG0000H;下一条指令的地址为0000HSTART:AJMPMAIN;跳入主程序ORG000BH;下一条指令的地址为 000BHAJMPINT_T0;定时器 0 中断程序ORG0030H;下一条指令的地址为 0030HMAIN: MOVTMOD,#01H;设定时器 T0 为 16位定时器MO
4、VTH0,#3CH;设定 T0 的定时值(0.1s )MOVTL0,#0B0H;设定 T0 的定时值(0.1s )SETBTR0;启动定时器 T0SETBET0;开定时 /计数器 0 允许SETBEA; CPU开放中断MAIN_1: SJMPMAIN_1INT_T0:PUSH ACC;保护现场PUSH PSWMOV TH0,#3CH;设定 T0 的定时值(0.1s )6MOV TL0,#0B0H;设定 T0 的定时值(0.1s )CPLP0.5;取反,流水灯闪烁POP PSW;恢复现场POP ACCRET1;中断返回END五实验报告要求实验原理分析,实验现象。通过启动 T0 中断,设定定时值为
5、 0.1S ,当定时器溢出后,重新置位,并将 P05 取反,其中 P05 口对应的发光二极管将造成闪烁的结果。按思考题修改程序, 修改程序后的调试结果; 程序流程图;源程序及注释。思考题如果要输出一个周期为 1 秒的方波,应怎么样修改程序?答:周期为 1S,就是每次延时 0.5S, 源程序 0.1S 延时 5 次循环后,再开中断。ORG0000HSTART:AJMPMAIN7ORG000BHAJMPINT_T0ORG0030HMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HMOVR2,#05HSETBTR0SETBET0SETBEAMAIN_1: SJMPMAI
6、N_1INT_T0: DJNZR2,INT;当 R2=5每次减 1 到为 0 才继续执行,开启中断,也MOVR2,#05H就是延时 5 次,一共 0.5S ,周期就是 1S,频率 1HZCPLP0.5INT: PUSHACCPUSHPSWMOVTH0,#3CHMOVTL0,#0B0HPOPPSWPOPACC8RETIEND程序流程图主程序:开始中断程序:P0.5 取反初始化分别延时循环5 次, 2 次等待中断 _ 2. 如果要同时输出多个频率不同的方波(f1=1HZf2=2HZ),应怎么样修改程序?( 改为 2.5HZ)答:频率 1HZ,周期为 1S,就是每次延时 0.5S, 源程序 0.1S
7、 延时 5 次循环后,再开中断。频率为 2HZ,周期为 0.5S,就是每次延时 0.25S, 源程序 0.1S 大概延时 2 次循环后,再开中断。程序如下ORG0000HSTART:AJMPMAIN9ORG000BHAJMPINT_T0ORG0030HMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HMOVR2,#05HMOVR3,#02HSETBTR0SETBET0SETBEAMAIN_1: SJMPMAIN_1INT_T0: DJNZR2,INT; 当 R2=5每次减 1 到为 0 才继续执行,开启中断,也MOVR2,#05H就是延时5 次,一共 0.5S ,
8、周期就是 1S,频率 1HZCPLP0.5DJNZR3,INT; 当 R3=2每次减 1到为 0 才继续执行,开启中断,MOVR3,#02H就是延时 2 次,一共 0.2S,周期就是0.4S ,频率 2.5HZCPLP0.210INT: PUSHACCPUSHPSWMOVTH0,#3CHMOVTL0,#0B0HPOPPSWPOPACCRETIEND程序流程图 :主程序:开始中断程序:P0.5取反初始化延时循环 5 次等待中断 _ 11实验三串行 I/O 扩展和 LED数码管显示实验一、 实验目的掌握单片机的 ISP 串行 I/O 扩展和 LED 数码管显示的原理和应用。二、 实验内容和要求AT
9、89S51 的 UART 由 P30(EXD )和 P31(TXD )组成,当 UART 以方式 0 工作的时候就是以 SPI 的方式工作。用 SPI 的方式 0 工作的时候就是以 SPI 的方式工作。用 SPI 的方式来扩展低速的 I/O ,就可以节省 P 口。三、 实验主要仪器设备和材料AMC51 单片机综合开发系统一台IBM-PC 微机一台四、 实验方法、步骤及结果测试开启 AMC51 实验装置,检查跳线,J5,J4:2-3 相连。运行 KEIL ,具体操作步骤参照实验一参考电路图和流程图, 编写程序,送数值到数码管以 16 进制形式显示。编译程序,把生成的 HEX 目标文件下载到AT8
10、9S51 运行。设置断点观察程序在 AMC51 实验装置的运行情况12代码DS0EQU3FHDS00EQU3EHDS000 EQU3DHDS0000EQU3CHORG0000HAJMP MAINORG0030HMAIN:LOOP:MOVDS0000,#01HMOVDS000,#02HMOVDS00,#03HMOVDS0,#04HACALLDISPACALLDELAY_100MSAJMP LOOPDELAY_100MS:MOVR6,#64HD22:MOVR5,#0F9HD21:DJNZR5,D21DJNZR6,D22RET13DISP: MOVR7,#4MOVR0,#DS0000DL0:MOVA
11、,R0MOVDPTR,#TABMOVCA,A+DPTRMOVSBUF,ADL1:JNBTI,DL1CLRTIINCR0DJNZR7,DL0RETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6HDB0BEH,0E0H,0FEH,0E6H,0EEH,03EH,9CHDB7AH,9EH,8EHEND原理: AT89S51 单片机的 UART 在工作方式 0 下通过 P30 口将数据送到 74LS164 中锁存,并通过 LED 数码管显示出传输的数字。现象:数码管显示数字。五、 思考题14修改程序使数码管显示 16 进制数?修改 DS0000,DS000,DS00,DS0 中的数值,
12、将其改为相应的数字即可。例: M OV DS0000,#0AHMOVDS000,#02HMOVDS00,#0CHMOVDS0,#04H为什么显示之后要加上延时?因为单片机一条指令执行的时间只有几微秒,如果不加上延时,数码管上的数字就会不断的闪烁,不稳定。不利于观察结果。六、 心得:了解了数码管个管脚与单片机的连接关系, 以及如何使用单片机 SPI 的方式来扩展端口。实验四A/D转换 - 亮度测量实验一实验目的熟悉 0809 的工作原因,掌握 A/D 转换程序的设计方法以及以 51 连接的接口电路设计方法。学习传感15器件的应用。二实验内容和要求按照硬件连接图和程序流程图,编写 A/D 转换程序
13、,通过调节 ADC0809的 REF与转换值之间的关系,了解光敏电阻的电气特性。光敏电阻特性:光敏电阻的阻值与亮度成反比,电气特性等效于一个可变电阻, 如实验电路所示 R13 光敏电阻和电阻 R16(4K7)串联,光敏电阻的阻值随环境亮度而变化,加在光敏电阻的电压也随之变化。变化的电压加分到 0809 的 IN-0 端和监视电路。单片机通过 74LS373和与非门,访问 0809,对 IN-0 端电压进行 AD转换,并将数据处理后通过数码管显示出来。数码管的显示数值满足以下公式: 显示数值=IN-0/REF+X256.三实验主要仪器设备和材料:1.AMC51单片机综合开发系统一台2.微机一台四
14、实验方法,步骤及结果测试开启 AMC51实验装置,检查跳线,一般无需改动。运行 KEIL,具体操作步骤参照实验一。参考以下电路图和流程图编写程序。编译程序,把把生成的.HEX 目标文件下载到AT89S51运行。16观察程序在 AMC51实验装置的实际运行情况。1)同手挡住“亮度传感器” ,改变亮度,观察数码管的数值变化。2)调节 ADC0809的 REF+观察 REF和采样电压的关系。先按一下液晶屏下方的“ RESET”再按一下“ MODES SWITCH”按钮,液晶屏切换到 MODE1。.用一字小螺丝刀分别顺时针和逆时针扭动 “亮度传感器” 下方蓝色长方体的变阻器上面的螺丝。 从液晶屏观察到
15、 REF的变化。五实验报告要求实验原理分析,实验现象及结果。实验原理:光敏电阻的阻值与亮度成反比, 电气特性等效于一个可变电阻, 如实验电路所示 R13光敏电阻和电阻 R16(4K7)串联,光敏电阻的阻值随环境亮度而变化,加在光敏电阻的电压也随之变化。 变化的电压加分到 0809 的 IN-0 端和监视电路。单片机通过74LS373和与非门,访问 0809,对 IN-0 端电压进行AD 转换,并将数据处理后通过数码管显示出来。数码管的显示数值满足以下公式:显示数值=IN-0/REF+X256.17ADC0809的工作过程首先输入 3 位地址,并使 ALE=1,将地址存入地址锁存器中。此地址经译
16、码选通 8 路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D 转换,之后 EOC输出信号变低,指示转换正在进行。直到 A/D 转换完成, EOC变为高电平,指示A/D 转换结束,结果数据已存入锁存器,这个信号可用作中断申请。 当 OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。转换数据的传送 A/D 转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D 转换的完成,因为只有确认完成后, 才能进行传送。 为此可采用下述三种方式。(1)定时传送方式对于一种 A/D 转换其来说,转换时间作为一项技术指标是已知的和固定的。例
17、如 ADC0809转换时间为128s,相当于 6MHz的 MCS-51单片机共 64 个机器周期。可据此设计一个延时子程序, A/D 转换启动后即调用此子程序, 延迟时间一到, 转换肯定已经完成了,接着就可进行数据传送。(2)查询方式A/D 转换芯片由表明转换完成的状态信号,例如18ADC0809的 EOC端。因此可以用查询方式,测试 EOC 的状态,即可确认转换是否完成, 并接着进行数据传送。(3)中断方式把表明转换完成的状态信号( EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成, 即可通过指令进行数据传送。首先送出口地址并以信号有效时, OE
18、 信号即有效,把转换数据送上数据总线,供单片机接受。实验现象:1)通过手挡住“亮度传感器” ,降低亮度,数码管的逐渐数值变大, 大到 255 就不再增加,因为显示数值=IN-0/REF+X256. ,随着亮度的变小,光敏电阻的阻值随环境亮度变小而变大, 加在光敏电阻的电压也随之变化,变化的电压加分到 0809 的 IN-0 端也变大(具体数值已经通过 A/D 转换输出,可以从液晶屏直接读出),从而数码管的数值在参考电压 REF+没有变的情况下,显示数值也增加,输入电压 IN-0 最大等于基准电压 REF+,因而显示值大约是 256,实验显示最大是 255.2)调节 REF+的,同理,因为显示数
19、值=IN-0/REF+X256. ,调节 REF+,可以改变数码管的显19示值,最大依然是 256,调节 REF+的具体数字也可以直接从液晶屏读出, REF+越大,数码管的显示值越小,基准电压 REF+越小,数码管的显示值越大,最大为256,实验显示最大是 255. ,存在一定误差。结果:通过调节 ADC0809的参考电压 REF(以及亮度传感器)与转换值之间的关系, 了解光敏电阻的电气特性,光敏电阻的阻值与亮度成反比, 电气特性等效于一个可变电阻。完成思考题,修改后的程序代码清单(详细注释)程序代码如下CHENLEQU 5CH;A/D 转换通道地址DISPLAY_BUFFER EQU 5DH
20、 ;显示缓存DS0EQU 3FH;数码管个位DS00EQU 3EH;数码管十位DS000 EQU 3DH;数码管百位DS0000EQU 3CH;数码管千位ORG 0000H;下一条 指令 的地址为0000HAJMP MAIN;跳转到 MAIN 函数ORG 0013H;外部中断 INTIAJMP INT_1;跳转到INT_120函数ORG 0030H;下一条指令的地址为 0030HMAIN:;初始化程序SETB IT1;INTI边沿触发SETBEX1;开 INTI 中断SETB EA;CPU开放中断MOVCHENL,#0F8H;通道 0 口地址MOVDPH,#7FH;ADC0809高位地址 #7
21、FHMOVDPL,CHENL;ADC0809低位地址放 AD转换数据MOV A,#0;A 清除数据MOVX DPTR,A;启动 A/DLOOP_MAIN:;等待子程序AJMP LOOP_MAIN;等待 INTI 中断INT_1: PUSH PSW;外部中断 1 程序PUSH ACC;保护现场PUSH DPHPUSH DPL21MOVDPH,#7FH;重新设置 ADC0809高位地址 #7FHMOV DPL,CHENL;继续放AD 转换数据MOVX A,DPTR;读取A/D 转换值MOV DISPLAY_BUFFER,A ;保存 A/D 的数值 ACALL TRAN_BCD ;将 A/D 的数值
22、转换成 BCD码ACALL DISP;调用串行显示子程序ACALL DELAY;调用延时程序MOV DPH,#7FH;再次设置ADC0809高位地址 #7FHMOV DPL,CHENL;再次放AD 转换数据MOV A,#0;A 清除数据MOVX DPTR,A;再次 A/D 启动程序POP DPL;恢复现场POP DPHPOP ACCPOP PSW;弹出标志位22RETI;中断返回DELAY:MOV R6,#64H;R5 ,R6为临时延时变量D22: MOV R5,#0F9H;6M晶振延时 0.1SD21: DJNZ R5,D21;R5减为 0 继续DJNZ R6,D22;R6减为 0 继续RET;子程序返回TRAN_BCD:MOV A,DISPLAY_BUFFER;读入缓冲MOV R7,#0AH;R7为 10MOV B,R7;送 10到 BDIV AB;求数码管个位MOV DS0,B;将个位数字送到显示发送缓冲MOV B,R7;送 10到 BDIV AB;求数码管十位MOV DS00,B;将十位数字送到显示发送缓冲MOV B,R7DIV AB;求数码管百位MOV DS000,B;将百位数字送到显示发送缓冲MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论