文档库 最新最全的文档下载
当前位置:文档库 › 单片机实验一zf

单片机实验一zf

单片机实验一zf
单片机实验一zf

昆明理工大学信息工程与自动化学院学生实验报告

( 2012 —2013 学年 第 2 学期 )

课程名称:嵌入式 开课实验室: 2015 年 4月 日 年级、专业、班 学号

姓名

成绩

实验项目名称 单片机输入输出端口控制实验

指导教师 江虹

该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□

B.一般 □

C.没有 □

教师签名:

年 月 日 一、实验目的及内容

1、熟悉μ Vision 的使用方法及工程项目开发过程;

2、掌握C51程序设计方法。

3、掌握89C51单片机I/O 的控制方法。 二、所用仪器、材料(设备名称、型号、规格等或使用软件)

51单片机 Keil uVision4编程软件

三、实验方法、步骤(或:程序代码或操作过程)

1、实验板电路原理如图3所示。

用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。

做单一灯的左移/右移,8个发光二极管分别接在单片机的P1.0~P1.7端口上,输出“0”时,发光二极管亮,开始时按P1.0->P1.1->…->P1.7的顺序依次点亮LED,再按

P1.7->P1.6->…->P1.0的顺序依次点亮LED,重复循环。

(1)、按实验要求在μ Vision中创建项目,编辑、调试、编译程序。

(2)、将编译生成的目标码文件(后缀为.Hex)下载到实验板上。

(3)、观察实验运行结果并记录。

2、思考

设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止。。

四、实验过程原始记录( 测试数据、图表、计算等)

1、实现8个发光二极管循环点亮

(1)实验源代码:

#include

#define uChar8 unsigned char

#define uInt16 unsigned int

uChar8 code S[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uChar8 code V[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delayms()

{

uInt16 m,n;

for(m=0;m<300;m++)

for(n=0;n<=500;n++)

;

}

void main(void)

{

uInt16 i;

while(1)

{

for(i=0;i<=7;i++)

{

P1 = V[i];

delayms();

}

for(i=0;i<=7;i++)

{

P1 = S[i];

delayms();

}

}

}

(2)在模拟软件上进行测试

2、思考

(1)实验源代码:

#include

#include

#define uChar8 unsigned char

#define uInt16 unsigned int

uChar8 code S[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uChar8 code V[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void ys()

{

uInt16 n,m;

for(n=0;n<300;n++)

for(m=0;m<120;m++)

;

}

void start()

{

P1 = 0x00;

ys();

}

void jo()

{

uInt16 i;

for(i=0;i<=2;i++)

{

P1 = 0x55;

ys();

P1 = 0xaa;

ys();

}

}

void dl()

{

uInt16 i,a;

for(a=1;a<=3;a++)

{

for(i=0;i<=7;i++)

{

P1 = V[i];

ys();

}

for(i=0;i<=7;i++)

{

P1 = S[i];

ys();

}

}

}

void lsz()

{

uInt16 i;

for(i=0;i<=3;i++)

{

P1 = 0x3c;

ys();

P1 = 0x99;

ys();

P1 = 0xc3;

ys();

}

}

void lsw()

{

uInt16 i;

for(i=0;i<=3;i++)

{

P1 = 0xc3;

ys();

P1 = 0x99;

ys();

P1 = 0x3c;

ys();

}

}

void ss()

{

uInt16 i;

for(i=0;i<=3;i++)

{

P1 = 0x00;

ys();

P1 = 0xff;

ys();

}

}

void main(void)

{

start();

jo();

dl();

lsz();

lsw();

ss();

while(1)

P1=0xff;

}

(2)在模拟软件上进行测试

五、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)

这次试验使我熟悉了μ Vision的使用方法及工程项目开发过程,掌握了C51程序设计方法以及89C51单片机I/O的控制方法在今后的学习中我会更加的努力去学习有关嵌入式的有关知识的。

注:教师必须按照上述各项内容严格要求,认真批改和评定学生成绩。

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验一

软件实验部分 实验一 Keil uVision2 开发环境入门 一、实验目的 1、初步熟悉Keil uVision2开发环境的使用; 2、了解C51语言程序设计和调试方法。 二、实验内容 1、应用给定程序联系使用Keil uVision2软件 2、对指定数据块赋值 三、实验流程图 1、输入以下程序: 全速运行实验程序,观察相关单元中数据的变化和单步运行的方法 2、对指定数据块赋值 (1)对指定单元进行清零操作 (2)对外部RAM中2000H开始的单元进行赋值,赋值数据为0~16.并对相关单元进行观察。 四、实验步骤 (一)存储块清零 1、打开Keil uVision2开发环境; 2、新建一个文件:File→New; 3、根据清零实验要求输入代码如下: xdata unsigned char Buffer[256] _at_ 0x3000; void main() {

unsigned int index; unsigned char xdata * ptr; ptr = &Buffer; // 起始地址 for (index = 0; index <= 255; index++) { *ptr++ = 0; // 清0, 地址加一 } } 4、保存文件名为“Text1.c”并为其建一个工程; Project→New Project→AT89s51→确定→右键Source Group 1→Add Files to Group ” Source Group 1”→将“Text1.c”选中加入工程即可。 5、编译→改错→直到编译通过没有错误; 6、仿真程序:按钮→按钮→屏幕下方会出现Address工具栏→Address栏中输入 如右图→通过改变表中地址对应的内容,这 三个按钮运行程序,查看内容是否被清零。 (二)对指定数据块赋值 1、建立工程和新建文件同(一)中类似 2、自己编程 仿真结果如下图:(仿真步骤与(一)类似)

单片机实验报告

仲恺农业工程学院实验报告纸 自动化学院(院、系)工业自动化专业144班组单片机与嵌入式系统实验课学号201421714406姓名黄国盛实验日期2016年11月05日教师评定 实验一Keil C51集成开发环境的使用练习 一、实验目的 熟悉Keil C51集成开发环境的使用方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 按照Keil C51软件的使用说明进行Keil C51集成开发环境的安装和使用练习,然后按照以下内容建立并编译产生HEX文件。 ORG0000H LJMP Main ORG00F0H Main: MOV R7,#0 Loop: MOV R6,#0 DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,Loop;延时 CPL P1.0;P1.0取反 CPL P1.1;P1.1取反 CPL P1.2;P1.2取反 CPL P1.3;P1.3取反 CPL P1.4;P1.4取反

CPL P1.5;P1.5取反 CPL P1.6;P1.6取反 CPL P1.7;P1.7取反 SJMP Main END 四、实验要求 熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。 五、实验预习要求 认真阅读Keil C51软件的使用说明。 六、实验思考题 试写一条把片内RAM50H~59H单元清零的程序。 实现程序如下: ORG0000h LJMP Main ORG0100H Main:MOV R0,#50H;立即数50H(内部RAM地址)传送到R0中 MOV R1,#10;立即数10(循环次数为10次)传送到R1中 MOV A,#0;立即数0传送到A,中将累加器A的值清0 LOOP:MOV@R0,A;将R0内容所指向的单元清0 INC R0;R0内容加1,修改地址指针 DJNZ R1,LOOP;减1不为0判断,若为真跳回循环,否,则运行下一语句 END;结束 七、实验总结 通过实验,熟悉80C51指令系统,熟悉Keil C51集成开发环境的使用方法,熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。加深对内部存储器读写的认识。

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验

实验三急救车与交通灯实验(4学时) 一、实验目的 (1)了解8255芯片的结构、工作方式及编程方法 (2)学习模拟十字路口交通控制的实现方法; (3)熟练掌握外部中断技术的使用方法。 二、实验内容 (1)在实验箱上完成: 用8255的PA口、PB口的低四位做输出口,控制十二个发光二极管亮灭,模拟十字路口交通灯管理。一般情况下正常显示,有急救车到达时,两个方向四个路口交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常。本实验用单次脉冲申请外部中断,表示有急救车通过。 (2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。 所用元器件:单片机AT89C51、可编程并口芯片8255A、按键BUTTON、发光二极管LED-GREEN(RED、BLUE)、8位锁存器74LS273或74LS373、3-8译码器74LS138、或非门74LS02、排阻或电阻RESPACK-8(RES) 、8位缓冲器74LS244 参考仿真电路图: 三、程序框图

四、实验连线(只连图中粗实线) 五、实验步骤 ①8255 PB3~PB0、PA7~PA0依次接发光二极管L1~L12。 ②编写程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,再切换到东西路口方向,之后重复以上过程。 六、实验说明 中断服务程序的关键是: ①保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 ②必须在中断程序中设定是否允许中断重入,即设置EX0位。 本例中使用了INT0中断(P3.2),一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器。本例的中断程序保护了PSW、ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。 中断信号由单脉冲按钮SP产生。 七、思考 (1)试编程解决中断返回以后不能回到中断之前状态的问题。

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实验报告 (3)

单片机原理及接口技术 学院:光电信息科学与技术学院班级:——实验报告册 083-1 实验一系统认识实验 1.1 实验目的 1. 学习keil c51集成开发环境的操作。 2. 熟悉td-51系统板的结构和使用。 1.2实验仪器 pc 机一台,td-nmc+教学实验系统。 1.3实验内容 1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。 2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。 1.4 源程序 https://www.wendangku.net/doc/943847121.html, 0000h mov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end 2. org 0000h mov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ end loop: loop: 1.5 实验步骤 1.创建 keil c51 应用程序 (1)运行 keil c51 软件,进入 keil c51 集成开发环境。 - 3 -(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 实验结果. 2. 4 实验二查表程序设计实验 2.1实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.2实验设备 pc 机一台,td-nmc+教学实验系统 2.3实验内容 1.通过查表的方法将 16 进制数转换为 ascii 码; 2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

51单片机实验报告

实验一数据传送实验 实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV @R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 思考题: 1. 按照实验内容补全程序。 2. CPU 对8031内部RAM存储器有哪些寻址方式? 直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。 3. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH ___0A0H~0AFH______________________ 内部RAM 50H~5FH___0A0H~0AFH_______________________ 实验二多字节十进制加法实验

实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。源程序清单:ORG 0000H RESET: AJMP MAIN ORG 0100H MAIN: MOV SP, #60H MOV R0, #31H MOV @R0, #22H DEC R0 MOV @R0, #33H MOV R1, #21H MOV @R1, #44H DEC R1 MOV @R1, #55H MOV R2, #02H ACALL DACN HERE: AJMP HERE DACN: CLR C DAL: MOV A, @R0 ADDC A, @R1 DA A MOV @R1, A INC R0 INC R1 DJNZ R2,DAL CLR A MOV ACC.0 , C RET 思考题: 1. 按照实验内容补全程序。 2. 加数单元、被加数单元和结果单元的地址和内容为? 3130H,2120H,6688H 3. 如何检查双字节相加的最高位溢出? 看psw.3 的溢出标志位ov=1 则溢出 4. 改变加数和被加数,测试程序的执行结果。 实验三数据排序实验

单片机实验程序(全)

2基本输入输出实验(蜂鸣器控制程序) /******************************************************* 名称:基本输入输出(I/O)程序 说明: ********************************************************/ #include //包含头文件 #define uint unsigned int //宏定义 #define uchar unsigned char sbit buzzer=P3^5; sbit Keyadd=P2^0; sbit Keydec=P2^1; sbit Keycom=P2^2; void Delay(uint z) { uint x; uchar y; for(x=z;x>0;x--) //延时 { for(y=250;y>0;y--); } } void main(void) { uchar voice; voice=3; while(1) { if(Keyadd==0) //按键被按下时为0 voice=1; if(Keydec==0) voice=2; if(Keycom==0) voice=3; if(voice==1) {buzzer=~buzzer; Delay(1); } else if(voice==2) {buzzer=~buzzer; Delay(20); } else buzzer=1; } }

3定时器中断实验 /******************************************************* 名称:实验三作业 说明: ********************************************************/ #include //包含头文件 #define uint unsigned int //宏定义 #define uchar unsigned char uchar counter; uchar voice; sbit buzzer=P3^5; sbit Keyadd=P2^0; sbit Keydec=P2^1; sbit Keycom=P2^2; sbit Keycan=P2^3; //----------------计算计数器初值-----------------// #define T0_TIME1 254 //定时时间us为单位 #define T0ReLoadL1 ((65536-(uint)(T0_TIME1*11.0592/12)) % 256) #define T0ReLoadH1 ((65536-(uint)(T0_TIME1*11.0592/12)) / 256) //----------------计算计数器初值-----------------// #define T0_TIME2 1400 //定时时间us为单位 #define T0ReLoadL2 ((65536-(uint)(T0_TIME2*11.0592/12)) % 256) #define T0ReLoadH2 ((65536-(uint)(T0_TIME2 *11.0592/12)) / 256) /********************************************************* 名称:主程序 说明: **********************************************************/ void main(void) { //-----------------------------初始化TIMER0 TMOD|=0x01; //定时器T0方式1 TH0 =T0ReLoadH1; //装载计数器初值 TL0 =T0ReLoadL1; TR0 =1; //启动Timer0 ET0 =1; //Timer0中断使能 EA =1; //总开关使能 //-----------------------------大循环 counter=0;

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.wendangku.net/doc/943847121.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.wendangku.net/doc/943847121.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

51单片机20个实验,代码详细

第一章单片机系统板说明 一、概述 单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。 该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。 二、单片机板简介 本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。因此构成单片机实验系统。 1、主要技术参数 (1)MSC-51单片机板 板上配有ATMEL公司的STC89C51芯片。 STC89C51资源:32个I/O口;封装DIP40。 STC89C51开发软件:KEIL C51。 2、MSC-51单片机结构 (1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。 (2)单片机板左上侧有一个串口,用于下载程序。 (3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。 (4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。 三、母板简介 主要技术参数 (1)实验系统电源 实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。 主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

单片机实验1

学号序号35 单片机原理与接口技术 实验报告 ) 实验项目序号实验一 实验项目名称跑马灯实验

姓名赵吉婷专业电子信息工程班级电信1班完成时间 一、实验目的 1、$ 2、熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法; 3、掌握采用汇编语言与C语言开发单片机系统的程序结构; 4、掌握51系列单片机通用I/O口的使用。 二、实验前准备 1、完成作业3; 2、根据实验内容编写好相关程序,并进行Proteus仿真。 三、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。 2、简单键控的流水灯。 , 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。

3、键控的流水灯。 上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 四、实验原理图 如图所示。 图跑马灯实验电路原理图 电路原理图如图,AT89S52的~作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;由于发光二极管的导通电压为,所以HNIST-2型实验装

置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。 AT89S52的、作为输入连接2个按键K1、K2,若检测到=0,则说明K1键按下。 五、软件设计思想 . 1、基本的流水灯 软件延时采用例题程序delay( j ),可调整延时时间。 2、简单键控的流水灯。 由于是按下键不松手,键值一直保留,所以判断=0即是按下K1,采用如例题所示的while= =0)或while(P2= =0xfe)的模式。 3、键控的流水灯 由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。 六、实验过程: 编写延时程序: ORG 00H JMP MAIN ORG 30H | MAIN: MOV A,#0FFH CLR C MOVR2,#08H ;循环八次 LOOP:

单片机实验报告含仿真

单片机原理及应用课程 实验报告 专业: 班级: 姓名: 学号:

实验一、keilC51及proteus软件的使用 一、实验目的: 1、掌握keil和proteus软件的基本操作 2、通过具体实例掌握keil和proteus软件的使用。 二、实验原理: keil使用步骤,proteus使用步骤 三、程序: 四、实验结果分析: 五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus软 件进行仿真的步骤。

实验二、并行输入/输出接口实验 一、实验目的: 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。 三、程序: #include sbit P1_0=P1^0; void main() { unsigned char i; unsigned int j;

i=0x01; for(;;) { P1_0=0; SBUF=I; while(!TI) {i} P1_0=1;TI=0; for(j=0;j<=254;j++){;} i=i*2; if(i==0x00) i=0x01; } } 四、实验结果分析: 五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

单片机实验4报告

学号14142200277 序号19 单片机原理与接口技术 实验报告 实验项目序号实验四 实验项目名称动态显示与矩阵式键盘实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间 2016-05-10

一、实验目的 1、 进一步理解数码管与单片机的接口原理与动态显示原理,理解单片机矩 阵式键盘按键识别的原理; 2、 掌握单片机动态显示应用和编程方法; 3、 掌握单片机矩阵式键盘按键识别的方法。 二、实验内容 实验内容为3项,其中第1、2项必做。 1、动态显示。 未按键不显示,按K1键,动态显示 “19491001”;按K2键,动态显示 “20141210”。 2、动态显示与按键识别。 矩阵式键盘键值分别是0-F ,未按键不显示。每按键一次,键值在最低位显示,原键值向高位移一位。 3、可控动态显示与按键识别。 矩阵式键盘键值分别是0-9,最下面一排键位功能键,左右两个键分别为“清0键”“C ”,和”“回车键”“ ”,其它键无效。未按键不显示,每按键 一次,键值在最低位显示,原键值向高位移一位。按8个键后,再按键无效。 按清0键全显示“0”。按“ ”后全部熄灭,再按键重新开始。 三、实验原理图 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732 P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51 D 02D 13D 24D 35D 46D 57D 68D 7 9 Q 019 Q 118Q 217Q 316Q 415Q 514Q 613Q 7 12 L E 11O E 1 U2 74HC573 D 02D 13D 24D 35D 46D 57D 68D 7 9 Q 019Q 118Q 217Q 316Q 415Q 514Q 613Q 7 12 L E 11O E 1 U3 74HC573 1 2 345678910RP8 1k K1 K2K3K4 U4 AND_4

相关文档