ADuC812单片机教学系统编程指导书深大.docx
- 文档编号:3786252
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:40
- 大小:1.61MB
ADuC812单片机教学系统编程指导书深大.docx
《ADuC812单片机教学系统编程指导书深大.docx》由会员分享,可在线阅读,更多相关《ADuC812单片机教学系统编程指导书深大.docx(40页珍藏版)》请在冰豆网上搜索。
ADuC812单片机教学系统编程指导书深大
ADuC812单片机教学系统编程指导书V1.0
目录
1.前言1
2.硬件环境介绍2
3.开发环境使用4
3.1使用KeilC建立一个自己的程序4
3.2将编译的程序文件写入单片机中7
4.教学实验10
4.1数字输入输出模块(I/O)(3学时)10
4.1.1ADuC812的I/O的简介10
4.1.2实验板上对I/O端口的扩展11
4.1.3I/O端口例程12
4.1.4ADuC812单片机基本I/O实验(实验作业)14
4.2中断系统、定时器/计数器(3学时)15
4.2.1ADuC812中断系统简介15
4.2.2ADuC812定时器中断系统16
4.2.3定时器中断例程18
4.2.4ADuC812单片机中断系统、定时器/计数器实验19
4.3模拟接口A/D和D/A(3学时)20
4.3.1D/A简介20
4.3.2A/D简介21
4.3.3AD/DA转换例程22
4.3.4ADuC812单片机A/D和D/A实验25
4.4MCU综合实验(3学时)25
5.总结27
6.资料附录28
6.1特殊寄存器表28
6.2中断使能寄存器29
6.3扩展中断使能寄存器29
6.4中断优先寄存器29
6.5时间0/1中断模式寄存器30
6.6时间0/1中断控制寄存器31
6.7时间2中断控制寄存器32
6.8DAC控制寄存器33
6.9ADC控制寄存器134
6.10ADC控制寄存器235
6.11ADC状态寄存器35
6.12最小系统原理图36
6.13多功能板原理图37
1.前言
学好单片机,需要做好两部分工作。
一是掌握扎实的单片机基础理论,这部分包括单片机的工作原理、中断的工作原理、IO模块以及计时器工作原理等。
二是在理论的指导下进行编程实践,在实践中不断强化对单片机的认识。
单片机学习的最终目的在于使用,因此实践是以上两部分学习的重点。
通过课堂学习并在仔细阅读了ADuC812单片机实验指导书之后,同学们应该对实验系统以及单片机的基础理论知识有了一定了解。
相信同学们在这本编程指导书的指导下,认真完成书中所设计的每一个编程实践环节,就一定能够掌握好单片机的使用。
本编程指导书从主要内容上分为三个部分。
第一部分介绍实验系统硬件。
第二部分将介绍软件开发环境的配置与使用。
第三部分即本指导书的第四章,也是本书的重点内容,按照单片机教学顺序,在介绍了单片机的某部分模块的基础上,给出一个带有详细注解的学习例程,之后辅以几道编程练习。
对单片机不熟悉的同学可以在案例的基础上修改完成练习内容。
对于有能力的同学,建议独立完成练习内容,以获得更好的学习效果。
第四部分是资料附录,包括了所有实验可能用到的各种编程资料以方便同学在编写程序中查阅。
希望同学们通过本书的学习,通过认真完成每一个书中的实验内容,最终掌握单片机的使用。
2.硬件环境介绍
为了保证实验的顺利完成,请在实验前对照以下实验硬件清单检查硬件是否完整。
ADuC812简指令单片机的教学实验系统由单片机最小系统、多功能实验板组成。
图2.2最小系统实物图
ADuC812最小系统由单片机芯片、晶振、工作电源电路、串口电压转换电路、芯片复位电路、AD和DA的跟随电路、发光二极管测试电路等组成,其实物图如图2.2所示。
若通过电源插头给最小系统单独供电(+5V,内正外负),则最小系统可单独工作。
3.开发环境使用
3.1使用KeilC建立一个自己的程序
单片机的开发平台有很多,这里选用了Keil开发平台,下面就对Keil开发平台作一个介绍。
KeilC51单片机开发平台是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
此单片机系统采用KeilC进行程序开发。
在实验前各台计算机已经安装了KeilC编辑器,KeilC编辑器的图标如图3.1所示。
KeilC使用的是C语言作为编程语言,如果对C语言不熟悉,建议先找一本C语言的书籍看看,只需要了解最简单的C语言的语法规则即可。
下面介绍一下建立一个工程项目的步骤。
第一步,双击图标(如图3.1)运行KeilC程序。
如图3.2。
图3.1KeilC程序图标
图3.2KeilC启动界面
第二步,新建项目。
使用Keil编写程序需要首先新建一个项目,单击【Project】=>【NewProject…】,如图3.3。
然后选择新项目存放的地方及文件名,然后就会弹出图3.4的对话框,选择【AnalogDevices】=>【ADuC812】,完成一个新的项目的创建。
图3.3新建项目
第三步,修改项目属性。
在项目新建完成后,需要修改项目的属性,其中包括芯片使用的晶振大小(这一项主要用于仿真),是否编译生成HEX文件等。
在左边资源浏览器中的【Target1】上单击右键,选择【OperationsforTarget‘Target1’】,选择Output选项页面,如图3.5。
将【CreateHEXFile:
】一项的前面方框中打上钩,这样编译后的程序才能以HEX文件形式输出,此时项目已经配置完成了,接下来就进入到编程环节。
图3.4选择单片机
图3.5输出选项设置页面
第四步,向项目中添加程序文件。
在有了项目之后就需要开始编写程序。
首先新建一个文件,选择【File】=>【New】,然后将其另存为一个C文件(即*.c)的文件,单击【File】=>【SaveAs…】,输入要保存的程序文件名,输入*.c,其中*代表要取的文件的名字,然后将此文件加入项目中,在【SourceGroup1】上单击右键,选择【AddFiletoGroup‘SourceGroup1’】,选择刚才保存的文件后单击【Add】,如果有多个文件需要加入工程中,则重复以上步骤,最后单击【Close】退出,此时已经做好了编写代码前的全部准备工作。
接下来就时往文件中写入具体的程序。
图3.6将源文件加入项目中
具体的程序编写在本章后面部分再详细介绍。
当程序编写完成后,需要对此项目进行编译,单击【Project】=>【Buildtarget】,或者单击工具栏上的
。
如果编译出错,则会在下方的编译输出框中显示出来,如图3.7。
图3.7编译出错
根据出错提示,修改源文件,然后重复编译步骤,直至生成HEX文件。
编译成功后,将生成的程序通过ADuC812专用的下载器下载到单片机中就完成了整个软件的编程配置工作,编写的程序就将在单片机中运行,如果编写的程序没有错误,此时我们就能看到实验现象了。
3.2将编译的程序文件写入单片机中
将最小系统安装在多功能板上,并将多功能板的电源接在5V的稳压电源上。
并用串行线将电脑和多功能板相联。
在确认连接正确之后打开电源,此时还不能通过专用的程序下载软件下载程序,要进行程序下载,首先要进行下列重置步骤:
先按下PSEN键,在保持PSEN按下的同时,按下RESET键并抬起,最后抬起PSEN键,此时单片机进入等待程序烧写状态。
ADuC812可以通过串口对芯片的片内的电可擦除程序储存区进行烧写,这个烧写过程有其具体的读写时序,使用AD公司的芯片可省去了这个繁琐的步骤,在其公司的主页可以找到专用的程序下载器(WSD.EXE),运行后的界面如图3.8。
图3.8ADuC812下载器
具体程序下载步骤如下:
第一步,下载参数配置。
单击Configuration按键,出现如图3.91的设置菜单,配置下载器的设置。
主要设置有三个,分别在图3.9中用黑色圈圈住。
左上角的是串口的编号,这项的选择与单片机的串口和电脑串口的连接关系有关,一般接电脑的上端串口为COM1;中间晶振频率项选择当前单片机采用的工作晶振频率,选择第一项11.0592MHz;下面一个黑圈选项是确定是否在程序下载后自动运行,一般也将这一项勾选上,在正确设置后,点击OK键退出配置界面。
图3.9ADuC812下载器
第二步,程序烧写。
点击AD公司专用烧写程序中的Download键,如果能够认出单片机的型号并显示在界面右上角如图3.10中黑圈所示,则表明单片机能够进行程序下载。
且此时能够弹出一个打开文件的对话框,在对话框中选择刚刚编译后的HEX文件,然后点击确定就可以将程序下载到单片机中。
如果无法正确下载,则请按如下步骤进行检查:
(1)重复重置步骤,增加PSEN的按下时间,并在PSEN释放后,延长RESET键保持按下的时间后释放。
(2)检查串口线两端是否正常连接到电脑和试验板,确定串口线是交叉线。
(3)下载软件的设置是否正确(晶振频率,电脑串口号)
一般经过以上步骤就可以排除故障,如果故障依旧,请通过助教更换实验仪器。
图3.10下载器已经完成与单篇机的通讯
4.教学实验
以下的实验内容将涉及很多特殊功能寄存器(SFRspecialfunctionregister),这些寄存器都有相应的名称。
他们在单片机中只是一个特殊的存储器空间地址,如果要直接使用这些寄存器,需要首先查询这些寄存器名称和内存地址具体的对应关系(见资料附录6.1),然后对这些地址进行操作。
为了方便程序的编写和阅读,这些寄存器在头文件
所以在以下的实验程序中,如果在程序中包括了此头文件,就可以像使用变量一样,通过特殊寄存器的名称来操作这些寄存器。
例如:
控制P0端口的特殊功能寄存器名就为P0,通过查询附件1中的表格,得到其存储器地址为80H,默认值为FFH。
因此我们可以在程序中向80H的内存空间写数据,或者在包含了头文件
4.1数字输入输出模块(I/O)(3学时)
4.1.1I/O简介
ADuC812共有4个8位I/O口。
P0可作为输入输出口,也可作为地址总线,当作为输入输出口时,八个I/O口均是开漏的双向口,此时向P0端口写0,P0将接地;当向P0端口写1,P0将成为高阻态。
P1是八位的输入端口,也可作为AD输入转换通道,两功能都是输入,此端口不能输出。
为了让P1作为数字输入端口,需要向对应端口写0,如果向P1端口写1,则P1的此端口将作为AD转换通道使用。
P2口是八位的带上拉电阻的双向口,也作为扩展应用中的地址总线使用。
P3是是八位的带上拉电阻的双向口,同时P3的各个端口都定义了特殊的用途。
ADuC812的所有I/O口功能列表如下。
表4.1ADuC812I/O口功能列表
I/O口
功能1
功能2
P0(P0.0-P0.7)
开漏级双向口
地址总线(部分)
P1(P1.0-P1.7)
数字输入端口
AD转换输入通道
P2(P2.0-P2.7)
带上拉双向口
地址总线(部分)
P3.0
带上拉双向口
RxD(串口通讯的读入)
P3.1
带上拉双向口
TxD9串口通讯的写出)
P3.2
带上拉双向口
INT0(外中断)
P3.3
带上拉双向口
INT1/MISO(外中断/串行通讯口)
P3.4
带上拉双向口
T0(计时器0外端口)
P3.5
带上拉双向口
T1/CONVST(计时器1外端口)
P3.6
带上拉双向口
RW(总线端口)
P3.7
带上拉双向口
RD(总线端口)
4.1.2实验板上对I/O端口的扩展
为了能够使用I/O端口做实验,教学实验系统对ADuC812的几个端口都做了扩展,其中发光二极管、按键、数码管都是I/O的扩展电路。
图4.1发光二极管及按键电路原理图
图4.2数码管电路原理图
图4.3多功能教学实验板功能模块图
从上面的框图我们可以得出如下的I/O资源分配表,这张表将为之后的程序编写提供重要依据。
表4.2I/O资源分配表
功能模块
IO资源
数码管数字
P2.0-P2.3
数码管控制1-3(从左到右)
P2.4-P2.6低电平有效
发光二极管1-4(从左到右)
P0.1-P0.4高电平有效
按键1-4(从左到右)
P1.3,P1.6,P1.4,P1.7
加热丝
P0.1
风扇
P0.2
蜂鸣器
P0.3
电阻器
ADC0
4.1.3实验注意事项
1、所有ADuC812的特殊功能寄存器均为8位,对特殊功能寄存器的读写也需要采用8位的运算。
2、按键的IO口为P1,具体按键1-4与P1的对应关系见表4.2和图4.1。
在对读P1状态(即按键的状态)之前,必须保证程序已经向P1端口写0,因为P1端口写1表示P1端口配置为AD转换端口(参见表4.1—P1端口的复用功能),而非数字输入口,此时程序对P1端口进行读操作将得不到按键状态。
由于ADuC812在上电启动时,P1端口的初始值为1,因此如果程序要将P1口配置成数字输入口,必须向对应端口写0。
3、发光二极管使用的端口为P0,但并不是从P0.0开始使用,具体使用情况请见表4.2。
4、本章编程将设计对端口特殊寄存器(P0、P1、P2)的位操作。
在KeilC中有两种方法对端口寄存器进行位操作,下面将进行介绍:
a)定义位变量进行位访问
位变量的申请与普通变量的申请方式基本相同,唯一的一个不同点为,位变量只能在所有函数体定义(包括main函数)之前申请。
例如要申请P0端口的第0位的位变量,可以表示如下:
sbitp00=P0^0;其中p00为随意命名的变量。
在之后程序中可以直接对p00进行读入或者写出操作而达到读入和写出P0的0位。
b)通过位操作进行访问
位操作有两种,位与(&)和位或(|)。
用与操作可以在不改变其它位的情况下对某些位写0,或操作可以在不改变其它位的情况下对某些位写1。
例如要向P1端口的第三位和第五位写1,第一位和第七位写0,可以用下面语句实现:
P1=P1&0x7D;P1=P1|0x28;其中0x7D为0x01111101,0x28为0x00101000。
5、&操作和|操作的优先级小于比较符号(==,>=,<=),因此下面语句运行会出现问题:
if(P1&0x08==0x08),这条语句程序会解读为:
if(P1&(0x08==0x08))。
因此上条语句的正确写法应该为if((P1&0x08)==0x08)。
6、KeilC不支持二进制数,因此所有的二进制数需要转换为十六进制或者十进制,一般建议使用十六进制。
4.1.4I/O端口例程
跑马灯实验:
本示例主要学习基本I/O口的输出功能。
示例使用P0口的4个端口控制实验板上的4个指示灯,使之循环点亮,当按键1按下时,跑马灯暂停运行;
程序分析:
要实现四个指示灯循环点亮,只需要在主程序中不断循环将P0.1-P0.4四个端口输出高电平(即写1),并且在其中插入一定的延时(可设置空循环语句)以使肉眼能够观察到循环点亮的效果。
下面是例程序:
#include
//全局变量申请,作为循环点亮的控制变量
unsignedchardeng=0;
//延时子程序
voiddelay(inttime)
{
inti=0;
for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADuC812 单片机 教学 系统 编程 指导书