单片机上机试验讲解
单片机上机
实验一 8051 单片机简单编程与调试 实验内容: 1、 存储块置全“ 1”源代码:汇编语言源程序:ORG 00HMOV R1,#STARTMOV A,#0FFHLOOP: mov @R1,A指向下一个地址SJMP $END在下划线处填入适当指令。
输入源程序, 编译无误后, 用单步执行的方法, 观察各个相应存储单元和寄存器中内容 的变化。
解释 START EQU 30H 。
答: START = 30HMOV R0,#32H;Rr 中设置32字节计数值 DJNZ R0,LOOP计数值减 1,不为零继续 START EQU 30H起始地址INC R1(2) 二进制ASCII 码转换源代码:汇编语言源程序:RESULT EQU 30HORG 00HSTART:MOV A,#1AHLCALL BINTOHEX 调用BINTOHE)子程序LIMP $BINTOHE):MOV DPTR,#ASCIITAB ; 表的首址ASCIITAB送DPTR MOV B,ASWAPANL A,#0FH ; 取A 的高四位MOVC A,@A+DPTR 查ASCII 表MOV RESULT, AMOV A,BANL A,#0FHMOVC A,@A+DPTRMOV RESULT+1,ARETASCIITAB:DB '09ABCDEF'END答:注释掉LJMP $ 执行到MOV A,#1AH2、多路开关指示OGR 00HSTART: MOV A,PR1 读取P1 口数据SWAP 交换A 中高四位与低四位的位置ORL A,0F0H 与0F0H 相或MOV P1,A 将开关状态送LED显示SJMP START 转移到STARTEND答:把上移后的高四位再全装为1,并且屏蔽掉低四位3、程序调试1)程序ORG 0000HMOV 30H,#87HMOV A,#69HADD A,30HNOPEND2)程序ORG 0000HMOV SP,#60HMOV DPTR,#0A679HPUSH DPHPUSH DPLMOV A,#80HPUSH ACCPOP B 答: CY=0 ,(A)=1,OV=0 ,P=0 将程序中的指令 NOP 改为指令 DA A 后 答: CY=1 ,(A)=1,OV=0 ,P=0NOPEND,(A)=80H ,(30H)=79H ,(31H)=0A6H(B)=80H ,(DPH)=0A6H ,(DPL)=79H 3)程序 ORG 0000HMOV A,#02HMOVB,A RL AADD A,BMOV DPTR,#TABJMP @A+DPTRNOPORG 0800HTAB: LJMP 1000HPOP30H POP 31H(SP)=60HLJMP 2000HLJMP 3000HLJMP 4000HEND答:执行完JMP @A+DPTR以后,PC=0806H。
单片机讲义实验3
设置存储区后,可运行程序
(左图标)或停
止程序(右图标);如果希望单步执行(即一条一条
的执行指令,以便调试程序)可点击 图标,每点击
一次黄箭头会向下移动,指向下一条指令。
观察程序的运行结果: 在单步调试时,每执行一条 指令,都可在屏幕左上方的寄存器区和右下方的存储 区观察运行的状态。程序存储器中表示的是程序汇编 后的二进制代码,内外数据存储器中表示的运行中数 据结果的变化。观察时可在相应存储区的地址栏打入 地址即可,如想看内存20H中的内容,只需在相应存储 区的地址栏打入 D:0020H。
clr p1.6 ;点亮灯p1.6
lcall delay
clr p1.7 ;点亮灯p1.7
lcall delay
AJMP Lop2 ; 重新运行
delay: mov r5,#20 ;延时子程序
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
输入C语言或汇编语言程序, 输入结束后点击文件 中的保存,输入程序名(例如S1.C或S1.ASM)并选择 存入的盘(如D:)点击保存。
输入的程序名一般不超过6个字母数字,以字母打头, C语言要加尾缀 .C,汇编语言要加尾缀:.ASM。
2、实验3.1:用单片机仿真仪实现8个发光二极管轮 流闪烁。 (1)硬件连接:用8PIN线连接P1口和8 个发光二极管。
精品jing
单片机实验3
二、实验步骤和内容
1、用XL1000或XL2000综合仿真仪进行在线仿真 步骤如下:
(1)使用USB线和串口线,将XL1000综合仿真仪 与微型计算机串行口COM Nhomakorabea连接起来;
单片机上机报告心得
单片机上机报告心得# 单片机上机报告心得## 导言单片机作为一种微型计算机系统,被广泛运用在各个领域中,由于其硬件结构简单、可靠性高、功耗低等特点,成为学习和实践嵌入式系统的重要平台之一。
在本次单片机上机实验中,我学习了单片机的基本原理和编程方法,并通过实际操作,进一步理解了单片机的工作机制。
## 实验内容本次单片机上机实验共包括三个实验项目,分别是LED流水灯的编程、定时器与数码管的应用、以及温度采集与显示系统的搭建。
每个实验项目涉及了不同的单片机基本模块和编程技术,通过逐步实践,我加深了对这些知识的理解。
## 实验心得### LED流水灯的编程在第一个实验中,我学习了如何通过IO口控制LED灯的亮灭,实现LED流水灯的效果。
从理论课程中我已经了解到LED灯的基本原理,但是通过实际操作,我更加深刻地体会到了单片机是如何通过电平控制LED灯的亮度和闪烁频率的。
在编程时,我使用了循环计数和位移操作等技术,通过不断改变IO口的输出状态,从而控制多个LED灯的亮灭。
这个实验让我对单片机的编程方法有了初步的了解。
### 定时器与数码管的应用在第二个实验中,我学习了定时器的原理和编程方法,并掌握了通过数码管显示数字的技术。
定时器是单片机中非常重要的一个模块,在各种实际应用中都有广泛的应用,如定时浇花、定时报警等。
通过这个实验,我深入理解了定时器的工作原理和编程方法。
我学会了如何设置定时器的工作模式和计数范围,并通过定时中断来控制数码管的刷新,实现数字的动态显示。
这个实验对于我理解单片机中各个模块的协同工作具有重要意义。
### 温度采集与显示系统的搭建在第三个实验中,我学习了温度传感器的应用和模拟量数字转换技术。
通过借助温度传感器和ADC模块,我成功地搭建了一个温度采集与显示系统。
通过设置ADC的工作模式和引脚配置,我成功地将模拟量转换为数字量,并通过数码管将温度值进行显示。
这个实验让我更加深入地了解了单片机中模拟信号和数字信号的转换过程,以及温度传感器的工作原理。
单片机上机实验报告
单片机实验报告姓名:班级:学号:实验一数码管实验一、实验目的1. 了解数码管的显示原理;2. 掌握JXARM9-2440 中数码管显示编程方法。
二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、PC 机。
三、实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,其原理图如图所示。
四、实验内容及步骤1、六个数码管同时正向显示0-F ,然后反向显示F-0。
1)参照模板工程led(modules\led\led.apj),新建一个工程led,添加相应的文件,并修改led 的工程设置;2)创建led.c 并加入到工程led 中;3)编写LED 显示函数void led_display(void),正向显示0-F 然后反向显示F-0,并循环执行以上动作,在每次显示之间延时一段时间;4)编译led,成功后,下载并运行,观察结果。
2、在六个数码管上依次显示“HELLO”,可分辨出轮流显示。
步骤同上。
3、在六个数码管上依次显示“HELLO”,分辨不出轮流显示。
步骤同上。
*4、在每个数码管上递增显示0-9 。
步骤同上。
五、实验程序/******************************************************************** ********//*文件名称:LEDSEG7.C *//*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /******************************************************************** ********/#define U8 unsigned charunsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};void Delay(int time);/******************************************************************** ********//* 函数说明: JXARM9-2410 7段构共阳数码管测试*//* 功能描述: 依次在7段数码管上显示0123456789ABCDEF *//* 返回代码: 无*//* 参数说明: 无*//******************************************************************** ********/void Test_Seg7(void) {int i;*((U8*)0x20007000) = 0x00;for(; ;){for(i=0;i<0x10;i++){*((U8*)0x20006000)=seg7table[i];Delay (10000);}for(i=0xf;i>=0x0;i--){*((U8*)0x20006000)=seg7table[i];Delay (10000);}}// TODO}/******************************************************************** ********//* Function name : 循环延时子程序*//* Description : 循环'time' 次*//* Return type :void *//* Argument : 循环延时计数器*//******************************************************************** ********/void Delay(int time) {int i;int delayLoopCount=10000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}void Test_Seg7(void) {int i;for(; ;){*((U8*)0x20007000) = 0x3E;*((U8*)0x20006000)=seg7table[5];Delay (10000);*((U8*)0x20007000) = 0x3D;*((U8*)0x20006000)=seg7table[4];Delay (10000);*((U8*)0x20007000) = 0x3B;*((U8*)0x20006000)=seg7table[3];Delay (10000);*((U8*)0x20007000) = 0x37;*((U8*)0x20006000)=seg7table[2];Delay (10000);*((U8*)0x20007000) = 0x2F;*((U8*)0x20006000)=seg7table[1];Delay (10000);}// TODO}六、结果及分析。
单片机实验指导书
单片机原理与应用实验指导书九江学院电子工程学院2007年9月第一章单片机实验的基本要求与方法一、实验目的学习并掌握单片机的基本结构及接口设计方法,学习汇编语言程序设计的基本方法和技能。
二、实验要求1、上机前要做好充分准备,明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。
做好实验前预习和必要的准备,如画好程序流程图,编好程序,做到准备充分。
2. 进入实验室后,熟悉所用的单片机实验开发系统及仪器设备,了解其外观、性能。
接线要正确、简单明了,接线完成后检查一遍,经老师复查允许后才可通电。
通电瞬间,应注意仪器和实验装置是否正常工作,如有不正常现象,应立即断电查找原因,直至故障排除后,实验方可继续进行。
3. 实验进行时,按规定步骤进行,经过反复修改调试,达到设计功能后,读取数据,并及时纪录。
4. 实验完成后,经老师验收合格,并把仪器、导线、工具整理完毕后,学生方可离开实验室。
三、实验方法本课程所用的实验板采用在系统可编程方式下载程序,具体操作过程参考第三章。
四、实验报告内容和要求1. 实验报告要用学校统一印发的实验报告纸。
2. 实验报告内容应包括:实验名称、器材、目的、原理、步骤、结果及分析、流程图、程序清单。
3. 实验报告中实验原理图(含电路图和时序图)要准确无误。
4. 实验报告中程序清单要求调试并运行正确无误,要有中文注释。
5.每个实验后的实验结果分析和心得体会必须独立完成,对实验中发现的问题应加以讨论,并提出自己的改进意见和要求。
6.实验报告写完后统一交到学习委员处,按学号排列装订成册,然后交到老师处。
第二章 V6实验板简介本课程所用单片机实验板,可用于MCS-51系列单片机的仿真开发和《单片机原理与应用》课程的教学实验,具有电路简单,小巧便携,支持在系统可编程技术,简便易用等特点。
适合单片机初学者使用。
图2-1一、可开设实验1、wave仿真软件的应用2、用isplay实现在系统可编程3、流水灯4、动态显示程序5、中断响应程序设计6、定时/计数器的应用:测量脉冲宽度、倒计时器、带闪动的动态显示7、键盘接口程序设计:计时系统、抢答器设计、模拟汽车转向灯设计*8、红外按键识别程序设计*9、基于红外按键输入的四则混合运算计算器设计10、电子音乐盒设计*11、基于红外按键输入的电子琴设计12、基于DS1302的精密时钟设计13、基于DS18B20的数字温度计设计14、串行程序存储器扩展*15、数据采集电路设计:单片机与A/D 转换器接口 *16、信号发生器设计:单片机与D/A 转换器接口 *17、直流电机调速 *18、步进电机控制*19、基于MAX7219的数码管静态显示程序设计 *20、字符型液晶显示程序设计 *21、点阵型液晶显示程序设计注:带“*”实验项目需外接扩展电路二、V6实验板的原理和组成1、总体电路图上电复位....图2-22、微处理器V6实验板采用DIP 封装的AT89s52单片机作为微处理器,引脚配置如图2-3所示,为实现在系统可编程功能,选用11.0592MHz的晶振。
单片机实验报告——KeilC的使用与汇编语言上机操作
《微机实验》报告实验名称 KeilC的使用与汇编语言上机操作指导教师专业班级姓名学号序号联系方式一、任务要求实验目的:熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
实验内容:1.掌握KeilC环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思路1.掌握KeilC环境的使用1)字节拆分、合并:字节拆分要将BCD码转换为2字节ASCII,需将BCD码拆为两部分,分别加30H。
具体先用XCHD语句将BCD码与00H交换低位,“高位”需先用SWAP语句将高低位交换,再加30H;“低位”直接加30H。
字节合并同理,需减30H再合并。
2)数据块填充:指针在7000H,利于循环语句递增填充,A寄存器中存放要填充的数据,DPTR数据指针指向片外,R0计数。
用CJNE构成循环,循环中A、DPTR、R0都加12.编写两个十六位数的加法程序两数低位分别存于20H、30H,高位存于21H、31H。
用ADD语句将低位相加,存于R4;用ADDC语句将高位和进位Cy相加,存于R3;存进位需先将A寄存器清零,再用ADDC语句将A、00H和Cy相加,存于R2。
三、资源分配本程序数据均存于片内RAM中,有两个十六位无符号数,低位分别存于20H、30H中,高位分别存于21H、31H中。
高八位和存于R3中,低八位和存于R4中,进位位存于R2中。
四、流程图五、源代码ORG 0000HMAIN: MOV R0,#20H ;设置第一个数地址指针 MOV R1,#30H ;设置第二个数地址指针MOV A,@R0 ;取低位ADD A,@R1 ;两数低位相加MOV R4,A ;存“和”低位INC R0INC R1MOV A,@R0 ;取高位ADDC A,@R1 ;两数高位相加MOV R3,A ;存“和”高位CLR AADDC A,#0MOV R2,A ;存进位HERE: SJMP HERE ;踏步END ;结束Program Size: data=8.0 xdata=0 code=18精简后ORG 0000HMAIN:MOV A,20H ; 取低位ADD A,30H ; 两数低位相加MOV R4,A ; 存“和”低位MOV A,21H ; 取高位ADDC A,31H ; 两数高位相加MOV R3,A ;´存“和”高位CLR AADDC A,#0MOV R2,A ; 存进位HERE: SJMP HERE ; 踏步ENDProgram Size: data=8.0 xdata=0 code=16六、程序测试方法与结果、软件性能分析1.1字节拆分、合并调试拆分时,如图31H、32H中内容为34和39,正常合并时,如图33H中内容又变为了491.2数据块填充调试执行完改程序后片外7000H到70FFH中的数据如下图3.两个十六位数的加法程序测试方法:修改片上RAM中20H、21H、30H、31H数据,查看R2、R3、R4数据。
第单片机上机实践课件1第11章
(2)D/A转换器内部是否带有锁存器 D/A转换需要一定时间,这段时间内输入端的数字量应稳 定,为此应在数字量输入端之前设置锁存器,以提供数据锁存 功能。根据芯片内是否带有锁存器,可分为内部无锁存器的和 内部有锁存器的两类。 * 内部无锁存器的D/A转换器 可与P1、P2口直接相接(因P1口和P2口的输出有锁存功 能)。但与P0口相接,需增加锁存器。 * 内部带有锁存器的D/A转换器 内部不但有锁存器,还包括地址译码电路,有的还有双重或 多重的数据缓冲电路,可与89C51的P0口直接相接。
的接口设计。 AD667是分辨率为12位的电压输出型D/A转换器,建立时间≤3μs(至 0.01%)。 输入方式:双缓冲输入; 输出方式:电压输出,通过硬件编程可输出+5V,+10V, ±2.5V,±5V和±10V; 内含高稳定的基准电压源 可方便地与4位、8位或16位微处理器接口; 双电源工作电压:±12V~±15V。
2. DAC的的单、双极性的电压输出 接口电路与DAC的具体应用有关。 (1) DAC用作单极性电压输出 单极性模拟电压输出,可采用图11-4或图11-8所示接线。输 出电压Vout与输入数字量B的关系: Vout = -(B/256)*VRFE 式中,B=b7·27+ b6·26+……+ b1·21+ b0·20; B为0时,Vout也为0,输入数字量为255时,Vout为最大值,单 极性。 (2)DAC用作双极性电压输出
1. 概述 输入:数字量,输出:模拟量。 转换过程:送到DAC的各位二进制数按其权的大小转换为相 应的模拟分量,再把各模拟分量叠加,其和就是D/A转换的结 果。 使用D/A转换器时,要注意区分: * D/A转换器的输出形式; * 内部是否带有锁存器。 (1)电压与电流输出形式 两种输出形式:电压输出形式与电流输出形式。电流输出的 D/A转换器,如需模拟电压输出,可在其输出端加一个I-V转换 电路。
单片机实验报告KeilC的使用与汇编语言上机操作
单片机实验报告KeilC的使用与汇编语言上机操作单片机实验报告:Keil C的使用与汇编语言上机操作一、实验目的1.掌握Keil C的使用方法,了解其集成开发环境下的单片机编程流程。
2.掌握汇编语言的基本语法和指令,通过上机操作熟悉其应用。
3.通过实际操作,增强动手能力和解决问题的能力。
二、实验设备1.单片机开发板2.Keil C软件3.电脑及编程器三、实验原理及步骤1.Keil C使用介绍Keil C是一款广泛使用的单片机集成开发环境,它提供了包括编译器、调试器、仿真器等在内的全套开发工具。
使用Keil C可以方便地进行代码编写、编译、调试和模拟,适用于多种单片机开发。
2.汇编语言基础汇编语言是一种直接与硬件相关的编程语言,它通过特定的指令集直接控制硬件进行操作。
汇编语言具有高效、直接的特点,但编写和理解相对困难。
本实验主要学习并熟悉汇编语言的基本语法和指令。
3.实验步骤(1) 在Keil C中创建新项目,选择合适的单片机型号。
(2) 创建源文件,编写汇编程序。
(3) 对源文件进行编译,生成目标文件。
(4) 将目标文件下载到单片机开发板进行调试和运行。
四、实验内容及分析1.在Keil C中创建新项目并选择单片机型号。
在创建项目时,需要选择正确的单片机型号,这将直接影响到程序的编写和运行。
根据实际需要,我们选择了AT89C51作为实验用的单片机。
2.创建源文件并编写汇编程序。
在Keil C中,可以方便地创建新的源文件,并在其中编写汇编程序。
例如,下面是一个简单的汇编程序,用于点亮开发板上的LED灯:MOV P1, #1 // 将1赋值给P1端口此程序将使P1端口的所有引脚输出高电平,从而点亮LED灯。
3.对源文件进行编译并生成目标文件。
在Keil C中,可以通过简单的点击完成编译操作。
编译成功后,将生成一个目标文件(如*.obj文件)。
4.将目标文件下载到单片机开发板进行调试和运行。
在Keil C中,可以通过仿真功能模拟程序的运行,也可以通过调试功能查看程序运行过程中的细节信息。
第单片机上机实践课件1
四个阶段: 第一阶段(1974年~1976年):单片机初级阶段。双片的形式,
且功能比较简单。 第二阶段(1976年~1978年):低性能单片机阶段。以Intel
内部RAM增到256字节,8052、8752的内部程序存储器扩展到 8KB,16位定时器/计数器增至3个。
(3)低功耗型 典型产品:80C31/87C51/80C51。采用CMOS工艺
适于电池供电或其它要求低功耗的场合。 (4)专用型
8044/8744,用于总线分布式多机测控系统。美国Cypress 公司的EZU SR-2100单片机-USB接口。
系统中。
在下述领域广泛应用: 1. 工业自动化 2. 智能仪器仪表 3.消费类电子产品 4. 通讯 5.武器装备 6.终端及外部设备控制 7.汽车电子 8.多机分布式系统
1.4 MCS-51系列与AT89C5x系列单片机
1.4.1 MCS-51系列单片机
20世纪80年代以来,单片机的发展非常迅速,世界上一些著名 厂商投放市场的产品就有几十个系列,数百个品种。
想,构建了计算机由运算器、控制器、存储器和输入/输出 设备,
组成这一计算机的经典结构,如图1-1所示。
发展经历五个阶段: 电子管计算机 晶体管计算机
图1-1
集成电路计算机 大规模集成电路计算机 超大规模集成电路计算机(微型计算机) 1.1.2 电子计算机及其发展历史 计算机真正得到广泛应用和普及,还是由于微型计算机的出
用户,根据需要,设计一个以通用单片机芯片为核心的测 控系统。
(2)专用型 专门针对某些产品的特定用途而制作的单片机,针对性强
单片机实验上机指南
《单片机实验》上机网络操作方法1、进入“域控制器”的方法:a、在登录界面时,在用户栏输入“administrator”,密码不输,登录到“本机(如u1),此方法只能进行本机操作,要进入域控制器必须进行如下操作:双击“网上邻居”图标,然后点“整个网络”\Microsoft Windows 网络\jy\cdwlxj1-xxerbox,输入用户名和密码即可。
帐号(如wl01-wl60”),然后输入密码(初始密码为123456),按“确定”按钮即可。
b、可以直接在登录界面时,在用户栏输入“用户名(如wl02)”,密码输入“123456”,此为初始密码,请登机后立即更改。
此方法可以直接登录到域,不需要在进入域控制器时再输入用户名和密码。
2、使用方法a、请在第一次登录后修改密码,方法:同时按下Ctrl+Alt+Del组合键,点击“更改密码”按钮,在用户名一栏中输入你的用户名,如wl02,在旧密码一栏中输入“123456”,在新密码输入你要更改的密码即可。
b、在域控制器,student文件夹为共享文件夹,wl01文件夹为所有可参考的学习资料,具有“只读”权限。
c、用户名按本科生选课表的序号排序。
从wl02到wl60,如序号=1,学号=0341031034,姓名=陈喜,则用户名=WL02,依次类推。
d、每次课程的内容包括上机指南、教案、实验要求、思考题等内容放在“WL01”文件夹中。
e、按要求将实验报告、思考题等作业放在自己的文件夹中,文件夹名与用户名对应,如序号=1,学号=0341031034,姓名=陈喜,则文件夹名=WL02,每次作业按实验编号建立一个文件夹,将其放入相应的文件夹中,如“实验一”、“实验二”…..等文件夹。
单片机实验上机指导书
第一章实验系统介绍本实验系统采用EL-MUT-III型单片机教学实验系统。
1. 系统概述1)微处理器:89S51,P1口、P3口对用户开放,供用户使用。
2)时钟频率:6.0MHz3)存储器:程序存储器与数据存储器统一编址,最多可达64KB,板载ROM(监控程序27C256)12KB;RAM1(程序存储器6264)8KB供用户下载实验程序,可扩展达32KB;RAM2(数据存储器6264)8KB供用户程序使用,可扩展达32KB。
0000H----2FFFH为监控程序存储器区,用户不可用。
4000H----5FFFH为用户实验程序存储区,供用户下载实验程序。
数据存储器的范围为:6000H----7FFFH,供用户实验程序使用。
用户在编写实验程序时要注意,程序的起始地址应为4000H,所用的中断入口地址均应在原地址的基础上,加上4000H。
用户中断入口地址见表1-1。
2.资源分配本系统采用可编程逻辑器件(CPLD)EPM7128做为地址的译码。
地址的编译码分为两部分。
一部分为系统CPLD,提供了系统器件(如监控程序存储器、用户程序存储器、数据存储器、系统显示控制器、系统串行通讯控制器等)的地址译码功能,此外还通过插孔CS0、CS1、CS2、CS3、CS4、CS5提供固定的译码地址给用户使用。
译码地址见表1-2。
另一部分为用户CPLD,它完全对用户开放,用户可通过芯片的JTAG接口与PC机相连,对芯片进行编程,得到译码地址,由插孔LCS0、LCS1、LCS2、LCS3、LCS4、LCS5、LCS6、LCS7输出,供使用。
表1—2:CPLD地址分配表地址范围输出孔/映射器件性质(系统/用户)0000H---2FFFH 监控程序存储器系统*3000H---3FFFH 数据存储器系统*4000H---7FFFH 用户程序存储器系统*8000H---CFDFH LCS0---LCS7 用户CFE0H PC机串行通讯芯片8250 系统*CFE8H 显示、键盘芯片8279 系统CFA0H---CFA7H CS0 系统CFA8H---CFAFH CS1 系统CFB0H---CFB7H CS2 系统CFB8H---CFBFH CS3 系统CFC0H---CFC7H CS4 系统CFC8H---CFCFH CS5 系统CFD0H---FFFFH LCS0----LCS7 用户注:系统地址中带“*”的表示用户不可用,也不可改,其他系统地址用户可用,但不可改。
1203090单片机上机实验四精选
单片机原理及应用实验(训)报告实验编号004实验名称循环程序设计实验目的和要求1、掌握循环构造编程要求:请将本文件从头命名为“学号+姓名+单片机实验四”实验内容1、求2+4+6+8+⋯+100 的值代码:ORG 0000HMOV R1,#64HMOV SUML,A ;SUML寄存结果低8 位;MOV SIMH,A ;SIMH 寄存结果高8 位L1: MOV A,R1ADD A,SUMLMOV SUML,ACLR AADDC A,SIMHMOV SIMH,ADEC R1DEC R1CJNE R1,#00H,L1SUML EQU 30HSIMH EQU 31HSJMP $END2、请将8、1、2、3、4、5、6、7 八个数存于以30H为首地点的RAM中,并按从小到大的次序从头排列该数列,并放回原单元中。
代码:ORG 0000HMOV 30H, #08HMOV 31H, #01HMOV 32H, #02HMOV 33H, #03HMOV 34H, #04HMOV 35H, #05HMOV 36H, #06HMOV 37H, #07HCALL SORT6 ;调用排序子程序NOPNOPSJMP $;-------------------------------------SORT6: ; 排序子程序MOV R6, #7S1:MOV B, R6MOV R7, BMOV R0, #30H ; 开端地点S2:MOV B, @R0INC R0MOV A, @R0CJNE A, B, S3S3:MOV @R0, BDEC R0MOV @R0, AINC R0N_JH:DJNZ R7, S2 //(R2-1)为0?不是则跳转到S0 句DJNZ R6, S1RETEND=========CJNE A, B, S3若(direct) <(A)则P C←(PC)+3+rel 且Cy←0;若(direct) >(A)则P C←(PC)+3+rel 且Cy←1;若(direct) =(A)则P C←(PC)+33、从内部储存器30H单元开始,有16 个数据,试编写一个程序,把此中的正数、负数分别存入40H 和50H开始的储存单元,并分别将正数、负数和零的个数存入R4、R5 和R6。
单片机实验上机--实验九音频控制实验
实验九音频控制实验一、实验目的1.学习输入/输出端口控制方法2.了解音频发声原理二、实验说明本实验是利用89C51端口输出方波,方波经放大滤波后,驱动扬声器发声,声音的频率高低由延时快慢控制。
本实验只给出发出单频率的声音的程序,请用户思考如何修改程序,可以让扬声器发出不同频率,不同长短的声音。
三、实验内容及步骤P1.0输出音频信号接音频驱动电路,使扬声器周期性的发声。
1、使用单片机最小应用系统1模块,用导线将P1.0接到音频驱动电路输入端。
2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。
3、启动计算机,打开伟福仿真软件,进入仿真环境。
选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。
4、打开音频.ASM源程序,编译无误后,全速运行程序。
扬声器周期性的发出单频声音。
5、可把源程序编译成可执行文件,烧录到89C51芯片中。
四、流程图及源程序1.源程序ORG 0000HOUTPUT BIT P1.0 ;P1.0 端口LOOP: ;主程序CLR CMOV OUTPUT ,CCALL DELAYSETB CMOV OUTPUT ,CCALL DELAYAJMP LOOPDELAY: ;延时子程序MOV R5,#4A1: MOV R6,#0FFHA2: MOV R7,#0FFHDLOOP: DJNZ R7,DLOOPDJNZ R6,A2DJNZ R5,A1RETEND2.流程图。
单片机C程序设计-上机实验(一)
LED灯闪烁实验 (1):程序编译验证
验证
18
LED灯闪烁实验 (1):下载程序-选择板子型号
Arduino/Genuino Uno
19
LED灯闪烁实验 (1):下载程序-选择串口
COM1(设备管理器查看)
20
LED灯闪烁实验 (1):下载程序-程序传入
上传
21
LED灯闪烁实验 (1):完成
数学函数: min(x, y):求最小值; max(x, y):求最大值; abs(x):计算绝对值; constrain(x, a, b):约束函数,下限a,上限b,x必须在 ab之间才能返回; map(value, fromLow, fromHigh, toLow, toHigh):约束 函数,value必须在fromLow与toLow,之间和fromHigh与 toHigh之间; pow(base, exponent):幂函数,base的exponent次方; sq(x):平方函数; sqrt(x):开根号函数。
long random(min, max) :随机数函数,返回数据大 于等于min,小于max。
13
Arduino/Genuino Uno单片机开发板
模拟I/O口
USB电源口
数字I/O口
Reset键
14
LED灯闪烁实验 (1):电路连接
220电阻
15
LED灯闪烁实验 (1):程序界面
保存 打开 新建 上传 验证
16
LED灯闪烁实验 (1):程序编辑
int ledPin=8; //设定控制LED的数字IO脚 void setup() { pinMode(ledPin,OUTPUT); //设定数字IO口的模式, OUTPUT为输出 } void loop() { digitalWrite(ledPin,HIGH);// 设定PIN8脚为HIGH=5V左右 delay(1000); //设定延时时间,1000=1秒 digitalWrite(ledPin,LOW); // 设定PIN8脚为LOW=0V delay(1000); //设定延时时间,1000=1秒 }
单片机上机实训报告总结
一、前言随着科技的不断发展,单片机作为一种应用广泛的微控制器,在工业控制、智能家居、医疗设备等领域发挥着重要作用。
为了提高我们的实践能力,了解单片机的实际应用,我们开展了单片机上机实训。
通过本次实训,我对单片机的原理、编程方法以及在实际应用中的问题有了更深入的了解。
二、实训目的1. 熟悉单片机的结构、原理和性能特点;2. 掌握单片机的编程方法,能够编写简单的应用程序;3. 学会使用单片机开发工具,实现单片机的编程和调试;4. 了解单片机在实际应用中的问题,提高解决问题的能力。
三、实训内容1. 单片机基本原理实训过程中,我们学习了单片机的结构、原理和性能特点。
单片机是一种集成了CPU、存储器、定时器/计数器、并行I/O接口等功能的微控制器。
通过学习,我们了解了单片机的内部结构,包括CPU、存储器、I/O接口等部分的功能和作用。
2. 单片机编程方法实训过程中,我们学习了单片机的编程方法,包括汇编语言和C语言。
汇编语言是一种低级语言,与机器语言相对应,能够直接控制单片机的硬件资源。
C语言是一种高级语言,具有丰富的库函数和良好的可移植性,便于编程和调试。
3. 单片机开发工具的使用实训过程中,我们学习了Keil C51集成开发环境的使用方法。
Keil C51是一款功能强大的单片机开发工具,能够方便地实现单片机的编程、编译、调试等功能。
通过学习,我们掌握了Keil C51的基本操作,能够使用该工具进行单片机的编程和调试。
4. 单片机应用程序的编写与调试实训过程中,我们编写了多个单片机应用程序,包括LED流水灯、按键控制、串口通信等。
通过这些实际案例,我们了解了单片机在实际应用中的问题,提高了编程和调试能力。
四、实训心得体会1. 理论与实践相结合通过本次实训,我深刻体会到理论与实践相结合的重要性。
在理论学习阶段,我们掌握了单片机的基本原理和编程方法,但在实际应用中,我们遇到了许多问题。
通过查阅资料、请教老师和同学,我们逐渐解决了这些问题,提高了自己的实践能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.Keil
Keil是一个公司的名字。是由德国慕尼黑的Keil Elektronik GmbH 和美国德克萨斯的Keil Software组成,现已被ARM公司收购。Keil软件 是目前最流行的开发51系列单片机的软件。支持c语言,汇编语言编程。 Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来 各仿真机厂商纷纷宣布全面支持 Keil 即可看出。 Keil 提供了包括 C编译 器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完 整开发方案,通过一个集成开发环境( uVision)将这些部份组合在一起。 运行 Keil 软件需要 Pentium 或以上的 CPU,16MB 或更多 RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。 掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要 的,如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选(目前在 国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即 使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的 软件仿真调试工具也会令你事半功倍。
为什么要进行单片机仿真?
仿真的概念其实使用非常广,最终的含义 就是使用可控的手段来模仿真实的情况。 在嵌入式系统的设计中,仿真应用的范围 主要集中在对程序的仿真上。例如,在单片 机的开发过程中,程序的设计是最为重要的 但也是难度最大的。一种最简单和原始的开 发流程是:编写程序-烧写芯片-验证功能, 这种方法对于简单的小系统是可以对付的, 但在大系统中使用这种方法则是完全不可能 的。
2、建立工程文件
在项目开发中,并不是仅有一个源程序就行 了,还要为这个项目选择 CPU( Keil 支持数 百种 CPU,而这些 CPU 的特性并不完全相 同),确定编译、汇编、连接的参数,指定调 试的方式,有一些项目还会有多个文件组成等, 为管理和使用方便, Keil 使用工程( Project) 这一概念,将这些参数设置和所需的所有文件 都加在一个工程中, 只能对工程而不能对单一 源程序进行编译(汇编)和连接等操作。
工程窗口的文件页中,出现了“ Target1”,前面 有“ +”号,点击“ +”号展开,可以看到下一层的 “ Source Group1”,这时的工程还是一个空的工程, 里面什么 文件也没有,需要手动把刚才编写好的源程序加入, 点击“ Source Group1”使其反白显示,然后,点击 鼠标右键,出现一个下拉菜单,如图所示。选中其中 的“ Add file to Group” Source Group1”,出现一个 对话框,要求寻找源文件,注意,该对话框下面的 “文件类型” 默认为 C source file(*.c),也就是以 C 为扩展名的文件,而我们的文件是以 asm 为扩展名 的,所以在列表框中找不到 exam1.asm,要将文件 类型改掉,点击对话框中“文件类型”后的下拉列表, 找到并选中“ Asm Source File(*.a51,*.asm),这样, 在列表框中就可以找到 exam1.asm 文件.
但是更多的调查表明,使用以上方法的工程师总的看 来所设计的程序不是很庞大或很复杂。因为在做简单的 项目时,我们可以通过一个发光二极管就可以表达出内 部的信息;如果程序复杂,可能需要更多的信息来表示 内部的状态,这样可能就需要串口协助调试;如果程序 更复杂,硬件更多,实时性更强,那工程师就要更多的 增强调试手段,串口可能就不能满足了,需要类似于断 点的功能,因为人们想知道在某一个时刻单片机内部的 状态究竟是怎样? 如果用户程序的修改非常频繁,可能一次又一次地 的烧写芯片占用的时间就很多,这时用户就会想能下载 程序并运行的装置。到这里,您会看到,随着用户要求 的越来越高,调试装置已经越来越象一个通用的仿真器 了。因此不要回避使用仿真器,因为使用仿真器能提高 您的开发速度。
硬件仿真和软件仿真有何区别?
硬件仿真是通过硬件和相应的软件对单片 机进行仿真,可以直接接在用户板上运行程序, 还可以进行程序调试(单步、断点等),它不 需要每次修改程序都烧写芯片,更没有来回拆、 装芯片的麻烦,是学习单片机极其方便的工具。 不过一般情况下,价格较高。
单片机仿真软件
1.Proteus
点击“ Project->New Project… ”菜单,出现一个对话框, 要求给将要建立的工程起一个名字, 你可以在编缉框中输入一个名字 (设为 exam1),不需要扩展名。 点击 “保存”按钮,出现第二个对 话框,如图所示,这个对话框要求 选择目标 CPU (即你所用芯片的 型), Keil 支持的 CPU很多,我们 选择 Atmel 公司的 89C51 芯片。点 击ATMEL 前面的“ +”号,展开该层, 点击其中的 89C51,然后再点击 “确定”按钮,回到主界面.
单片机仿真实验讲解
太原科技大学机电教研室 刘畅
单片机仿真
为什么要进行单片机仿真 硬件仿真和软件仿真有何区别 软件仿真软件使用说明
早期的单片机内部没有ROM,比如8031、 8032,这种单片机只能外部扩展紫外擦除的 EPROM存储器,就是芯片上带窗口的ROM。紫外 擦除的ROM需要用紫外灯照射较长时间(10分钟或 者更多)才能擦掉芯片中的内容以便写入新的程序。 还有的单片机内部ROM是一次写入成型的,比如 8751,程序写入单片机的ROM之后就不能被擦除。 因此,如果这样直接用单片机来调试,怎么调试呢? 把程序写入ROM然后运行,出问题了就修改程序在 写道ROM中再运行?但写一次ROM需要不少时间, 如果是8751单片机,写一次程序不对,那这个单片 机就报废了,而当时的单片机价格比较贵。因此出 现了仿真器,这仿真器用RAM当充当单片机的程序 存储器,这样就可以快速的反复写入程序进行运行 测试,通过插入其他代码来观察寄存器和RAM中数 据的变化,以判断程序运行是否正确。这样就可以 高效快速的设计程序了。
1、源文件的建立
使用菜单“ File->New”或者点击工具栏的新建文件按钮,即可在项 目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编 语言源程序: MOV A, #0FEH MAIN: MOV P1, A RL A LCALL DELAY AJMP MAIN DELAY: MOV R7,#255 D1: MOV R6,#255 DJNZ R6,$ DJNZ R7,D1 RET END 保存该文件,注意必须加上扩展名(汇编语言源程序一般用 asm 或 a51 为扩展名),这里假定将文件保存为 exam1.asm。需要说明的 是,源文件就是一般的文本文件,不一定使用 Keil 软件编写,可以使 用任意文本编缉器编写.
双击 exam1.asm 文件,将文件加入项目,注意, 在文件加入项目后,该对话框并不消失,等待继续加入 其它文件,但初学时常会误认为操作没有成功而再次双 击同一文件,这时会出现如图所示的对话框,提示你所 选文件已在列表中,此时应点击 “确定”,返回前一 对话框,然后点击“ Close”即可返回主界面,返回后, 点击“ Source Group 1”前的加号,会发现 exam1.asm 文件已在其中。双击文件名,即打开该源 程序。
仿真的种类
软件仿真:这种方法主要是使用计算机软件来模拟运行实 际的单片机运行,因此仿真与硬件无关的系统 具有一定的优点。用户不需要搭建硬件电路就 可以对程序进行验证,特别适合于偏重算法的 程序。软件仿真的缺点是无法完全仿真与硬件 相关的部分,因此最终还要通过硬件仿真来完 成最终的设计。 硬件仿真:使用附加的硬件来替代用户系统的单片机并完 成单片机全部或大部分的功能,使用了附加硬 件后用户就可以对程序的运行进行控制,例如 单步,全速,查看资源,断点等。硬件仿真是 开发过程中所必须的。
二、工程的详细设置
首先点击左边 Project 窗口的 Target 1, 然后使用菜单“ Project->Option for target ‘ target1’ ”即出现对工程设置的对 话框,这个对话框可谓非常复杂,共有 8 个页面,绝大部份设置项取默认值就行了。
Proteus 是由英国Labcenter electronics 公司开发的EDA 工具 软件。它从1989 年出现到现在已经有十多年的历史,在全球广泛 使用。Proteus 安装以后,主要由两个程序组成:Ares和Isis。前 者主要用于PCB 自动或人工布线及其电路仿真,后者主要采用原 理布图的方法绘制电路并进行相应的仿真。除了上述基本应用之外, Proteus 革命性的功能在于它的电路仿真是互动的,针对微处理器 的应用,可以直接在基于原理图的虚拟原型上编程,并实现软件代 码级的调试,还可以直接实时动态地模拟 按钮、键盘的输入,LED、 液晶显示的输出,同时配合虚拟工具如示波器、逻辑分析仪等进行 相应的测量和观测。 其处理器模型支持: 8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、 8086和MSP430等,2010年又增加了Cortex和DSP系列处理器, 并持续增加其他系列处理器模型。
一些有经验的工程师在开发中不使用或很少仿真器。 他们是如何解决程序开发中遇到的问题呢?
(1) 根据自己的设计建立一个符合要求的硬件平台,如果该平台涉及的程序比 较复杂,还要搭建一个人机交流的通道。人机交流通道可能是一个简单的发 光二极管,蜂鸣器,复杂的可能是串口通讯口,LCD显示屏。 (2) 写一个最简单的程序,例如只是将发光二极管连续的闪烁。程序编译后烧 写到单片机芯片中,验证硬件平台是否工作正常。 (3) 硬件平台正常工作后编写系统最低层的驱动程序,每次程序更改后都重新 烧写单片机芯片验证。如果在程序验证中遇到问题,则可能在程序中加入一 些调试手段,例如通过串口发送一些信息到 PC 端的超级终端上,用于了解 程序的运行情况。 (4) 系统低层驱动程序完成后再编写用户框架程序,由于这部分已经不涉及到 硬件部分,所以程序中的问题用户一般能够发现。