2014单片机实验报告
- 格式:doc
- 大小:421.50 KB
- 文档页数:11
关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。
了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。
通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。
有段选码和和位选码。
当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。
LED显示器的显示方式有动态和静态两种。
7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。
单片机实训报告一、实训目的本次单片机实训的目的在于通过实际操作和项目实践,深入理解单片机的工作原理和应用开发,提高自身的硬件设计能力、软件编程能力以及解决实际问题的能力。
同时,培养团队合作精神和创新思维,为今后从事相关领域的工作打下坚实的基础。
二、实训设备在本次实训中,我们使用了以下主要设备:1、单片机开发板:用于实验和项目的开发与调试。
2、计算机:安装相关的编程软件和开发工具。
3、示波器:用于观察电路中的信号波形。
4、万用表:用于测量电路中的电压、电流等参数。
三、实训内容1、单片机基础知识学习首先,我们对单片机的基本结构、工作原理、指令系统等进行了系统的学习。
了解了单片机的内部组成,包括中央处理器(CPU)、存储器、输入输出端口等。
通过学习指令系统,掌握了如何使用汇编语言或 C 语言对单片机进行编程控制。
2、硬件电路设计在硬件电路设计方面,我们学习了如何根据实际需求设计单片机的最小系统,包括电源电路、时钟电路、复位电路等。
同时,还掌握了如何扩展外部存储器、输入输出设备等。
通过实际绘制电路图和制作电路板,提高了我们的硬件设计能力和动手实践能力。
3、软件编程在软件编程方面,我们使用了汇编语言和 C 语言两种编程方式。
通过编写简单的程序,如点亮 LED 灯、控制数码管显示、实现按键输入等,逐渐熟悉了单片机的编程方法和技巧。
同时,还学习了如何使用中断、定时器、串口通信等功能,提高了程序的复杂程度和实用性。
4、项目实践在项目实践环节,我们分组完成了一个基于单片机的温度控制系统的设计与实现。
该系统通过温度传感器采集环境温度,经过单片机处理后,控制风扇的转速和加热装置的工作状态,从而实现对环境温度的自动控制。
在项目实践过程中,我们充分运用了所学的知识和技能,从系统方案设计、硬件电路搭建、软件编程调试到系统测试优化,每个环节都进行了精心的设计和认真的实施。
四、实训过程在实训开始阶段,我们首先进行了单片机基础知识的学习和实验。
《单片机原理与应用》实验报告4班级:13车1 姓名:危凯明学号:1308032136时间:2015/12/3 地点:实验楼4号楼301一、实验目的1、熟练掌握51单片机开发板HC6800的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握应用KEIL软件编辑程序的做作方法。
4、掌握烧录软件的操作方法。
5、掌握按键中断程序。
6、掌握步进电机转动的机理。
二、实验内容1、电路绘制2、程序编写3、计算机仿真4、开发板电路连接及实现三、例程功能说明电机转动。
四、自行设计功能说明按键实现步进电机正反转。
五、实验电路原理图六、程序设计及说明#include "reg52.h"#define speed 2/Motorsbit PH1 = P1^0; //定义管脚sbit PH2 = P1^1;sbit I01 = P1^2;sbit I11 = P1^3;sbit I02 = P1^4;sbit I12 = P1^5;void delay(int time);void Go(){ //APH1 = 0; //PH1为0 则A线圈为反向电流I01 = 0;I11 = 0; //以最大电流输出PH2 = 0; //PH2为0 则B线圈为反向电流I02 = 1;I12 = 1; //输出0delay(speed);//0PH1 = 0; //PH1为0 则A线圈为反向电流I01 = 1; //输出0I11 = 1;PH2 = 1; //PH2为1 则B线圈为正电流I02 = 0; //以最大电流输出I12 = 0;delay(speed);//BPH1 = 1; //PH1为1 则A线圈为正向电流I01 = 0; //以最大电流输出I11 = 0;PH2 = 1; //PH2为1 则B线圈为正向电流I02 = 1; //输出0I12 = 1;////delay(speed);//0PH1 = 1; //PH1为1 则A线圈为正向电流I01 = 1;I11 = 1;PH2 = 0; //PH2为0 则B线圈为反向电流I02 = 0;I12 = 0;delay(speed);}void delay(unsigned int time){unsigned int i,j;for(j=0; j <= time; j++)for(i =0 ; i <= 120; i++); }void main(){EA=1; //总中断允许EX1=1; //选择外部中断1EX0=1;PX1=1;while(1);}void stop() interrupt 0{while(1){Go();}}void on() interrupt 2{P1=0x00;delay(500);}七、实验效果图八、。
单片机实验报告第一篇:单片机实验报告单片机实验报告一、实验目的1.熟练使用Keil、Protues两款软件2.通过上机操作,增强个人动手实践能力3.加深对理论知识的理解4.培养运用汇编语言进行初步编写程序的能力二、实验内容1.将片外RAM3050-306FH中数据转移至片内70-8FH中。
要求:可以从Keil或Protues上看到RAM的数据转移结果。
2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮。
要求:开发板或Prrotues演示3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术。
要求:在Keil或Protues上看到数据转换结果。
4.各使用中断方式和查询方式设计一个方波发生器,频率为50HZ。
要求:Protues使软件间示波器显示方波。
三、实验程序1.将片外RAM3050-306FH中数据转移至片内70-8FH中ORG 0000H AJMP MAIN 上电,转向主程序ORG 0030H 主程序入口MAIN: MOV DPTR,#3050H 数据指针指向地址3050H MOV A,#04H 将立即数04H送A寄存器MOV R0,#20H NEXT: MOVX @DPTR,A INC DPTR 数据指针DPTR自加一DJNZ R0,NEXT 判断是否跳转到NEXT或继续向下执行MOV DPTR,#3050H MOV R0,#70H MOV R2,#20H NEXT1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,NEXT1SJMP $ 等待END 2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮ORG 0000H SJMP MAIN 上电,转向主程序ORG 0003H 外部中断0向量入口AJMP INSER ORG 0030H 主程序入口MAIN: SETB EX0 SETB IT0SETB EA CPUHERE: SJMP HERE ORG 0200H INSER: MOV R2,#08H MOV A,#01H NEXT: MOV P2,A LCALL DELAY RL A DJNZ R2,NEXT NEXT或继续向下执行RETI DELAY: MOV R3,#0FFH DEL2: MOV R4,#0FFH DEL1: NOP 允许外部中断0中断选择边沿触发方式开中断等待中断设置循环次数赋初值,设置高电平亮将初值送往P2口延时左移一位判断循环次数,是否跳转到中断返回延时程序DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术 ORG 0000H LJMP MAIN ORG 0030H主程序起始地址 MAIN: MOV 80H,#05H 将立即数50H转送内存单元80H MOV A,80H 将内存单元80H中的内容送寄存器A MOV DPTR,#TAB MOVC A,@A+DPTR A寄存器内容加指针偏移量后送A寄存器 MOV 80H,A RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 4.1中断方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口 MAIN: MOV TMOD,#10H 设置定时器工作模式为模式1 MOV TH1,#0D8H 装入T1计数初值MOV TL1,#0F0HSETB ET1 开中断SETB EA CPU开中断SETB TR1 启动定时器T1 HERE: SJMP HERE 等待中断ORG 001BH T1中断向量地址CLR TF1 将TF1清零CPL P2.0 P2.0取反输出MOV TH1,#0D8H 重装初值MOV TH0,#0F0HRETI;中断返回END 4.2 查询方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口MAIN: MOV TMOD,#10H 设置定时器的工作模式为模式1 SETB TR1 启动定时器T1 LOOP: MOV TH1,#0D8H 装入T1计数初值MOV TH0,#0F0H JNB TF1,$ T1没有溢出则等待CLR TF1产生溢出,清标志位CPL P2.0 P2.0取反输出SJMP LOOP 循环END四、实验结果截图1.23.4.14.2第二篇:单片机实验报告实验四、中断交通灯实验林立强1000850116一、实验目的1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。
实验一I/O口输入输出实验一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
五、实验参考程序;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************DIR BIT P3.0ORG 0000HLJMP STARTORG 0100HSTART:OUTPUT1:MOV A, #0FEHMOV R5, #8LOOP1: CLR CMOV C,DIRJC OUTPUT2MOV P1, ARL AACALL DELAYDJNZ R5, LOOP1SJMP OUTPUT1OUTPUT2:MOV A, #07FHMOV R5, #8LOOP2:CLR CMOV C,DIRJNC OUTPUT1MOV P1, ARR AACALL DELAYDJNZ R5,LOOP2SJMP OUTPUT2DELAY:MOV R6,#0DELAYLOOP1:MOV R7,#0DELAYLOOP2:NOPNOPDJNZ R7,DELAYLOOP2DJNZ R6,DELAYLOOP1RETEND六、实验结果当八位逻辑电平的K0拨到上方,即输出高电平时,实验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。
单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil)4、下载器5、示波器6、万用表三、实验内容1、点亮 LED 灯通过编写简单的程序,控制单片机的引脚输出高低电平,从而点亮或熄灭连接在该引脚上的 LED 灯。
这是单片机最基础的操作之一,旨在熟悉单片机的编程环境和引脚控制方式。
2、数码管显示利用单片机驱动数码管,实现数字的显示。
需要了解数码管的工作原理和驱动方式,通过编程控制数码管的段选和位选信号,显示不同的数字。
3、按键输入设计按键电路,通过读取按键的状态,实现对单片机系统的输入控制。
例如,通过按键切换不同的显示模式或控制其他外部设备。
4、定时器/计数器应用使用单片机的定时器/计数器功能,实现定时、计数等操作。
例如,设计一个定时闪烁的 LED 灯,或者通过计数器统计外部脉冲的个数。
5、串口通信实现单片机与计算机之间的串口通信,将单片机采集到的数据发送到计算机上进行显示和处理,或者接收计算机发送的指令对单片机系统进行控制。
四、实验原理1、单片机的基本结构单片机通常由中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入输出接口(I/O 口)、定时器/计数器、中断系统等部分组成。
2、编程语言本次实验采用 C 语言进行编程。
C 语言具有简洁、高效、可移植性强等优点,非常适合单片机的开发。
3、引脚功能单片机的引脚分为电源引脚、时钟引脚、复位引脚、I/O 引脚等。
通过对这些引脚的合理配置和控制,可以实现各种功能。
4、数码管驱动原理数码管分为共阴极和共阳极两种类型。
通过控制数码管的段选和位选信号,可以使数码管显示不同的数字和字符。
5、按键检测原理按键通常采用上拉电阻或下拉电阻的方式连接到单片机的I/O 引脚。
MSP430单片机期末设计报告课题名称:基于msp430单片机期末测试题起讫日期:14年6月23日- 14年6月27日学生学号:1200308132 1200308133 学生姓名:张玥梁尧报告成绩:中国计量学院信息工程学院生物医学工程专业目录一.实验仪器简介 (2)二.实验设计 (3)三.实验结果 (6)一:实验仪器简介MSP430单片机简介:MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
德州仪器1996年到2000年初,先后推出了31x、32x、33x 等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。
每一系列有ROM 型(C)、OTP 型(P)和 EPROM 型(E)等芯片。
EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。
这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM 型适应大批量生产的产品。
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。
16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。
因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。
《单片机原理与应用实验》指导书厦门理工学院光电与通信工程学院目录目录 (I)第一章概述 (1)第二章实验系统组成和结构 (4)§2.1 系统主机的硬件组成 ................................................................ 错误!未定义书签。
2.1.1 逻辑电平开关电路...................................... 错误!未定义书签。
2.1.2 LED电平显示电路....................................... 错误!未定义书签。
2.1.3单脉冲电路........................................... 错误!未定义书签。
2.1.4 音频放大电路........................................... 错误!未定义书签。
2.1.5 继电器输出电路........................................ 错误!未定义书签。
2.1.6 逻辑门电路............................................. 错误!未定义书签。
2.1.7 逻辑测量(逻辑笔)电路................................. 错误!未定义书签。
2.1.8 4MHz脉冲信号源和多级分频电路......................... 错误!未定义书签。
2.1.9 可调模拟量输入电路..................................... 错误!未定义书签。
2.1.10 六位LED数码显示器................................... 错误!未定义书签。
2.1.11 4×6 键盘电路......................................... 错误!未定义书签。
2014单片机课程设计报告要求:(1) 温度读取(2) LED数码管或LCD显示(3) 定时读取数据(4) 报警一、原理概述:STC89C52单片机为主控制器,用于处理采集的温度值以及相关报警值。
本设计采用DALLAS公司的DS18b20示。
二、实验设备:51STC89C52DS18B20 设计内容软件流程图设计方法:DS18B20特性• 独特的单线接口仅需一个端口引脚进行通讯• 简单的多点分布应用• 无需外部器件• 可通过数据线供电• 零待机功耗• 测温范围-55---+1250.5℃递增。
华氏器件-67---+2570.9℉递增• 温度以9 位数字量读出• 温度数字量转换时间200ms• 用户可定义的非易失性温度报警设置•• 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统温度传感器说明DS1820 数字温度计以9 位数字量的形式反映器件的温度值。
DS1820DS1820 之间仅需一源。
因为每个DS1820 所以多只DS1820 可以同时连在一根单线总HV AC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
4位8段数压电式蜂鸣器是一种电声转换器件。
压电式蜂鸣器具有体积小、灵敏度高、耗电省、可靠点和良好的频率特性。
因此它广泛应用于各种电器产品的报警、发声用途。
最常见的莫过于音乐贺卡、电子手表、袖珍计算器、电子门铃和电子玩具等小型电子用品上作发声器件。
硬件原理图51单片机void tim(void) interrupt 1 using 1 //9个寄存器前两个就是温度a=ReadOneChar();。
单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。
在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。
这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。
将所学知识运用到实践中,在实践中发现问题,强化理论知识。
现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。
第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。
第一次实验体现了一个人对新事物的接受能力和敏感度。
虽然之前做过许多种实验。
但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。
所以第一次试验相对失败。
鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。
在做实验中,第二个问题应该是准备不充分吧。
一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。
后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。
于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。
这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。
发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。
三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。
于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。
但是编程是一件很严肃的事情,容不得半点错误。
于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。
单片机原理及应用实验报告姓名: xxxxxx学号: xxxxxxxxxxx班级: xxxxxxxxxxxxxxxxx指导教师:许强单片机原理及应用实验报告实验项目名称:拆字、拼字实验实验日期:2014年12月7日实验成绩:实验评定标准:一、实验目的掌握汇编语言设计和调试方法,掌握拆字和拼字的程序编写方法。
二、实验器材PC机三、实验内容拆字:把7000H的内容拆开,高位送7001H 低位,低位送7002H低位。
拼字:拼接7000H的内容,高位来自7001H 低位,低位来自7002H低位。
四、实验步骤1、实验程序框图2、调试方法单步运行到BP1,观察7000H和A单元内容是否为68,单步运行到BP2,观察7001H单元中内容是否为6,单步运行到BP3,观察7002H单元中内容是否为8,若是,程序对,若不是,反复修改程序直到正确为止。
同样可调试拼字程序。
五、实验结果及分析1、程序代码ORG 0000HLJMP MAINORG 30HMAIN: MOV DPTR,#7000HMOV A,#68HMOVX @DPTR,AMOVX A,@DPTRANL A,#0F0HSWAP AINC DPTRMOVX @DPTR,AMOV DPTR,#7000HMOVX A,@DPTRANL A#0FHMOV DPTR,#7002HMOVX @DPTR,AEND2、执行过程图(1)把7000H的内容送给a(2)高地位交换后将低位的6送入7001H(3)屏蔽高位后将8送入7002H3、结果分析拆字实验调试程序时,单步运行到BP1,观察到7000H和A单元中内容是68,单步运行到BP2,观察到7001H单元中内容为6,单步运行到BP3,观察到内容为8。
拼字实验正是拆字实验的逆方式,实验结果得到验证。
单 片 机 原 理 及 应 用 实 验 报 告实验项目名称: P 口彩灯控制实验实验日期: 2014年12月7日 实验成绩: 实验评定标准:一、 实验目的通过实验了解单片机最小系统;掌握P0口作为输入、输出方式使用是,COU 对P0口操作方法。
单片机原理与应用实验报告学院(部):专业:学生姓名:班级:学号:最终评定成绩:实验一存储器读写一、实验目的:1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作。
二、实验仪器设备1.PC机,1台2.WAVE软件开发系统三、实验内容及步骤:1、将下面的汇编程序输入到W A VE集成开发软件中ORG 0000HSJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08HMOV R1,#70HMOV DPTR,#2000HLOOP:MOVX A,@R1MOVX A,@DPTRINC R1INC ADJNZ R7,LOOPSJMP $END2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
四、源程序源程序:ORG 0000H ;定义起始地址SJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08H ;给内部RAM的70H单元赋初值MOV R1,#70H ;使R1指向内部70H单元MOV DPTR,#2000H ;定义外部存储器开始单元LOOP:MOVX A,@R1 ;将R1所指向的70H的内容赋给AMOVX @DPTR,A;将A的内容赋给外部存储器单元INC R1 ;内部RAM地址加1INC DPTR ;外部存储器地址加1DJNZ R7,LOOP ;循环,直到RAM中70H~7FH;单元的内容全部相应赋给;外部2000H~2007H单元SJMP $END3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
五、仿真效果图实验二I/O端口操作一、实验目的:1、掌握I/O端口读写等基本汇编指令;2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。
海南师大物理与电子工程学院电子信息科学与技术专业《单片机应用技术》实验指导2014年4月目录实验一单片机仿真与开发系统认识 (1)实验二汇编语言简单编程实验 (3)实验三C51语言简单编程实验 (4)实验四并口实验 (5)实验五定时/计数器实验 (7)实验六单片机中断实验 (9)实验七串口实验 (11)实验八A/D、D/A实验 (13)附录一开发板布局图 (15)附录二开发板各部分电路原理图 (16)实验一单片机仿真与开发系统认识[实验类型] 验证性实验[实验目的]1、掌握51单片机开发软件Keil 的用法;2、掌握单片机硬件仿真软件Proteus的基本用法;3、了解实验所用开发板的电路原理,熟练掌握其基本使用方法。
[实验内容&要求]1、准备工作文件夹在D盘建立一个实验一工作文件夹,文件夹名字自定(英文)。
以下所有步骤建立的文件都存放在这个文件夹内。
2、Keil软件的使用首先打开KEIL软件,然后依次练习汇编程序和C程序的建立和编译。
(1)汇编语言程序练习:1>建立一个项目(建立一个项目文件夹,存在第1步所建立的文件夹内)2>输入课本P127页[例6-1]中的汇编程序(不过把P1和P0口所接器件换一下,即P0口接8个发光二极管,P1口接8个开关),在Keil C中输入,以.asm 做扩展名,保存到项目文件夹内。
3>在项目中添加该文件,编译生成.hex文件。
(2)C语言程序练习:1>再建另外一个项目(也在工作文件夹内另建一个项目文件夹);2>输入课本P127页[例6-1]中的C程序(同样注意把P1和P0换一下),保存、加入项目并生成.hex文件。
3、Proteus软件的使用(1)打开Proteus软件,参考课本P127页[例6-1]的要求建立硬件仿真图,注意把P1和P0所接器件换一下。
仿真文件名自定,保存在第1步所建立的文件夹内。
(2)在Proteus设置单片机属性为使用前面所生成的.hex文件,进行仿真测试。
宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单片机原理实验名称中断实验专业计算机科学与技术(非师)年级12级学号B********** 姓名王秋指导教师杨烈君实验日期2015.5.21实验步骤、实验结果及分析:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。
3、构建仿真电路4、创建一个Keil应用程序:新建工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。
5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)程序代码:1.实现单按键控制Led灯闪烁#include"reg51.h"#define uchar unsigned charsbit Led1=P1^0; uchar Mode=0;void delay(int x) //定义时间间隔{while(x--);}void button_Cotrol() //根据按键模式执行相应的代码{if(Mode==0)Led1=0;if(Mode==1){Led1=~Led1;delay(1000);}}void int0() interrupt 0 //外中断0的中断编号为0{Mode=(Mode+1)%2; //更改按键模式}void main(){Led1=0; //置初值EA=1; //开放总中断EX0=1; //允许使用外中断0IT0=1; //选择负跳变来触发外中断while(1)button_Cotrol();}图1 单按键控制Led灯闪烁while(1)button_Cotrol();}图2 单按键多功能识别,控制4路Led灯闪烁3.实现0-99的计数器效果,按一下数值加1#include"reg51.h"#define uchar unsigned char#define disp_null 10sbit key=P3^2;uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管显示0~9的段码表uchar DispBuf[8];uchar sec=0;void delay(int x) //定义时间间隔{while(x--);}void PutTime(){DispBuf[7]=sec%10;while(1){P1=0x00;display();}}图3 0-99的计数器效果,按一下数值加1注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内。
单片机程序设计实验报告姓名:学号:专业班级:第二节课:实验一:1357,2468位置的灯交替闪烁一实验要求1357,2468位置的灯交替闪烁。
二硬件连接图与结果三原理简述程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。
四程序#include<reg51.h>main (){int i;P0=0XAA; //1357四个灯亮for (i=0;i<=25000;i++); //延时程序P0=0X55; //2468四个灯亮for (i=0;i<=25000;i++); //延时程序}五所遇问题与解决方式程序比较简单,没有遇到问题。
实验二:流水灯一实验要求流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。
二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。
时间间隔简单的用了一个延时的语句。
因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。
四程序//流水灯#include<reg51.h>main (){int i,j;while(1){P0=0X01; //第1个灯亮for (i=0;i<=30000;i++); //延时程序for(j=0;j<=7;j++) //移位循环程序{P0=P0<<1; //移位for (i=0;i<=30000;i++); //延时程序}P0=0xff; //全亮for (i=0;i<=30000;i++); //延时程序}}五所遇问题与解决方式程序比较简单,没有遇到问题。
实验三:跑马灯一实验要求一个接一个的灯亮,前面亮过的等依旧亮,直到最后一个灯,最后重新开始,循环。
二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。
单片机实验报告《单片机原理与应用》实验报告第二次实验:实验一、P1口输入、输出实验一、实验目的1.学习P1口的使用方法2.学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤实验(一):本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1.使用单片机最小应用系统。
用扁平数据线连接单片机P1口JD1F 与十六位逻辑电平显示模块JD2I,打开相关模块电源。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验(二):本实验需要用到单片机最小应用系统(F1区)、十六位逻辑电平显示模块(I4区)以及八位逻辑电平输出模块(B1区)。
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1.用导线分别把单片机最小应用系统的P1.0、P1.1连接到两个拨断开关(B1区)K0、K1,P1.2、P1.3连接到两个发光二极管(I4区)L0、L1。
2.打开源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
3.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
单片机实验报告实验一单片机控制LED灯点亮一、实验目的1.进一步熟悉编程和程序调试2.学习P1口的使用方法3.学习延时子程序的编写和使用二、实验内容在keil环境下编写一下程序:1)点亮最后一个LED2)点亮1、2、5、6这四个LED3)让第三个LED闪烁4)设计出流水灯程序,从D7—D0三、实验设计及调试:实验步骤说明:本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。
1.使用单片机最小应用系统。
用扁平数据线连接单片机P1口与LED灯相连。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,输入源程序(实验(一)),进行编译,直到编译无误。
生成hex文件。
4.打开实验板总电源,将hex文件下载到实验板内,观察发光二极管显示情况。
实验硬件电路连接图:100第一个实验内容分析:首先观察分析硬件电路图,判断发光二极管是共阴极还是共阳极接法;观察二极管与P口的连接情况,即与哪个口连接以及是如何连接的;硬件电路部分分析清楚后在编写程序完成所要求的内容有硬件电路图知:发光二极管所连接的是P1口,并且L0—L7分别与P1.0----P1.7对应相连接,内容一:点亮最后一个LED即L7,故程序编写如下所示:#includevoid main(){P1=0x7f;}第二个实验内容分析:先进行硬件分析,要点亮1、2、5、6这四个LED,有硬件电路图知:只需给P1.6,P1.5,P1.2,P1.1低电平其他给高电平即可。
程序编写如下所示:#includevoid main(){P1=0x99;}第三个实验内容分析:让第三个LED闪烁,即让第三个灯亮一会,经过一段时间在灭,可采用延时程序,让第三个灯先亮然后经过一段延时在灭,中间所需延时时间可由软件设置,程序编写如下所示:#include#define uint unsigned int#define uchar unsigned charUint z;void delay();void main(){while(1){P1=0xfb;delay();P1=0xff;delay();}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=1200;y>0;y--);}第四个实验内容分析:设计流水灯程序,从D7—D0,本实验可采用两种方法:第一种比较麻烦:即先让D7亮经过一段延时在让D6亮同时让D7灭,如此一个一个的先亮后灭,最后采用一个死循环即可保证灯是从D7—D0循环的亮灭,不过这样编写的程序比较麻烦,执行程序时所占的内存空间也比较大,效率不高第二种方法是调用循环程序即可,本实验可采用循环右移程序,编写起来比较简单并且执行效率高,可移植性也比第一种要好~~程序编写如下:#include#include#define uint unsigned int#define uchar unsigned charuchar temp;void delay(uint);void main(){ temp=0xfe;while(1){for(num=0;num<8;num++){P1=temp;delay(100);temp=_cror_(temp,1);P1=0xff;delay(100);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}实验二单片机控制数码管实验一、实验目的1. 掌握数码管是如何显示出字符2. 掌握数码管动态显示原理二、实验原理 1.数码管两种接法2.共阴极数码管编码0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , ? 0 1 2 3 4 5 ? 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , ? 6 7 89 A B0x39 , 0x5e , 0x79 , 0x71 , 0x00 ? C D E F 无显示3.动态显示原理动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
计算机硬件技术基础实验报告二班级_________姓名__________学号__________成绩_________在Keil环境下运行以下程序,查看相关内存数据单元,并完成相应的题目。
1.编写程序,两位压缩的BCD码转换成相应的ASCII码提示:算法1 ANL 拆字、ORL #30H 拼字算法2 DIV 拆字、 ORL #30H 拼字存储两位BCD数指压缩的BCD码占一个单元,相应的ASCII码占二个单元。
2.数据块传送程序:(1)把内部RAM 40H~4FH置初值0A0H~0AFH;(2)而后把40H~4FH内容传送到外部RAM 9800H~980FH中;(3)再把 9800H~980FH内容传送到 50H~5FH中。
ORG 0000HMAIN: MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1: MOV @R0, AINC R0INC ADJNZ R2, A1; [1]解释本条命令含义(在程序中的作用)。
MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2, A2; [2] 解释本条命令含义(在程序中的作用)。
MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, @DPTR; [3]为什么使用MOVX指令。
MOV @R0, AINC DPTRINC R0DJNZ R2, A3SJMP $END3.多字节十进制加法:加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。
(需要提前在30H开始的存储单元中存入数据,2FH存储单元中的数据说明了相加的字节数。
)注意:在数据存储器指定的单元中存入数据的方法方法一:在KEIL环境中,在右下角数据存储器中找到指定的单元,双击,在其中直接输入数据。
方法二:使用MOV为数据存储器指定的存储单元存入数据。
小心:不能使用DB或DW为数据存储器赋值。
DB和DW伪指令只能用于在程序存储器指定的单元中定义常数。
ORG 0000HMAIN: MOV R0, #30HMOV R1, #20HMOV 2FH,#04HCLR CDA1: MOV A,@R0ADDC A, @R1DA A; [4] 解释本条命令含义(在程序中的作用)。
MOV @R1, AINC R0INC R1DJNZ 2FH, DA1; [5] 解释本条命令含义(在程序中的作用)。
MOV 7FH, CSJMP $END4.字节逻辑运算程序在片内RAM 的FIRST 和SECOND 单元中各有一符号数X 和Y,要求按下列条件算出Z ,存入RESULT 单元中(设运算结果仍为8位数)。
注意:在程序运行前,首先在数据存储器30H 和31H 存储单元中存入数据,在32H 存储单元中读结果。
可参考上一题在数据存储器中存入数据的方法。
FIRST EQU 30HSECOND EQU 31HRESULT EQU 32HORG 0000HSTART :MOV R0,FIRSTMOV A , R0JB ACC.7, NEG; [6] 解释本条命令含义(在程序中的作用)。
MOV B, #2DIV ABMOV A, BJZ TEMP1; [7] 解释本条命令含义(在程序中的作用)。
MOV A,R0ADD A, SECONDSJMP RESTEMP1: MOV A, R0ANL A, SECONDSJMP RESNEG: CPL ACC.7MOV B, #2DIV ABMOV A, BJZ TEMP2; [8] 解释本条命令含义(在程序中的作用)。
MOV A, R0ORL A, SECOND; [9] 解释本条命令作用。
SJMP RESTEMP2: MOV A, R0XRL A, SECONDRES: MOV RESULT, ASJMP $ENDZ=5.位操作程序布尔电路图如下:注意:程序中00H,01H,02H,03H都是位地址,在片内数据存储器低128字节中的位寻址区中的20H单元中,分别对应20H.0, 20H.1, 20H.2, 20H.3 .程序运行前需在X,Y,Z中存入数据,用来验证F的输入结果是否正确。
即在20H.0, 20H.1, 20H.2,中存入数据,查看20H.3得到的结果是否正确,例如:X,Y,Z分别赋值为1、0、1, 20H 字节地址的其它位默认为0,则在右下角数据存储器20H字节地址中输入05(十六进制数),程序运行后,再次读取20H字节地址的内容,判断20H.3的值就是F对应的运算结果。
X BIT 00HY BIT 01HZ BIT 02HF BIT 03HORG 0000HSTART: MOV C, ZANL C, /YMOV F, CMOV C, YANL C, /ZORL C, FMOV F, CMOV C, XANL C, YORL C, /FMOV F, CSJMP $END[10]如果XYZ对应的值为1、1、0。
经过运算后,20H字节的内容为______.变量F的值为______.6.拆字程序把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H 低四位,2001H、2002H高四位清零。
需要检查2000H、2001H和2002H单元的内容。
注意:首先应该在片外数据存储器2000H存储单元中输入数据,在KEIL环境中右下角的存储器窗口地址栏中输入X:0x2000 ,然后在2000H单元中提前存入数据。
或者,在程序中用MOVX指令也可以给片外数据存储器2000H单元中存入数据。
程序清单:ORG 0000HMOV DPTR,#2000HMOVX A,@DPTRMOV B,ASWAP A; [11] 解释本条命令含义(在程序中的作用)。
ANL A,#0FH; [12] 解释本条命令含义(在程序中的作用)。
INC DPTRM OVX @DPTR,AI NC DPTRM OV A,BA NL A,#0FHMOVX @DPTR,AS JMP $END[13] 请说明你的输入数据及最后得到的结果。
程序框图7.拼字程序把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。
需要察看2000H、2001H和2002H单元内容。
程序框图:程序清单注意:在程序运行前首先给片外数据存储器2000H、2001H单元中存入数据,可参考上一题。
ORG 0000HMOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH; [14] 解释本条命令含义(在程序中的作用)。
SWAP AMOV B,AINC DPTRM OVX A,@DPTRA NL A,#0FHO RL A,BI NC DPTRMOVX @DPTR,ASJMP $END[15] 请说明你的输入数据及最后得到的结果。
8.十六进制数码将十六进制数据08H,0CH转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成十六进制数存入40H,41H两个单元中。
ORG 0000HMOV SP,#2FHMOV A,#08HADD A,#30HPUSH ACCMOV A,#0CHADD A,#37HPUSH ACCMOV A,30HINC ACLR CSUBB A,#30HMOV 40H,APOP ACCINC ASUBB A,#37HMOV 41H,APOP ACCSJMP $END[16] 程序运行结束后:(30H)=______,(31H)=________,(40H)=_________,(41H)=_________.9.二进制数码将二进制数10011011B转换成BCD码数,存入30H和31H单元中;再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。
ORG 0000HMOV A,#10011011BMOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABSWAP AORL A,BMOV 31H,AMOV A,30HADD A,#16HDA APUSH ACCANL A,#00001111BMOV 40H,APOP ACCANL A,#11110000BSWAP AMOV B,#10MUL ABADD A,40HMOV 40H,ASJMP $END[17] 程序运行结束后:(30H)=______,(31H)=________,(40H)=_________.10.BCD码码将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H 单元中。
注意:在程序运行前首先在20H存储单元中存入78H。
ORG 0000HMOV A,20HANL A,#00001111BADD A,#30HMOV 30H,APUSH ACCMOV A,20HANL A,#11110000BSWAP AADD A,#30HMOV 31H,AINC ACLR CSUBB A,#30HMOV R2,APOP ACCINC ACLR CSUBB A,#30HSWAP AORL A,R2MOV 21H,ASJMP $END[18] 程序运行结束后:(20H)=______,(21H)=________,(30H)=_________,(31H)=_________.11.双字节二进制数左移一位将两个内部RAM 31H和30H单元中的内容组成的双字节数通过C y左移一位。
功能示意图31H 30H注意:在程序运行前,首先在片内数据存储器30H和31H中存入数据。
程序清单ORG 0000HCLR CMOV A ,30HRLC AMOV 30H, AMOV A,31HRLC AMOV 31H, ASJMP $END[19] 请说明你在程序运行前在30H和31H存储单元中输入的数据,及程序运行后,30H和31H存储单元中得到的数据。
12.多字节二进制数右移一位将三个内部RAM 32H、31H和30H单元中的内容组成的三字节数通过C y右移一位。
功能示意图32H 31H 30H注意:在程序运行前,首先在片内数据存储器30H、31H、32H中存入数据。
程序清单ORG 0000HCLR CMOV A,32HRRC AMOV 32H,AMOV A,31HRRC AMOV 31H,AMOV A,30HRRC AMOV 30H,ASJMP $END[20] 请说明你在程序运行前在30H、31H和32H存储单元中输入的数据,及程序运行后,30H、31H和32H存储单元中得到的数据。