搜档网
当前位置:搜档网 › Googlemap_API教程

Googlemap_API教程

Googlemap_API教程
Googlemap_API教程

开发人员指南

地图基础知识

1简介

2Google 地图的“Hello, World”

2加载Google 地图API

2地图DOM 元素

2GMap2 - 基本对象

2初始化地图

2加载地图

3经度和纬度

4地图属性

5地图交互

6信息窗口

简介

任何Google 地图API 应用程序中的基础元素都是“地图”本身。本文档讨论GMap2基础对象的用法和地图操作的基础知识。

Google 地图的“Hello, World”

开始学习Google 地图API 最简单的方式是看一个简单的示例。下面的网页显示以北京的故宫博物院为中心的500x300 的地图。

"https://www.sodocs.net/doc/ae14472298.html,/TR/xhtml1/DTD/xhtml1-strict.dtd">

Google Maps JavaScript API Example

src="https://www.sodocs.net/doc/ae14472298.html,/maps?file=api&v=2&key=abcdefg&sensor=t rue_or_false"

type="text/javascript">

您可以查看此示例及下载、编辑和调试该示例,但必须将该文件中的密钥替换为您自己的Google 地图API 密钥。(如果注册了特定目录的密钥,也可以将其用于所有子目录。)即使在此简单的示例中,也需要注意五点:

7使用script标签包含Google 地图API JavaScript。

8创建名为“map_canvas”的div元素来包含地图。

9编写JavaScript 函数创建“map”对象。

10将地图的中心设置为指定的地理点。

11从body标签的onLoad事件初始化地图对象。

下面说明了这些步骤。

加载Google 地图API

src="https://www.sodocs.net/doc/ae14472298.html,/maps?file=api&v=2&key=abcdefg&sensor=true_or_fal se"

type="text/javascript">

https://www.sodocs.net/doc/ae14472298.html,/maps?file=api&v=2&key=abcdefg网址指向包含使用Google 地图API 所需所有符号和定义的JavaScript 文件的位置。您的页面必须包含指向此网址的script标签,使用注册API 时收到的密钥。在此示例中,该密钥显示为“abcdefg”。请注意,我们也传递sensor参数以指明此应用程序是否使用传感器来确定用户位置。在此示例中,我们将其设为变量“true_or_false”以强调您必须显式地将此值设置为true或false。

地图DOM 元素

要让地图在网页上显示,必须为其留出一个位置。通常,我们通过创建名为div的元素并

在浏览器的文档对象模型(DOM) 中获取此元素的引用执行此操作。

在上述示例中,我们定义名为“map_canvas”的div,并使用样式属性设置其尺寸。地图会自动使用容器尺寸调整自身的尺寸,除非使用构造函数中的GMapOptions显式地为地图指定尺寸。

GMap2 - 基本对象

var map=new GMap2(document.getElementById("map_canvas"));

GMap2类是表示地图的JavaScript 类。此类的对象在页面上定义单个地图。(可以创建此类的多个实例,每个对象将在页面上定义一个不同的地图。)我们使用JavaScript new操作符创建此类的一个新实例。

当创建新的地图实例时,在页面中指定一个DOM 节点(通常是div元素)作为地图的容器。HTML 节点是JavaScript document对象的子对象,而且我们通过document.getElementById()方法获得该元素的引用。

此代码定义了一个变量(名为map),并将新GMap2对象赋值给该变量。函数GMap2()称为“构造函数”,其定义(在Google 地图API 参考中简述)如下所示:

构造函数说明

GMap2(container, opts?) 在通常是一个DIV元素的指定HTML container内创建新地图。您也可以通过opts参数传递GMap2Options类型的可选参数。

请注意因为JavaScript 是松散类型的语言,我们可以不填写构造函数的任何可选参数,此处也未这样做。

初始化地图

map.setCenter(new GLatLng(39.9493,116.3975),13);

通过GMap2构造函数创建地图后,我们需要再做一件事:将其初始化。初始化通过地图的setCenter()方法完成。setCenter()方法要求有GLatLng坐标和缩放级别,而且必须先发送此方法,然后再在地图上执行其他任何操作,包括设置地图本身的其他任何属性。加载地图

当HTML 页面显示时,文档对象模型(DOM) 即会扩展,接收其他外部图像和脚本并将其合并到document对象中。为确保我们的地图仅放置在完全加载后的页面上,我们仅在HTML 页面的元素收到onload事件后才执行构造GMap2对象的函数。这样做可以避免出现不可预期的行为,并使我们可以对地图绘制的方式和时间进行更多控制。onload属性是事件处理程序的示例。Google 地图API 还提供了大量事件可以用来“监听”状态变化。请参阅地图事件和事件监听器以了解更多信息。

GUnload()函数是用来防止内存泄漏的实用工具函数。

经度和纬度

既然现在已经有地图了,我们还需要一种方法来引用地图上的位置。在Google 地图API 中,GLatLng对象提供了此类机制。可以构造一个GLatLng对象,按照制图学的惯例以{经度, 纬度} 的顺序传递参数:

var myGeographicCoordinates=new GLatLng(myLatitude,myLongitude)

注意:将“地址”转变为地理点的过程称为“地址解析”,将在“Google 地图API 服务”部分中详细讨论。

就像它可用于轻松地引用地理点一样,它也可用于定义对象的地理边界。例如,地图在称为视口的窗口内显示整个世界的当前“窗口”。此视口可以通过四个角上的矩形点来定义。GLatLngBounds对象提供了这个功能,通过使用分别表示边界框的西南角和东北角的两个GLatLng对象定义一个矩形区域来实现。

GLatLng对象在Google 地图API 中用途广泛。例如,GMarker对象在其构造函数中具有GLatLng,并在地图上的指定地理位置放置标记“叠加层”。

下面的示例使用getBounds()返回当前视口,然后在地图上的这些边界内随机放置10 个标记:

function initialize(){

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Add 10 markers to the map at random locations

var bounds=map.getBounds();

var southWest=bounds.getSouthWest();

var northEast=bounds.getNorthEast();

var lngSpan=northEast.lng()-southWest.lng();

var latSpan=https://www.sodocs.net/doc/ae14472298.html,t()https://www.sodocs.net/doc/ae14472298.html,t();

for(var i=0;i<10;i++){

var point=new GLatLng(https://www.sodocs.net/doc/ae14472298.html,t()+latSpan*Math.random(),

southWest.lng()+lngSpan*Math.random());

map.addOverlay(new GMarker(point));

}

}

查看示例(map-markers.html)

注意:有关GMarker对象的详细信息位于叠加层部分中。

地图属性

默认情况下,在Google 地图API 中,地图使用标准的“绘制”图块显示。但是,Google 地图API 也支持其他地图类型。以下是标准地图类型:

?G_NORMAL_MAP- 默认视图

?G_SATELLITE_MAP - 显示Google 地球卫星图像

?G_HYBRID_MAP - 混合显示普通视图和卫星视图

?G_DEFAULT_MAP_TYPES- 这三个类型的数组,在需要重复处理的情况下非常有用

可以使用GMap2对象的setMapType()方法设置地图类型。例如,下面的代码将地图设置为使用Google 地球的卫星视图:

var map=new GMap2(document.getElementById("map_canvas"));

map.setMapType(G_SATELLITE_MAP);

地图还包含对了解情况非常有用的大量属性。例如,要了解当前视口的尺寸,可使用GMap2对象的getBounds()方法来返回GLatLngBounds值。

每个地图还包含一个“缩放级别”,用于定义当前视图的分辨率。在普通地图视图内,可以使用0(最低缩放级别,在地图上可以看到整个世界)到19(最高缩放级别,可以看到独立建筑物)之间的缩放级别。缩放级别因所查看地区而异,因为地球上某些地区的数据比其他地区更详细。在卫星视图中可以使用多达20 个缩放级别。

可以通过使用GMap2对象的getZoom()方法检索地图当前使用的缩放级别。

关于缩放级别、地图图块以及创建自己的自定义地图类型的更多信息,请参阅图块叠加层部分。

地图交互

既然现在有了GMap2对象,就可以与之进行交互了。基本地图对象的外观和行为与您在Google 地图网站上交互的地图非常相似,并带有大量内置行为。GMap2对象还提供了大量配置方法来改变地图对象本身的行为。

默认情况下,和在https://www.sodocs.net/doc/ae14472298.html,上一样,地图对象会对用户的活动做出反应。但您可以使用大量实用工具方法改变此行为。例如,GMap2.disableDragging()方法禁止了点击并拖拽地图到新位置的功能。

您还可以通过编程与地图交互。GMap2对象支持可以直接改变地图状态的大量方法。例如,setCenter()、panT o和zoomIn()方法通过编程来操作地图,而不是通过用户交互来操作地图。

下面的示例显示一个地图,等待两秒钟,然后平移到新中心点。panT o方法将地图中心设置在指定点处。如果指定点位于地图的可见部分,则地图会平稳地平移到该点,否则会跳至该点。

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

window.setTimeout(function(){

map.panT o(new GLatLng(39.927,116.407));

},1000);

查看示例(map-animate.html)

可以通过使用Google 地图API 事件进行更复杂的交互。

信息窗口

所有使用Google 地图API的地图都有可能显示类型为GInfoWindow的单个“信息窗口”,该窗口在地图上端以浮动窗口显示HTML 内容。信息窗口有点像漫画书上的文字气球;它有一个内容区域和锥形引线,引线的头在地图的指定点上。点击Google 地图上的标记可以看到活动的信息窗口。

GInfoWindow对象没有构造函数。当创建地图时,会自动创建一个信息窗口并将其附加到地图上。对于指定的地图,一次不能显示多个信息窗口,但可以移动信息窗口并可以更改其内容(如果需要)。

GMap2对象提供了openInfoWindow()方法,该方法将一个点和一个HTML DOM 元素作为参数。HTML DOM 元素附加到信息窗口容器中,信息窗口的尖端会固定在指定点上。

GMap2的openInfoWindowHtml()方法相似,但是它使用HTML 字符串作为其第二个参数而不是DOM 元素。

要创建信息窗口,请调用openInfoWindow方法,并向其传递位置和要显示的DOM 元素。下面的示例代码显示了一个信息窗口,该窗口锚定在地图中心,内容为一条简单消息“Hello, world”。

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

map.openInfoWindow(map.getCenter(),

document.createTextNode("Hello, world"));

查看示例(map-infowindow.html)

有关信息窗口的完整文档,请查阅Google 地图API 参考

事件

1地图事件概述

2事件监听器

3在事件监听器中使用闭包

4在事件中使用传递的参数

5将事件绑定到对象

6监听DOM 事件

7删除事件监听器

地图事件概述

浏览器中的JavaScript 是“事件驱动的”,这表示JavaScript 通过生成事件来响应交互,并期望程序能够“监听”感兴趣的活动。例如,在浏览器中,用户的鼠标和键盘交互可以创

建在DOM 内传播的事件。对某些事件感兴趣的程序会为这些事件注册JavaScript 事件监听器,并在接收这些事件时执行代码。

Google 地图API 通过为地图API 对象定义自定义事件而添加到此事件模型中。请注意,地图API 事件是独立的,与标准DOM 事件不同。但是,由于不同的浏览器实现不同的DOM 事件模型,因此地图API 还提供监听和响应这些DOM 事件但无需处理各种跨浏览器特性的机制。

事件监听器

通过使用GEvent命名空间中的实用工具函数注册事件监听器,来处理Google 地图API 中的事件。每个地图API 对象都导出大量已命名的事件。例如,GMap2对象导出click、dblclick和move事件,以及其他许多事件。每个事件都在指定的环境下发生,并且可以传递标识环境的参数。例如,当用户在地图对象中移动鼠标时,会触发mousemove事件,并且该事件会传递鼠标所在地理位置的GLatLng。

有关GMap2事件及其生成的参数的完整列表,请参见GMap2.Events。

注册用来获取这些事件的相关通知的监听器,请使用静态方法GEvent.addListener()。该方法有三个参数,一个对象,一个待监听事件以及一个在指定事件发生时调用的函数。例如,每当用户点击地图时,下面的代码段都会显示警告:

var map=new GMap2(document.getElementById("map"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

GEvent.addListener(map,"click",function(){

alert("您点击了地图。");

});

查看示例(event-simple.html)

监听器也能够捕获事件的环境。在下面的示例代码中,显示用户拖动地图后地图中心的经度和纬度。

var map=new GMap2(document.getElementById("map"));

GEvent.addListener(map,"moveend",function(){

var center=map.getCenter();

document.getElementById("message").innerHTML=center.toString();

});

map.setCenter(new GLatLng(39.9493,116.3975),13);

查看示例(event-context.html)

在事件监听器中使用闭包

当执行事件监听器时,一个常用的好方法就是将私有数据和持久性数据附加到一个对象。JavaScript 不支持“私有”实例数据,但它却支持闭包,闭包允许内部函数访问外部变量。在事件监听器中,访问通常不附加到发生事件的对象的变量时,闭包非常有用。

下面的示例在事件监听器中使用函数闭包将加密消息分配给一组标记。点击每个标记都可以

看到加密消息的一部分,该消息并不包含在标记自身内部。

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Creates a marker at the given point

// The five markers show a secret message when clicked

// but that message is not within the marker's instance data

function createMarker(point,number){

var marker=new GMarker(point);

var message=["这","是","个","秘密","消息"];

marker.value=number;

GEvent.addListener(marker,"click",function(){

var myHtml="#"+number+"
"+message[number-1];

map.openInfoWindowHtml(point,myHtml);

});

return marker;

}

// Add 5 markers to the map at random locations

var bounds=map.getBounds();

var southWest=bounds.getSouthWest();

var northEast=bounds.getNorthEast();

var lngSpan=northEast.lng()-southWest.lng();

var latSpan=https://www.sodocs.net/doc/ae14472298.html,t()https://www.sodocs.net/doc/ae14472298.html,t();

for(var i=0;i<5;i++){

var point=new GLatLng(https://www.sodocs.net/doc/ae14472298.html,t()+latSpan*Math.random(), southWest.lng()+lngSpan*Math.random());

map.addOverlay(createMarker(point,i+1));

}

查看示例(event-closure.html)

在事件中使用传递的参数

地图API 事件系统中的许多事件在触发事件时都会传递参数。例如,如果地图点击发生在叠加层上,GMap2“点击”事件会传递overlay和overlaylatlng;否则,它传递地图坐标的latlng。可以通过将指定的符号直接传递给事件监听器中的函数来访问这些参数。在下面的示例中,我们首先进行测试,即检查是否定义了latlng参数,以确保点击发生在地图图块上;这样,我们就可以在坐标点的上方打开一个信息窗口,并在信息窗口中显示转化为像素的坐标以及地图的缩放级别。

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

GEvent.addListener(map,"click",function(overlay,latlng){

if(latlng){

var myHtml="GPoint 为: "+map.fromLatLngToDivPixel(latlng)+",

缩放级别:"+map.getZoom();

map.openInfoWindow(latlng,myHtml);

}

});

map.addControl(new GSmallMapControl()); //增加控制条

map.addControl(new GMapTypeControl()); //增加卫星地图和普通地图的显示

查看示例(event-arguments.html)

将事件绑定到对象方法

当您希望将事件监听器附加到对象的特定实例时,函数非常有用。如果您不希望这样,而是希望响应事件时对象的所有实例都调用某方法,可以使用GEvent.bind()。在下面的示例中,MyApplication 的实例将地图事件与其成员方法绑定在一起,当触发事件时会修改类状态:function MyApplication(){

this.counter=0;

this.map=new GMap2(document.getElementById("map"));

this.map.setCenter(new GLatLng(39.9493,116.3975),13);

GEvent.bind(this.map,"click",this,this.onMapClick);

}

MyApplication.prototype.onMapClick=function(){

this.counter++;

alert("这是您第"+this.counter+" "+

"次点击"

}

var application=new MyApplication();

查看示例(event-bind.html)

监听DOM 事件

Google 地图API 事件模型创建并管理自己的自定义事件。但是,DOM 也会根据当前使用的特定浏览器事件模型创建和调度自己的事件。如果您希望捕获并响应这些事件,Google 地图API 提供的独立于浏览器的包装器可以监听和绑定DOM 事件而不需要自定义代码。

GEvent.addDomListener()静态方法为DOM 节点上的DOM 事件注册事件处理程序。

同样,GEvent.bindDom()静态方法允许您为类实例上的DOM 事件注册事件处理程序。删除事件监听器

不再需要事件监听器时,应将其删除。甚至在事件只需触发一次的情况下,也可能需要删除。删除闭包内的匿名函数所定义的事件监听器可能很困难。但是,addListener()、addDomListener()、bind()和bindDom()函数会返回GEventListener句柄,可用来最终取消注册处理程序。

下面的示例通过在地图上放置标记来响应点击。任何后续点击都可删除事件监听器。请注意,这会导致不再执行removeOverlay()代码。另请注意,您甚至可以从事件监听器自身内部删除事件监听器。

function MyApplication(){

this.counter=0;

this.map=new GMap2(document.getElementById("map"));

this.map.setCenter(new GLatLng(39.9493,116.3975),13);

var myEventListener=GEvent.bind(this.map,"click",this,function(overlay,latlng){ if(this.counter==0){

if(latlng){

this.map.addOverlay(new GMarker(latlng))

this.counter++;

}else if(overlay instanceof GMarker){

this.removeOverlay(marker)

}

}else{

GEvent.removeListener(myEventListener);

}

});

}

function load(){

var application=new MyApplication();

}

查看示例(event-removal.html)

控件

1地图控件概述

2向地图添加控件

3在地图上放置控件

4修改标准控件的结构

5创建自定义控件

控件概述

https://www.sodocs.net/doc/ae14472298.html,上的地图包含允许用户与地图交互的UI 元素,这些元素称为“控件”。您可以在Google 地图API 应用程序中添加这些控件的多种组合。您还可以通过子类化GControl类来构建自己的自定义控件。

地图API 带有大量可以在地图中使用的内置控件:

?GLargeMapControl - 一个在Google 地图上使用的大平移/缩放控件。默认情况下显示在地图的左上角。

?GSmallMapControl - 一个在Google 地图上使用的小一点的平移/缩放控件。默认情况下显示在地图的左上角。

?GSmallZoomControl- 小型缩放控件(无平移控件),用于在Google 地图上显示行车路线的小地图弹出窗口。

?GScaleControl - 地图比例尺

?GMapTypeControl - 让用户切换地图类型(例如“地图”和“卫星”)的按钮?GHierarchicalMapTypeControl- 用于放置多个地图类型选择器的一组精选的嵌套按钮和菜单项。

?GOverviewMapControl - 位于屏幕一角的可折叠概览地图。

所有这些控件都基于GControl对象。

GMapTypeControl和GHierarchicalMapTypeControl是特殊情况,因为它们还可以进行配置。这些控件增加的功能可以更改Google 地图API 中的地图当前所用的GMapType。有关配置这些控件的详细信息,请参见修改标准控件的结构。

下面是当前支持的地图类型列表:

?G_NORMAL_MAP显示Google 地图默认的普通二维图块

?G_SATELLITE_MAP显示拍摄的图块

?G_HYBRID_MAP同时显示拍摄的图块和普通(突出显示道路、城市名等明显地图特征)图块

?G_PHYSICAL_MAP根据地形信息显示实际地图图块

如果您有图像或者已经定义好的叠加层,也可以定义自己的自定义地图类型。

默认情况下,Google 地图API 提供三种地图类型:G_NORMAL_MAP、G_SATELLITE_MAP和G_HYBRID_MAP。您可以通过这两种方式来改变地图上可用的地图类型:使用GMap2.removeMapType()删除地图类型;使用GMap2.addMapType()添加地图类型。无论您何时创建地图类型控件,它都使用当前地图上已经添加的地图类型,并通过控件让用户可以切换这些地图类型。请注意,您必须在添加地图类型控件(主要指GHierarchicalMapTypeControl)之前指定各地图类型之间的阶层关系,以便地图类型控件可以准确反映这些关系。

使用下面的代码可将G_HYBRID_MAP从添加到地图上的可用地图类型中删除,只剩下两种地图类型。添加GMapTypeControl后,便只有这两种地图类型可用。

var map=new GMap2(document.getElementById("map_canvas"),

{size:new GSize(640,320)});

map.removeMapType(G_HYBRID_MAP);

map.setCenter(new GLatLng(39.927,116.407),11);

var mapControl=new GMapTypeControl();

map.addControl(mapControl);

map.addControl(new GLargeMapControl());

查看示例(control-maptypes.html)

向地图添加控件

可以使用GMap2方法addControl()向地图添加控件。例如,要将Google 地图上显示的平移/缩放控件添加到您的地图中,您可以在您的地图初始化代码中添加下面这行语句:map.addControl(new GLargeMapControl());

可以向地图添加多个控件。在本例中,我们添加内置GSmallMapControl和GMapTypeControl控件,它们分别可以平移/缩放地图以及切换“地图”与“卫星”这两种类型。在地图中添加标准控件后,它们即刻完全生效。

var map=new GMap2(document.getElementById("map"));

map.addControl(new GSmallMapControl());

map.addControl(new GMapTypeControl());

map.setCenter(new GLatLng(39.9493,116.3975),13);

查看示例(control-simple.html)

在地图上放置控件

addControl方法有第二个可选的参数GControlPosition,可用于指定控件在地图上的位置。它可以是以下值之一,这些值分别指定要放置控件的地图某个角:

?G_ANCHOR_TOP_RIGHT

?G_ANCHOR_TOP_LEFT

?G_ANCHOR_BOTTOM_RIGHT

?G_ANCHOR_BOTTOM_LEFT

如果不包含此参数,则地图API 会使用控件指定的默认位置。

GControlPosition还可以指定偏移量,来指示控件的放置位置与地图边界间隔多少像素。这些偏移量使用GSize对象指定。

本示例会将GMapTypeControl添加到地图的右上角,填充为10 个像素。双击地图上的任何位置可以删除该控件,将其放在地图的右下角。

var map=new GMap2(document.getElementById"map_canvas"));

var mapTypeControl=new GMapTypeControl();

var topRight=new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,10)); var bottomRight=new GControlPosition(G_ANCHOR_BOTTOM_RIGHT,new GSize(10,10));

map.addControl(mapTypeControl,topRight);

GEvent.addListener(map,"dblclick",function(){

map.removeControl(mapTypeControl);

map.addControl(new GMapTypeControl(),bottomRight);

});

map.addControl(new GSmallMapControl());

map.setCenter(new GLatLng(39.9493,116.3975),13);

查看示例(control-positioning.html)

请参见GControlPosition类参考以了解详细信息。

修改标准控件的结构

Google 地图API 内的大多数控件都提供具有标准行为的简单控件。但是,有些控件需要初始化才能正常使用。例如,GHierarchicalMapTypeControl通常需要一定的初始化才能在层叠“菜单”中以正确顺序显示地图类型。

此示例将带有十字准线图块层叠加层的G_PHYSICAL_MAP地图类型添加到地图中,然后创建GHierarchicalMapTypeControl来排列添加到地图的其他地图类型。

// define the crosshair(标准线)tile layer and its required functions

var crossLayer=new GTileLayer(new GCopyrightCollection(""),0,15); crossLayer.getTileUrl=function(tile,zoom){

return"./include/tile_crosshairs.png";

}

crossLayer.isPng=function(){return true;}

// Create a new map type incorporating the tile layer

var layerTerCross=[G_PHYSICAL_MAP.getTileLayers()[0],crossLayer];

var mtTerCross=new GMapType(layerTerCross,

G_PHYSICAL_MAP.getProjection(),"Ter+");

var map=new GMap2(document.getElementById("map_canvas"),

{size:new GSize(640,320)});

map.addMapType(G_PHYSICAL_MAP);

map.addMapType(mtTerCross);

map.setCenter(new GLatLng(39.9493,116.3975),4);

var mapControl=new GHierarchicalMapTypeControl();

// Set up map type menu relationships

mapControl.clearRelationships();

mapControl.addRelationship(G_SATELLITE_MAP,G_HYBRID_MAP,"文字标记",false); mapControl.addRelationship(G_PHYSICAL_MAP,mtTerCross,"十字交叉");

// Add control after you've specified the relationships

map.addControl(mapControl);

map.addControl(new GLargeMapControl());

查看示例(control-initialization.html)

自定义地图控件

Google 地图API 还允许您通过子类化GControl来创建自定义地图控件。(您并没有在JavaScript 中实现一个“子类化”对象,而是把这个对象的prototype指定为GControl 对象的实例。)

要创建可用的自定义控件,您需要实现在该类中定义的至少两个方法:initialize()和getDefaultPosition()。initialize()方法必须返回DOM 元素,而getDefaultPosition()方法必须返回类型为GControlPosition的对象。

所有自定义的地图控件中的DOM 元素最终都应该添加到地图容器(也是DOM 元素)中去,这个地图容器可以通过GMap2getContainer()方法获得。

在此示例中,我们创建一个简单的缩放控件,它具有文本链接,而不是标准Google 地图缩放控件中使用的图形图标。

// A TextualZoomControl is a GControl that displays textual "Zoom In"

// and "Zoom Out" buttons (as opposed to the iconic buttons used in

// Google Maps).

// We define the function first

function TextualZoomControl(){

}

// To "subclass" the GControl, we set the prototype object to

// an instance of the GControl object

TextualZoomControl.prototype=new GControl();

// Creates a one DIV for each of the buttons and places them in a container

// DIV which is returned as our control element. We add the control to

// to the map container and return the element for the map class to

// position properly.

TextualZoomControl.prototype.initialize=function(map){

var container=document.createElement("div");

var zoomInDiv=document.createElement("div");

this.setButtonStyle_(zoomInDiv);

container.appendChild(zoomInDiv);

zoomInDiv.appendChild(document.createTextNode("放大")); GEvent.addDomListener(zoomInDiv,"click",function(){

map.zoomIn();

});

var zoomOutDiv=document.createElement("div");

this.setButtonStyle_(zoomOutDiv);

container.appendChild(zoomOutDiv);

zoomOutDiv.appendChild(document.createTextNode("缩小")); GEvent.addDomListener(zoomOutDiv,"click",function(){ map.zoomOut();

});

map.getContainer().appendChild(container);

return container;

}

// By default, the control will appear in the top left corner of the

// map with 7 pixels of padding.

TextualZoomControl.prototype.getDefaultPosition=function(){ return new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(7,7)); }

// Sets the proper CSS for the given button element. TextualZoomControl.prototype.setButtonStyle_=function(button){ button.style.textDecoration="underline";

button.style.color="#0000cc";

button.style.backgroundColor="white";

button.style.font="small Arial";

button.style.border="1px solid black";

button.style.padding="2px";

button.style.marginBottom="3px";

button.style.textAlign="center";

button.style.width="6em";

button.style.cursor="pointer";

}

var map=new GMap2(document.getElementById("map"));

map.addControl(new TextualZoomControl());

map.setCenter(new GLatLng(37.441944,-122.141944),13);

查看示例(control-custom.html)

地图叠加层

1地图叠加层概述

2标记

2可拖动的标记

2图标

2自定义图标

2标记管理器

3折线

3绘制折线

3测地折线

3编码折线

4多边形

5底面叠加层

6图块叠加层

6图块层叠加层

6自定义地图类型

Google 地图坐标

版权

投影

7层

8自定义叠加层

地图叠加层概述

叠加层是地图上绑定到经度/纬度坐标的对象,会随您拖动或缩放地图而移动。叠加层用于反映您“添加”到地图上以指明点、线或区域的对象。。

地图API 有如下几种叠加层:

?地图上的点使用标记来显示,通常显示自定义图标。标记是GMarker类型的对象,并且可以利用GIcon类型的对象来自定义图标。

?地图上的线使用折线(表示点的集合)来显示。线是类型为GPolyline的对象。

?地图上的区域显示为多边形(如果是任意形状的区域)或底面叠加层(如果是矩形区域)。多边形类似于闭合的折线,因此可以是任何形状。地面叠加层通常用于地图上与图块有直接或间接关联的区域。

?地图本身使用图块叠加层显示。如果您有自己的系列图块,可以使用GTileLayerOverlay类来改变地图上已有的图块,甚至可以使用GMapType来创建您自己的地图类型。

?信息窗口也是一种特殊的叠加层。但是请注意,信息窗口会自动添加到地图中,并且地图只能添加一个类型为GInfoWindow的对象。

每个叠加层都实现GOverlay接口。可以使用GMap2.addOverlay()方法向地图添加叠加层,使用GMap2.removeOverlay()方法删除叠加层。(请注意,默认情况下信息窗口会自动添加到地图。)

标记

标记标识地图上的点。默认情况下,它们使用G_DEFAULT_ICON(您也可以指定自定义图标)。GMarker构造函数将GLatLng和GMarkerOptions(可选)对象作为参数。

标记设计为可交互。例如,默认情况下它们接收"click"事件,常用于在事件侦听器中打开信息窗口。

var map=new GMap2(document.getElementById("map_canvas"));

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Add 10 markers to the map at random locations

var bounds=map.getBounds();

var southWest=bounds.getSouthWest();

var northEast=bounds.getNorthEast();

var lngSpan=northEast.lng()-southWest.lng();

var latSpan=https://www.sodocs.net/doc/ae14472298.html,t()https://www.sodocs.net/doc/ae14472298.html,t();

for(var i=0;i<10;i++){

var point=new GLatLng(https://www.sodocs.net/doc/ae14472298.html,t()+latSpan*Math.random(),

southWest.lng()+lngSpan*Math.random());

map.addOverlay(new GMarker(point));

}

查看示例(marker-simple.html)

可拖动的标记

标记是可以点击和拖动到新位置的交互式对象。在此示例中,我们将一个可拖动的标记放置在地图上,并监听它的几个较简单事件。可拖动标记通过实现以下四类事件来表示其拖动状态:click、dragstart、drag和dragend。默认情况下,标记可点击但不可拖动,所以它们需要通过将额外的标记选项draggable设置为true 来初始化。可拖动标记拖动结束后默认有弹跳效果。如果不喜欢这种效果,请将bouncy选项设置为false,标记会平缓放下。

var map=new GMap2(document.getElementById("map_canvas"));

var center=new GLatLng(39.9493,116.3975);

map.setCenter(center,13);

var marker=new GMarker(center,{draggable:true});

GEvent.addListener(marker,"dragstart",function(){

map.closeInfoWindow();

});

GEvent.addListener(marker,"dragend",function(){

marker.openInfoWindowHtml("弹起来了...");

});

map.addOverlay(marker);

查看示例(marker-drag.html)

图标(标记)

标记可以用自定义的新图标来显示,以替代默认图标。因为地图API 中一个图标(GIcon 对象)需要由多个不同的图像组成,所以定义图标较为复杂。一个图标最少应定义前景图像、类型为GSize的尺寸和用于定位图标的图标偏移值。

最简单的自定义图标是基于G_DEFAULT_ICON类型来创建。基于此类型创建图标让您仅通过修改若干属性即可快速更改默认图标。

在下面的示例中,我们先用G_DEFAULT_ICON类型创建一个图标,然后使用其他图像来改变默认图像。(使用不同图像时要谨慎,因为它们需要设置为与默认图像相同的正确尺寸才能正常显示。)

var map=new GMap2(document.getElementById("map_canvas"));

map.addControl(new GSmallMapControl());

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Create our "tiny" marker icon

var blueIcon=new GIcon(G_DEFAULT_ICON);

blueIcon.image=

"https://www.sodocs.net/doc/ae14472298.html,/intl/en_us/mapfiles/ms/micons/blue-dot.png";

// Set up our GMarkerOptions object

markerOptions={icon:blueIcon};

// Add 10 markers to the map at random locations

var bounds=map.getBounds();

var southWest=bounds.getSouthWest();

var northEast=bounds.getNorthEast();

var lngSpan=northEast.lng()-southWest.lng();

var latSpan=https://www.sodocs.net/doc/ae14472298.html,t()https://www.sodocs.net/doc/ae14472298.html,t();

for(var i=0;i<10;i++){

var point=new GLatLng(https://www.sodocs.net/doc/ae14472298.html,t()+latSpan*Math.random(), southWest.lng()+lngSpan*Math.random());

map.addOverlay(new GMarker(point,markerOptions));

}

查看示例(icon-simple.html)

多数图标包含前景图像和阴影图像。阴影图像应该和前景图像成45 度夹角(向右上方倾斜),阴影图像的左下角应与图标前景图像的左下角对齐。阴影图像应是经过Alpha 透明处理的24 位PNG 图像,以便图像边界可以在地图上正确显示。

以下示例使用Google Ride Finder“迷你”标记为例,创建一种新类型的图标。我们必须指定前景图像、阴影图像以及一些将图标锚定到地图、将信息窗口锚定到图标的点。请注意该图标的参数都是通过GMarkerOptions中的选项来指定的。

var map=new GMap2(document.getElementById("map"));

map.addControl(new GSmallMapControl());

map.addControl(new GMapTypeControl());

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Create our "tiny" marker icon

var tinyIcon=new GIcon();

tinyIcon.image="https://www.sodocs.net/doc/ae14472298.html,/ridefinder/images/mm_20_red.png"; tinyIcon.shadow=

"https://www.sodocs.net/doc/ae14472298.html,/ridefinder/images/mm_20_shadow.png";

tinyIcon.iconSize=new GSize(12,20);

tinyIcon.shadowSize=new GSize(22,20);

tinyIcon.iconAnchor=new GPoint(6,20);

https://www.sodocs.net/doc/ae14472298.html,WindowAnchor=new GPoint(5,1);

// Set up our GMarkerOptions object literal

markerOptions={icon:tinyIcon};

// Add 10 markers to the map at random locations

var bounds=map.getBounds();

var southWest=bounds.getSouthWest();

var northEast=bounds.getNorthEast();

var lngSpan=northEast.lng()-southWest.lng();

var latSpan=https://www.sodocs.net/doc/ae14472298.html,t()https://www.sodocs.net/doc/ae14472298.html,t();

for(var i=0;i<10;i++){

var point=new GLatLng(https://www.sodocs.net/doc/ae14472298.html,t()+latSpan*Math.random(),

southWest.lng()+lngSpan*Math.random());

map.addOverlay(new GMarker(point,markerOptions));

}

请注意GMarkerOptions对象的定义演示了“对象常量”表示法的用法。该对象不是使用构造函数实例化的,而只是使用名-值对进行声明。

查看示例(icon-complex.html)

自定义图标

GIcon对象也有若干其他属性,应对其进行适当设置,以便使您的图标获取最佳的浏览器兼容性和功能。例如,imageMap属性指定图标图像不透明部分的形状。如果不在图标中设置此属性,则整个图标图像(包括透明部分)在Firefox/Mozilla 中都将是可点击的。有关详细信息,请参阅GIcon 类参考。

在许多情况下,图标可以有不同的前景,但具有相同的形状和阴影。最简单的实现方式是使用GIcon类的构造函数“复制”已有的图标(比如G_DEFAULT_ICON,将其作为GIcon 的copy 参数),它将复制该图标所有的默认属性,然后您可以对其进行自定义。

var map=new GMap2(document.getElementById("map_canvas"));

map.addControl(new GSmallMapControl());

map.addControl(new GMapTypeControl());

map.setCenter(new GLatLng(39.9493,116.3975),13);

// Create a base icon for all of our markers that specifies the

// shadow, icon dimensions, etc.

var baseIcon=new GIcon(G_DEFAULT_ICON);

baseIcon.shadow="https://www.sodocs.net/doc/ae14472298.html,/mapfiles/shadow50.png"; baseIcon.iconSize=new GSize(20,34);

baseIcon.shadowSize=new GSize(37,34);

baseIcon.iconAnchor=new GPoint(9,34);

https://www.sodocs.net/doc/ae14472298.html,WindowAnchor=new GPoint(9,2);

// Creates a marker whose info window displays the letter corresponding

// to the given index.

function createMarker(point,index){

// Create a lettered icon for this point using our icon class

var letter=String.fromCharCode("A".charCodeAt(0)+index);

var letteredIcon=new GIcon(baseIcon);

letteredIcon.image="https://www.sodocs.net/doc/ae14472298.html,/mapfiles/marker"+letter+".png"; // Set up our GMarkerOptions object

markerOptions={icon:letteredIcon};

var marker=new GMarker(point,markerOptions);

GEvent.addListener(marker,"click",function(){

marker.openInfoWindowHtml("标记"+letter+"");

});

return marker;

}

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 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则执行,这是查询方式按下去后是低,否则为高

单片机实验指导书

《单片机原理与应用》 实验指导书 注意: 1、做实验前必须预习 2、带教材和实验指导书 理工大学 自动化学院自动化系

实验仪的使用 本实例是仿真INTEL的8031单片机,来循环点亮P1口的发光二极管(低电平有效)。程序是用汇编语言来编写。下面介绍相应的操作步骤: 1、运行桌面“星研集成软件”,画面如下: 2、建立源文件 执行 [主菜单?文件?新建],(或者点击图标)打开窗口。 选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。对源文件编译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。比如:.ASM文件,使用A51来对它编译。本实 例文件名为xunhuan.asm 。窗口如下: 按“确定”即可。然后即出现文件编辑窗口: 输入源程序,参照实验一源程序。 .专业DOC.

这样一个源文件就建立好了。 3.编译、连接文件 首先选择一个源文件,然后可以编译、连接文件了。对文件编译,如果没有错误,再与库文件连接,生成代码文件(DOB、HEX文件)。编译、连接文件的方法有如下二种:(1)使用[ 主菜单?项目?编译、连接 ]或[主菜单?项目?重新编译、连接]”。(2)点击图标或来“编译、连接”或“重新编译连接”。编译、连接过程中产生的信息显示在信息窗的“建立”视中。编译没有错误的信息如下: 若有错误则出现如下信息框: 有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。 这时用户可以作相应的修改,直到编译、连接文件通过。 4.调试 编译、连接正确后,可以开始调试程序。进入调试状态方法有: a)执行[ 主菜单?运行?进入调试状态] b)点击工具条的进入后的窗口如下:

单片机实验板详细步骤--原理图设计部分

单片机实验板 单片机是电子工程师的基本技能之一,单片机实验板是学习单片机的必备工具之一。通过层次原理图的设计方法,以单片机实验板设计实例介绍Protel DXP的原理图到PCB设计的整个过程。 一、一款单片机实验板简介 经典单片机实验板 单片系统包括MCU组成的最小系统、各种功能的外围电路及接口。 1、89C52单片机。 2、6位数码管(做动态扫描及静态显示实验)。 3、8位LED发光二极管(做流水灯实验)。 4、MAX232芯片RS232通讯接口(可以做为与计算机通迅的接口同时也可做为单片机下载程序的接口)。 5、USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源。 6、蜂鸣器(做单片机发声实验)。 7、ADC0804芯片(做模数转换实验)。 8、DAC0832芯片(做数模转换实验)

9、PDIUSBD12芯片(USB设备开发,如单片机读写U盘,自制U盘,自制MP3等,还可通过此芯片让计算机与单片机传输数据)。 10、USB转串口模块,直接由计算机USB口下载程序至单片机。 11、DS18B20温度传感器,(初步掌握单片机操作后即可亲自编写程序获知当时的温度)。 12、AT24C02外部EEPROM芯片(IIC总线元件实验) 13、字符液晶1602接口。(可显示两行字符) 14、图形液晶12864接口(可显示任意汉字及图形) 15、4*4矩阵键盘另加四个独立键盘(键盘检测试验)。 二、设计任务 采用自底向上(Bottom up)的层次原理图方法绘制单片机实验板原理图及PCB。本实验板主要有CPU部分、电源部分(Power)、串口通信(RS232)部分、数码显示(LED)部分、继电器(Relay)部分、其它(misc)各部分。 同时,通过层次原理图的绘制掌握原理图绘制的众多技巧。 单片机原理图总图 三、子图绘制 下面开始各原理子图的绘制。如【单片机实验板工程】所示,建立单片机实验板工程,建立各个原理图,并把库文件加载到工程里。

单片机流程图

单片机总流程图

主函数程序 #include<> #include<> #define uchar unsigned char #define uint unsigned int #define OSC_FREQ #define __10ms (65536 - OSC_FREQ/(/9970)) #define COM8255 XBYTE[0XFFF3] #define PA8255 XBYTE[0XFFF0] #define PB8255 XBYTE[0XFFF1] #define PC8255 XBYTE[0XFFF2] uchar code tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6}; uchar code dis_HELLO[]={0x89,0x86,0xc7,0xc7}; uchar code dis_op51[]={0xc0,0x8c,0x92,0xf9}; uchar code dis_code[]={0xcf,0xa4,0xcf,0xa4}; uchar ucCnt_10ms=99; uchar i=0; uchar J=0; uchar n=0; uchar led1; uchar led2; sbit P2_4=P2^4; sbit P3_7=P3^7; sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; void Disp_op51 (); void Disp_HELLO(); void Set_Init_Xint(); void Set_Init_Timer(); void Disp_t(); void DelayX1ms(uint count); void Disp_8255(); void main() { for(;;) { Set_Init_Xint(); Set_Init_Timer(); Disp_8255(); //ucCnt_10ms =99; //ucLed1 = 6;

《单片机》课程实验教案

《单片机》课程实验教案 实验一流水灯实验 实验目的: 1、熟悉仿真软件PROTEUS的使用方法。 2、掌握利用PROTEUS软件进行单片机系统设计与仿真的过程。 3、掌握发光二极管的控制方法。 实验原理: 利用P1口的通用I/O口功能,P1口做输出口,通过程序向P1口传送数据,用8只发光二极管分别显示P1.7~P1.0各管脚的电平状态,编写程序实现暗点以1HZ频率由低位到高位循环。 P1口接发光二极管的阴极,P1口的管脚输出低电平时对应的发光二极管点亮,实验电路如图所示。 1、从 (1)AT89S51:单片机; (2)RES、RX8:电阻、8排阻; (3)LED-GREEN:绿色发光二极管; (4)CAP、CAP-ELEC:电容、电解电容; (5)CRYSTAL:晶振。 2、放置元器件。 3、放置电源和地。 4、连线。 5、元器件属性设置。 6、电气检测。 实验设备及软件系统: 1、电脑;

2、MA TLAB软件。 实验步骤: 1、画流程图。 2、编写汇编程序。 3、通过菜单“source→Add/Remove Source Files…”新建源程序文件:DSJ1.ASM。 4、通过菜单“source→DPJ1.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 5、程序编辑好后,单击按钮存入文件DSJ1.ASM。 6、源程序编译汇编、生成目标代码文件。 7、通过菜单“source→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 8、加载目标代码文件。 9、全速仿真。 单击按钮,启动仿真。暗点以1HZ频率由低位到高位循环移动。 10、仿真调试。 (1)带断电仿真。

单片机技术实验教程

单片机技术实验教程

单片机技术实验教程 《单片机技术》原理与应用是机电一体化、应用电子技术、自动控制及数控技术应用等专业的一门实用技术骨干课程,它对培养学生的工程思维能力和解决问题的能力具有重要作用。通过本课程的学习 , 可以使学生较系统地掌握汇编语言的编程方法,掌握单片机的基本原理、接口和应用技术。熟悉单片机技术在工业控制中的应用 , 可以培养和锻炼学生动手操作和技术创新的能力,使得学生能紧跟计算机技术的发展脚步,为将来从事工业领域相关工作,尤其是自动控制以及应用电子产品的检测和维修奠定坚实的基础,为将来从事电子电器新产品设计开发,电子产品的检测和维护等工作奠定坚实的基础,是理工信息类大学生一门重要的技术课程。 课程重点是:单片机体系结构、存储器体系结构、指令系统、汇编语言程序设计、中断系统及其应用、定时器及其应用、外围设备与单片机的接口 技术。

实验一循环结构程序设计 实验目的 1、掌握汇编语言设计和调试方法; 2、熟悉键盘操作; 3、熟悉8051指令系统,掌握循环结构程序设计方法。 实验器材 DAILS 80985B+、微机开发系统、PC机 实验原理 利用R0寄存器做为循环次数计数器,利用DPTR寄存器做为外部RAM的地址指针,通过循环赋值实现外部RAM 2000H-20FFH 单元内容的清零。 程序设计的参考流程如下: 图1-1 清零程序流程图 实验内容与步骤 1、把单片机片外数据存储器的2000H-20FFH的内容清零。 2、把单片机片内数据存储器的40H-60H单元的内容依次送到片外数据存储器以2000H 作为首地址的数据块中。 实验注意事项 1、认真预习外部RAM读写操作和循环类指令。 2、认真预习外部RAM读写操作、逻辑与操作和交换类指令。 3、实验中认真记录程序在编译、链接和调试过程中出现的问题以及解决的方法,

最全的大学生礼仪规范

最全的大学生礼仪规范 个人形象可以真实地体现他的个人教养和品味;个人形象也客观地反映了他的个人精神风貌和生活态度;个人形象还如实地展现了他对待交往对象所重视的程度;那么,个人形象靠什么来体现呢?当然是个人的仪表及言谈举止。下面是小编给大家搜集整理的大学生的仪表礼仪内容。 大学生的礼仪规范:仪容仪表 原则:1)整洁;2)自然;3)互动 具体要求:面容要修饰 1、发型 1)整洁、规范:常洗、常理 2)长度适中:男前发不覆额,侧发不掩耳,后发不及领;女长发不过肩,不随便散开(最好束起来) 3)款式适合自己:年龄、身份、场合 2、面部:整洁皮肤保养,除去多余毛发(胡子、鼻毛和耳毛) 3、口部:无异味,无异物 4、手部:无污垢,不留xx 大学生的礼仪规范:服饰礼仪 基本要求: 1)xx大方:忌过露、过透、过短、过紧 2)搭配得体:完美和谐、色彩搭配、鞋袜搭配 3)个性鲜明:与年龄、体形、职业、场合相吻合,保持自己的风格 穿着的礼仪哲学

1)tpo原则:time原则、place原则、occasion原则2)穿着与形体肤色相协调 3)服饰的色彩哲学:同色搭配法、相似搭配法、主辅搭配法 饰品佩带礼仪:以少为佳;同质同色;符合习俗;注意搭配 大学生的礼仪规范:仪态礼仪 具体要求: 1)端正的站:站如松,端正、挺拔、优美、典雅2)稳重的坐:坐如钟,端正、稳重、温文尔雅 3)优雅的走:行如风,正确、优雅、轻盈,有节奏感4)得体的蹲 适当运用:手势;目光;表情 控制界域:亲密距离、个人距离、社交距离、公众距离 大学生的礼仪规范:语言礼仪 交谈时要礼貌:见面问候多使用敬语诚实热情语速、音质和声调是传递信息的符号:发音正确、清晰易懂、语速适当、语调动人 词能达意,xxxx;选词恰当慎用方言 避免一些无意义的口头禅 不要以自我为中心 让对方把话说完 大学生的礼仪规范:校园xx xx十大校园不xx现象 一偷窃他人财物(62.5%)。 二随地吐痰、乱扔垃圾,缺乏环保意识(62.3%)。

单片机实验指导书

《单片机原理实验指导书》 2013年03月

单片机实验是学习单片机理论的重要实践环节。其目的在于通过试验来验证和研究单片机理论,增强感性认识, 以促进认识的深化,培养学生科学的分析能力,使学生掌握单片机试验的操作方法和基本技能;培养学生严肃认真和实事求是的科学作风,锻炼科学实验的能力。 为了培养学生独立分析问题和解决问题的能力;培养学生的动手操作能力;为了更有效的完成每项实验,要求学生在实验前必须作充分预习。除复习与实验有关的理论,还要认真研究实验指导书,了解实验目的、内容、弄清实验原理,掌握编程步骤、调试程序的方法。 本指导书是根据数控专业实验教学大纲的要求以及我校单片机实验室的现状编写的。

前言 keil51软件使用简要说明---------------------------------------------------4 实验一数据传送类指令实验----------------------------6 实验二算术指令实验-----------------------------------9 实验三逻辑指令实验-----------------------------------------------------11 实验四控制转移和子程序调用实验-----------------------------------13 实验五典型程序设计-----------------------------------------------------14 实验六定时/计数器及中断实验---------------------------18 keil51使用简要说明

单片机实验一

软件实验部分 实验一 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、自己编程 仿真结果如下图:(仿真步骤与(一)类似)

单片机课程设计指导书

单片机原理及应用课程设计指导书 一、课程设计目的 《单片机原理及应用》是一门技术性,应用性、实践性很强的学科。课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。 二、课程设计要求 1、每个学生可以从下面的课程设计题目中任选一个(也可以根据自己的兴趣选题,但选题必须是和单片机应用有关的其他控制或测试系统,同时要通过指导老师确认),选题后按任务书的要求查阅资料,完成系统的总体设计和各个模块的设计。具体实现可以用Proteus仿真,也可以用硬件。 2、进入实验室以后应根据前面的设计在2周内独立完成仿真和调试任务。课程设计过程中,要认真记录资料来源、出现的问题和解决方法。 3、不同的学生如果选题相同,相互之间可以相互探讨,但杜绝抄袭。如果发现,按零分计算。 4、设计完成后学生要按要求认真撰写课程设计报告,并于设计完成后一周内交指导老师评阅。同时准备设计测试和答辩。

三、时间安排 1、13周之前完成分组和选题,并根据选题向指导老师要任务书 2、14周根据任务书的设计要求,查阅相关的资料,完成系统总体方案设计及各模块的软硬件设计 3、15周进入实验室进行仿真、调试,并馔写设计报告,并于16周周一交给指导教师,并准备系统测试和答辩。 四、设计作品提交 1、课程设计报告书 2、proteus仿真程序(对于用proteus仿真的学生) 3、硬件实物及单片机源程序文件 五、设计报告的撰写 1、设计报告采用统一的格式,封面包括:课程设计名称、班级、姓名、学号、设计时间,具体参考设计摸板。 2、设计报告书写规范,系列分以下几个部分进行书写: 1、绪论:介绍设计的背景和意义 2、系统总体方案设计:给出系统设计硬件框图,说明实现的基本原理 3、硬件系统设计:针对框图中的硬件模块,分别介绍选择的具体元器件型号,并介绍这些器件的性能及和单片机的连接图,最后画出详细的这个系统硬件原理图。 4、系统软件设计:根据设计的功能划分模块,画出主程序和主程序的软件流程图。 5、系统调试及仿真 写出调试方法和运行结果 6、设计总结 六、课程设计内容及提示

大学生校园礼仪规范

大学生校园礼仪规X 进入了大学,在我们学习的同时,也要学习一些基本礼仪,我们注意的礼仪有注意 仪表礼仪: 1、着装着装干净,整齐,与社会角色相协调,与所处环境相协调,与自身条件相协调,与时节相协调。 2、站姿抬头,颈挺直,下颌微收,双肩放松,两腿并拢立直,脚尖分开呈“V”字状。身体重量平均分布在两条腿上。双手交搭贴于腹部,挺胸、收腹。给人以挺拔向上、庄重大方、精力充沛的印象。 3、行姿行走时步履应自然、轻盈、敏捷、稳健。上身正直,眼平视,挺胸收腹立腰,重心前倾,双肩平稳,不宜左顾右盼,左右摇晃。集体行动时,不喧笑打闹。 4、坐姿入坐时要轻稳,走到座位前,转身后退,轻稳坐下。女子裙装入座时,应将裙向前收拢一下再坐下。腰背挺直,两臂自然弯曲放在膝上,双腿并拢。起立时,右脚向后收半步而后站立。 行的基本礼仪: 1、走路要端正。面向前方,不弓腰瞅地,不勾肩搭背。 2、遵守交通规则。行人应走街道右侧;步行时,不要走自行车道或机动车道,穿越马路要走人行横道,有天桥的应自觉从天桥上走,不乱穿街道或攀越街道护栏。 3、走路不争先恐后。 4、男士应走近车道一侧,当一个男士和两个以上女士结伴而行时,男士不应走在女士的中间。 5、主动为年长者、老弱病残者、负重的人、孕妇、儿童或行走困难的人让路,或让其先行。不可以以强凌弱,抢行其道。 6、不小心碰到别人或妨碍他人要主动道歉, 7、遇到朋友,不可随便拖着别人说个不停,一般招呼一声或点头即可。若遇到的人需多谈一会,应靠路边站立。 8、走在路上不要吃东西,行走时不抽烟。 9、上下楼梯男士先行。 10、不可数人同排横行。 见面礼仪:

1、握手通常年长(尊)者(或女性)先伸手后,另一方及时呼应。来访时、主人先伸手以表示欢迎。告辞时,待客人先伸手后,主人再相握。握手的力度以不握疼对方的手为限度。初次见面时,握手时间一般控制在3秒钟内。 2、介绍介绍时应把身份、地位较为低的一方介绍给相对而言身份、地位较为尊贵的一方。介绍时陈述的时间宜短不宜长,内容宜简不宜繁。同时避免给任何一方厚此薄彼的感觉。 3、致意表示问候之意。通常在各种场合用举手、点头、欠身等方式向相识的人打招呼。 谈话礼仪: 1、学会用礼貌用语 问候根据彼此的关系问候“您好!”、“你好”、“早上好”、“晚安”等。 道歉做了不应该做的事,应及时道歉。或者是不经意打扰别人应说:“对不起,打扰了”、“对不起,打断一下”等。 应答“您不必客气”、“没关系,这是我应该做的”、“照顾不周,请多指正”。 慰问“您辛苦了”、“让您受累了”、“给你们添麻烦了 致谢对别人的友好行为或服务及时致谢。 2、交谈时精神饱满,表情自然,目光温和、正视对方,双方距离远近要视关系亲疏。 3、选择一个双方都感兴趣的话题,回避众人忌讳的话题。 4、语言表达准确明了,语意完整,合乎语法,语言轻柔,语调亲切,语速适中。 5、认真聆听,不轻易打断别人,不看钟表,不整理服饰,不急促蹬脚。 迎送接待礼仪: 1、接站对远道而来的客人,要做好接站工作,掌握客人到达的时间,保证提前迎候,必要时准备迎客牌,并在客人到达时高举,以便客人辨认。 2、会面客人到达,应主动迎接,热情打招呼。如果是长者或身体不太好的应上前挽扶,客人手中提有重物应主动接过来。 3、入室陪客者应走在客人的左边,或走在主陪人员和客人的身后,到达会客室门口,应打开门,让客人先进,并把客人介绍给在场的有关人员。 4、送客按照接待时的规格对等送别。离开时,应与客人热情话别。 求职面试礼仪: 1、适当提前到达,准时赴约 2、等接见者请你就座时才能按指定位置入座

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:2012197213 2012118029 班级:自动化1211 指导老师:阮海容

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分

实验报告(单片机)

实 验 报 告 实验课程:单片机原理及应用 实验名称:实验1 ——原理图绘制练习 班级:13自动化2班学号:201310320226 :李浩 教师:张玲成绩: 实验日期:2016 年 5 月24 日

一、实验目的:学习Proteus 软件的使用,掌握单片机原理图的绘图方法 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图;3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microprocessor ICs “U1”80C51 Miscellaneous “X1”/12MHz CRYSTAL Capacitors “C1”~“C2”/1nF CAP Capacitors “C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors “R1”/100ΩRES Optoelectronics “LED1”~“LED2”7SEG-COM-CAT-GRN Switches & Relays “BUT”BUTTON ————————————————

1、绘图方法简述 Protues绘图:打开之后首先新建设计,然后按照元件英文名查找器件,单击鼠标即可放置好元件,单击引脚即可连好导线。点击左方标签后即可在相应导线上放置标签,点击总线图标后即可画出总线。Keic中生成hex文件后在protues中双击单片机芯片即可下载仿真程序。点击左下角播放开始仿真。 2、电路原理图

大学生校园礼仪规范.doc

大学生校园礼仪规范 进入了大学,在我们学习的同时,也要学习一些基本礼仪,我们注意的礼仪有注意 仪表礼仪: 1、着装着装干净,整齐,与社会角色相协调,与所处环境相协调,与自身条件相协调,与时节相协调。 2、站姿抬头,颈挺直,下颌微收,双肩放松,两腿并拢立直,脚尖分开呈“V”字状。身体重量平均分布在两条腿上。双手交搭贴于腹部,挺胸、收腹。给人以挺拔向上、庄重大方、精力充沛的印象。 3、行姿行走时步履应自然、轻盈、敏捷、稳健。上身正直,眼平视,挺胸收腹立腰,重心前倾,双肩平稳,不宜左顾右盼,左右摇晃。集体行动时,不喧笑打闹。 4、坐姿入坐时要轻稳,走到座位前,转身后退,轻稳坐下。女子裙装入座时,应将裙向前收拢一下再坐下。腰背挺直,两臂自然弯曲放在膝上,双腿并拢。起立时,右脚向后收半步而后站立。 行的基本礼仪: 1、走路要端正。面向前方,不弓腰瞅地,不勾肩搭背。 2、遵守交通规则。行人应走街道右侧;步行时,不要走自行车道或机动车道,穿越马路要走人行横道,有天桥的应自觉从天桥上走,不乱穿街道或攀越街道护栏。 3、走路不争先恐后。 4、男士应走近车道一侧,当一个男士和两个以上女士结伴而行时,男士不应走在女士的中间。 5、主动为年长者、老弱病残者、负重的人、孕妇、儿童或行走困难的人让路,或让其先行。不可以以强凌弱,抢行其道。 6、不小心碰到别人或妨碍他人要主动道歉, 7、遇到朋友,不可随便拖着别人说个不停,一般招呼一声或点头即可。若遇到的人需多谈一会,应靠路边站立。 8、走在路上不要吃东西,行走时不抽烟。 9、上下楼梯男士先行。 10、不可数人同排横行。 见面礼仪:

1、握手通常年长(尊)者(或女性)先伸手后,另一方及时呼应。来访时、主人先伸手以表示欢迎。告辞时,待客人先伸手后,主人再相握。握手的力度以不握疼对方的手为限度。初次见面时,握手时间一般控制在3秒钟内。 2、介绍介绍时应把身份、地位较为低的一方介绍给相对而言身份、地位较为尊贵的一方。介绍时陈述的时间宜短不宜长,内容宜简不宜繁。同时避免给任何一方厚此薄彼的感觉。 3、致意表示问候之意。通常在各种场合用举手、点头、欠身等方式向相识的人打招呼。 谈话礼仪: 1、学会用礼貌用语 问候根据彼此的关系问候“您好!”、“你好”、“早上好”、“晚安”等。 道歉做了不应该做的事,应及时道歉。或者是不经意打扰别人应说:“对不起,打扰了”、“对不起,打断一下”等。 应答“您不必客气”、“没关系,这是我应该做的”、“照顾不周,请多指正”。 慰问“您辛苦了”、“让您受累了”、“给你们添麻烦了 致谢对别人的友好行为或服务及时致谢。 2、交谈时精神饱满,表情自然,目光温和、正视对方,双方距离远近要视关系亲疏。 3、选择一个双方都感兴趣的话题,回避众人忌讳的话题。 4、语言表达准确明了,语意完整,合乎语法,语言轻柔,语调亲切,语速适中。 5、认真聆听,不轻易打断别人,不看钟表,不整理服饰,不急促蹬脚。 迎送接待礼仪: 1、接站对远道而来的客人,要做好接站工作,掌握客人到达的时间,保证提前迎候,必要时准备迎客牌,并在客人到达时高举,以便客人辨认。 2、会面客人到达,应主动迎接,热情打招呼。如果是长者或身体不太好的应上前挽扶,客人手中提有重物应主动接过来。 3、入室陪客者应走在客人的左边,或走在主陪人员和客人的身后,到达会客室门口,应打开门,让客人先进,并把客人介绍给在场的有关人员。 4、送客按照接待时的规格对等送别。离开时,应与客人热情话别。 求职面试礼仪: 1、适当提前到达,准时赴约 2、等接见者请你就座时才能按指定位置入座

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

单片机实验指导书

单片机实验 实 验 指 导 书 2017年2月

单片机实验报告 (自动化XX级) 实验名称 学生 联系方式 学号 院系工学院电气与信息工程系专业自动化 指导教师 填写日期

实验一数据传送 一、实验目的 1.进一步熟悉仿真器的使用方法。 2.练习设计简单的程序。 3.掌握8051片RAM和片外RAM的数据传送方法,从而了解这两部分存贮器的特点。 二、实验容 将8051部RAM 40H~4FH置初值00H~0FH,然后将40H~4FH容传送到外部RAM的4800H~480FH,再将4800H~480FH传回部RAM的50H~5FH。设置断点B1、B2、B3每运行到断点时检查相应的CPU现场和存贮单元的容。 三、实验准备 1、认真阅读本实验指导。 2、读懂下面的程序: #include #include char data *p40 ,*p50 ; char xdata *p4800; char i, j, k; void main( ) { p40=0x40; p50=0x50; p4800=0x4800; for(i=0;i<16;i++) { *p40=i; p40=p40+1; } //B1 p40=0x40; for(j=0;j<16;j++) { *p4800=*p40; p40=p40+1; p4800=p4800+1; } // B2 p4800=0x4800; for(k=0;k<16;k++) { *p50=*p4800; p50=p50+1;

p4800=p4800+1; } } //B3 3、画出如下要测的数据表格: 四、实验步骤 1、向机器输入程序。 2、运行程序至第一个断点B1,检查40H~0FH单元容及指针p40的容。 3、运行程序至第二个断点B2,检查4800H~480FH单元容及指针p40,p4800的容。 4、运行程序至第三个断点B3,检查50H~5FH单元容及累加器及指针p50的容。 五、实验报告要求 1、写出C语言源程序和对应的汇编语言指令及注解的程序清单。 2、将测得的数据填入表格,并和理论分析的结果相比较。 3、说明8031CPU对部存贮器和外部扩展RAM存贮器各有哪些寻址方式? 4、如果要读外部程序存储器0x4800中的容,该如何访问? 5.实验心得。(必须)

单片机实验模版

单片机实验模版 本科实验报告 课程名称:单片机综合设计学院(系): 专业:电子 班级: 学号: 学生姓名: 2018 年月日

实验项目列表 注意:独立完成预习报告和实验操作。 专业:班级:学号: 学生签字: 联系:

《单片机原理及应用实验》报告填写要求依照《大连理工大学本科实验报告规范(试行)》提出的各项要求,现规定《单片机原理及应用实验》报告填写要求如下: 一、每次实验前必须完成预习报告。注意:预习报告中的回答问题必须手写,且由 学生本人签名。第一次实验时,课前将预习报告与《实验项目列表》一同交给 实验老师。每次实验时,课前提交预习报告,没有完成预习报告者不得进行实 验。 二、每一个实验项目均须撰写一份实验报告,最后按顺序装订、上交。 三、实验报告内容: 1、实验目的和要求:写明实验的目的和任务要求; 2、实验原理和内容:与实验内容相关的算法描述、程序的结构类型,与实验相关的 接口模块功能描述。 3、算法流程:使用流程图对算法进行描述。流程图应当逻辑正确、简单清晰。流程 图能够采纳打印或手工绘制。 4、使用protel等工具绘制实验系统电路图(也可手工绘制)。系统电路图应正确、 工整。系统电路中应包含单片机以及单片机工作时所必需的外围相关器件(晶 体、上电复位电路等); 5、程序清单:程序清单一律采纳打印的方式,源程序文件的格式要整齐、规范(语 句的标号、指令及注释应在不同列中)。在程序的关键语句上加注释。相关子程 序要在凝视中进行功能说明; 6、实验结果与分析:明确地写出最后结果(是否实现设计要求等),对实验中所遇 到的问题以及解决的方法加以描述; 7、实验体会、建议:通过实验所体会的收成。针对实验内容、教学方法、考核方法 等提出需要解决的问题,提出改进建议; 8、全部文字叙述内容要求简明扼要,思路清晰、用词规范; 9、要紧仪器设备:记录要紧仪器的名称、型号(包括实验运行软件名称)等 10、实验时刻:报告中应标明实验的日期(年、月、日;星期;组号)。 四、要求实验报告字迹工整,文字简练,数据齐全,图表规范,运算正确,分析充分、具体、定量。

单片机课程实验指导书

单片机实验指导书 编写者:小编 机械学院 2018年12月

目录 单片机实验指导书 (1) 实验1 - LED流水灯实验 (3) 实验2 - 模拟汽车转向灯实验 (5) 实验3 - 模拟二进制累加器实验 (7) 实验4 - 继电器控制实验 (9) 实验5 - 步进电机控制实验 (11) 实验6 - PWM波输出实验 (13) 实验7 - 直流电机调速实验 (15) 实验8 - 中断控制实验 (17)

实验1 - LED流水灯实验 一、实验目的 1.熟悉C51的开发环境; 2.掌握芯片的基本开发技能; 3.加深对单片机I/O口工作原理的了解; 4.掌握单片机引脚输出状态的基本控制方法。 二、实验原理 1.P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,可以通过控制寄存器输出对应的高低电平; 2.L1-L8等8颗LED灯管的电气特性与类似,正向电压点亮,反向电压熄灭; 3.P1口的8个引脚可以有效控制8颗LED的工作状态,合理编排输出状态即可实现LED流水灯的基本功能。 三、实验材料 1.DICE-598KⅢ实验平台; 2.PC机一台; 3.导线若干。 四、基本电路原理图 五、参考程序流程

六、实验步骤 1.单片机AT89S52的P1.0-P1.7口接L1-L8; 2.根据程序流程图编写出相应的C51工程代码; 3.使用keil_v5对代码进行调试和仿真; 4.记录调试过程和仿真结果,并结合理论知识进行分析; 5.将代码烧写到芯片上并运行,观察运行结果; 6.如实记录观察到的现象,并结合理论知识进行分析。 七、实验要求 1.准时到达实验室; 2.合理完善实验步奏; 3.独立完成单片机工程的建立、调试和仿真; 4.独立完成实验过程,能自由调整流水灯的周期; 5.如实记录实验过程; 6.认真撰写实验报告。

单片机实验 教学方案

《单片机实验》教学大纲 一、课程名称:单片机实验 Single-Chip Microcomputer Lab 二、课程编号: 三、学分学时:1学分/16学时 四、使用教材:自编教材《单片机实验》 五、课程属性:实践/ 必修 六、教学对象:应用物理学专业本科生 七、开课单位:理学院 八、先修课程:模拟电子技术、数字电子技术、微机原理及接口技术、单片机技术 九、教学目标: 单片机在物理量的采集、处理、控制等各方面有着十分广泛的应用,单片机技术涉及硬件、软件,是一门实践性很强的应用技术。 ?指导学生通过单片机实验进一步了解单片机的硬件结构,熟悉单片机指令系统和编 程语言、加深对单片机工作原理的理解。 ?培养与提高学生单片机应用系统的设计能力,其中包括:通过阅读实验教材或资料 着手进行单片机实验的能力;简单应用系统的硬件设计能力;简单应用系统的软件 编程能力;正确使用计算机开发平台的能力;完成简单设计性实验的能力等。 ?培养与提高学生的科学实验素养,要求学生具有理论联系实际和实事求是的科学作 风,严肃认真的工作态度,主动探索的进取精神,遵守纪律、团结协作和爱护公共 财物的优良品质。 十、课程要求: 通过HHXX2.0实验板的焊接,安装调试和一系列和综合应用实验,了解单片机的硬件结构,指令系统、编程语言,学习掌握单片机应用系统配置、接口技术、程序设计和软、硬件的调试,培养和提高独立开展科学实验研究工作的素质和能力,具体要求为: ?指导学生通过本课程完成16学时共4个设计性单片机实验, ?通过实验使学生加深对单片机软、硬件系统的理解与掌握; ?通过实验熟悉单片机应用系统的设计方法和调试过程; ?通过实验掌握单片机应用系统的硬件设计和软件设计。 十一、教学内容:

相关主题