单片机实验报告

上传人:痛*** 文档编号:44560438 上传时间:2021-12-05 格式:DOC 页数:19 大小:658.50KB
返回 下载 相关 举报
单片机实验报告_第1页
第1页 / 共19页
单片机实验报告_第2页
第2页 / 共19页
单片机实验报告_第3页
第3页 / 共19页
点击查看更多>>
资源描述
单片机原理及接口技术 实验报告册学院:光电信息科学与技术学院班级:083-1实验一 系统认识实验1.1 实验目的1. 学习keil C51集成开发环境的操作。2. 熟悉TD-51系统板的结构和使用。1.2实验仪器PC 机一台,TD-NMC+教学实验系统。1.3实验内容1. 编写实验程序,将00H0FH共16个数写入单片机内部 RAM 的30H3FH空间。2.编写实验程序,将00H到0FH共16个数写入单片机外部RAM的1000H到100FH空间。1.4 源程序201. ORG 0000HMOV R1,#30HMOV R2, #10HMOV A, #00HLOOP:MOV R1, AINC R1INC ADJNZ R2,LOOPSJMP $END2. ORG 0000HMOV DPTR, #1000HMOV R2, #10HMOV A, #00HLOOP:MOVX DPTR, AINC DPTRINC ADJNZ R2,LOOPSJMP $END1.5 实验步骤1.创建 Keil C51 应用程序(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的Vision2 工程。选择工程目录并输入文件名 Asm1 后,单击保存。(3)工程建立完毕后,弹出器件选择窗口,选择 SST 公司的 SST89E554RC。(4)为工程添加程序文件。选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。 (5)输入程序,将 Text1 保存成Asm1.asm。(6)将Asm1.asm源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。2.编译、链接程序文件(1)设置编译、链接环境(2)点击编译、链接程序命令,此时会在 Output Window 信息输出窗口输出相关信息。3.调试仿真程序(1)将光标移到 SJMP $语句行,在此行设置断点。(2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。1.6 实验结果.Load “C:jiabin1.1”2.Load “Cjiabin11”实验二 查表程序设计实验2.1实验目的学习查表程序的设计方法,熟悉 51 的指令系统。2.2实验设备PC 机一台,TD-NMC+教学实验系统2.3实验内容1.通过查表的方法将 16 进制数转换为 ASCII 码;2.通过查表的方法实现yx2,其中x为09的十进制数,以BCD码表示,结果仍以BCD码形式输出。2.4实验步骤1.采用查表的方法将16 进制数转换为 ASCII 码。(1)编写实验程序,编译、链接无误后联机调试;(2)将待转换的数存放在 R7 中,如令 R7 中的值为 0x86;(3)在语句行 SJMP MAIN 设置断点,运行程序;(4)程序停止后查看寄存器 R6、R5 中的值,R6 中为高 4 位转换结果 0x38,R5 中为低 4位转换结果 0x36;(5)反复修改 R7 的值,运行程序,验证程序功能。2.通过查表实现yx2,x 为 09 的十进制数,存放与 R7 中,以 BCD 码的形式保存,结果 y 以 BCD 码的形式存放于寄存器 R6 中。(1)编写实验程序,经编译、链接无误后,进入调试状态;(2)改变 R7 的值,如 0x07;(3)在语句行 SJMP MAIN 处设置断点,运行程序;(4)程序停止后,查看寄存器 R6 中的值,应为 0x49;(5)反复修改 R7 中的值,运行程序,验证程序功能。2.5源程序及实验结果1. ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #ASCTABMOV A, R7ANL A, #0FHMOVC A, A+DPTR MOV R5, AMOV A, R7ANL A, #0F0HMOVC A, A+DPTR MOV R6, ASJMP MAINASCTAB: DB 30H, 31H, 32H, 33H, 34H,5H, 36H, 37H, 38H, 39HDB 41H, 42H, 43H, 44H, 45H, 46HEND 当令(R7)=86H时,高四位转换结果(R6)=38H,低四位转换结果(R5)=36H,Load “C:jiabin1.1” 当令(R7)=37H时,结果如下图: 当令(R7)=09H时,高四位转换结果(R6)=30H,低四位转换结果(R5)=39H,结果如下图:Load “C:/jiabin/ASC1”n2. ORG 0000HLJMP MAINORG 0100HMAIN:MOV DPTR, #SQRMOV A, R7MOVC A, A+DPTRMOV R6, ASJMP MAINSQR: DB 00H, 01H, 04H, 09H, 16HDB 25H, 36H, 49H, 64H, 81HEND当令(R7)=07H时, (R6)=49H。结果如下图:实验三 数据排序实验3.1 实验目的熟悉51的指令系统,掌握数据排序程序的设计方法。3.2 实验设备PC机一台,TD-NMC+教学实验系统3.3 实验内容在单片机片内RAM的30H39H写入10个数,编写实验程序,将这10个数按照由小到大的顺序排列,仍写入RAM的30H39H单元中。3.4 实验步骤(1)编写实验程序,编译、链接无误后联机调试;(2)为30H39H赋初值,如:在命令行中键入E CHAR D:30H9,11H,5,31H,20H, 16H,1,1AH,3FH,8后回车,可将这10个数写入30H39H中;(3)将光标移到语句行SJMP $处,点击命令,将程序运行到该行;(4)查看存储器窗口中30H39H中的内容,验证程序功能;(5)重新为30H39H单元赋值,反复运行实验程序,验证程序的正确性3.5 源程序ORG 0000H LJMP MAINORG 0100HMAIN: MOV R0, #30HMOV R7, #0AHLP1: MOV A, R7MOV R6, AMOV A, R0MOV R1, AINC R1LP2: MOV A, R0CLR CSUBB A, R1JC LP3MOV A, R03.6 实验结果Load “C:guoyuxianggyx”实验四 数字量输入输出实验4.1 实验目的了解P1口作为输入输出方式使用时,CPU对P1口的操作方式。4.2 实验设备PC机一台,TD-NMC+教学实验系统。4.3 实验内容编写实验程序,将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。4.4 实验步骤1.按图3-1-1所示,连接实验电路图,图中“圆圈”表示需要通过排线连接;2.编写实验程序,编译链接无误后进入调试状态;3.运行实验程序,观察实验现象,验证程序正确性;4.按复位按键,结束程序运行,退出调试状态;5.自行设计实验,验证单片机其它IO口的使用。4.5 源程序 汇编: ORG 0000H LJMP START ORG 0100HSTART: ORL P1,#0F0H MOV A,P1 SWAP A MOV P1,A SJMP START ENDC程序:#include SST89x5x4.Hvoid main(void)unsigned char data i;while(1)P1 = P1 | 0xF0;i = P1;P1 = (i4)&0x0F;实验五 中断系统实验5.1 实验目的了解MCS-51单片机的中断原理,掌握中断程序的设计方法。5.2 实验设备PC机一台,TD-NMC+教学实验系统。5.3 实验内容1.单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写实验程序在P1.0及P1.1引脚上输出方波信号。2.手动扩展外部中断INT0、INT1,当INT0产生中断时,使LED 8亮8灭闪烁4次;当INT1产生中断时,使LED由右向左流水显示,一次亮两个,循环4次。5.4 实验步骤1.定时器中断实验(1)编写实验程序,经编译、链接无误后,启动调试功能;(2)运行实验程序,使用示波器观察P1.0及P1.1引脚上的波形;(3)使用示波器测量波形周期,改变计数值,重新运行程序,反复验证程序功能;(4)按复位键退出调试状态。2.外部中断实验(1)按下图连接实验电路;(2)编写实验程序,编译、链接无误后启动调试;(3)运行实验程序,先按KK1,观察实验现象,然后按KK2,观察实验现象;(4)验证程序功能,实验结束按复位按键退出调试。外中断实验接线图5.5 源程序1.定时器中断实验汇编:ORG 0000HLJMP STARTORG 000BHLJMP TIMER0ORG 001BHLJMP TIMER1ORG 0100HSTART:MOV P1, #0FFHMOV TH0, #0F8HMOV TL0, #00HMOV TH1, #0F8HMOV TL1, #00HMOV TMOD, #11HMOV TCON, #50HMOV IE, #8AHSJMP $TIMER0:CPL P1.0MOV TH0, #0F8HMOV TL0, #00HRETITIMER1:CPL P1.1MOV TH1, #0F8HMOV TL1, #00HRETIENDC程序:#include SST89x5x4.hsbit Wave1 = P10;sbit Wave2 = P11;void int_timer0() interrupt 1 Wave1 = Wave1;TH0 = 0xF8;TL0 = 0x00;void int_timer1() interrupt 3Wave2 = Wave2;TH1 = 0xF8;TL1 = 0x00;void main()TH0 = 0xF8;TL0 = 0x00;TH1 = 0xF8;TL1 = 0x00;TMOD = 0x11;TCON = 0x50;IE = 0x8A;while(1);2.外中断实验汇编:ORG 0000HLJMP STARTORG 0003HLJMP EINT0ORG 0013HLJMP EINT1START:MOV P1, #00HSETB IT0SETB EX0SETB IT1SETB EX1SETB EASJMP $EINT0:MOV R7, #04HELP0:MOV P1, #0FFHACALL DELAYMOV P1, #00HACALL DELAYDJNZ R7, ELP0RETIEINT1:MOV A, #03HMOV R7, #10HILP1:MOV P1, ARL ARL AACALL DELAYDJNZ R7, ILP1RETIDELAY:MOV R6, #0FFHDLP1:MOV R5, #0FFHDLP2:DJNZ R5, DLP2DJNZ R6, DLP1RETENDC程序#include SST89x5x4.h#include Intrins.hvoid delay(void)unsigned int x;for(x=0; x0xFFFF; x+);void int0_isr() interrupt 0unsigned char j;for(j=0; j4; j+)P1 = 0xFF;delay();P1 = 0x00;delay();void int2_isr() interrupt 2unsigned char i=0x03, j;for(j=0; j16; j+)P1 = i;i = _crol_(i, 2);delay();P1 = 0x00;void main()P1 = 0x00;IT0 = 1;EX0 = 1;IT1 = 1;EX1 = 1;EA = 1;while(1);5.6思考题设定INT1为中断高优先级,在程序初始化中加一句:SETB PX1,则当按KK1-时,即INT0产生中断时,LED灯亮灭闪烁,在期间即使按动KK2_时,LED就会由右向左流水显示,一次亮两个,循环4次,结束后会按照按动KK2-之前没有完成的次数继续直到4次。当按KK2-时,即INT1产生中断时,LED由右向左流水显示,一次亮两个,循环4次,在期间即使按动KK1_时,LED的现象也不会发生变化。实验六 定时计数器实验6.1 实验目的1.了解MCS-51单片机定/计数器的工作原理与工作方式;2.掌握定时/计数器T0和T1在定时器和计数器两种方式下的编程;3.学习定时/计数器T2的可编程时钟输出功能。6.2 实验设备PC机一台,TD-NMC+教学实验系统。6.3 实验内容1.使用定时器0与定时器1进行定时,在P1.0和P1.1引脚上输出方波信号。2.将定时/计数器1设定为计数器方式,每次计数到10在P1.0引脚上取反一次,观察发光二极管的状态变化。6.4 实验步骤:1.定时器实验(1)编写实验程序,编译、链接后联机调试;(2)运行实验程序,使用示波器观察P1.0与P1.1引脚上的波形并记录周期;(3)改变计数初值,观察实验现象,验证程序功能。2.计数器实验(1)按下图连接实验线路图;(2)编写程序,联机调试;(3)运行实验程序,按单次脉冲KK1,观察发光管D0的状态,每10次变化一次;(4)实验结束,按复位按键退出调试。计数器实验连线图6.5 源程序1.定时器实验汇编:ORG 0000HLJMP STARTORG 0100HSTART:MOV TMOD, #11HMOV TH0, #0F8HMOV TL0, #00HMOV TH1, #0F8HMOV TL0, #00HSETB TR0SETB TR1MLP1:JNB TF0, MLP2MOV TH0, #0F8HMOV TL0, #00HCPL P1.0CLR TF0MLP2:JNB TF1, MLP1MOV TH1, #0F8HMOV TL1, #00HCPL P1.1CLR TF1AJMP MLP1ENDC程序:#include SST89x5x4.hsbit Wave1 = P10;sbit Wave2 = P11;void main()TMOD = 0x11;TH0 = 0x0F8;TL0 = 0x00;TH1 = 0x0F8;TL1 = 0x00;TR0 = 1;TR1 = 1;while(1)if(TF0 = 1)TH0 = 0x0F8;TL0 = 0x00;Wave1 = Wave1;TF0 = 0;else if(TF1 = 1)TH1 = 0x0F8;TL1 = 0x00;Wave2 = Wave2;TF1 = 0;2.计数器实验汇编:ORG 0000HAJMP STARTORG 0100HSTART:MOV TMOD, #60HMOV TH1, #0F6HMOV TL1, #0F6HSETB TR1MLP1:JNB TF1, MLP1CPL P1.0CLR TF1AJMP MLP1ENDC程序:#include SST89x5x4.hsbit P10Value = P10;void main()TMOD = 0x60;TH1 = 0xF6;TL1 = 0xF6;TR1 = 1;for(;)while(TF1 = 0); P10Value = P10Value;TF1 = 0;6.6 调试结果1定时器实验:2.计数器实验:每按10次脉冲KK1,发光管D0的状态就会发生变化,即若原来是亮,就会灭了,原来是灭的,就变亮。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!