单片机C语言编程实例Word文档下载推荐.docx
《单片机C语言编程实例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机C语言编程实例Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。
保存”后的文件扩展名为uv2,这是KEILuVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。
图1—2 NewProject菜单
图1-3 文件窗口
(2)选择所要的单片机,这里我们选择常用的Atmel公司的AT89C51。
此时屏幕如图1-4所示.AT89C51有什么功能、特点呢?
不用急,看图中右边有简单的介绍.完成上面步骤后,我们就可以进行程序的编写了[1]。
(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。
如果你没有现成的程序,那么就要新建一个程序文件.在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中。
点击图1-5中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单File-New或快捷键Ctrl+N来实现。
现在可以编写程序了,光标已出现在文本编辑窗口中,等待我们的输入了。
下面是经典的一段程序,如果你看过别的程序书也许也有类似的程序:
#include〈REGX51。
H>
voidmain(void)
{
SCON=0x50;
//串口方式1,允许接收
TMOD=0x20;
//定时器1定时方式2
TCON=0x40;
//设定时器1开始计数
TH1=0xE8;
//11。
0592MHz1200波特率
TL1=0xE8;
TI=1;
TR1=1;
//启动定时器
while
(1)
{
printf("
HelloWorld!
\n”);
//显示HelloWorld
}
}
图1-4选取芯片
图1-5新建程序文件
这段程序的功能是不断从串口输出”HelloWorld!
字符,我们先不管程序的语法和意思,先看看如何把它加入到项目中和如何编译试运行。
(4)点击图1-5中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存.因是新文件所以保存时会弹出类似图1—3的文件操作窗口,我们把第一个程序命名为test1。
c,保存在项目所在的目录中,这时你会发现程序单词有了不同的颜色,说明KEIL的C语法检查生效了.如图1-6鼠标在屏幕左边的SourceGroup1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。
我们点击AddFiletoGroup’SourceGroup1’”弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。
这时在SourceGroup1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。
图1-6把文件加入到项目文件组中
(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了.这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件,如何设置生成HEX文件就请看下面的章节.我们先来看图1-7,图中1、2、3都是编译按钮,不同是1是用于编译单个文件。
2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。
3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。
在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。
5是菜单中的它们,在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。
6是有一个小放大镜的按钮,这就是开启\关闭调试模式的按钮,它也存在于菜单Debug-Start\StopDebugSession,快捷键为Ctrl+F5。
图1-7编译程序
(6)进入调试模式,软件窗口样式大致如图1—8所示。
图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。
3是复位,模拟芯片的复位,程序回到最开头处执行。
按4我们可以打开5中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。
这些在菜单中也有,这里不再一一介绍,大家不妨找找看,其它的功能也会在后面的章节中慢慢介绍.首先按4打开串行调试窗口,再按运行键,这时就可以看到串行调试窗口中不断的打“HelloWorld!
“。
这样就完成了您的第一个C项目。
最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启\关闭调试模式按钮.然后我们就可以进行关闭KEIL等相关操作了[1].
到此为止,初步学习了一些KEILuVision2的项目文件创建、编译、运行和软件仿真的基本操作方法。
其中一直有提到一些功能的快捷键的使用,的确在实际的开发应用中快捷键的运用可以大大提高工作的效率,还有就是对这里所讲的操作方法举一反三用于类似的操作中。
图1-8调试运行程序
1.2 生成HEX文件和最小化系统
在开始C语言的主要内容时,我们先来看看如何用KEILuVISION2来编译生成用于烧写芯片的HEX文件.HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示,常用来保存单片机或其他处理器的目标程序代码。
它保存物理程序存储区中的目标代码映像.一般的编程器都支持这种格式。
我们先来打开第一节做的第一项目,打开它的所在目录,找到test。
Uv2的文件就可以打开先前的项目了.然后右击图1—9中的1项目文件夹,弹出项目功能菜单,选OptionsforTarget'
Target1’,弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样的菜单可选.打开项目选项窗口,转到Output选项页图1-10所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定的路径中。
我们再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定的路径中了,如图1—11。
这样我们就可用自己的编程器所附带的软件去读取并烧到芯片了,再用实验板看结果.
Keil、ProteusVSM软件使用
2。
KeilC51
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用.
下面介绍KeilC51软件的使用方法
进入KeilC51后,屏幕如下图所示.几秒钟后出现编辑界面.
图2-1启动KeilC51时的屏幕
图2-2 进入KeilC51后的编辑界面
简单程序的调试
学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧.
1)建立一个新工程,单击Project菜单,在弹出的下拉菜单中选中NewProject选项
图2-3建立新工程
2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存。
图2-4选择保存路径
3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,Keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定:
图2-5选择单片机型号
4)完成上一步骤后,屏幕如下图所示:
图2-6项目主界面
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File"
菜单,再在下拉菜单中单击“New”选项
图2—7新建文件
新建文件后屏幕如下图所示:
图2-8新建文件后屏幕
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);
如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮.
图2-9保存C文档
6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1"
上单击右键,弹出如下菜单。
图2-10把C文档加入到项目
然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如下图所示:
图2—11选择C文档
选中Test。
c,然后单击“Add
屏幕好下图所示:
图2-12加入C代码
注意到“SourceGroup1”文件夹中多了一个子项“Text1。
c”了吗?
子项的多少与所增加的源程序的多少相同.
7)现在,请输入如下的C语言源程序:
#include〈reg52.h〉 //包含文件
#include<
stdio.h〉
voidmain(void) //主函数
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1;
//此行及以上3行为PRINTF函数所必须
printf(“HelloIamKEIL。
\n”);
//打印程序执行的信息
printf(“Iwillbeyourfriend。
while
(1);
}
在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率.程序输入完毕后,如下图所示:
图2-13编辑代码
8)在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),屏幕如下所示:
图2-14设置断点
9)调试程序:
在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning"
选项(或者使用快捷键Esc);
再单击“View”菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果,其结果如下图所示
图2-15调试程序
至此,我们在KeilC51上做了一个完整工程的全过程.但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?
10)单击“Project”菜单,再在下拉菜单中单击“
”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到AT89S51单片机中。
图2-16设置生成Hex文件
2.2。
PROTEUSVSM
本文将简单介绍一下Proteus的使用。
在这里,我用的Proteus版本是Proteus6.7sp3Professional.
1Proteus6Professional界面简介
安装完Proteus后,运行ISIS6Professional,会出现以下窗口界面:
图2—17Proteus主界面
为了方便介绍,我分别对窗口内各部分进行中文说明(见上图).下面简单介绍各部分的功能[2]:
1.原理图编辑窗口(TheEditingWindow):
顾名思义,它是用来绘制原理图的。
蓝色方框内为可编辑区,组件要放到它里面。
注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围.
2.预览窗口(TheOverviewWindow):
它可显示两个内容,一个是:
当你在组件列表中选择一个组件时,它会显示该组件的预览图;
另一个是,当你的鼠标焦点落在原理图编辑窗口时(即放置组件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。
图2—18改变原理图的可视范围
3.模型选择工具栏(ModeSelectorToolbar)
主要模型(MainModes))
1*选择组件(components)(默认选择的)
2*放置连接点
3*放置标签(用总线时会用到)
4*放置文本
5*用于绘制总线
6*用于放置子电路
7*用于即时编辑组件参数(先单击该图标再单击要修改的组件)
:
配件(Gadgets)
1*终端接口(terminals):
有VCC、地、输出、输入等接口
2*器件引脚:
用于绘制各种引脚
3*仿真图表(graph):
用于各种分析,如NoiseAnalysis
4*录音机
5*信号发生器(generators)
6*电压探针:
使用仿真图表时要用到
7*电流探针:
8*虚拟仪表:
有示波器等
2D图形(2DGraphics):
1*画各种直线
2*画各种方框
3*画各种圆
4*画各种圆弧
5*画各种多边形
6*画各种文本
7*画符号
8*画原点等
4.组件列表(TheObjectSelector):
用于挑选组件(components)、终端接口(terminals)、信号发生器(generators)、仿真图表(graph)等。
举例,当你选择“组件(components)”,单击“P”按钮会打开挑选组件对话框,选择了一个元件后(单击了“OK”后),该组件会在组件列表中显示,以后要用到该组件时,只需在组件列表中选择即可。
5.方向工具栏(OrientationToolbar):
旋转:
旋转角度只能是90的整数倍。
翻转:
完成水平翻转和垂直翻转。
使用方法:
先右键单击组件,再点击(左击)相应的旋转图标。
6.仿真工具栏仿真控制按钮
1*运行
2*单步运行
3*暂停
4*停止
2.2操作简介
1、绘制原理图:
绘制原理图要在原理图编辑窗口中的蓝色方框内完成。
原理图编辑窗口的操作是不同于常用的WINDOWS应用程序的,正确的操作是:
用左键放置组件;
右键选择组件;
双击右键删除组件;
右键拖选多个组件;
先右键后左键编辑组件属性;
先右键后左键拖动组件;
连线用左键,删除用右键;
改连接线:
先右击连线,再左键拖动;
中键缩放原理图。
具体操作见下面例子。
2、定制自己的组件:
有三个个实现途径,一是用PROTEUSVSMSDK开发仿真模型,并制作组件;
另一个是在已有的组件基础上进行改造,比如把组件改为bus接口的;
还有一个是利用已制作好(别人的)的组件,我们可以到网上下载一些新组件并把它们添加到自己的组件库里面.由于我没有PROTEUSVSMSDK,所以我只介绍后两个[2]。
3、Sub-Circuits应用:
用一个子电路可以把部分电路封装起来,这样可以节省原理图窗口的空间。
3AVR单片机的仿真实例
本例是实现AVR驱动LCD1602,并用示波器监测数据线。
开始前先要准备好仿真文件,就是用编译器编译连接产生的调试或下载文件,不同编译器产生的文件格式是不同的,如ICC是COF、IAR是D90,GCC是COF、ELF.Proteus6.7sp3支持的有COF、D90、HEX等,ELF暂不支持。
本例用的是:
lcd_C.hex。
运行Proteus6Professional(ISIS6Professional)出现程序主界面窗口:
1、添加组件到组件列表中:
本例要用到的组件有:
ATMEGA16、LM016L(LCD1602)、“地“、示波器。
单击“P”按钮,出现挑选组件对话框:
图2-19点击P按钮
图2-20选择元器件界面
在对话框的KEYWORDS中输入ATMEGA16,得到以下结果:
图2-21搜索元器件
单击OK,关闭对话框,这时组件列表中列出ATMEGA16,同样找出LM016L。
最终结果:
图2—22已选元器件列表
2、放置组件:
在组件列表中左键选取ATMEGA16,在原理图编辑窗口中单击左键,这样ATMEGA16就被放到原理图编辑窗口中了。
同样放置LM016L。
图2-23放置组件
添加“地”:
左键选择模型选择工具栏中的
图标,出现:
图2-24添加“地”
左键选择GROUND,并在原理图编辑窗口中左击,这样“地”就被放置到原理图编辑窗口中了。
添加示波器:
图标,出现:
图2-25添加示波器
左键选择OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置
到原理图编辑窗口中了。
图2-26放置示波器
补充:
放置组件时要注所放置的组件应放到蓝色方框内,如果不小心放到外面,由于在外面鼠标用不了,要用到菜单“Edit”的“Tidy”清除,方法很简单只需单击“Tidy”即可。
操作中可能要整体移动部分电路,操作方法:
先用右键拖
的
选,再单击
中
,这时这部分电路会随鼠标移动,在目标位置单击左键,这部分电路将被放到该处[2].
3.连线
AVR、LCD的VSS、VDD、VEE不需连接,默认VSS=0V、VDD=5V、VEE=—5V、GND=0V
图2—27连线
4.添加仿真文件
先右键ATMEGA16再左键,出现
图2—28添加仿真文件
在ProgramFile中单击出现文件浏览对话框,找到lcd_C.hex文件,单击确定
完成添加文件,在ClockFrequency中把频率改为8MHz,单击OK退出。
5.仿真
单击
开始仿真.
图2—29仿真界面
说明:
红色代表高电平,蓝色代表低电平,灰色代表不确定电平(floating)。
运行时,在Debug菜单中可以查看AVR的相关资源[2]。
3。
Keil与Proteus完美结合
Keil与proteus连接调试
Proteus与Keil联机
(一)
步骤如下:
下载Keilc51v7.50软件和proteus6。
7SP3软件,分别进行安装。
安装完毕以后进行如下设置:
1、系统安装上TCP/IP协议
2、把proteus安装目录下VDM51.dll(C:
\ProgramFiles\LabcenterElectronics\Proteus6Professional\MODELS)文件复制到Keil安装目录的\C51\BIN目录中.
3、编辑C51里tools.ini文件,加入:
TDRV1=BIN\VDM51.DLL("
PROTEUSVSMMONITOR51DRIVER"
)
4、Keil里设置:
Project——>
optionsforproject-—>
debugtab
5、选中useproteusVSMmonitor51(如果想用两台电脑仿真,双击setting,输入IP地址或者DNSname.
6、载入proteus文件
7、proteus里DEBUG—-〉useremotedebugmonitor
进入KEIL的project菜单optionfortarget’工程名’.在DEBUG选项中右栏上部的下拉菜选中ProteusVSMMonitor—51Driver。
在进入setting,如果同一台机IP名为127.0.0.1,如不是同一台机则填另一台的IP地址.端口号一定为8000注意:
可以在一台机器上运行Keil,另一台中运行proteus进行远程仿真。
8、打开KEIL,按F5开始仿真[3].
Proteus与Keil联机
(二)