单片机实验二2012030050025夏云
2012单片机实验指导书
![2012单片机实验指导书](https://img.taocdn.com/s3/m/8c6e8506f12d2af90242e69c.png)
作者:朱兆优
实验一
一.实验目的
1.学习数据块的建立。 2.掌握数据块移动的编程方法。 3.掌握查表程序的编程方法。
数据块传送和查表
二.实验任务
1.编写程序将 100H 开始的片外部数据存储器中的 N 个单元的内容(N≤0FFH),传送到片外部 数据存储器 200H 开始的 N 个单元,N 为数据块长度,存放于 0FFH 中。 2.编写程序将 30H 开始的内部数据存储器中的 N 个单元的内容(N≤20H),传送到片内数据存 储器 50H 开始的 N 个单元,N 为数据块长度,存放于 2FH 中。 3.按下图给出的函数关系曲线,要求编写出一个解 Y=F(X)的查表程序。
待 转 换 的 二 进 制 数 - 104 够 减 , 万 位 计 数 加 1, 再 减 104 不够减,恢复减之前的数,即得万位
求得万位计数值后,再将余数减去 103,方法类同,可得千位、百位、十位,最后的余数即为个 位。另外: 104=2710H 102=0064H 103=03E8H 101=000AH
四.资源分配
<学生自行完成>
2
《单片机原理及应用》实验讲义、课程设计指导书
作者:朱兆优
五.实验步骤
1.根据程序流程图和资源分配表编写汇编源程序。 2.开 PC 机后,建立一个个人工作目录(文件夹) ,使用 TKS 或 Keil 调试软件将源程序输入 生成汇编文件(如 file1.ASM)并保存到个人工作目录中。 3. 在单片机调试软件 IDE 下新建一个工程项目文件 (如 name1.mpj) , 并将汇编文件 file1. ASM 添加到工程中(工程项目文件也应存放到个人目录中) 。 4.对源程序进行编译。编译有错误要对出错的程序段或语句进行修改,程序修改后再编译, 如此反复直至程序编译无错误。 5.编译无错后,点击 快捷命令将程序装入单片机中动态调试状态。可选择使用单步、跟踪、
单片机原理实验实验2
![单片机原理实验实验2](https://img.taocdn.com/s3/m/92d84522dcccda38376baf1ffc4ffe473268fd6f.png)
将编写好的程序下载到单片机实验板上,
测试实验电路
4
并确保下载成功。
通过输入合适的信号或进行交互操作, 测试单片机电路是否按照预期工作。
实验数据记录和处理
1 记录实验数据
在实验过程中,准确记录电路参数、信号输 入和输出以及其他相关数据。
2 数据处理与分析
对于记录的实验数据,进行必要的处理和分 析以得出结论。
实验结果和分析
实验结果
展示实验中获得的数据和观察结果,解释达到的目 标和观察到的现象。
数据分析
对实验结果进行详细的数据分析,解释所观察到的 现象和实验数据的意义。
实验总结和结论
实验总结
总结实验过程中的关键步骤、观察结果和问题,以及可能的改进。
实验结论
根据实验结果和分析,得出关于单片机原理和应用的结论,并讨论可能的应用领域。
参考文献
1. 书籍名称1,作者1 2. 书籍名称2,作者2
单片机原理实验实验2
本实验旨在通过实践进一步了解单片机的工作原理和应用。我们将学习实验 目的和背景、实验器材和材料、实验步骤和方法、实验数据记录和处理、实 验结果和分析、实验总结和结论以及参考文献。
实验目的和背景
通过本实验,我们的目的是深入了解单片机的原理和应用,并通过实践加深 对其工作方式的理解。我们将探索单片机在各种电子设备和系统中的作用, 并了解它在嵌入式系统中的重要性。
实验器材和材料
单片机实验板
用于搭建电路和进行编程实验的主要设备。
电脑
用于编写、下载和测试单片机程序。
电路元件
如电阻、电容、LED 等,用于构建实验电路。
实验步骤和方法
1
准备实验电路
根据实验要求搭建单片机电路,并确保编写程序2Fra bibliotek连接正确。
单片机实验二
![单片机实验二](https://img.taocdn.com/s3/m/4ae637f54693daef5ef73d56.png)
南昌航空大学实验报告二0一一年 9月28 日课程名称:单片微型机实验名称:实验一软件实验9、10班级: 080611 姓名:吴智丽学号: 08061103指导教师评定:签名:一、实验目的1、熟悉8031定时/计数功能,掌握定时/计数初始化编程方法。
2、熟悉MCS—51定时器、串行口和中断初始化编程方法,了解定时器应用在实时控制中程序的设计技巧。
二、实验内容1、对定时器0外部输入的脉冲进行计数,并送显示器显示。
2、编写程序,从DVCC系列单片机实验仪键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、实验步骤脉冲计数1、实验程序框图2 、实验操作(1)把8032CPU的P3.4插孔接T0—T7任一根信号线或单脉冲输出空“SP”。
(2)用连续方式从起始地址02A0H开始运行程序(按02A0后按EXEC键)。
(3)观察数码管显示的内容应为脉冲个数。
(4)脉冲计数程序CONT: MOV SP,#53HMOV TMOD,#05H;初始化定时/计数器MOV TH0,#00HMOV TL0,#00HSETB TR0;允许定时/计数中断CONT1: MOV R2,TH0;取计数值MOV R3,TL0LCALL CONT2;调二转十进制子程序MOV R0,#79HMOV A,R6LCALL PWORMOV A,R5LCALL PWORMOV A,R4LCALL PWORLCALL DISP;调显示子程序SJMP CONT1;循环CONT2: CLR A;清R4、R5、R6MOV R4,AMOV R5,AMOV R6,AMOV R7,#10HCONT3: CLR C;R2、R3左移,移出的位送CYMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6;R4、R5、R6×2 + CY送R4、R5、R6 DA AMOV R6,A;十进制调整MOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,CONT3;循环16次RETPWOR: MOV R1,A ;;拆送显示缓冲区LCALL PWOR1MOV A,R1SWAP APWOR1: ANL A,#0FHMOV @R0,AINC R0RETDISP: SETB 0D4H;显示子程序MOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1: MOV DPTR,#0FF21HMOV A,R2MOVX @DPTR,AMOV DPTR,#CDATAMOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,ADISP2: DJNZ R3,DISP2DEC R1CLR CMOV A,R2RRC AMOV R2,AJNZ DISP1MOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,ACLR 0D4HRETCDATA: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H, 90HDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0D EH电脑时钟1、实验程序框图2、实验操作(1) 用连续方式从起始地址0340H开始执行程序(输入0340后按EXEC键)。
单片机原理及应用实验二报告
![单片机原理及应用实验二报告](https://img.taocdn.com/s3/m/c2c8e9d6dbef5ef7ba0d4a7302768e9951e76ed1.png)
单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
2012秋单片机实验
![2012秋单片机实验](https://img.taocdn.com/s3/m/24f3d302915f804d2b16c159.png)
《单片机原理》实验指导书高林湖北民族学院2012年11月实验系统概述一、单片机仿真实验仪简介:《单片机原理》课程实验采用由江苏启东达爱思计算机有限公司生产的596H+型单片机仿真教学实验仪器。
实验仪通过RS-232串口与微机(上位机)进行通信,可完成MCS-51系列8位单片机和MCS-196系列16位单片机的实验,功能较强大。
实验仪电路板采用模块化设计,使实验连线简捷明了,免去了学生调试实验线路的工作。
整个实验电路面板的硬件布局如图1.1所示:图1.1 实验电路面板硬件布局图对所标注部件说明如下:1.串行通信波特率选择开关。
其中左边一位用于做8251串行通信实验,右边两位为系统与PC 机串行通信波特率选择位。
在PC机配置较低的场合或DOS操作系统下通常采用中间的9600bps常规波特率;而如果在windows环境或PC机能承受的情况下,选择右边的57600bps波特率较为适宜。
2.CPU选择开关。
可在通电或断电情况下改变当前的 CPU,该开关包含三档,左、右两档均用来选择51系列单片机,而中间一挡用来选择196系列单片机,注意在实验之前要选择正确的单片机进行实验。
3.复位按钮。
一般用作程序执行过程中,按下该按钮后,程序停止运行,所有设备回复初始状态。
4.暂停按钮。
可以暂停当前程序的执行,以便查看单片机的运行状态。
打开实验仪电源开关,系统应显示闪动“P.”,处于待命状态;否则按下RESET键,如仍再不显示,应立即切断电源,检查后重新进行或向实验教师提问。
二、实验仿真软件介绍:运行“MCS-51单片机实验系统”,会出现选择微机与实验仪进行串行通信的对话框,如图1.2所示:图1.2 选择通信端口对话框在上图所示的对话框中,主要是进行通信端口的选择和波特率选择这两项设置。
由于上位机只有最多两个RS-232串行通信端口,因而端口选择只可能是串口1或串口2,其他并未用到。
而具体是串口1、2中的哪一个则由实验仪与上位机的通信连线有关。
电子实验(模电)考试安排
![电子实验(模电)考试安排](https://img.taocdn.com/s3/m/e090213883c4bb4cf7ecd14f.png)
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
12级2013~2014学年第1学期《电子技术实验基础Ⅱ》考试安排请同学们务必带上面包板、万用表、准考证在上述的考试时间和地点参加考试,否则视为无故缺考。
单片机原理与接口技术实验二
![单片机原理与接口技术实验二](https://img.taocdn.com/s3/m/19094f7727284b73f242502f.png)
实验二(1)指令与寻址方式认知实验一、实验目的1.了解单片机基本指令及其寻址方式;2.掌握在µVision环境中查看指令操作结果的技巧。
二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx31。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。
ORG 0000HMAIN:MOV R7,#16MOV A,#00HMOV R0,#30HLP:MOV @R0,AINC R0INC ADJNZ R7,LPSJMP $END(3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。
(6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。
2.示例及相关设置(1)建立一个文件夹:lx32。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。
ORG 0000HMOV R0,#20HMOV R1,#22HMOV A,@R0ADD A,@R1MOV 24H,AINC R0INC R1MOV A,@R0ADDC A,@R1MOV 25H,ASJMP $END(3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。
单片机实验指导书(C语言)范文
![单片机实验指导书(C语言)范文](https://img.taocdn.com/s3/m/2c9b094ca98271fe910ef9b3.png)
《单片机原理及应用》实验指导书(C语言)华南师范大学物电学院微机教研室宋晖2011.09前言由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。
由于目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机,所以本实验指导书为学习MCS-51单片机的学生,配合《单片机原理及应用》课程的教学,结合本学院自制单片机教学实验板编写了这本实验指导书。
《单片机原理应用及》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。
本实验指导书提供多个实验的指导性材料,有些实验还有一些有一定难度的选做项目,可以根据课时的安排和教学要求进行取舍。
为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。
由于时间紧迫,需要赶课程进度与实验时间的同步,加上编者学识有限,如有不妥之处,欢迎读者批评指正。
实验须知1. 实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。
2. 各种电源的电压和极性不能接错,严禁带电接线和接插元器件。
通电前须经过指导教师检查认可后方能通电。
3. 不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。
4. 严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。
5. 实验中若损坏仪器或元器件,应及时向指导教师报告。
6. 在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。
7. 实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。
单片机实验二
![单片机实验二](https://img.taocdn.com/s3/m/94b31fafbceb19e8b8f6ba8b.png)
天津理工大学计算机与通信工程学院实验报告2016-2017学年第一学期课程名称单片机原理与应用学号20145475 学生姓名吴延昌年级2014级专业计算机科学与技术课程代码0660226 实验地点7-215实验名称实验二并口实验主讲教师王晓晔试验时间2016年10月14日12:30-3:30成绩实验(二)实验名称并口实验软件环境Keil一、实验目的1.熟悉和掌握AT89C51单片机的并口工作原理;2.了解和掌握单片机的并口输入输出应用。
3.掌握数码管的使用方法。
二、实验内容一、LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
Proteus设计的仿真电路如图所示。
(1)运行下述程序,并在电路上验证。
(2)如果要求黄灯闪烁3次后红灯亮,应该怎么该写程序?#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_A=P0^0; //东西向灯sbit YELLOW_A=P0^1;sbit GREEN_A=P0^2;sbit RED_B=P0^3; //南北向灯sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量//延时void DelayMS(uint x){uchar i;while(x--) for(i=0;i<120;i++);}//交通灯切换void Traffic_Light(){switch(Operation_Type){case 1: //东西向绿灯与南北向红灯亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type=2;break;case 2: //东西向黄灯闪烁,绿灯关闭DelayMS(300);YELLOW_A=~YELLOW_A;GREEN_A=1;if(++Flash_Count!=10) return; //闪烁5次Flash_Count=0;Operation_Type=3;break;case 3: //东西向红灯,南北向绿灯亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type=4;break;case 4: //南北向黄灯闪烁5次DelayMS(300);YELLOW_B=~YELLOW_B;GREEN_B=1;if(++Flash_Count!=10) return;Flash_Count=0;Operation_Type=1;}}//主程序void main(){while(1) Traffic_Light();}修改:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_A=P0^0; //东西向灯sbit YELLOW_A=P0^1;sbit GREEN_A=P0^2;sbit RED_B=P0^3; //南北向灯sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量//延时void DelayMS(uint x){uchar i;while(x--) for(i=0;i<120;i++);}//交通灯切换void Traffic_Light(){switch(Operation_Type){case 1: //东西向绿灯与南北向红灯亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type=2;break;case 2: //东西向黄灯闪烁,绿灯关闭DelayMS(300);YELLOW_A=~YELLOW_A;GREEN_A=1;if(++Flash_Count!=6) return; //闪烁5次Flash_Count=0;Operation_Type=3;break;case 3: //东西向红灯,南北向绿灯亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type=4;break;case 4: //南北向黄灯闪烁5次DelayMS(300);YELLOW_B=~YELLOW_B;GREEN_B=1;if(++Flash_Count!=6) return;Flash_Count=0;Operation_Type=1;}}//主程序void main(){while(1) Traffic_Light();}2、开关控制用AT89C51单片机控制四个按键K1到K4和四个发光二极管D1到D4,要求当按下K1或K2键时D1或D2点亮,松开时对应的发光二极管熄灭,当按下K3或K4后,D3或D4不停地闪烁。
[工学]单片机实验指导书2012版学生用
![[工学]单片机实验指导书2012版学生用](https://img.taocdn.com/s3/m/a3b254cfac51f01dc281e53a580216fc700a53bb.png)
实验一8051简单编程与调试实验目的通过简单小程序的输入和调试,熟悉并掌握Keil 的使用。
学会Proteus与Keil的整合调试。
实验基本要求建立三个项目,分别输入存储块清零、二进制BCD码及二进制ASCII码转换的汇编源程序,并进行仿真调试。
画出实验程序的流程框图。
实验步骤采用Keil Cx51 开发8051单片机应用程序一般需要经过下面几个步骤:1、在 Vision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机CPU器件。
在菜单栏中选择“Project”→“New Project”,弹出“Create New Project”对话框,选择目标路径,在“文件名”栏中输入项目名后,单击“保存(S)”按钮,弹出“Selecte Device for Target”对话窗口。
在此对话窗口的“Data base”栏中,单击“Atmel”前面的“+”号,或者直接双击“Atmel”,在其子类中选择“A T89C51”,确定CPU类型。
如图所示。
点击“确定”按钮后,弹出如下的对话框如果是进行汇编语言编程选择“否”。
2、利用μVision2的文件编辑器编写C语言(或汇编语言)源程序文件,并将文件添加到项目中去。
一个项目可以包含多个文件,除源程序文件外还可以有库文件或文本说明文件。
在μVision2的菜单栏中选择“File”→“New”命令,新建文档,然后在菜单栏中选择“File”→“Save”命令,保存此文档,这时会弹出“Save As”对话窗口,在“文件名(N)”一栏中,为此文本命名,注意要填写扩展名“.asm”。
单击“保存(S)”按钮,这样在编写汇编代码时,Keil会自动识别汇编语言的关键字,并以不同的颜色显示,以减少输入代码时出现的语法错误。
程序编写完后,再次保存。
在Keil中“Project Workspace”子窗口中,单击“Target 1”前面的“+”号,展开此目录。
单片机实验报告
![单片机实验报告](https://img.taocdn.com/s3/m/9787e58568dc5022aaea998fcc22bcd126ff42e3.png)
单片机实验报告《单片机原理与应用》实验报告第二次实验:实验一、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芯片中运行。
实验二实验报告
![实验二实验报告](https://img.taocdn.com/s3/m/fa7b206858fafab069dc026e.png)
广西工学院鹿山学院实验报告2011--2012 学年第 2 学期课程名称:单片机原理与应用实验名称:外部中断系别:电控系专业班级:电子092姓名:李嘉旺学号:20090485指导教师:覃溪评阅成绩:评阅人:二〇一二年五月十二日电子信息与控制工程系实践教学管理中心实验二实验名称外部中断一、实验目的1、熟悉单片机中断控制机制2、掌握单片机外部中断使用方法3、理解单片机外部中断的应用意义二、实验内容编写一段程序,要求:主程序的功能是一位数码管依次循环显示0~9,,中断信号到达时,八个发光二极管全亮---全灭循环两次。
(使用外部中断INT0,跳沿触发方式工作)三、电路图四、实验操作及运行结果1、先在Keil C51中建立一个工程,再在工程里建立一个.c文件。
2、编程:#include<reg52.h>#define uchar unsigned int#define uint unsigned intsbit L1=P3^2;uchar shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void deplay(){uint i,j;for(i=0;i<600;i++)for(j=0;j<300;j++);}void main(){IT0=1;EX0=1;EA=1;while(1){ uint i;for(i=0;i<10;i++){ P2=shu[i] ;deplay() ;}}}void aa0() interrupt 0{uint i;for(i=0;i<2;i++){P2=0x00;deplay() ;P2=0xff;deplay() ;}}3、调试好程序后生成为hex文件4、使用配套的排线将P2口与JP3相连,将P3口与JP5相连,把hex程序写入到单片机中5、运行结果:数码管从0到9循环出现,当按L1是数码管全亮全灭2次,完了再重现0到9循环出现五、实验中出现的问题和解决方法出现的问题都是在编程上面,但通过和同学老师交流还是把程序编写了出来。
2011-2012下单片机实验报告
![2011-2012下单片机实验报告](https://img.taocdn.com/s3/m/44f92200eff9aef8941e06d1.png)
实验一流水灯实验 (2)实验二数码管静态显示实验 (3)实验三按键输入与数码管静态显示实验 (6)实验四数码管动态显示实验一 (10)实验五数码管动态显示实验二 (12)实验六键盘扫描实验 (15)实验七外部中断实验一 (17)实验八外部中断实验二 (20)实验九定时器实验一 (23)实验十定时器实验二 (25)实验十一定时器实验三 (28)实验十二串口实验一 (29)实验十三串口实验二 (31)实验十四串口实验三 (34)实验十五 AD实验 (39)实验十六 DA实验 (42)实验十七点阵屏显示实验 (45)实验十八 LCD1602显示实验 (47)实验一流水灯实验一、实验要求1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2.继续在Proteus软件中绘制电路,将P1口做输出口,接八只发光二极管3.在Keil软件中编写程序,实现功能,间隔1S点亮一个发光二极管,顺序从P1.0到P1.7依次点亮。
二、实验目的1.学习Proteus软件的使用方法2.学习Keil软件的使用方法3.学习端口输出的使用方法4.掌握延时程序的设计三、实验说明(条理清晰,含程序的一些功能分析计算)在Proteus软件中把实验要求的电路连接好,再利用Keil软件把要实现的功能编写程序,生成hex文件,把hex文件导到Proteus软件中进行仿真。
在编写程序时需要延时1s,我们选的单片机是12MHz的,一机器周期是12个时钟脉冲,一个时钟脉冲的时间是1/12us,即一个机器周期为1us。
程序中子函数void delay_ms(int x)中x为1是可延时1ms,以此类推可得1s=1000ms,当x=1000时刚好延时1s。
四、硬件原理图及程序设计(一)硬件原理图设计电路中P1.0到P1.7为LED控制端口,排阻RP1阻值为330Ω,AT89c51单片机的9脚(RST)为复位引脚;31引脚(EA)为存取外部存储器使能引脚:单片机内部已接地,所以我们不用再接了。
单片机第二次实验报告
![单片机第二次实验报告](https://img.taocdn.com/s3/m/3f1f92d8b9f3f90f76c61b29.png)
上海电力学院MCS-51单片机实验报告题目:步进电机控制实验院系:电气工程学院专业年级:学生姓名:步进电机控制实验一、实验目的1、了解步进电机控制的基本原理。
2、掌握步进电机转动的编程方法。
二、实验内容通过程序改变正、反转命令,转速参数和转动步数,并在显示器上显示,转动步数减为零时停止转动。
三、实验预备知识步进电机驱动原理是切换每相线圈中的电流和顺序,来使电机作步进式旋转。
驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
单片机控制步进电机最适合。
四、实验接线图显示部分参考键盘显示控制器8279应用实验五、实验程序框图六、七、实验步骤1、将P1.0~P1.3分别接到BA~BD插孔。
2、用8芯排线将8279区(a-h)连接到数码管显示区的CODE(A-H),JB53(BIT0-BIT7)连接到数码管显示区的BIT1-BIT8。
3、用4芯排线将8279区的JB52(H1-H7)连到键盘区的KH(H1-H4)上,JB54(L4-L1)连到键盘区的KL(L4-L1)上。
4、8279区8279CS2连到系统译码的Y6上,8279CLK连接到固定脉冲的1MHz。
5、调试、运行程序test8中BJDJ.ASM。
6、在显示器上显示的数字第:第一位为“0”表示正转,为“1”表示反转,第二位“0~F”为转速等级,第三位到第六位设定步数,到0步进电机停止旋转。
七、实验小结本次实验的内容是步进电机的控制,通过程序改变正、反转命令,转速参数和转动步数等。
虽然实验的时候曾遇到过一些问题,最终还是较好的达到了实验目的,观察到了现象,并对程序有了一定程度的理解。
单片机第二次试验报告__分支程序设计
![单片机第二次试验报告__分支程序设计](https://img.taocdn.com/s3/m/012443ecaa00b52acec7ca12.png)
《微机实验》报告实验名称 分支程序设计实验 专业班级 姓名 学号 序号 联系方式一、任务要求熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。
1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。
240/2204020X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩当当当2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路1.分段函数设计对于第一个任务,相当于设计一个分段函数程序,根据变量X的值所处的区间进行相应的计算。
由学过的知识知道,可利用比较转移指令CJNE来判断X是否等于临界值20,40,若不等,再根据执行CJNE 指令后的进位位CY的值来判断X与临界值的的大小关系,易知CY=0则X大于临界值,CY=1则X小于临界值;如此,再进行相应的计算。
另外,除法计算中可能产生余数,商和余数应该分开存储,若乘方运算结果大于255,高八位与低八位应分开存储。
2. 24小时制时钟程序本程序须可以构建两部分循环。
首先构建一个三重循环实现“一秒延时”,循环体利用NOP指令(单字节指令,1µs)经多次循环达到延时一秒的效果。
再利用已经构建好的“一秒延时”部分,设计计时系统的三重循环,秒(0-59)、分(0-59)、时(0-23)。
需要注意的是,在小时、分、秒达到59时,下一次应该为零。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学实验报告课程名称:MCS-51单片机原理、系统设计与应用实验项目:实验二单片机串行口应用学生姓名:夏云学号:2012030050025指导老师:龚光珍实验地点:211科技大楼607实验时间:2015年5月23号19:00-21:00一、实验原理1.51单片机的串口工作原理51单片机是一个全双工串行口,有四种工作方式方式0—同步移位寄存器方式:数据收发信号线;TXD:输出时钟。
主要用作单片机的输入输出口的扩展,并不是UART。
方式1~2—通用异步收发器方式,RXD:接受信号线,TXD:发送信号线本实验采用方式1(8位UART,波特率可变),波特率采用57600。
2.定时/计数器设置串行口可以选择使用T1 或T2 溢出作为波特率基准,如:选择T1 溢出。
定时/计数器工作方式中只有方式 2 可以用作波特率发生器。
因此TH1、TL1 初始值均为0XFF。
3.启动串口数据接收与发送的控制(1)启动发送对 SBUF 执行写入命令,即可启动串行口发送。
如:MOV SBUF,#55H 或SBUF=0X55;数据成功发送后,TI=1(2)启动接收当同时满足RI=0, REN=1 时,启动接收,数据成功接收后,RI=1可通过对TI、RI 的查询或使能中断,判别数据是否发送完或接收到。
通信数据传输格式组成通信的双方除了约定传输速率(波特率)外,还需要约定数据的传输格式。
本文档约定的数据传输格式为:0X7E 数据1 数据2 …… 数据m 0X7E其中:0X7E——标志数据包的起始和结束有效数据——数据1 数据2 ……. 数据m 若有效数据中出现0X7E,应进行扩展处理,如:将0X7E 变换成0XFF0X01 若有效数据中出现0XFF,则变换成0XFF 0X02若发方需要发送的有效数据包为:0X01 0X02 0X03 0X07 0X7E 0X01 0XFF 0X10,共8个字节,则扩展处理后发送的数据包为:0X7E 0X01 0X02 0X03 0X07 0XFF 0X01 0X01 0XFF 0X020X10 0X7E,共12 个字节。
每个字节用串行口以帧为单位发送。
当接收到数据包:0X7E 0X01 0X02 0X03 0X07 0XFF 0X01 0X010XFF 0X020X10 0X7E,去除扩展的数据,还原成原始有效数据。
二、实验内容1.确定串口通信的波特率2.计算定时器初始值3.编写串口接收程序、处理程序和发送程序三、实验过程1.学习51单片机的串口工作原理2.接收源程序分析3.熟悉使用串口调试器4.改进程序以增加功能四、程序流程1.实验程序#include <reg51.h>unsigned char data Rcv_buf[30]; //串口接收数据存放数组unsigned char data Rcv_len; //串口接收数据长度unsigned char data Proc_buf[30];//处理后数据存放数组unsigned char data Proc_len; //处理后数据长度unsigned char data Send_cnt;bit Is_7e; //是否收到第一个0X7E标志;1——收到,0——未收到bit Is_ff; //是否收到0XFF,1——收到,0——未收到bit Rcv_ok; //串口接收完数据包标志;1——接收完,0——未接收完bit Rcv_err; //接收数据错误bit Last_send; //标志数据是否发至PC,1——待发,0——已发void Init(void);void Process_dat(void);void main(){Rcv_ok=0;Rcv_err=0;Is_7e=0;Is_ff=0;Last_send=0;Rcv_len=0;Send_cnt=0;Init();REN=1;P2=0XFF;while(1){while(!Rcv_ok) ; //等待接收完一个数据包Process_dat();//数据包处理(转存以接收下一包数据)Rcv_len=0;if(!Last_send){Last_send=1; //标志该数据包未发送完Send_cnt=0;TI=1; //强制进入中断,进行数据的串口发送}}}void Init(){SCON=0X60; //方式1,收到停止位,RI=1PCON=0X80; //SMOD=1;TMOD=0X20; //自动重装载方式TH1=0XFF; //波特率57600bpsTL1=0XFF;TR1=1; //启动定时/计数器1EA=1; //开中断ES=1; //允许串行口中断}void Int_serial() interrupt 4{unsigned char data dat_tmp;if (TI){TI=0;if (Send_cnt<Proc_len)SBUF=Proc_buf[Send_cnt++];else{ Last_send=0;TI=0;}}if (RI){dat_tmp=SBUF;RI=0;if (!Rcv_ok) //数据处理完后,才允许接收下一个数据包{if (dat_tmp==0x7E){if (Is_7e){Rcv_ok=1;Is_7e=0;P2=0XFE;}else Is_7e=1;}else if (dat_tmp==0xFF){if (Is_ff) Rcv_err=1;else Is_ff=1;}else if (Is_ff){Is_ff=0;if (dat_tmp==0x01) Rcv_buf[Rcv_len++]=0X7E;else if(dat_tmp==0x02) Rcv_buf[Rcv_len++]=0xFF;elseRcv_err=1;}else if(Is_7e)Rcv_buf[Rcv_len++]=dat_tmp;else ;}}}void Process_dat(){unsigned char data i;for (i=0;i<Rcv_len;i++){Proc_buf[i]=Rcv_buf[i];Proc_len+=1;}Rcv_ok=0;}2.实验中遇到的问题与解决方法1)实验时所用的二字节累加和校验方式原来没有遇到过,实验中也没有看到前面的原理有说明,导致对二字节累加和校验方式的工作步骤不清楚解决方法:通过对实验程序的反复研究分析,弄懂了二字节累加和校验方式的具体工作原理2)程序最终做好了,编译无误,却出现了输出的数据个数越加越多的现象解决方法;找程序中的错误,反复检验自己的实验程序,方向无误,找老师给的源程序,发现错误,在每次输出完成之后Send_cnt的值没有归0,导致输出长度一直增加,应该使其每次输出后Send_cnt=0,在试验程序相应位置插入Send_cnt=0。
五、实验分析及实验结果1.分析串口中断服务程序中接收部分的流程答:if (RI){ dat_tmp=SBUF;RI=0;if (!Rcv_ok) //数据处理完后,才允许接收下一个数据包{ if (dat_tmp==0x7E) //判断接收到的数据是否为0x7E{ if (Is_7e) //判断是否收到的是第一个0X7E{ Rcv_ok=1; // Rcv_ok=1;表示正在接收数据中Is_7e=0; //将接收到数据为0x7E的标志置为0P2=0XFE; } //elseIs_7e=1;} //收到的不是第一个0X7E,将Is_7e=1elseif (dat_tmp==0xFF) // 判断输入数据是否0xFF{ if (Is_ff) Rcv_err=1; //如果Is_ff一开始为1,则输出错误else Is_ff=1;} //收到一个0xFF,Is_ff=1;else if (Is_ff)//如果当前输入不为0xFF,判断上一个输入是不是0xFF {Is_ff=0; //将Is_ff置为0;if (dat_tmp==0x01)Rcv_buf[Rcv_len++]=0X7E;//若当前输入为0x01,则输出为0x7E else if(dat_tmp==0x02) //Rcv_buf[Rcv_len++]=0xFF;//若当前输入为0x02,则输出为0xFF elseRcv_err=1;} //若当前输入不为0x01或0x02,则输出错误else if(Is_7e)Rcv_buf[Rcv_len++]=dat_tmp;//若接收到两个OX7E,则数据传输完成else ;}//如果输入的数据不是0X7E,OXFF OXO1,OXFF OXO2,则程序继续}}总的流程:判断输入的数据,若输入为第一个OX7E,则开始接收数据;若输入为第二个OX7E,则程序接收完毕;接收程序中,若接收到OXFF,则判断接下来接收的数据,若下一个接收数据为OXO1,则0XFF 0X01输出0X7E,若接收数据为OXFF OXO2,则输出为OXFF;接收数据过程中,接收到其他数据,则输出原输入数据。
2.分析串口中断服务程序中数据的接收与指令RI=0在程序中的位置是否有关?答;有关六、心得体会1.学到了很多书本上没有的知识,意识到理论与实际结合的必要性2.改进程序的前提是要读懂他的程序,而且要意识到源程序不一定是百分百正确的。