欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (3.2)--B08040720 - 嵌入式系统原理实验指导书V5.pdf

    • 资源ID:96641118       资源大小:2.89MB        全文页数:89页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (3.2)--B08040720 - 嵌入式系统原理实验指导书V5.pdf

    嵌嵌入入式式系系统统原原理理实实训训教教程程V5.02目录目录第 1 章 单片机实验教程.11.1 单片机开发环境的搭建.11.1.1 单片机开发环境介绍.11.1.2 单片机开发环境的搭建.11.1.3 联机调试.31.1.4 练习.41.2 单片机联机调试功能试验.81.2.1 观察各类存储单元.81.3 数码管的显示.91.3.1 实验目的.91.3.2 设计要求.91.3.3 实验原理.91.3.4 实验步骤.101.4 单片机定时器实验.121.4.1 实验目的.121.4.2 设计要求.121.4.3 实验原理.121.4.4 实验步骤.121.4.5 常见问题.141.4.6 练习.141.5 单片机串行通讯接口实验.151.5.1 实验目的.151.5.2 实验要求.151.5.3 实验原理.151.5.4 实验步骤.161.6 单片机中断系统实验.191.6.1 实验目的.191.6.2 设计要求.191.6.3 实验原理.191.6.4 实验步骤.201.6.5 练习.211.7 中断方式下的单片机串行通讯接口实验.221.7.1 实验目的.221.7.2 实验要求.221.7.3 实验原理.221.7.4 通讯协议.231.7.4 实验步骤.241.8 简单交通灯控制系统的设计.251.8.1 实验目的.251.8.2 实验要求.251.8.3 程序设计.251.8.4 练习.2631.9 单片机课程设计.271.9.1 课程设计要求.271.9.2 设计题目.271.9.3 提交.27自动进样器控制系统设计.281.1 设计要求.281.2 需求分析.281.3 总体设计.281.4 详细设计.281.4.1 主转盘电机的转动控制.281.4.2 主转盘的定位.29第 2 章 ARM 程序设计实验.302.1 ARM 混合编程实验.302.1.1 实验目的.302.1.2 实验要求.302.1.3 实验原理.302.1.4 实验内容.322.2 ARM 的 GPIO 接口实验.332.2.1 实验目的.332.2.2 实验要求.332.2.3 实验原理.332.2.4 实验步骤.352.2.5 练习.372.3 ARM 的 AD 接口实验.382.3.1 实验目的.382.3.2 实验要求.382.3.3 实验原理.382.3.4 实验步骤.422.4 ARM 综合应用设计.442.4.1 设计要求.442.4.2 设计题目.442.4.3 提交要求.45第 3 章 嵌入式操作系统 uC/OS-II 实验.463.1 基于 uC/OS-II 的多任务编程实验.463.1.1 实验目的.463.1.2 实验要求.463.1.3 实验原理.463.1.4 实验步骤.473.1.5 思考题.493.1.6 练习.493.2 基于 uC/OS-II 的多任务编程实验.503.2.1 实验目的.503.2.2 实验要求.503.2.3 实验原理.5043.2.4 实验步骤.513.2.5 思考题.53第 4 章 嵌入式 Linux 实验.544.1 嵌入式 Linux 交叉开发环境的搭建.544.1.1 实验目的.544.1.2 实验要求.544.1.3 实验设备.544.1.4 实验步骤.544.1.5 课后练习.564.2.1 实验目的.584.2.2 实验要求.584.2.3 实验步骤.584.3 嵌入式 Linux 下应用程序设计(1).594.3.1 实验目的.594.3.2 实验要求.594.3.3 实验原理.594.3.4 实验步骤.594.3.5 思考题.60参考程序 serial.c.604.4 嵌入式 Linux 下网络应用程序设计(1).634.4.1 实验目的.634.4.2 实验要求.634.4.3 实验原理.634.4.4 实验步骤.654.4.4.1 基本程序的编译运行:.654.4.4.2 修改程序,实现指示灯远程控制.654.4.5 思考题.664.5 嵌入式 Linux 下网络应用程序设计(2).694.5.1 实验目的.694.5.2 实验要求.694.5.3 实验原理.694.5.4 实验步骤.71第 5 章 基于嵌入式 Linux 的远程监控系统的设计.74第 6 章 嵌入式 Linux 实验(Smart210).766.1 嵌入式 Linux 交叉开发环境的搭建.764.1.1 实验目的.764.1.2 实验要求.764.1.3 实验设备.764.1.4 实验步骤.774.1.5 课后练习.786.2.1 实验目的.796.2.2 实验要求.796.2.3 实验步骤.791第第 1 章章 单片机实验教程单片机实验教程1.1 单片机开发环境的搭建单片机开发环境的搭建本节目标:搭建 Keil C51 单片机软件开发环境,安装 STC 下载工具及 USB 串口驱动,学会编写简单的单片机 C 语言程序,能编译并将该程序下载到单片机中运行。感兴趣的同学还可以安装硬件线路板开发仿真软件 Proteus,在不具备开发板的情况下1.1.1 单片机开发环境介绍单片机开发环境介绍目前,51 单片机的开发大都使用 C51 编程语言,基本不再使用汇编语言。这大大简化了单片机应用程序的开发。当前使用最多的开发环境是 Keil C51。目前最高版本为 uVision 5,除支持 51 系列单片机外,还可支持大多数的 ARM 芯片。Keil 开发环境本身带有模拟器,可以模拟调试单片机应用程序。也可以与 Proteus 联合实现软硬件联调,达到更好的仿真效果。Protues 是硬件线路板的设计开发软件,用来设计硬件线路连接原理图及印刷电路板图等,是常用的硬件线路版设计软件。同时,它还具有较强的硬件仿真能力,可以形象直观地仿真硬件的运行情况,特别是它可以仿真多种常见的处理器,允许给处理器提供相应的程序并仿真运行。因此目前最为流行的单片机学习及开发环境是 Keil C51+Proteus。1.1.2 单片机开发环境的搭建单片机开发环境的搭建本文以 Proteus 7.5 和 Keil uVision 2 为例来搭建 51 单片机的开发环境。(1)安装 Keil uVision2。(安装完后,要将补丁文件复制到keilC51bin 文件夹内)(2)安装 Ptoteus 7.5。(安装 crack 时,要关闭杀毒软件;Keil 驱动要等安装完 Keil之后再安装)上述两软件均安装 在默认文件夹内。Proteus 安装在 C:Program FilesLabcenterElectronics 文件夹内,Keil 安装在 c:keil 文件夹内。如果只使用如果只使用 keil 编写编写 C51 应用程序,编译生成可执行文件(后缀为应用程序,编译生成可执行文件(后缀为.hex)供)供 Proteus使用,则两个软件无需配置,各自独立使用即可,以下步骤则无需进行。使用,则两个软件无需配置,各自独立使用即可,以下步骤则无需进行。如想实现 Keil 与 Proteus 的联机调试功能,则需要进行如下配置:(1)运行 Proteus 软件包内的 Keil 驱动vdmagdi.exe,将驱动安装到 keil 的文件夹内。安装时,选择“AGDI Driver for uVision2”,然后选择安装目录为 c:keil 即可。(2)运行ISIS 7 Professional菜单Debug(调试),选中Use Remote Debug Monitor(使用远程调试监控),该选项前应该有“”。(3)创建或打开 Keil C 的工程后,选择菜单Project-Options for Target Target 1,打开Options for Target Target 1 窗口后,选择Debug选项卡,选择右边的 Use:Proteus VSM2Simulators,确定,如下图所示:图 1 Keil 工程的调试选项(4)确保 keil 生成的可执行文件与 proteus 项目中单片机所执行的文件为同一个文件。Keil 的输出配置:如输出文件名为 ledc.hex,所在文件夹选择好,Create HEXFile 选项前打“”。图 2 Keil 工程的输出选项3然后在 Proteus 的项目中,双击单片机器件,弹出如下窗口:图 3 Proteus 项目内的单片机程序文件在该窗口内选择 Program File 为 keil 生成输出的 ledc.hex。1.1.3 联机调试联机调试寻找可用的 Proteus 简单例程。如 51 单片机的流水灯例程。内部包括 Proteus 项目(后缀为.DSN)以及对应的 C51 程序项目文件(后缀为.uv2)。用 Proteus 打开.DSN 的项目。确保该项目中的单片机程序为 ledc.hex,菜单选项UseRemote Debug Monitor前应该有“”。进入 Keil 环境,打开.uv2 的项目文件。确保编译输出为 ledc.hex;确保 Debug 选项如图1 所示。(1)编译 C51 工程。选择菜单选项 ProjectBuild target(2)进入调试模式。选择菜单选项 DebugStart/Stop Debug Session为观察方便,可将两个软件窗口并排在桌面上,如下图所示:(3)在 Keil 内单步执行 C51 程序(按 F10),可以看到 Proteus 内的指示灯有相应的亮灭变化。(选择菜单 ViewDisassembly Windows 可以只保留 C 语句)41.1.4 练习练习(1)针对流水灯硬件设计实例,自行创建相应的 C51 应用项目,实现流水灯从中间向两边流动的效果。(2)在 Proteus 内,自行添加红、黄、绿不同颜色的指示灯,然后编写 C51 程序,让这些灯闪烁起来。1.1.5 使用单片机开发板使用单片机开发板(1)安装 keil官方网站:http:/下载 keil C51 product。注意:下载的是评估版,对 C51 来说,编译后的程序大小限制在 2KBytes 之内。(2)安装下载工具 stc-isp官方网站:http:/下载“STC-ISP 下载编程烧录软件”(3)将 STC 系列单片机型号添加到 keil 中(4)创建新的工程项目选择单片机种类5(5)编写单片机程序首先,要包含头文件:#include 然后,保存该文件(如名称为 t1.c)将该程序文件添加到项目中:在 SourceGroup1 上点击右键,选择“Add files to.”,将 t1.c 加入项目。(6)编译生成可下载程序6选中”Create HEX File”选项。然后编译生成 HEX 可下载文件 m1.hex(6)下载程序到单片机打开 STC-ISP 程序,选择单片机型号,所用串口(注意有 CH340 信息的串口),打开程序文件,然后按“下载编程”按钮。将单片机开发板的电源开关重新打开,就可以下看到程序下载到单片机上并立即运行了。78(4)1.2 单片机联机调试功能试验本实验要学会利用 Keil 开发环境,观察单片机内部的各类存储器,掌握程序存储器、数据存储器、SFR 各自的特点及使用方法。熟练掌握联机调试单片机程序的方法。1.2.1 观察各类存储单元观察各类存储单元(1)CPU 内部寄存器的观察进入程序调试运行模式,Keil 开发环境界面如图所示:左侧显示 CPU 内部的各寄存器名称及其内容,随着程序的运行,内容发生变化的寄存器会议高亮颜色标注出来。(2)C 语言变量内容的观察:打开“ViewWatch&Call Stack Window”。在 C 语言变量名字上按鼠标右键,选择“Add XXX to Watch Window”,这样,该变量的内容就会显示在 Watch Windows 中,并随着程序的执行而变化。如图所示:按 F2 可以修改变量名或删除该变量。(3)断点的设置:在 C 语句的最左端双击(或选择菜单项 DebugInsert/Remove Breakpoint)可以添加或删除断点。这样可以使用 DebugGo(或 F5 键)全速运行至断点位置。91.3 数码管的显示数码管的显示1.3.1 实验目的实验目的本实验要学习数码管的显示原理,掌握利用单片机的 IO 口控制数码管显示,学会数码管静态显示与动态显示编程。1.3.2 设计要求设计要求(1)利用实验板上的单个数码管轮流显示 0-9;(2)利用动态显示方法,使用两位数码管轮流显示 0-991.3.3 实验原理实验原理(1)数码管的连接电路实验板上共有 8 个共阴极数码管。每个数码管的 8 个段(7 段数码管+小数点)分别接在锁存器 74HC573 的 8 个输出引脚上。而 74HC573 的输出是由 P00-P07 决定的。当 573 芯片的 LE 引脚接 VCC 时,573 作为驱动芯片使用。当对应 P0 的引脚为高电平时,相应的 LED段就亮。8 个数码管的片选信号由 138 译码器提供。译码器的输入为 P22_4,用于决定 8 个数码管中哪一个亮。8 个数码管每次只有 1 个亮。(2)静态显示只使用 1 个数码管,让它显示内容。针对电路图,如果让 LED1-LED8 中的 LED1 为低电平,LED2-8 为高电平,则只有最右侧的数码管可以亮。数码管上显示的内容取决于 P00_7引脚上的信号电平。如果 P0=0 xff;即 LCD0_7 引脚全为高电平,则数码管的 8 段均亮。如果要显示数字 2,则需要数码管的 a,b,g,e,d 段亮:10这样,需要 P00=0 x5b;找出每个数字显示的编码,放到数组中,便于使用:unsigned char code DIG_CODE10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,x6d,0 x7d,0 x07,0 x7f,0 x6f;其中,code 关键词的作用是将数组元素放到程序存储器存储,便于节省数据存储器。这样该数组只用于读操作,不能修改其内容。(3)动态显示采用 138 译码器,保证了每次只有 1 个数码管亮。要在不同的数码管上同时显示数字,需要利用视觉暂留的原理,让单片机快速第轮流在不同数码管上显示数字。1.3.4 实验步骤实验步骤(1)编写 C51 程序,只让最右侧数码管的 a 段亮。分析:138 译码器的输出保证 LED1 引脚为低电平,其它为高电平。这样,P22、P23、P24 引脚需要都是低电平。P2=0;a 段是由 P00 引脚控制的。P0=1;(2)在数码管上显示数字 2需要 P0=0 x5b;(3)在 8 个数码管上轮流显示 0-7参考程序:#include unsigned char code DIG_CODE10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/显示 09 的值void delay()int i,j;for(i=0;i100;i+)for(j=0;j100;j+);main()char i;while(1)for(i=0;i8;i+)P2=i2;/为什么?P0=DIG_CODEi;delay();dpgfedcba0101101111(4)要在 8 个数码管上稳定显示 0-7,只需要调整延时时间,达到视觉暂留的效果即可。修改延时函数 delay()。调整延时时间,观察数码管上不同的显示效果。数码管的亮度及对比度与延时时间有关吗?最简开发板的数码管接法:采用共阳极数码管,P0 口控制数码管的段位,P2 口的 P20-3 经过三极管功率放大后,接公共的阳极控制端。P23 控制最右侧的数码管,P20 控制最左侧的数码管。121.4 单片机定时器实验单片机定时器实验1.4.1 实验目的实验目的本实验要学会单片机定时器的设定及使用。1.4.2 设计要求设计要求设计一个倒计时秒表。要求利用两个 7 端数码管组成一个 2 位数的倒计时秒表,根据给定初始值,倒计数至 0。1.4.3 实验原理实验原理(1)单片机定时器8051 单片机内部集成了 2 个 16 位的计数器。可以根据需要将其作为定时器使用。这时,定时器的计数频率为系统 CLK/12。如果 CPU 采用 12MHz 的晶振,则定时信号源的频率固定为 12MHz/12=1MHz。如果定时周期设定为 50ms,则需要计数 0.05S/1MHz=50000 个脉冲。因为单片机定时器为加 1 计数器,所以,计数器初始值应设定为 65536-50000=15536(即 16进制的 3CB0)。另外,还需要设置定时器工作模式寄存器 TMOD。如果使用定时器 0,16 位定时器方式,则 TMOD=0 x01。(2)数码管显示原理实验 1.4 实现了数码管的动态显示,可以在两个数码管上显示不同的数字。1.4.4 实验步骤实验步骤(1)创建 Keil C 项目,实现两位数码管的动态显示。char d=60;/要显示的数字while(1)13/显示个位数P2=0;P0=DIG_CODEd%10;delay();/显示十位数P2=12;P0=DIG_CODEd/10;delay();(2)将这段程序改为函数:void disp_digit(char d)/显示个位数P2=02;P0=DIG_CODEd%10;delay();/显示个位数P2=1=0)for(i=0;i50;i+)disp_digit(sec);/该函数内部调用 delay()两次,用时 20mssec-;1.4.5 常见问题常见问题(1)添加的数码管不亮:原因 1:数码管的公共端没有接电源;或者电源与公共段之间应该单独加 Line;原因 2:程序的问题:注意 keil 项目的输出文件就是 proteus 中单片机所使用的文件;另外,程序修改后,要重新编译。1.4.6 练习练习再增加一个两位倒计时秒表,并编写配套程序,实现两个秒表各自倒计时(时间初值不同)。151.5 单片机串行通讯接口实验单片机串行通讯接口实验1.5.1 实验目的实验目的学习单片机串行通讯的使用,掌握查询方式下的串行通讯编程方法。1.5.2 实验要求实验要求在实验 1.4 的基础上,增加串行通讯功能,实现单片机系统与 PC 的通讯。在 PC 机上按数字键,并发送给单片机;单片机的数码管上滚动显示接收到的数字。1.5.3 实验原理实验原理8051 单片机内部集成了 1 路 UART 接口,用于实现串行通讯。如果需要实现自定义波特率的串行通讯,需要使用定时器 1 来产生波特率。(1)首先,设置定时器 1 的工作模式及初始值TMOD=0 x21;/*-T1:Mode 2;T0:Mode 1*/*Baud Rate=(T1 overflow rate)*2SMOD/32T1 overflow rate=(fosc/12)/(256-TH1)So if Baud rate is 1200bps,TH1 will be(fosc=11.0592MHz)256-TH1=(11059200/12)/(1200*32)TH1=232=E8(Hex)*/TH1=0 xe8;/0 xfd;TL1=0 xe8;/1200bps/0 xfd;/*9600bps*/TR1=1;/Start timer1 to generate BAUD rate pulse(2)设置串行通讯格式:SCON=0 x50;/Mode 1,T1=baud,REN=1(3)编写串行通讯收发程序数据接收与发送时通过读写 SBUF 寄存器实现的。接收标志位是 RI,发送结束标志位是 TI。161.5.4 实验步骤实验步骤(1)编写简单的串口数据发送程序,不断发送 09main()char i;SCON=0 x50;/Mode 1,T1=baud,REN=1TMOD=0 x21;/*-T1:Mode 2;T0:Mode 1*/TH1=0 xe6;/TL1=0 xe6;/1200bps under 12MHz*/TR1=1;/Start timer1 to generate BAUD rate pulseTI=1;while(1)for(i=0;i10;i+)while(TI=0);TI=0;SBUF=i;在 PC 机上,使用下载工具中的串口助手,选择正确的串口及通讯速率,打开串口,选择 16进制模式,就可以看到单片机发送过来的数字。如下图:(2)修改串口通讯程序,将接收的字符回送给对方。while(1)17if(RI)/*接收到字符*/i=SBUF;RI=0;TI=0;SBUF=i;while(TI=0);/*等待发送完毕*/(3)修改 1.4 中的 disp 函数,用于显示 8 位数字void disp(char d)char i;for(i=0;i8;i+)P2=i0;i-)bufi=bufi-1;buf0=SBUF;RI=0;disp(buf);1.5.5 问题及注意事项(1)注意修改 delay()函数内的定时器初始控制字,(或去掉该语句)TMOD=0 x21;18(2)在 PC 端用串口调试助手一起发送多个数字时,LED 显示不正常,为什么?注意:用串口助手发送多个 16 进制数字时,应该如下格式输入数字:01 02 03.(3)如何解决问题 2?提示:必须保证程序能及时接收字符。191.6 单片机中断系统实验单片机中断系统实验1.6.1 实验目的实验目的(1)本实验要学会单片机中断系统的工作原理,掌握定时中断程序的编写方法。(2)掌握数码管动态显示的方法及编程。1.6.2 设计要求设计要求(1)将 1.3 实验中的倒计时秒表程序,用定时中断方式实现。(2)实现 2 个 2 位数倒计时秒表。1.6.3 实验原理实验原理一、单片机中断系统1.3 实验中的延时方法采用了查询方式,在 delay 函数中利用程序循环查询定时结束标记。该方式会影响 CPU 处理其它事情。改为定时中断方式,则可以在处理事务的过程中,只有当定时时间到的时候,才自动转入定时中断处理程序。单片机提供了个中断源,每个中断源的优先级别可以设定为或,同级中断的优先顺序按 EX0ET0EX1ET1ES 从高到低顺序排列。这 5 个中断源有固定的编号,分别为:0-外部中断 01-定时器 0 中断2-外部中断 13-定时器 1 中断4-串行通讯中断在单片机内使用中断的编程步骤为:(1)设置中断优先级:IP=0;/都为 0 级。(2)设置中断允许:IE=0 x82;/允许定时 0 中断(3)提供配套的中断服务程序Void timer0_int()interrupt 1/关键词 interrupt 用于声明本函数为中断处理程序,对应的中断号为 1,这是定时器 0 中断的固定编号。20If(+tcount20)/如果定时器设定为每 10ms 中断一次,在此计数 100 次,则 1S时间到。/进行 1s 的定时操作1.6.4 实验步骤实验步骤1)利用定时中断实现动态显示int LED_SEG=1;char li=0;void timer0_2ms()interrupt 1TH0=0 xf8;TL0=0 x30;/Initial value=65535-10000=55535,10ms in 12MHzTF0=0;P1=17)li=0;main()TMOD=0 x01;/16 bits,internal pulse countingTH0=0 xf8;TL0=0 x30;/Initial value=65535-2000=63536,2ms in 12MHzTF0=0;TR0=1;/start Timer 0IE=0 x82;while(1);该程序利用 2ms 中断处理程序,每隔 2ms 显示 1 位数字,利用中断可以不停刷新 8 个数码管。主程序可以安排其他任务。211.6.5 练习练习(1)修改程序,增加一个函数 disp(char seg,char data),用于在指定的某组数码管上显示 2位十进制数字 data。(2)实现中断方式下的串行通讯.221.7 中断方式下的单片机串行通讯接口实验中断方式下的单片机串行通讯接口实验1.7.1 实验目的实验目的学习单片机串行通讯的使用,掌握以中断方式来处理串行通讯1.7.2 实验要求实验要求在实验 1.5 的基础上,利用串行通讯,实现交通灯控制系统的远程设置。允许通过串口设定各方向的通行时间及红黄绿指示灯的控制方式。1.7.3 实验原理实验原理8051 单片机内部集成了 1 路 UART 接口,用于实现串行通讯。如果需要实现自定义波特率的串行通讯,需要使用定时器 1 来产生波特率。(4)首先,设置定时器 1 的工作模式及初始值TMOD=0 x21;/*-T1:Mode 2;T0:Mode 1*/*Baud Rate=(T1 overflow rate)*2SMOD/32T1 overflow rate=(fosc/12)/(256-TH1)So if Baud rate is 1200bps,TH1 will be(fosc=11.0592MHz)256-TH1=(11059200/12)/(1200*32)TH1=232=E8(Hex)*/TH1=0 xe8;/0 xfd;TL1=0 xe8;/1200bps/0 xfd;/*9600bps*/TR1=1;/Start timer1 to generate BAUD rate pulse(5)设置串行通讯格式:SCON=0 x50;/Mode 1,T1=baud(6)允许串行通讯中断IE=0 x90;/EA=1;ES=1;(7)编写串行通讯中断处理程序23void uart_int()interrupt 4unsigned char c;if(RI)/接收中断RI=0;/数据接收及处理Else/发送中断,无任何处理TI=0;1.7.4 通讯协议通讯协议实现串行通讯的双方要遵从同样的协议,以便进行数据的定义及处理。在仪器仪表中,经常使用 Modbus 协议,也可以使用自定义协议。有关 Modbus 协议请参考相关资料。为简化程序,在此使用自定义协议:协议数据包由 5 个 ASCII 字符组成:B0:首字符,表示方向,用字母 N、S、E、W 分别表示 North、South、East 和 West 四个方向。B1:大写字母R表示红灯时间,G表示绿灯时间。黄灯时间固定为 3 秒。B2-B4:十进制 ASCII 码表示的 3 位数时间,B2 存放百位数,B3 十位数,B4 个位数如设置方向北的红灯时间为 123 秒,协议包为:NR123unsigned char RcvBuf8;/接收缓冲区unsigned char RcvNum=0;/接收到的字符个数/协议包的接收与处理void uart_int()interrupt 4unsigned char c;if(RI)/接收中断RI=0;c=SBUF;If(c=N)|(c=S)|(c=E)|(c=W)/首字符RcvBuf0=c;RcvNum=1;Else if(RcvNum)/接收后续字符24RcvBufRcvNum+=c;If(RcvNum=5)/接收到完整的数据包/数据包的处理,修改对应方向的时间变量Else/发送中断,无任何处理TI=0;1.7.4 实验步骤实验步骤(1)实验箱的串口与微机之间通过 USB 转串口芯片进行连接.该串口同时也是程序下载的编程口.在 PC 机上使用串口助手进行测试.(2)利用 Keil,修改源程序,实现中断方式下的串行通讯功能。251.8 简单交通灯控制系统的设计简单交通灯控制系统的设计1.8.1 实验目的实验目的练习单片机控制程序的设计,掌握以中断处理程序为主的软件设计方法1.8.2 实验要求实验要求在实验 1.4 的基础上,增加四个方向的红黄绿指示灯。按十字路口交通灯的控制要求,实现固定时间间隔的交通灯控制。1.8.3 程序设计程序设计一、程序实现的主要功能:(1)数码管的动态显示数码管的动态显示需要定期刷新才能保证显示的正确性。该功能可以放在定时中断处理程序中实现。实现的思路如下:定义显示缓冲区,存放 4 组数码管上显示的 2 位数:unsigned char dispbuf8;volatile unsigned char li=0;利用定时中断处理程序刷新显示:void timer0_2ms()interrupt 1TH0=0 xf8;TL0=0 x30;/Initial value=65535-2000=63535,2ms in 12MHzTF0=0;P1=17)li=0;再定义函数 disp(char seg,char data),用于修改显示缓冲区,在指定的某组数码管上显示 2位十进制数字 data。Void disp(char seg,char data)Dispbufseg*2=data%10;/个位数Dispbufseg*2+1=data/10;/十位数26(2)倒计时及红绿灯的转换该部分功能可以放在定时中断中完成,也可以放在主程序中完成。下面例子是用主程序实现:定义计时变量:int tcount=500;/用于计时 1Sbit SecFlag=0;在定时中断程序中进行计时判断:if(-tcount=0)SecFlag=1;tcount=500;在主程序中进行秒计时处理main()While(1)If(SecFlag)/1S 时间到SecFlag=0;进行 4 个方向的通行时间到计时;判断并切换红黄绿灯;调用 disp 函数修改时间显示等IDL=1;/让单片机处于空闲状态,本语句可选让单片机处于空闲状态,本语句可选1.8.4 练习练习将每个方向的通行时间设为变量,编写函数 SetTrafficTime(char dir,char t)。提示:元件库中输入 7SEG 可以找到多种 7 段数码管;三色灯名称为 Trafficlights271.9 单片机课程设计单片机课程设计1.9.1 课程设计要求课程设计要求(1)设计一个完整的单片机应用系统。具体应用可以是交通灯控制系统,也可以是讲解过的实例(自动进样器),也可以是自选题目(需与老师商量)。(2)复杂系统(如自动进样器)允许以小组形式完成,每小组不超过 3 人。简单系统(如交通灯控制系统)需要以个人方式完成。系统复杂度由老师确定。(3)要求按照嵌入式系统的设计流程进行。首先确定系统的功能,即进行需求分析,形成系统需求分析说明书。然后进行总体方案设计。需求分析说明书及设计方案经老师审核同意后,方可进行作品设计及完成。(3)完成系统的硬件设计:用 Proteus 或开发板实现硬件电路原理图的设计。(4)完成配套软件的设计:用 Keil C51 开发程序,并能在 Proteus 或开发板上运行。1.9.2 设计题目设计题目1 1 交通灯控制系统交通灯控制系统(1)四个方向的红黄绿灯能正确切换:绿灯黄灯红灯绿灯(2)用两位数码管倒计时显示时间.(3)通过串口设置红灯和绿灯的时间.黄灯时间固定为 3 秒可扩展功能:(1)黄灯闪烁功能:每 1S 闪烁一次(500ms 亮,500ms 灭)(2)夜间停用模式(可自行计时,也可以通过按钮进入夜间模式)(3)转向灯的控制2.22.2 自动进样器自动进样器参考相关课件。1.9.3 提交提交(1)文档:系统的需求分析说明书及相关设计文档。(2)软硬件设计资料:电路图和源程序。上述内容打包,提交到课程网站。28自动进样器控制系统设计自动进样器控制系统设计1.1 设计要求设计要求1.2 需求分析需求分析1.3 总体设计总体设计1.4 详细设计详细设计1.4.1 主转盘电机的转动控制主转盘电机的转动控制(1)硬件连线主转盘电机采用步进电机,电机驱动器实现了电机脉冲控制及方向控制。转动脉冲信号线接至虚拟接口板的 P10;方向控制信号接至 P11。开发板使用 P20 引脚产生电机转动脉冲;P21 引脚控制电机的方向。将开发板与虚拟接口板对接,如下图所示:(2)将虚拟接口板与 PC 机通过 USB 线进行连接,运行仿真软件 AutoSampler。(3)软件设计步进电机每接收到一个脉冲,就转动 1 个固定角度。根据步进电机转动精度不同,可分为 100-800 步/圈不等。自动进样器采用 400 步/圈,即每转动一步,其转过的角度为 0.9 度。要让步进电机连续转动,就需要一定频率发送脉冲。脉冲频率越高,电机转动越快,反之亦然。如果频率过高,电机的响应速度不够,则电机不会转动;如果频率过低,电机转动会出现走走停停、有顿挫感。利用单片机的定时中断实现脉冲发送,可以比较精准地控制脉冲的频率。如下面的定时中断程序,实现 1ms 的定时中断:#include bitPFlag=0;/脉冲高低电平标志29char tcount=0;/计时计数器,控制脉冲频率char M1SPEED=20;/电机转动速度设定值void timer0()interrupt 1TH0=0 xfc;TL0=0 x18;/0 xfc18=64536+1000=65536,1ms under 12MHzTR0=1;/Start timer1 to generate BAUD rate pulseif(+tcountM1SPEED)/高电平维持 20ms,低电平维持 20ms,每个脉冲共 40mstcount=0;PFlag=PFlag;P20=PFlag;/通过 P20 引脚发送脉冲信号通过修改 M1SPEED 的数值,就可以控制电机的速度:void SetM1(char speed,bit dir)M1SPEED=speed;P21=dir;主程序完成定时器的初始化及电机的设置main()TMOD=0 x1;/*-T1:Mode 2;T0:Mode 1*/TH0=0 xfc;TL0=0 x18;/0 xfc18=64536+1000=65536,1ms under 12MHzIE=0 x82;TR0=1;/Start timer1 to generate BAUD rate pulseSetM1(20,0);while(1);下载运行该程序,观察虚拟软件中的自动进样器,其主转盘将以固定速度顺时针转动。1.4.2 主转盘的定位主转盘的定位主转盘 1 号瓶的下面埋设一块圆形磁铁。在主转盘下面的固定底座上,靠近针架的位置安装了霍尔传感器。当磁铁靠近霍尔传感器时,传感器将通过电磁感应,输出高电平信号;当磁铁原理传感器时,传感器输出信号为低电平。传感器的输出信号接至虚拟接口板30第第 2 章章 ARM 程序设计实验程序设计实验本章实验内容是针对 ARM 裸机芯片进行编程。在 ARM 上编写程序,可以使用 ARM汇编语言、C 语言或 C+语言进行编程,也可以三者混合编程。所用开发工具可以使用 ADS、Keil 或其它与 ARM 芯片配套提供的专用开发工具。本章实验均以 Keil 公司的 uVision 4.0 以上版本实现。2.1ARM 混合编程实验混合编程实验2.1.1 实验目的实验目的(1)学会 ARM 编程所使用的汇编语言和 C 语言,掌握这两种语言混合编程的方法。(2)熟悉在 uVision 开发环境中 ARM 程序的设计步骤。(3)学习 ARM 处理器的 7 种工作模式及切换。2.1.2 实验要求实验要求创建一个新的 ARM 项目,使用 uVision 中的默认启动代码 Startup.S。在启动代码的基础上,增加 C 语言程序及其他汇编语言程序,实现汇编与 C 之间的混合编程。2.1.3 实验原理实验原理(1)C 语言内嵌汇编的方法内嵌汇编在 C 和 C语言中嵌入汇编语言可以实现一些高级语言中没有的功能。在 Keil 中,可以采用如下语法实现汇编的嵌入void my_strcpy(char*dst,const char*src)int ch;_asm loop:LDRBch,src,#1STRBch,dst,#1CMPch,#0BNEloop31(2)C 语言中调用汇编程序首先需要在 C 语言中声明将要调用的汇编子程序的名称及参数,如下所

    注意事项

    本文((3.2)--B08040720 - 嵌入式系统原理实验指导书V5.pdf)为本站会员(奉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开