湖南科技大学计算机科学与工程学院
嵌入式系统设计与开发
实验报告书
题目:远程温光数据监测系统
班级: 12级计算机一班
姓名: 刘政材
学号: 1205010112
目 录
一、设计课题 ............................................................................................................................... 2
二、设计目的 ............................................................................................................................... 2
三、设计内容 ............................................................................................................................... 2
四、运行说明 ............................................................................................................................... 4
1
一、 设计课题
远程温光数据监测系统。
系统包含开发板端和PC端两部分。开发板将温度光照数据发送到串口,PC端接收后以图表形式展示,并做数据统计,保存至数据库。PC端包含了一个服务器,可以绑定本机端口,提供远程数据监测和管理功能。
二、 设计目的
1.进一步巩固嵌入式系统的基本知识。
2.掌握嵌入式应用系统的基本结构。
3.掌握嵌入式系统开发环境建立和使用。
4.掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法。
5.学会查阅有关专业资料及设计手册。
6 . 基于uC/OS-II系统设计一个综合实用系统。
三、 设计内容
1、开发板相关设计说明
开发板程序基于uC/OS-II系统,包含了串口通信、定时器、红外传输、看门狗、LED显示等模块。系统每一秒(不精确)向串口发送一次数据,在没有串口或者红外中断的情况下将一直循环执行。如果收到串口传来”reset”字串,或者红外发来数字2,系统将停止喂狗,继而重启。红外数据0和1可以控制LED切换显示系统运行时长和实时温度光照。 工程目录说明:
在main函数中对uC/OS初始化后,创建TaskStart任务,在TaskStart中创建TaskMain,作为程序的主要任务。
2
关键代码如下,代码在主任务TaskMain中执行: // num保存了红外发送过来的数据,RunType用于切换开发板运行方式 //RunType可为0:显示温度光照 1:显示运行时长 2:停止喂狗,等待重启 RunType = num;
//串口收到数据
if(USART_RX_STA&0x80)
{
u32 len=USART_RX_STA&0x3f;
//收到”reset”字串
if(len > 4 && USART_RX_BUF[0]=='r' && USART_RX_BUF[1]=='e' USART_RX_BUF[2]=='s' && USART_RX_BUF[3]=='e' && USART_RX_BUF[4]=='t')
{
num = RunType = 2;
}
USART_RX_STA=0;
}
// 不在等待重启的情况下
if(RunType != 2)
{
CommCount++;
if(CommCount % 50 == 1)
{
adcTemperature = GetTemperature();
adcLight = GetLightAdc(14);
}
//不精确的时间
if(CommCount > 150)
{
//发送数据到串口
printf("%2.1f %d\r\n",adcTemperature,adcLight);
CommCount = 0;
}
}
switch(RunType)
{
case 0:
{
DisplayTempAndLight(adcTemperature, adcLight);
IWDG_Feed();
break;
}
case 1:
3
&&
} { DisplayDigitalClock(); IWDG_Feed(); break; } case 2: { SetLed(7,0); break; }
2、PC端设计说明
PC端程序使用C#开发,基于.NET3.5。使用了一个系统提供的SerialPort组件接收串口数据。PC端包含一个串口通信模块,一个数据库管理模块,一个服务器模块和一些网页文件(用于数据展示和管理)。
数据库包含两张表,分别为everyhourdata和lasthourdata
:
结构如下:
everyhourdata用于储存每个小时的平均光照温度,lasthourdata存储最新的光照温度数据,每分钟存储一次,只保存最近一个小时内的数据。
程序使用了一个List结构来保存开发板发送过来的数据,当数据积累到60组时,求这一分钟的平均光照和温度后保存至数据库表lasthourdata。当数据库操作达到60次时,把数据库中已经保存的数据按小时区间求平均值保存至数据库的everyhourdata表,然后清空lasthourdata表。
服务器使用了三个List
数据结构来保存数据,分别为:
singleData用于保存开发板传来的最新一秒的数据;wholeDayData每小时会刷新一次,从数据库中读取当天的数据;fullYearData也是每小时刷新一次,会从数据库中读取全年的数据。这三个List用于服务器向浏览器端发送数据。
PC端绑定了端口之后,用户可以在远程查看数据。
四、 运行说明
4
1、必要文件及环境配置
PC端执行文件见附件portService.zip内的portService\portService\bin\Release,文件目录说明如下:
程序基于.NET3.5,需要.NET3.5sp1或以上框架,在XP系统下需单独安装。数据库基于SQLite,无需其他文件。数据库文件为主程序目录同级的data.db。程序自带32位/64位SQLite库文件切换功能,可在32位和64位系统下正常运行。
远程图表功能使用了百度的echarts表格,包含了大量的js运算和canvas绘图操作,需要比较好的浏览器支持才能流畅运行,推荐使用chrome最新版。
开发板代码见附件Keil_Test_Combination.zip,主程序为user文件夹内的test.c文件。运行需将test.hex文件刷入开发板,串口连接电脑。
2、运行截图及说明
下图为32位WinXP下运行截图:
5
电脑插入开发板之后,运行程序,选择好串口,点击打开并接收即可从开发板接收数据。
开启服务器后,可以访问192.168.1.2:8081(本例)来查看数据,包括实时数据,当日变化曲线,全年数据等等。绑定本机在互联网上的IP地址后,将程序加入防火墙白名单,即可在任何联网的地方远程监测数据。
也可以使用数据库管理软件查看数据:
6
7
湖南涉外经济学院
计算机科学与技术学部
<嵌入式系统原理及应用>
课程设计报告
题目(中文)片外数据的流动与存储
(英文)Chip flow and storage of date
姓 名 曾瑾
学 号 200702602318
学 部 计算机科学与技术学部
专业、年级 计应0702班
指 导 教 师 刘晓秋
计算机科学与技术学部
目 录
第一部分:基本情况和内容
1组员基本情况与内容 ………………………………………………3
2 与课程设计相关的课程学习情况………………………………………3
3 组内成员中当任班干部的姓名与职务情况………………………………3
4 指导教师对课程设计的评语……………………………………………3
第二部分:报告内容与总结
1选题描述……………………………………………………………4
2设计过程……………………………………………………………5
3程序详细设计………………………………………………………11
4总结报告……………………………………………………………12
5程序附录 ……………………………………………………………13
第三部分:设计说明书 ……………………………………………………14
第一部分:基本情况与内容
1 组内成员基本情况
注:有效联系方式主要是电话和E-mail两项,根据组内成员的多少,调整表的大小。
2 与课程设计相关的课程学习情况(分别列出已学过的课程)
课程1 嵌入式系统
课程2 汇编语言
课程3 微机接口
课程 4 PLC 原理及程序设计
课程 5 计算机组成原理
3 组内成员中当任班干部的姓名与职务情况
4 指导教师对课程设计的评语
第二部分:报告内容
1 选题描述
l 现状概述(现象、环境、条件)
众所周知MCS-51系列CPU里大多有一个4K的ROM 8K的EPROM和128B/256B的RAM(有的则没有ROM),当我们需要存储更大容量时就必须进行片外的扩充或者想将数据传到片外时就得再接一个外部存储器(片内片外的ROM是实行统一编止的)。当访问外部存储器(简称外部数据存储器)时,使用的是MOVX指令,若执行的是“MOVX A,@DPTR”或“ MOVX @DPTR,A”指令,则此地址就是DPL(数据指针的低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是“MOVX A,@Ri”或“MOVX @Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。当RD/WR有效时,P0口将读/写数据存储器中的数据。 在这种情况下, 由P2口提供高8位地址,P0口分时提供低8位地址和用作8位双向数据总线。片外数据存储器RAM的读和写由51系列的RD(P3.7)和WR(P3.6)信号控制。
在第一个机器周期的S2、p2时刻,外部低8位数据锁存器74LS373利用单片机的ALE信号下降沿将单片机P0口输出的低8位地址信号进行锁存(暂存),为外存储器提供低8位地址信号。以指令MOVX A,@DPTR指令为例,在S5、P1时刻,指令经过编译后,将DPTR中的内容(即外部数据存储器的地址),分别经P0、P2口输出,并在 S5、P2时刻74LS373将P0口中低8位地址锁存,与P2口共同为外部数据存储器提供一个完整的16位地址信号从而使单片机系统的寻址范围达到64KB。
在指令执行第2个机器周期的S1,P1时刻,外部数据存储器RAM在单片机发送的RD低电平信号作用下,将选中的单元中的数据送到P0口传送到累加器A。
l 功能要求(达到的功能要求、知识要求、使用工具和器件是什么)
功能要求:片外数据的存储与传送
知识要求:要实现片外数据的流动存储就首先必须熟练一般的汇编语言,对微机接口及单片机方面的知识都要有一定的了解,而且又有一定的数字电路基础,要实现片外数据的存储,我们必须得在MCS-51系列的CPU上外挂一个数据存储器
使用工具:在此我们选的是51系列CPU及静态RAM6116(2K*8).74LS373(外部低8位数据锁存器)
调试软件:在MCS—51仿真软件上进行调试
l 规范使用(如何使用才能保证设计效果)
要保证设计所达到预期的设计效果就必须规范使用,首先得把握好题目的意思,如各方面的要求,功能的实现,数字及代码的规范使用,应该达到的效果,而且操作应该在一个相对比较好的环境下(确保器件的齐全,可用,无故障),在实验之前对元器件进行检查以确保实验的正常进行,拿取集成电路时请尽量不要触碰到核心芯片及其引脚。
2 设计过程
l 总体框图(由几部分组成,各部分的联系及次序,最后体现整体流程图)
(1)该课程设计主要由选题描、设计过程、程序详细设计、总结报告、程序附录五部分组成,各个部分的联系是逐层递进的,完成上一部分才能进行下一部分的工作,大概框图如下:
l 硬件设计(将要使用的接口集成电路、CPU、数据存储器、程序存储器如何构成一个整体,系统资源如何统一安排等。)
片外数据的流动与存储设计硬件电路主要由以下部分组成:
1. 微机系统(MCU)
2. 信号锁存单元(74LS373)
3. 外部存储单元(RAM)等
MCS-51系列CPU负责数据的传输与控制,将片内的数据通过其P0,P2口输出,
其中P0是输出低八位地址(因为P0口线既要用作低八位地址总线同时还要分时复用成数据总线,因此需要加一个8位数据锁存器,先把低8位地址送锁存器暂存然后由锁存器给系统提供低八位地址),P2口输出的是高八位地址(本题只需三位),然后将数据存到外部数据寄存器RAM中。
A0~A10—地址输入线
O0~O7—双向三态数据线
CE—片选信号输入线,低电平有效,且CE为低电平时才选中该片
OE—读选通信号输入线,低电平有效
WE—写允许信号是输入线,低电平有效
VCC—工作电源,电压为+5V
GND—使能控制端
6116为2K*8位静态SRAM芯片,在此作为片外数据存储器使用
(6116存储容量只2KB,引脚数24只,工作电压5V,典型工作电流35MA,典型维持电流5MA)
(6116操作控制图)
设计采用的电路图如下所示:
(逻辑电路图)
l 存储分配(片内、片外用户数据区的划分与存储,片选信号的正确使用。)
(1)由图左我们能看出片内RAM的分配:
1.80H~FFH:专用寄存器区,128字节
2.30H~7FH:用户区,80字节
3.20H~2FH:位,寻址区,16个字节
4.60H~1FH:四组寄存器,32个字节
(图左1)
(2)我们从图左2可看出片外用户数据区地址划分为0000~FFFFH,存储空间大小为16KB(以扩展的最大空间为例)
(图左2)
(3) 6116的片选信号端为CE/,低电平有效,所以我们可以给它送一个低电平或者直接接地即可(此处直接接地)
l 出错处理设计(估计可能出差的情况分析、出错以后处理对策方案。)
在各种51系列单片机测控系统中,RAM是其中一个很重要的组成部分。而在本题中片外数据的存储与流动涉及到片外,所以外部寄存器的好与坏是关系到本次设计能否成功的决定性因素,RAM的正常与否,直接关系到系统能否正常工作。在系统开始正常工作之前,如能对系统RAM进行自检,则可有效的避免因RAM失常对测控系统带来的危害。因此,对系统RAM进行自检是非常重要的。
测试外部存储器是否出现故障:
方法1:首先将MCS51中的数据写到外部存储器RAM中(写到任意单元中),然后再读出写入得内容,若对任意区读出和写入的内容都一致的话,则表示RAM存储器完好,无故障,否则有故障,若有故障,此时则应根据读写结果分析原因,故障原因有可能是工作电源没有加上或地址线数据线有错位、开路、短路、或读、写信号线没有连接好等等
有一资料上介绍了另一种方法,方法2:程序测试法(此方法是首先向整个数据区写入同一数据,再一一读出比较,若不一样,则出错)。
测试程序如下:
ORG 0001H
START: MOV A,#55H ;准备向数据区2000H~3FFFH写55H
MOV B,A ;保存在B中
MOV DPTR,#2000H ;RAM首地址2000H
WR: MOV A,B ;取出要写至RAM的数据
MOVX @DPTR,A ;写入RAM的一个单元中
INC DPTR ;DPTR加1
MOV A,DPL ;取地址低字节
JNZ WR ;不为0,转WR继续
MOV A,DPH ;取地址高字节
CJNE A,#40H,WR ;40H(最高地址+1的高字节)
MOV DPTR,#2000H ;等于,即写完,重新置RAM首地址
RD : MOVX A,@DPTR ;读出单元的数据
CJNE A,B,ERR ;与写入的数比较,不相等则出错
INC DPTR ;加1
MOV A,DPL ;判别是否末地址
JNZ RD
MOV A,DPH
CJNE A,#40H,RD
GOOD: SETB P1.0 ;全部比较完,正确
SJMP GOOD
ERR : SETB P1.7
SETB ERR ;出错处理
运行该程序时如果D0二极管亮,说明外部RAM正常,否则,二极管D7亮,说明有故障。
还有一种网上文献所做的:
ORG 0000H
LJMP START
ORG 0040H
START: MOV SP,#60H
MOV DPTR,#1000H ;置外部RAM读写地址
MOV A,#55H ;测试的数据一
MOV B,A
MOVX @DPTR,A ;写外部RAM
MOVX A,@DPTR ;读外部RAM
XRL A,B ;比较读回的数据
JNZ ERROR
MOV A,#0AAH ;测试的数据二
MOV B,A
MOVX @DPTR,A
MOVX A,@DPTR
XRL A,B
JZ PASS ;测试通过
ERROR: SETB P1.0 ;测试失败,点亮L1
SJMP $ ;停机
PASS: CPL P1.0 ;L1状态(亮/灭)转换
MOV R1,#00H ;延时
DELAY: MOV R2,#00H
DJNZ R2,$
DJNZ R1,DELAY
LJMP START ;测试循环
END
3 程序详细设计
l 主程序设计
i. 要完成的功能简述(符合处理程序流程图)
将片外RAM的3000H到30FFH单元的内容设为7FH,程序从0050H开始
ii. 程序代码和注释(程序代码具有独特性)
ORG 0050H ;程序启动地址
MAIN: MOV R0,#00H ;将计数器R0清零
MOV DPTR,#3000H ;给DPTR存储器指针赋初值
LOOP1: MOV A,,#7FH ;累加器A赋值为7FH
MOVX @DPTR,A ;将存储器A中内容送到片外
INC DPTR ;单元地址自动加1
INC R0 ;计数器R0的值增1
CJNE R0,#00H,LOOP1 ;判断是否跳转执行循环,R0不为零则执行循环,为0则继续执行下条指令
END ;程序结束标志
l 接口设置
i. 使用的集成电路与达到的要求
我们使用的集成电路时最简单的单片机电路来实现片外数据的存储与流动,要求我们将51系列CPU的P0口当做输入第八位地址用,同时还要分时复用成数据总线,P2口当做高八位地址所用(在此只需取高三位地址限于所选的芯片)。
l 程序的调试
i. 调度的工具
我们在此应用的调度工具是MCS-51仿真软件
使用条件:在WINDOWS平台下进行操作
调度步骤:首先将程序代码调入软件中进行调试,先构建再编译,装载程序后,如其能运行,则按F8观看数据的变化,在程序运行中观察R0,A,CODE的值,程序运行后在打开XDATA窗口观察XDATE的值
ii. 调试数据的正确性分析
经调试打开XDATE窗口3000H~30FFH单元中的值都为7FH,我们可以下出结论该程序设计正确,达到设计的目的。
4 总结报告
l 用文字概括课程设计的全过程(简单扼要、文体合适)
本次设计片外数据的存储与流动,实际上是扩展外部存储器,已满足用户的需求,片外数据的流动与存储课程设计重点是理论与实际相结合,不单单只是书上的一条条分离的指令。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,是对学生实际工作能力的具体训练和考察过程,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
l 经验与教训
锻炼实践能力的重要环节,回顾起此次的课程设计,我仍感慨颇多,的确,从选题到定稿,花了将近五个星期,但是可以学到很多东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编问题,最后在同学的帮助和老师的指导下终于游逆而解。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
5 程序附录
l 与课程设计相关的、并具有独特见解的方面说明
传统设计方法用汇编语言编写程序,这主要是从保证速度和节省存储空间考虑,但编程费时,调试和排错很不容易。微电子技术的飞速发展,使高性能微处理器和大容量存储器的价格变得十分便宜,速度和存储容量不再是困扰设计者的主 要问题。由于C语言容易编程、代码紧凑、可移植性和可维护性好,因而被普遍用于嵌入式程序的设计。
l 本课程设计与可能有的产品建立的联系
如果拥有专用的嵌入式系统开发工具,设计工作便要省劲些。它们通常配有定位程序和可供设计者修改的启动程序样板,有些还能通过串口或并口,在PC机 上联机调试程序,甚至有源级代码调试功能。利用工控机来设计系统,事情就更简单。不过,专用开发工具和工控机价格昂贵,因此许多人在设计嵌入式系统时选择自己编 写定位程序和启动程序,甚至编写可嵌入的I/O库函数。
第三部分
对课程设计报告的要求
本次课程设计是以课程设计报告形式,由指导老师刘老师评审合格后交由系部保存。本说明书将本次设计的系统作一个简要的说明,本课程设计主要是对于片外数据存储器的,主要内容是片外数据的流动和存储。硬件主要是由微机系统(MCU),信号锁存单元(74LS373),外部存储单元(RAM 6116),并根据设计要求画出逻辑电路图,同时设计出错设计使用两种方式进行处理,之后设计符合处理程序流程和主程序设计。调试工具是MSC-51仿真软件,经调试本次设计的代码全部可正解执行其功能。
7嵌入式系统课程设计必做部分学院电控学院专业通信工程设计名称IIC同步串行通讯1设计的目的1掌握S3C44B0IIC控制器的编程方…
嵌入式系统应用课程设计报告专业班级11电气1班学生姓名朱帅指导教师设计时间20xx20xx第1学期工程技术学院1直流电机控制程序设…
河海大学计算机及信息工程学院常州课程设计报告题目专业学号授课班号学生姓名指导教师完成时间河海大学本科课程设计报告课程设计报告任务书…
中南大学嵌入式系统实验设计报告指导老师吴志虎李志民设计者连金涛专业班级测控0801班学号0909081012时间20xx年6月1实…
嵌入式课程设计实验报告学院专业班级电信1203班姓名学号一实验课题LED每秒一次闪烁二基础知识1定时器分类基本定时器TIM6TIM…
福建工程学院嵌入式系统课程设计报告书题目基于S3C2440设备驱动及其界面设计班级姓名学号指导老师陈靖张平均李光炀2目录一设计课题…
课程设计报告基于ARM的嵌入式电子点菜系统班学姓级号名09061320xx061316叶尔多斯海拉提20xx年10月1题目基于AR…
中南大学嵌入式系统实验设计报告指导老师吴志虎李志民设计者连金涛专业班级测控0801班学号0909081012时间20xx年6月1实…
XXXX课程设计报告课程名称嵌入式系统设计题目专业班级学生姓名学生学号指导老师二一三年一月八日目录1概述111背景112设计目标2…
课程设计说明书20xx20xx学年第2学期目录1课程设计内容32课程设计目的33背景知识34工具准备工作45设计步骤与方法4515…
重庆航天职业技术学院课程作业课程名称嵌入式系统专选班级学号姓名成绩前言嵌入式系统是基于单片机的一种升级版它是以应用为中心以计算机技…