基于ADuC848开发板的单片机实验和课程设计指导书Word下载.docx
《基于ADuC848开发板的单片机实验和课程设计指导书Word下载.docx》由会员分享,可在线阅读,更多相关《基于ADuC848开发板的单片机实验和课程设计指导书Word下载.docx(179页珍藏版)》请在冰点文库上搜索。
直流电源输入;
此外还有红外二极管(由单片机PWM模块输出信号控制)、USB电源输入接口。
1.2单片机ADuC848
1.2.1ADuC848的简要介绍(针对本设计所选择的型号)
详细情况请参考芯片手册。
1、8051-basedcore、5V供电电压;
2、可以通过串口在线下载程序和单步、断点、运行到某一行等方式调试程序;
3、16位8通道Σ-ΔADC,片内有1.25V参考电压、buffer和PGA;
4、12位电压输出DAC、Dual16-BITΣ-ΔDAC;
5、32kbyte程序存储器、4kbyte用户信息Flash存储器、256RAM+2048XRAM(byte);
6、PLL(12.58MHzmax)(片外只需接32.768kHz晶振);
7、3×
16位定时/计数器、看门狗定时器;
8、11中断源(2优先级)、11位堆栈指针;
9、24I/O+8模拟或数字输入;
10、UART、SPI和I2C、高速115200波特率发生;
11、Powersupplymonitor、上电复位、Dual200μA激励电流源。
1.2.2单片机引脚分布
详见原理图。
Pin1~4:
(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&
=0xf0。
若P2、P3、P0口要作为输入,则应往相应引脚写1。
Pin5、6:
AVDD、AGND,模拟电源输入。
Pin7、8:
外部参考电压接入,Pin7接AGND。
片内DAC有2.5V内部参考,ADC有1.25V内部参考。
Pin9、10:
(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。
Pin11、12:
(P1.6、P1.7)各200uA激励电流源,可配合RTD等做应用。
Pin13:
两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。
Pin14:
片内DAC输出。
Pin15:
复位引脚。
Pin16、17:
单片机RS232接口的RXD(P3.0)TXD(P3.1)。
Pin18:
(P3.2)外部中断0,用于红外接收和PS/2接口。
Pin19:
(P3.3)LCD1602,LCD12864A的EN引脚,控制第一位数码管。
Pin20、21:
DVDD、DGND数字电源输入。
Pin22:
(P3.4)PS/2接口的data信号。
Pin23:
(P3.5)LCD1602和LCD12864A的RW。
Pin24:
(P3.6)LCD1602和LCD12864A的RS。
Pin25:
LCD12864A的CS1。
Pin26:
IIC接口时钟信号。
Pin27:
IIC接口data信号。
Pin28:
(P2.0)SPI接口时钟信号。
Pin29:
(P2.1)SPI接口MOSI信号、控制第6位数码管的位码。
Pin30:
(P2.2)SPI接口MISO信号、控制第7位数码管的位码。
Pin31:
(P2.3)SPI接口SS信号、控制第8位数码管的位码;
P2.0~3也作为4X4矩阵式键盘的扫描输出信号、步进电机的控制信号、数码管第数码管第6、7、8位位码。
但是SPI、4X4矩阵式键盘、步进电机、数码管第6、7、8位功能不能同时实现。
Pin32、Pin33:
接外部32.768KHz晶振。
Pin34、Pin35:
DVDD、DGND。
Pin36:
(P2.4)LCD12864A的CS2。
Pin37:
(P2.5)内部PWM模块输出,控制红外LED。
Pin38:
(P2.6)内部PWM模块输出,控制蜂鸣器。
Pin39:
(P2.7)内部PWM模块的外部时钟输入(也可以用内部时钟)。
Pin40:
EA,低电平有效,正常使用时拉低。
Pin41:
PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。
Pin42:
ALE。
Pin47、Pin48:
DGND、DVDD。
Pin43、44、45、46、49、50、51、52:
P0口、LCD1602和LCD12864的数据总线,数码管的段码。
1.3电源模块
电源模块原理图如图1.2所示。
本学习板共有如下3种供电方式:
(1)5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。
将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第1、2脚(插针1下面两脚)接跳线帽,DVDD直接连接到电源适配器输入端,即为5V电源适配器供电模式。
(2)7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽)
将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第2、3脚(插针1上面两脚)接跳线帽,DVDD连接到稳压芯片7805的输出,而7805的输入端连接到电源适配器输入端,即为7~12V的电源适配器经7805给学习板供电的模式。
(3)USB供电(开关往下拨)。
将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。
对DVDD网络和AVDD网络设了测试点,方便调试。
测试点具体位置参见附图1。
1.4模数/数模转换
1.4.1模数转换
ADuC848内部有16位ADC,模拟信号输入模块原理图如图1.3所示。
图1.3模拟信号输入模块
D15和D16为钳位保护二极管,R55为限流保护电阻。
其中CONAIN1对应板上的接口5、CONAIN2对应板上的接口6。
CONAIN1和CONAIN2的第1、2脚在板上的分布和在原理图上的类似,均为1脚朝上。
模拟信号有两种输入方式:
(1)两路单端输入。
把输入信号电压高的一端接到第1脚,电压低的一端接到同一个接口的第2脚。
(2)一路差分输入。
把输入信号的两端分别接到CONAIN1和CONAIN2的第1脚。
1.4.2数模转换
ADuC848内部有12位DAC,并有专门的DA输出引脚。
DAC信号输出模块原理图如图1.4所示。
图1.4DAC信号输出模块
本设计对片内DA的输出配置了运放LM358(该运放在单电源情况下对较低电平仍具有很好跟随效果),以增强其驱动能力或对DA输出做适当放大,其中R56和R57的大小决定放大倍数(A=1+R90/R89)。
1.5RS232串口
串口连接原理图如图1.5所示。
图1.5RS232串口模块
该模块中采用maxin公司的max232作电平转换,为方便调试硬件,对RXD,TXD信号设测试点和LED。
测试点和LED具体位置参见附图1。
1.6PS/2接口和红外接收
该模块原理图如图1.6所示。
图1.6PS/2接口和红外接收模块
本设计中外部中断0(P3.2)连接到PS/2接口的时钟信号或者红外接收头SM0038的输出。
可以通过插针进行选择。
外部中断1作普通IO口使用。
该模块原理图如图2.6所示。
关键网络名解释:
(1)PS2_CLK:
PS/2接口时钟信号
(2)PS2_DATA:
PS/2接口数据信号
(3)INT0:
外部中断0
(4)INF_IN:
红外一体化接收头SM0038的输出。
插针配置:
(1)J13第1、2脚(板上为插针11左边两脚)接跳线帽,INT0接PS/2的clock信号。
(2)J13第2、3脚(板上为插针11右边两脚)接跳线帽,INT0接红外信号。
1.7显示模块
本系统共有四种显示模式可供选择,这四种模式分别是:
LCD12864、LCD1602、数码管、8路LED。
引脚复用:
四种显示模式复用数据总线,控制总线,故用户只可选择其中一种使用。
1.7.1LCD显示
LCD显示信号连接图如图1.7所示。
图1.7LCD信号连接
关键网络名和引脚名解释:
(1)DISCTRL0~4:
显示控制信号。
(2)D0~D7、DB0~DB7:
数据总线。
(3)E:
LCD使能信号。
(4)RS:
数据、指令选择信号。
(5)RW:
读、写选择信号。
(6)CS1、CS2:
LCD12864由两部分组成,CS1和CS2为选择信号。
板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排针和排母左对齐插入。
切勿插错。
1.7.2数码管
该模块原理如图1.8所示。
图1.8数码管驱动电路
(1)DS0~7:
数码管段码。
(2)BIT0~7:
数码管位码。
(3)MOTORA~D:
步进电机驱动信号。
(4)DISCTRL0~4:
显示控制信号,控制数码管低5位。
(5)D0~8:
单片机P0口。
本设计采用共阴极数码管,段码由PNP三极管驱动,位码由NPN型三极管驱动。
数码管低5位(板上为右边5位)的位码由DISCTRL0~4控制,可单独使用,高3位的位码控制信号与SPI信号,电机驱动信号,4X4矩阵式键盘复用,使用数码管高3位时参与复用的其他功能则不能使用。
(1)若要使用数码管第4~0位(板上为右边5位),可以接通插针8,为减少功耗,不用请断开。
(2)若要使用数码管第7~5位(板上为左边3位),可以分别接通插针5~7和9,为减少功耗,不用请断开。
1.7.38路LED
该模块原理如图1.9所示。
图1.98路LED
8个LED接P0口,低电平时LED亮,这样不会影响P0口逻辑电平。
LED限流电阻取4.7K,通过LED电流约为0.8mA,在P0口驱动能力范围之内。
该部分可以用于做跑马灯等实验、帮助用户更好的了解和熟练对端口的操作、还可以用于观测P0口的状态。
(1)若要使用该模块,可以接通插针2,为减少功耗,不用请断开。
1.8蜂鸣器和红外发送
该模块原理图如图1.10所示。
图1.10蜂鸣器和红外发送
本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制,红外二极管由PWM0(P2.5)控制。
PWM1和PWM0均为片内PWM模块的输出。
蜂鸣器和红外LED的驱动均采用普通NPN三极管。
为方便调试,对该模块中的信号设了测试点,具体位置参见附图1。
(1)若要使用蜂鸣器,可以接通插针3,为减少功耗,不用请断开。
(2)若要使用红外二极管,可以接通插针4,为减少功耗,不用请断开。
1.9SPI接口、步进电机控制
该模块原理图如图1.11所示。
图1.11步进电机驱动电路
本设计中步进电机为5V、70欧姆、4相步进电机。
AduC848内部有SPI通信模块,所占用的引脚为P2.0~P2.3。
同时,P2.0~P2.3又复用作步进电机控制信号、4X4矩阵式键盘列扫描信号,P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。
参与复用的一项功能使用时,其他参与复用的功能则不能使用。
(1)若要驱动步进电机,可以接通插针9,为减少功耗,不用请断开。
1.10按键输入
该模块原理如图1.12所示。
图1.12按键模块
由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。
P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。
(1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。
(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。
这4个按键为4X4矩阵键盘的左边4个按键。
1.11IIC总线(RTC时钟和EEPROM)
该模块原理图如图1.13所示。
图1.13IIC总线连接
AduC848片内有I2C模块,并有独立的引脚SCLOCK和SDATA。
板上的RTC时钟芯片DS1307和EEPROM芯片AT24C08均使用了I2C总线。
板上设置了I2C接口,方便MCU与板外的I2C设备进行通信。
对SCLOCK和SDATA设置了测试点。
具体位置参见附图1。
1.12复位与下载
复位与下载电路如图1.14所示。
图1.14复位与下载
进入下载或调试模式的步骤为:
(1)按住BTN1(downordebug按键)不要放开;
(2)按下BTN2(reset按键),然后放开BTN2(reset按键);
(3)放开BTN1(downordebug按键)。
这样单片机就进入了调试模式,可以下载或调试程序。
第二章基础实验
汇编实验
实验一I/O口控制实验
一、实验目的
1、学习P0、P1、P2、P3口的使用方法
2、学习延时子程序的编写和使用
3、学习KeiluVision4软件的使用
二、实验内容及步骤
用P0口做输出口,接八位LED显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统。
开关往下拨,使用5VUSB电源模式。
若要使用其他电源,开关和插针1的设置请参考1.3节;
2、插针2(LED)用短路帽接通,使能连接板上8路LED。
其它插针如下图。
3、在线下载和调试程序前请检查硬件配置、电源的连接、RS232通信线的连接、工程设置、通信端口的选择。
4、打开KeiluVision4仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
进行软件设置,选择硬件仿真,选择串行口。
5、打开电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
三、流程图及源程序
1.流程图
2.源程序
ORG0000H
LOOP:
MOVA,#0FEH
MOVR2,#08H
OUTPUT:
MOVP0,A
RLA
ACALLDELAY
DJNZR2,OUTPUT
LJMPLOOP
DELAY:
MOVR6,#00H
MOVR7,#00H
DELAYLOOP:
;
延时程序
DJNZR6,DELAYLOOP
DJNZR7,DELAYLOOP
RET
END
四、思考题
(1)修改程序,使发光二极管的现象发生变化。
例如:
全亮~发光二极管一个一个的熄灭~全灭,循环显示
(2)对于本实验延时子程序
Delay:
MOVR6,#00H
MOVR7,#00H
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
RET
假设使用12MHz晶振,粗略计算此程序的执行时间为多少?
实验二定时器、中断实验
1.学习CPU内部计数器的使用和编程方法。
2.掌握中断处理程序的编程方法。
3.掌握Proteus软件的使用方法
二、实验内容和原理
1、实验内容
模拟时序控制装置。
观测发光二极管现象:
L1、3→L2、4→L5、7→L6、8→L1、3、5、7→L2、4、6、8→全亮→全灭
2、时间常数的计算。
CPU内部定时器1,按方式1工作,每0.1秒钟T1溢出中断一次。
(假设使用6.144MHz晶振)
机器周期=12÷
晶振频率=12÷
(6.144*106)=1.9531*10-6S
设初值为X,则(216-X)*1.953*10-6=0.1
X=14336=3800H
TH1=38H,TL1=00H
三、实验步骤(略,同实验一)
四、程序流程图及源程序:
1、中断子程序流程图:
返回
2、主程序流程图
Y
3、程序清单:
ORG0000H
LJMPSTART
ORG001BH
JMPIT11
ORG0030H
START:
MOVA,#0FAH
MOVR1,#03H
MOVR0,#0AH
MOVTMOD,#10H
MOVTL1,#00H
MOVTH1,#38H
ORLIE,#88H
SETBTR1
LOOP1:
CJNER0,#00,DISP
INCR1
CJNER1,#0BH,LOOP2
MOVR1,#03
LOOP2:
MOVA,R1
MOVCA,@A+PC
LJMPDISP
DB0FAH,0F5H,0AFH,5FH,0AAH,55H,00H,0FFH
DISP:
MOVP0,A
JMPLOOP1
IT11:
CLRTR1
DECR0
MOVTL1,#00H
MOVTH1,#38H
RETI
五、思考题:
1、改变发光二极管闪烁的间隔时间。
2、P1口添加一个暂停按键,当该键按下时显示暂停,保持当前状态;
再次按键,继续显示。
3、去掉定时与中断,编写延时子程序。
4、P1口添加多个按键,分别对应实现不同的显示功能。
(例如:
暂停键、显示状态顺序执行和
逆序执行键……)
实验三数码显示实验
1.进一步掌握定时器的使用和编程方法。
2.了解七段数码显示数字的原理。
3.熟练掌握KeiluVision4和Proteus联调的方法。
二、实验内容
做一个电子钟:
利用定时器0定时中断,控制电子钟走时;
利用单片机上的四位数码管显示分钟和秒钟。
三、程序流程图和源程序
初始化程序
1、主程序流程图
开始计数
取显示单元值,转为段码送段数据口
显示缓冲单元首址—R0,扫描初值—R2
扫描值送位数据口
显示单元地址加一
扫描值带进位位(=0)右移一位
N
扫描值=0?
Y
取分、秒计数值,经变换放入相应显示单元
2、中断子程序流程图:
中断入口
定时器置初值
计时单元=10?
N
计时单元置0
秒加一,十进制调整
秒值=60?
N
秒置0,分加一,十进制调整
分值=60?
分置0
返回
3、程序清单:
ST_ADDREQU0000H
BUFEQU23H
SBFEQU22H;
存放秒
MBFEQU21H;
存放分
ORGST_ADDR
LJMPMAIN
ORGST_ADDR+0BH;
定时器0中断入口
LJMPCLOCK
ORGST_ADDR+200H
MAIN:
MOVR0,#40H
MOVA,#00H
MOV@R0,A
INCR0
MOV@R0,A
ANLTMOD,#0F0H
ORLTMOD,#01H
MOVTL0,#00H
MOVTH0,#38H
MOVBUF,#00H;
清零
MOVSBF,#00H
MOVMBF,#00H
SETBET0;
开定时器0
SETBEA
SETBTR0
DS1:
MOVR0,#45H
MOVR2,#08H
DS2:
CLRP2.4
MOVA,R2
MOVP3,R2
MOVA,@R0
LCALLTABLE
LCALLDELAY1;
延时
DECR0
CLRC
RLCA
MOVR2,A
CJNER2,#10H,LL
LL:
CJNER2,#00H,DS2
MOVA,SBF
LCALLGET
MOVA,MBF
SJMPDS1
TABLE:
INCA
MOVCA,@A+PC
RET
DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,19H,0BFH
GET:
MOVR1,A
ANLA,#0FH
MOVA,R1
SWAPA
CLOCK:
MOVTL0,#00H;
定时器中断子程序
PUSHPSW
PUSHACC
INCBUF
MOVA,BUF
CJNEA,#0AH,QUIT
MOVBUF,#00H
DAA
MOVSBF,A
CJNEA,#60H,QUIT
ADDA,#1H
MOVMBF,A
QUIT:
POPACC
POPPSW
RETI
DELAY1:
MOVR4,#10;
DEL11:
MOVR5,#0AH
DEL12:
MOVR3,#18H
DEL13: