嵌入式微控制器技术实验任务书(附程序和仿真图)
嵌入式系统实验指导指导书完整版

嵌入式系统实验指导王艳春李英一张劲松实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件: ADS 1.2集成开发环境一套二、实验目的1.了解嵌入式系统及其特点;2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序三、实验内容1.嵌入式系统的开发环境、基本配置2.使用汇编指令完成简单的加法实验四、实验步骤(1)在D:\新建一个目录,目录名为experiment。
(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。
启动ADS 1.2 如图1-1所示:图1-1启动ADS1.2(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。
这样就会打开一个如图1-2 所示的对话框。
选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。
图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。
嵌入式技术实验及设计

实验三 uC/OS-II进程的同步和通信
n 二 、实验内容及要求
n 编程实现哲学家就餐问题。问题的描述: 有5个哲学家,其生活方式 是交替的进行思考和吃进餐。他们共用一张圆桌,分别坐在周围的5 张椅子上,在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考, 饥饿时便试图取其左、右靠近他的筷子,只有在他拿到两支筷子时才 能进餐。进餐毕,放下筷子继续思考
n 要求:
n (1)键盘上的1-5数字键分别代表5个哲学家申请吃饭
n (2)要求大家列出所有可能出现的状况,而且屏幕上必须将最新的状态
显示出来,如:
n
(1)哲学家X正在进餐 (2)哲学家X申请进餐未果
n
(3)哲学家X正在思考……..
n
注:申请进餐未果维持显示5s后改为显示正在思考
n (3)每位哲学家的进餐时间为1分钟,进餐次数不做限定
n 要求: n (1)资源必须被互斥使用 n (2)程序的运行结果必须跟优先级反转的理论分析结果一致 n (3)出现反转效果后,修改程序,避免出现优先级反转,并
给出理论和实验结果的对比分析。
实验三 uC/OS-II进程的同步和通信
n 一、实验目的 n 掌握uC/OS-II的进程的同步和通信的机制和方法。
实验一 任务的创建与多任务设计
一、实验目的 1、理解任务管理的基本原理 2、掌握uC/OS-II中多任务设计和调度的基本方法
实验一 任务的创建与多任务设计
二 、实验内容及要求 1、编写一个有3个任务的应用程序,每个任务均会在显示器上显 示一个字符,并让3个任务具有不同的等待时间,观察应用程序运 行中任务被调度的情况。 2、编写一个有2个任务的应用程序,每个任务均会在显示器上显 示一个字符,当调度器进行5次调度之后,这些显示的字符会在显 示器上构成一个字符串“Hello World”。 3、设计Task1, Task2两个任务,Task1不断地挂起自己,再被任 务Task2解挂,解挂时,输出Task1被Task2解挂的信息,两个任务 不断地切换执行。观察两个任务的调度情况,并给出解释和说明。
《微机原理与嵌入式系统基础--实验指导书》

微机原理与嵌入式系统基础实验指导嵌入式系统教研室2010年4月7日第1章ADS 1.2 IDE工具简介 (3)1.1 ADS 1.2简介 (3)1.2 ADS 1.2集成开发环境练习 (4)第2章ARM指令系统及运算基础实验 (10)2.1 二进制数加减运算 (10)2.2 带符号数的加减法运算 (13)2.3 简单分支程序设计 (15)2.4 数据块转储实验(循环程序设计) (16)2.5 数值1到数值100的累加程序设计 (17)2.6 搜寻最大数、最小数程序设计 (19)2.7 数据排序实验(申辉补充本部分内容) (21)2.8 子程序实验(申辉补充本部分内容) (21)第3章ARM(LPC2000系列)体系结构实验 (22)3.1 EasyARM2131实验板简介 (22)3.2 JTAG仿真器的启动与设置 (22)3.3 基于嵌入式系统的C语言程序实验 (24)3.4 GPIO输出控制实验1(单点) (25)3.5 GPIO输出控制实验2(多点) (27)3.6 GPIO输入实验 (29)3.7 外中断实验 (30)3.8 定时器基本功能实验1(匹配反转输出功能应用)(马博补充本部分内容) (33)3.9 定时器基本功能实验2(定时器中断) (34)3.10 UART串行数据通信实验1(查询方式) (36)3.11 UART 串行数据通信实验2(中断方式) (40)第1章ADS 1.2 IDE工具简介1.1 ADS 1.2简介ARM ADS全称为ARM Developer Suite,是由ARM公司提供的专门用于ARM 处理器应用开发和调试的综合性工具软件。
目前使用的ADS1.2版本是一款功能强大的开发工具和易于使用的集成开发环境(Integrated Development Environment,IDE)。
它可以安装在Windows NT4,Windows 2000,Windows 98,Windows 95,Windows XP和Windows Me等操作系统。
嵌入式系统的开发与应用实习任务书

嵌入式系统的开发与应用实习任务书一、实习目的:通过一个参数个数不固定函数的设计和调试,练习嵌入式系统C程序的设计方法。
二、实习内容编写一个简化的仿scanf函数,名为myscanf函数,实现从键盘中输入十进制整数和小数型实数的功能。
该函数格式如下int myscanf(char *formatstr,...)在VC平台上开发。
三、实习具体要求1.第一个参数是格式字符串,格式只识别%d和%f这两种格式,分别表示十进制int型数据(32位有符号整数)和小数格式的double型数据。
在格式字符串中,如果发现%后有其它字符(非d和非f),认为有错,停止处理,并打印出错信息,返回-1。
2.当然输入的整数数据超出范围时,按出错处理,停止处理,并打印出错信息,返回-1。
由于小数格式double类型的整数部分最多可以到达三百多位,因此我们不处理超出数据范围的错误。
3.在格式的其他字符匹配中,只要有不匹配的字符,按出错处理,停止处理,并打印出错信息,返回-1。
4.该函数只处理一行数据,不处理跨行数据。
5.当处理正确完成后,返回值就是输入的整数和实数的总个数。
6.可以使用C语言本身所带的gets函数。
五、实习报告要求1.所提交内容包括程序设计书和程序清单两部分2.所做程序必须保证程序的健壮性。
在完成基本功能的同时,能处理各种错误处理以及意外事件。
3.提交的程序设计书应该包含各个过程的功能、参数说明。
并用流程图表示该过程的算法。
4.所提交的程序必须结构清晰,层次分明。
程序应该有比较好的可读性。
程序清单中至少30%是注解。
// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdarg.h>#define MAX_LEN 200#define MAX_POSINTSTR "2147483647" //最大整数字符串#define MAX_NEGINTSTR "2147483648" //最小整数绝对值字符串/*判断一个整数字符串是否越界如果越界则返回1-,否则返回0intstr:用于判断的整数字符串*/int defineoverflow(char *intstr){int n1,i,n2;char standstr[15];if(intstr[0]=='-'){//如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_NEGINTSTR);intstr++; //越过负号}else{//如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_POSINTSTR);if(intstr[0]=='+')intstr++; //越过正符号}n1 = strlen(intstr);n2 = strlen(standstr);//整数字符串位数过长,则定越界,返回-1if(n1 > n2)return -1;//整数字符串位数较短,则肯定不越界,返回0if(n1 < n2)return 0;//如果位数一样,从最高位开始比较for(i = 0; i < n1;i++){if(intstr[i] < standstr[i])return 0;if(intstr[i] > standstr[i])return -1;}//如果刚好是极限值return 0;}/*从整型字符串得到整数值intstr:整形字符串返回值是所得到的整数*/int getintvalue(char *intstr){int sgn; //符号变量,表示该整数的正负int v = 0;char *p = intstr;if(intstr[0]=='-'){sgn = -1;p++;}else{sgn = 1;if(intstr[0]=='+')p++;}while(*p!='\0'){v = v*10 + (*p - '0');p++;}v = v * sgn;return v;}/*从实型字符串得到double值doublestr:整形字符串返回值是所得到的实数值*/double getdoublevalue(char *doublestr){int sgn; //符号变量,表示该整数的正负double v = 0;char *p = doublestr;double k = 10; //小数的比例因子if(doublestr[0]=='-'){sgn = -1;p++;}else{sgn = 1;if(doublestr[0]=='+')p++;}while(*p!='\0' && *p!='.'){v = v*10 + (*p - '0');p++;}if(*p=='.'){ p++;while(*p!='0'){v += (*p - '0')/k;k = k* 10;p++;}}v = v * sgn;return v;}/*匹配普通字符串,要求输入字符串中指定位置之处存在一个完全匹配的子串ppf :一个二维指针,它所指向的指针值就是格式字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数ppin:一个二维指针,它所指向的指针值就是输入字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数成功返回0,否则返回-1。
嵌入式系统实验指导书(6个实验)

嵌入式系统实验指导书襄樊学院物理与电子信息学院实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告。
2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。
2)对程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。
实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。
实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。
实验原理及环境:在计算机上已安装Keil C51软件。
这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。
如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。
实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。
2)加入C 源文件或汇编源文件。
3)用项目管理器生成各种应用文件。
4)检查并修改源文件中的错误。
5)编译连接通过后进行软件模拟仿真。
6)编译连接通过后进行硬件仿真。
2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。
嵌入式系统原理与应用实验指导书(合稿+习题)

嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。
第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。
采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。
MagicARM2410实验箱参考如图1.1所示。
图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。
图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
嵌入式技术基础(下)实训指导书

实训1 电路分析中常用虚拟仿真仪器的应用一、实训目的1.进一步熟悉Multisim10.0 中常用仪器和虚拟仪器(函数信号发生器和双踪示波器)的使用方法。
2.掌握仿真电路的连接、修改和仿真。
二、素材准备Multisim10.0仿真软件三、实训内容1.构造微分电路和积分电路2.单管共射级放大电路分析四、实训步骤1.构造微分电路和积分电路微分电路满足2TRC <<=τ (T 为方波脉冲的重复周期),其电路如图1所示。
双击信号发生器图标,弹出函数信号发生器面板,面板参数选择如图2所示。
运行仿真开关,在示波器屏幕上会出现如图3所示的波形方波(红色)是输入波形,冲击脉冲波(蓝色)是输出波形。
图1 微分电路图 图2 信号发生器面板图3 微分波形图积分电路满足2TRC >>=τ (T 为方波脉冲的重复周期),其电路如图4所示。
双击信号发生器图标,弹出函数信号发生器面板,面板参数选择如图2所示。
运行仿真开关,在示波器屏幕上会出现如图5所示的波形。
图4积分电路图图5 积分波形图2.单管共射级放大电路创建如图6所示的电路后,运行仿真开关,可看到如图7所示的输出波形。
借助示波器,用调整电位器RP确定静态工作点。
电位器RP旁标注的文字“Key=A”表明按A键,阻值按5%递减;若要增加,按动“Shift+A”键,阻值按5%增加。
通过改变RP的阻值,观察示波器的波形变化,在输出波形不失真的情况下,执行“Simulate”菜单下的“DC Operating ……..”命令,选中所有节点(节点号随机产生),然后单击“Simulate”按钮,系统自动的显示出运算结果,如图8所示。
图6单管共射级放大电路图图7 示波器显示的输入输出波形图五、实训过程注意事项1.函数信号发生器和示波器各参数的设置,熟悉各选项的功能。
2.熟悉每个电路图的功能和参数。
3.熟练电路图的连接和修改。
实训2 三种基本组态晶体管放大电路一、实训目的1.分析工作点稳定的共发射极放大电路性能。
嵌入式实验报告(RVD、AXD、CVT6410)

武汉理工大学学生实验报告书实验课程名称嵌入式系统应用实验开课学院计算机科学与技术学院指导老师姓名陈建军学生姓名学生专业班级2013 —2014 学年第一学期实验一实验环境的搭建一、RVDS2.2的搭建1.RVDS2.2的安装(1)在基础光盘\实用工具\ rvds2.2安装程序.rar。
解压缩该软件包(2)双击打开setup.exe,开始安装RVDS2.2。
(3)选择agree,点击Browse选择安装路径(4)使用典型安装。
(5)选择关联文件类型,只保留对mcp(rvds工程)的关联。
1.RVDS的注册(1)license(2)将安装文件目录下的Crack文件拷贝到C:\Program Files\ARM目录下:(3)双击keygen,产生Licence.dat(4)选择Licence(5)打开6410RVDS\软件\rvds2.2安装程序\rvds目录下的”破解方法.txt”。
(6)打开C:\Program Files\ARM\Crack\目录下的patch.exe,选择Patch(7)在C盘建立flexlm目录,把Licence.dat文件拷贝到目录中(8)设置环境变量LM_LICENSE_FILE = c:\flexlm\license.dat3.RVDS2.2创建配置工程(1)打开RVD(2)新建文件(3)在Project选项签中,选择ARM Executable Image(3)填写工程名和选择路径后,点击确定完成创建(4)把seg实验中的main.c和init.s文件拷贝到工程目录下。
(5)为新添加文件选择一个目标属性。
选择Debug,作为调试。
(6)点开Targets选项,左键双击Debug打开Language Settings。
在RealViewAssembly。
将Architecture or Processor下拉菜单改为ARM1176JZF-S。
在RealView Compile将Architecture or Processor的下拉菜单改为ARM1176JZF-。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“嵌入式微控制器技术”实验任务书(电气、自动化)一、实验目的与要求:1、熟练掌握基于SST89E554RC微控制器的Keil C51集成开发工具的操作及调试程序的方法(包括:仿真调试与脱机运行间的切换方法);掌握其他相关微控制器集成开发工具的使用及调试方法;2、熟练掌握基于SST89E554RC单片机核心板及I/O扩展实验系统的电路结构原理、设计与应用;掌握其他相关微控制器最小系统设计与应用;3、熟练掌握在Keil C51与Proteus仿真软件虚拟联机环境下的基于51单片机控制器数字接口电路的硬件、软件设计方法与功能调试;4、完成本实验课程所要求的全部实验容,并写出实验报告。
二、微机原理与接口技术综合实验室资源简介实验室为以下实验活动提供条件:1、基于唐都实验系统的微机原理与接口技术实验(包括汇编语言、C语言/C++语言软件编程实验和16位/32位微机接口电路应用实验);2、基于SST89E554RC微控制器技术软/硬件实验(提供支持汇编语言、C语言编程的Keil C51集成开发工具、最小核心板+唐都实验系统箱);3、基于DSP2407、DSP2812、DSP28335微控制器技术软件/硬件实验(提供支持C语言编程的TI公司的CCS集成开发工具、DSP系列学习开发板、直流电机、步进电机、液晶);4、基于Freescale的16位MC9S12XS128微控制器技术应用实验(提供支持C语言编程的CodeWarrier 5.0 For S12集成开发工具、HF-MC9S12XS128EVB-A 核心板);5、基于ARM的16/32位ARM7LPC2103TDMI-S微控制器技术基础实验(提供支持C、C++语言编程的ARM公司推出的ARM微控制器ADS 1.2集成开发工具、EasyARM2103开发板);6、基于ARM Cortex™-M3先进核的LM3S1138微控制器技术基础实验(提供支持C语言编程的IAR5.11集成开发工具、EasyARM1138开发板);7、基于LabVIEW虚拟仪器技术的NI ELVIS II+实验仪器,提供信号与系统实验、单级倒立摆控制实验、基于面包板DIV设计三、嵌入式微控制器技术实验容及要求本课程实验学时为16学时(8次实验),实验将以开放实验方式进行,实验容包括SST89E554RC微控制器实验和DSP2812微控制器实验,鼓励学生自主学习,在完成相关实验容后,及时提交给指导老师进行检查验收并自主进行相关微控制器技术应用学习与实验。
实验一系统认识实验(基于SST89E554RC)基本部分:按照实验指导书之“2.1 系统认识实验”(P17~P23页)容要求,熟悉实验环境及方法,完成基于汇编语言程序例的实验调试与验证。
提高部分:完成实验指导书之“2.2 数码转换实验”。
题目一:汇编语言实现BCD码整数转换二进制整数(验证性)题目二:汇编语言实现二进制整数转换十进制整数的设计(设计性)实验二数据传送与排序程序设计实验(基于SST89E554RC)基本部分:按照实验指导书之“2.5 数据排序实验”(P33页)容要求完成调试与验证。
提高部分:汇编语言编程实现把(R2,R3)源RAM区首址的(R6,R7)个字节数据,传送到(R4,R5)目的RAM区,完成目的区数据升序排列。
实验三数字量输入输出实验(基于SST89E554RC)基本部分:按照实验指导书之“3.1 数字量输入输出实验”基本实验项目要求,完成汇编语言和C语言基本程序功能调试与验证。
提高部分:(任选一题)题目一:LED交通灯控制(使用8255接口芯片)要求:使用汇编语言和C语言编程。
功能为:通过开关实现LED灯工作方式即时控制,完成LED交通灯的开关控制显示功能和LED交通灯自动循环显示功能。
题目二:LED灯控制(使用8255接口芯片)要求:使用汇编语言、C语言编程。
功能为:通过KK1实现LED灯工作方式即时控制,完成LED开关控制显示和LED灯左循环、右循环、间隔闪烁功能。
ORG 0000HLJMP MAINORG 0003HLJMP INT00ORG 0030HMAIN:MOV SP,#70HSETB IT0SETB EASETB EX0CLR PX0MOV DPTR,#0FF7FHMOV A,#80HMOVX DPTR,AMOV R0,#0MOV DPTR,#0FF7CHLOOP:CJNE R0,#0,L1MOV A,#0FFHMOVX DPTR,AW0: CJNE R0,#0,LOOPAJMP W0L1: CJNE R0,#1,L2 MOV A,#00HMOVX DPTR,AW1: CJNE R0,#1,LOOP AJMP W1L2: CJNE R0,#2,L3 MOV A,#0FEH; MOV R1,#8W2: MOVX DPTR,A LCALL DELAYRL ACJNE R0,#2,LOOP SJMP W2;DJNZ R1,W2;LJMP LOOPL3: CJNE R0,#3,L4 MOV A,#7FHW3: MOVX DPTR,A LCALL DELAYRR ACJNE R0,#3,LOOP SJMP W3L4:MOV A,#0FEHW4: MOVX DPTR,A LCALL DELAYRL ARL ACJNE R0,#4,LOOP SJMP W4DELAY:MOV R7,#255D1: MOV R6,#255 DJNZ R6,$DJNZ R7,D1RETORG 0FFHINT00:PUSH ACCPUSH PSWINC R0CJNE R0,#5,LLMOV R0,#0LL: POP PSWPOP ACCRETIEND实验四中断系统实验(基于SST89E554RC)基本部分:按照实验指导书之“3.2 中断系统实验”中相关实验项目要求,完成汇编语言和C语言基本程序功能调试与验证。
提高部分:(要求:Proteus环境下,任选一题完成)在完成交通灯基本功能基础上,当有急救车到达时,两向交通信号为全红,以便让急救车通过。
假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。
本实验题以按键为中断申请,表示有急救车通过。
ORG 0000HLJMP MAINORG 0003HLJMP INT00ORG 0030HMAIN:MOV SP,#70HSETB IT0SETB EASETB EX0CLR PX0MOV DPTR,#0FF7FHMOV A,#80HMOVX DPTR,AMOV DPTR,#0FF7CH LOOP:MOV A,#1EHMOVX DPTR,ALCALL DELAY2MOV R1,#3LH2:MOV A,#1DHMOVX DPTR,ALCALL DELAYMOV A,#1FHMOVX DPTR,ALCALL DELAYDJNZ R1,LH2MOV A,#33HMOVX DPTR,ALCALL DELAY2MOV R1,#3LH3:MOV A,#2BHMOVX DPTR,ALCALL DELAYMOV A,#3BHMOVX DPTR,ALCALL DELAYDJNZ R1,LH3LJMP LOOPDELAY2:MOV R0,#8LH1:LCALL DELAYDJNZ R0,LH1RETDELAY:MOV R4,#25MOV R5,#100MOV R6,#100D2:DJNZ R6,D2MOV R6,#100DJNZ R5,D2MOV R5,#100DJNZ R4,D2RETINT00:PUSH ACCPUSH PSWMOV A,#1BHMOVX DPTR,A ; MOV R0,#5 LH: LCALL DELAY ; DJNZ R0,LHPOP PSWPOP ACCRETIEND实验五定时器/计数器实验(基于SST89E554RC)基本部分:按照实验指导书之“3.3 定时/计数器实验”基本实验项目要求、完成汇编语言和C语言程序功能调试与验证。
提高部分:(要求:Proteus环境下,任选一题完成)题目一:定时器控制LED灯要求:由单片机部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。
P1口的P1.0-P1.7分别接八个发光二极管。
编写程序模拟时序控制装置。
开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。
题目二:计数器实验要求:单片机部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。
使用T1作定时器,50ms中断一次,看T0每0.50来了多少脉冲,将其数值按二进制在LED灯上显示出来,5秒后再次测试。
ORG 0000HLJMP MAINORG 000BHLJMP INTT0ORG 0030HMAIN: MOV SP,#60HMOV TH0,#3CHMOV TL0,#0B0HMOV TMOD,#1MOV IE,#82HMOV R0,#20MOV R1,#1MOV A,#0FAHSETB TR0HERE: MOV P1,AAJMP HEREINTT0:PUSH PSWDJNZ R0,GHMOV R0,#20CJNE R1,#1,L1MOV A,#0FAHSJMP EDL1: CJNE R1,#2,L2RL ASJMP EDL2: CJNE R1,#3,L3 MOV A,#0AFHSJMP EDL3: CJNE R1,#4,L4RL ASJMP EDL4: CJNE R1,#5,L5MOV A,#0AAHSJMP EDL5: CJNE R1,#6,L6RL ASJMP EDL6: CJNE R1,#7,L7MOV A,#00HSJMP EDL7: MOV A,#0FFHMOV R1,#0ED: INC R1GH: POP PSWRETIEND实验六A/D、D/A转换实验(基于SST89E554RC)基本部分:按照实验指导书之“4.3 A/D转换实验”项目要求和“4.4 D/A 转换实验”项目要求,完成汇编语言和C语言程序功能调试与验证。
提高部分:(要求:Proteus环境下完成)小键盘(或开关量)给定(并显示工作状态),选择信号源输出波形类型(D/A转换方式),经过A/D采样后,将采样数据用LED灯显示当前模拟信号值大小及变化状态。
#include<reg51.h>#include<math.h>#include<intrins.h>#define uchar unsigned charsbit S1=P2^0;sbit S2=P2^1;sbit S3=P2^2;sbit S4=P2^3;sbit DA_DIN=P2^4;sbit DA_CLK=P2^5;sbit DA_CS=P2^6;sbit cs=P3^0;sbit clk=P3^1;sbit dat=P3^2;sbit P3_3 = P3^3;bdata uchar addata;sbit adin0=addata^0;unsigned char cishu;void quyan(void);void delay_s(unsigned char n){unsigned char i;for(i=0;i<n;i++);}uchar tlc549ad(void){uchar i;clk=0;cs=0;_nop_();for(i=0;i<8;i++){ //dat=1;clk=1;delay_s(20);adin0=dat;addata=addata<<1;clk=0;}cs=1;return addata;}void TLC5615_DA_conver(unsigned int DA_data) //TLC5615DA转换程序{unsigned char i;DA_data=DA_data<<2;DA_CS=1;DA_CLK=0;DA_DIN=0;DA_CS=0;for(i=0;i<16;i++){DA_data=DA_data<<1;DA_DIN=CY;DA_CLK=1;delay_s(0x02);DA_CLK=0;delay_s(0x02);}DA_CS=1;for(i=0;i<13;i++)delay_s(0xff);//P1=tlc549ad();delay_s(0xff);}void sin_fun(unsigned char APx){float x,y;unsigned int DA;quyan();while(1){for(x=0;x<(2*3.1415);x+=0.1){y=sin(x);DA=APx+y*APx;TLC5615_DA_conver(DA);}if(((S1==0)||(S2==0)||(S3==0))||((S1==1)&&(S2==1)&&(S3==1)&&(S4==1))) {TR0=0;break;}}}void sanjiao(unsigned int APx,unsigned char step){unsigned int x;quyan();while(1){for(x=0;x<2*APx;x+=step)TLC5615_DA_conver(x);for(x=2*APx;x>1;x-=step)TLC5615_DA_conver(x);if(((S1==0)||(S2==0)||(S4==0))||((S1==1)&&(S2==1)&&(S3==1)&&(S4==1))) {TR0=0;break;}}}void fangb(unsigned char APx,unsigned int num){unsigned int x;quyan();while(1){for(x=0;x<num;x++)TLC5615_DA_conver(2*APx);for(x=0;x<num;x++)TLC5615_DA_conver(0);if(((S4==0)||(S2==0)||(S3==0))||((S1==1)&&(S2==1)&&(S3==1)&&(S4==1))) {TR0=0;break;}}}void jvcb(unsigned char APx,unsigned int wide){unsigned int x,Y;quyan();while(1){for(x=0;x<wide;x+=1){Y=APx-10*x;TLC5615_DA_conver(Y);}if(((S1==0)||(S3==0)||(S4==0))||((S1==1)&&(S2==1)&&(S3==1)&&(S4==1))) {TR0=0;break;}}}void quyan(void){ cishu=10;TH0=0x3c;TL0=0xb0;TMOD=0x01;IE=0x82;TR0=1;}time0 () interrupt 1 using 1{TH0=0x3c;TL0=0xb0;cishu--;if(cishu==0){P1=tlc549ad();cishu=10;}}void main(void){while(1){P0=0xc0;P1=0x00;TLC5615_DA_conver(0);if((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)){P0=0xf9;fangb(255,50);}else if((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)){P0=0xa4;jvcb(250,25);}else if((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)){P0=0xb0;sanjiao(250,25);}else if((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)){P0=0x99;sin_fun(250);}}}实验七步进电机控制实验基本部分:1、按照实验指导书之“5.1步进电机实验”项目要求,完成基于SST89E554RC微控制器的C语言程序功能调试与验证;2、按照DSP2812开发板使用说明书之“实验二十二步进电机实验(四相单四拍)”项目要求,完成基于DSP2812微控制器的C语言程序功能调试与验证;提高部分:(任选一题完成)1、在分析掌握基于SST89E554RC微控制器实现步进电机控制原理基础上,实现步进电机速度可调和方向可调;2、在分析掌握基于DSP2812微控制器实现步进电机控制原理基础上,实现步进电机速度可调和方向可调#include <reg51.h>sbit p30=P3^0;sbit p32=P3^2;sbit p31=P3^1;unsigned char L_value[2][8] = {0x0E0, 0x0C0, 0x0D0, 0x090, 0x0B0, 0x030, 0x070, 0x060,0x060, 0x070, 0x030, 0x0B0, 0x090, 0x0D0, 0x0C0,0x0E0};//步进电机正反转表unsigned char a[4] = {0xff,0x08, 0xfc,0xfe };unsigned char speed=3;void delay(unsigned int time){unsigned int i;for(i=0; i<time; i++);}void main(){ unsigned char m;IT0=1;EA=1;EX0=1;PX0=0;p30=1;p31=1;while(1){while(~p30){P2=a[speed];for(m=0; m<8; m++){P1 = L_value[~p31][m];delay(4000*speed);}}if(p30)for(;p30==1;) P2=a[0];}}void extern0()interrupt 0{speed--;if(speed==0)speed=3;P2=a[speed];}实验八直流电机开环控制实验基本部分:1、按照实验指导书之“5.2直流电机PWM调速实验”项目要求,完成基于SST89E554RC微控制器的C语言程序功能调试与验证;2、按照DSP2812开发板使用说明书之“实验二十一直流电机实验”项目要求,完成基于DSP2812微控制器的C语言程序功能调试与验证;提高部分:(任选一题完成)3、在分析掌握基于SST89E554RC微控制器实现直流电机控制电路原理基础上,实现电机速度可调;4、在分析掌握基于DSP2812微控制器实现直流电机控制原理基础上,实现电机速度波段式可调#include <reg51.h>#define T_value (unsigned char)0xf0 // T 周期值#define TH0_value (unsigned char)0xFE // 定时器 T0 计数值(高)#define TL0_value (unsigned char)0x00 // 定时器 T0 计数值(低)unsigned char a[4] = {~0xfe,~0xfc,~0x08,~0xff};unsigned char speed[3] = {0xb0,0x80,0x40};sbit DRV = P1^7;sbit KG = P1^0;unsigned char T_Count; // 延时次数unsigned char T1_value=0xb0; // T 周期中高电平周期 T1 值unsigned char Tx;unsigned char j=0;void int_tim0() interrupt 1{TH0 = TH0_value;TL0 = TL0_value;T_Count--;}void intern0() interrupt 0{j++;TR0=0;if(j==3){j=0;}T1_value=speed[j];Tx = T1_value;T_Count=0;DRV=1;TR0=1;P2=a[j];}void main(){TMOD = 0x01; // 定时器0初始化,定时基数TH0 = TH0_value;TL0 = TL0_value;TR0 = 1;ET0 = 1;IT0=1; //外中断0EX0=1;PX0=1;DRV =1; //P17电平T_Count = T1_value;Tx = speed[0];while(1){if(KG)for(;KG==1;){P2=a[3];DRV =1;EA=0;j=0;}Tx=speed[j];T_Count =0;while(~KG){EA = 1;P2=a[j];if(T_Count == 0){DRV = ~DRV;Tx = T_value - Tx;T_Count = Tx;}}}}四、实验报告基本容要求1、实验题设计容、目的和要求;2、软件、硬件环境要求;3、给出硬件电路原理图并分析;4、程序设计框图及程序清单; 5 、实验调试步骤及结果分析;6、结论。