SD单片机开发板操作手册.docx
《SD单片机开发板操作手册.docx》由会员分享,可在线阅读,更多相关《SD单片机开发板操作手册.docx(39页珍藏版)》请在冰豆网上搜索。
SD单片机开发板操作手册
单片机开发板操作手册
一、概述
1,多功能单片机开发板,板载资源非常丰富,仅是包括的功能(芯片)有:
步进电机驱动芯片ULN2003(贴片)、
八路并行AD转换芯片ADC0804、
八路并行DA转换芯片DAC0832、
八路锁存器芯片74HC573(双贴片)、
串入并出芯片74HC595(贴片)、
三八译码器74HC138(贴片)
实时时钟芯片DS1302(贴片)及备用电池、
IIC总线芯片AT24C02(贴片)、
串行下载芯片MAX232CPE、
双运放(比较放大器)LM393(贴片)、
5V稳压集成块78M05(贴片)
双模拟放大器LM358(无线接收模块自带)
8*8LED点阵
4*4矩阵键盘、
4位独立按键、
DC5VSONGLE继电器、
5V蜂鸣器、
八位八段共阴数码管
八路发光二极管显示(贴片)
另还有功能接口(标准配置没有芯片但留有接口,可直接连接使用):
单总线温度传感器DS18B2接口、
红外线遥控接收头SM0038接口、
2(4)相五线制小功率步进电机接口、
蓝屏超亮字符型液晶1602接口、
蓝屏超亮点阵图形带中文字库液晶12864接口、
模数转换芯片ADC0804输入扩展接口(标准配置)
数模转换芯片ADC0832输入扩展接口(标准配置)
串入并出芯片74HC595输出扩展接口(标准配置)、
三八译码器74HC138输出扩展接口(标准配置)、
电脑键盘接口P/S2接口(标准配置)、
步进电机DC12V和5V驱动电压转换接口、
继电器输出5.0强电端子接口(标准配置)、
外接交流(7V-15V)电源接口(标准配置)、
USB直接取电接口(标准配置)、
ISP接口(方便无下载功能的其它电路板直接连接下载)(标准配置)
镀金MCU晶振座(标准配置)、
40DIP锁紧座(标准配置)、
外接电源和5V稳压电源的外接扩展接口及MCU所有IO口扩展(标准配置)
2,可以完成的单片机实验:
1、无线接收模块(有玩过遥控飞机的朋友吧,对它的遥控控制原理是怎样的知道吗?
有了这个,您就可以自己做一个了)
2、LED显示实验(点亮某一个指示灯、流水灯),
3、八位八段数码管显示实验(你可以任意显示段字符和数字以及开发板所有功能芯片的显示),
4、液晶显示(1602液晶显示、12864点阵中文图形液晶显示、可以显示出开发板所有功能芯片的操作),
5、8*8点阵显示(见过广场上的大屏幕电视吧,那就是点阵显示的效果,只不过比开发板上要复杂多了,但原理都是一样的,你也可以让自己编辑个图案,或则产生个动化的效果然后显示出来。
怎么样,有意思吧)
6、三八译码器的操作74HC138(学过数字电路的应该都知道这个吧,就是没有实际运用过是吧,就让这个板子配备的74HC138来实现)
7、串入并出芯片的操作74HC595(对类似芯片的操作是您作为单片机运用所必不可少的一环,它的主要功能是什么呢?
就是扩展IO口,试想一下,本来是需要8个IO口资源的,有了74HC595最少只要2个IO口就行了,很实用吧)
8、继电器的操作(连接强电,控制使用)
9、蜂鸣器的操作(你可以编写程序让它发出美妙动听的歌声)
10、P/S2电脑键盘的操作(板子上配备有有直接与电脑键盘连接的P/S2座,可以直接连接电脑键盘,那么电脑键盘就是开发板的一部分了)
11、步进电机的操作ULN2003(这个是迈向自动化控制的第一步,现在的数控机床、机器人呀什么的实现精度运动控制大部分都是靠它来实现的)
12、数模转换操作DAC0832(数字量在这里是怎样变换成模拟量的,这里采用的转换芯片是8路并行传输模式,响应时间仅2us)
13、模数转换操作ADC0804(一个小小的程序,你旋动电位器可以看到阻值的变化在数码管上变成了一个个的非常直观数字,这里采用的转换芯片是8路并行传输模式,响应时间仅2us)
14、矩阵键盘的操作(这个是你自己定义的编码键盘,4*4=16个按键却只占有单片机的八个IO口,以此类推5*5=25个按键只要10个IO口,这样的控制是怎样实现的呢)
15、独立按键的操作(在这个里面不但可以进行常规的按键操作,您也进行单片机的外部中断和计数器的操作)
16、实时时钟的操作DS1302(自己动手编写个万年历吧,让时间在数码管或液晶上显示出来)
17、IIC总线芯片AT24C02的操作(常规的记忆需要电池,但是AT24C02却可以断电记忆数据100年不丢失)
18、红外遥控操作SM0038(可以像遥控电视机样遥控开发板,当然您还需要配备一个万能遥控板和接收头才能实现这个功能)
19、单总线温度传感器DS18B20(测试下现在的室温吧,测试精度在±0.1度;也可配合本开发板的可控硅和光电耦合制作高精度的温度实验箱了,想想这与实验室的实验箱有什么差距呢)
20、串口通信MAX232(想用电脑控制开发板或者开发板控制电脑吗,我们提供一个串口调试精灵和一个上位机软件(且提供全部的VB源代码),剩下的就靠你自己编写程序去实现了)
21、晶振采用镀金座接口(单片机内部定时时选用6M或12M晶振,下载或串口通信采用11.0592M,你想怎么换就怎么换)
22、开发板的所有IO口及外接电源及5V稳压电源的扩展接口(想自己再扩展电路吧,想利用开发板进行硬件的第二次扩展吗,这些都是可以很轻松实现)
以上的程序实验还只是单一的针对开发板芯片的操作。
有了这一步的朋友,您就可以同时对几个芯片进行操作了,那列子就数不胜数。
这样我们的目的也就达到了。
这是个系统的开发学习实验环境,综合操作可以完成很多,很复杂的功能,以完成不同的实验项目!
!
3,产品装箱清单:
1、测试好的单片机开发板一块
2、晶振4个(12M、11.0592、6M、4M)
3、实时时钟DS1302备用纽扣电池(3V)一块
4、跳线帽10个
5、9针串口线一条
6、USB取电线一条
4,产品可选配件(可直接连接使用):
1、1602字符型蓝屏超亮液晶
2、12864点阵图形蓝屏超亮带中文字库液晶
3、2(4)相小功率步进电机
4、SST89E516仿真芯片
5、单总线温度传感器DS18B20
6、红外遥控接收头SM0038
7、万能遥控板(可直接遥控市场上绝大部分型号电视机)
8、USB-串口下载线(如果您是使用的笔记本或者是不含有串口的电脑)
9、无线接收模块(315M)
10、汽车专用无线遥控板(内置2262编码发射芯片),与接收模块配合使用,需单片机软解码
这是个完整的单片机开发系统,这些配置也能完成大部分单片机实验,只要您能够仔细的认真的掌握好以上知识,相信您已经进入到单片机的世界,并开始向更高方向发展!
二、下载操作:
1,现在你已经拥有这样一块多功能的单片机开发板了,第一步我们就测试开发板的性能,让你第一次的用眼睛加上你的操作去控制它
A、连接好串口下载线(附图2-1)和USB取电线(附图2-2),并插好晶振(11.0592M)和安装好单片机(附图2-3),
附图(2-1)附图(2-2)
B、如果您使用的是笔记本或者是没有串口的电脑,则需安装USB-串口驱动并使用转换线,转换线图片见附图2-4,及操作步凑见附图2-5,及验证安装成功步凑见附图2-6,(如果是直接采用的9针串口线下载,则跳过这一步)
1)USB-串口线如图所示
附图(2-4)
2)请先不要插USB-串口转换线,后点击下载附送的USB-串口驱动步凑:
附图(2-5)
3)现在请将USB-串口线插在电脑的USB接口上,电脑会自动搜索安装,后请验证安装是否成功。
验证安装成功步凑:
附图(2-6)
(如果能看到你的硬件管理器中有个虚拟的通讯端口(则表示USB-串口下载安装成功),那么请记住是COM几,因为一会在下载软件里面要用到)
C、安装下载软件:
安装我们提供的单片机烧写软件STC-ISPV391.EXE(见附图2-7),只需将它全部复制到您的硬盘中直接打开就可(见附图2-7),
附图(2-7)
D、下载测试程序:
将我们提供的单片机开发板程序下载到开发板上(举列下载LED显示流水灯程序)见附图2-8
1)在附图(2-7)中的界面中选择
(电脑无串口请选择此项,否则跳过)
(选择附图2-6中的COM端口号)
(打开流水灯中的HEX文件)
等待
(按下单片机开发板电源开关,等待数秒就成功下载了)
三、板载资源详细介绍(以具体芯片或电路为准,介绍芯片的功能及如何操作,及显示出源程序并附带显示效果):
1)发光二极管(电路及其显示的基本原理)
A、电路原理图见附图(3-1)
附图(3-1)
上图中的八个LED分别通过一个电阻限流接在单片机的P0口上,如图所示八个LED的正极都同时接上了五段拨码开关的第5位,那么我们想要点亮发光二极管第一步就应该打开开关。
那么要怎样才能点亮发光二极管呢?
很简单,只要使相应的发光二极管负极为低电平就可以了,及相对应的单片机IO口为低就可以了
程序如下:
#include"AT89x52.h"//代入头文件
voidmain(void)
{
P0=0xfe;//使P0^0口为低电平
while
(1);//程序执行到这里不动作
}
这时我们能看到在不但开发板上的一个LED被点亮了
有了第一个LED被点亮的列子,那么我们就可以用同样的方法点亮其它LED了,当然也可以让LED一个一个的轮流被点亮以达到一种流水灯的效果。
实列程序的效果:
上面附图是实列测试程序中的流水灯显示效果,左边一排为8位接在P0口的LED,第2个被点亮了,这就是流水灯跑到第2个的效果,右边的那个灯为电源指示灯,只要一开电源就会亮。
2)八位八段数码管显示原理及锁存器的操作
A、电路原理图见附图(3-2)
附图(3-2)
B、数码管资料见附图(3-3)
附图(3-3)
从图(3-3)可以看出这个一个四位的共阴数码管,上面的11,7…3是数码管的段选端,12…6是数码管的位选端,本开发板使用了2个这样的数码管,再结合图(3-2)可看出,数码管的位选和段选都接在了两片锁存器74HC573上,而573又接在了单片机的P0端
C、锁存器74HC573资料见附图(3-4),更为详细的芯片资料见其它
这个芯片采用的是八进位的D触发器,它可以驱动电容式或电阻式的负载。
因此它特别适合应用于缓冲寄存器、IO端口、双向的总线控制器、和操作寄存器。
当寄存器的使能端(LE)为高电平时,Q输出端和D输入端一一对应;当LE为低电平时,输出端管脚Q输出的是寄存器中已被设定的值。
当一个能开启缓冲功能的负逻辑管脚(OE)为0时,无论是在正常逻辑状态还是在高阻抗状态下,都能放置八位的输出数据。
在高阻抗状态下。
输出并没有负载或者进行控制总线。
高阻态和改进的总线驱动可以在不拉起元件的情况下控制总线传输。
OE端并不影响寄存器内部的操作。
当输出端呈高阻状态时旧的数据可以被保存或者新的数据进行输入
从图(3-4)中可看出,2-9脚为输入端,12-19为输出端,1、11脚为控制端,
A,当1脚为高电平时,不论输入值,12-19输出为高阻态,
B、当1脚为低电平时,11脚为高电平,输入值的变化直接反映到输出值的变化
11脚为低电平,输出值的不受输入值的变化而变化,而是记录了上次的输入值(就锁存了数据)
根据锁存器所具有的这一特性,我们就可以编写程序控制数码管了
另外数码管的显示方式分为两种,一种是静态显示,一种是动态显示,在这里我们是以芯片573锁存器作为重点讲解
附图(3-4)
从附图(3-2)的原理图中我们可看出,两片573的输入端都是接在了MCU的P0口,也就是说数码管的位选端和段选端都是通过锁存器接在了P0端,但是我们要让数码管亮,就得分别去控制它的位选端和段选端,那么在这里要怎样分别控制呢?
可以这样:
A、给控制位选的573的11脚高电平,让它的输入和输出直通
B、给P0口数据,让这个数据通过573去控制数码管的位
C、给控制位选的573的11脚低电平,锁存上次给的数据
D、给控制段选的573的11脚高电平,让它的输入和输出直通
E、给P0口数据,让这个数据通过573去控制数码管的段
F、给控制段选的573的11脚低电平,锁存上次给的数据
就按照这个思路我们来编写一个简单的让数码管显示的程序吧(显示效果见附图(3-5))
#include"AT89x52.h"//代入头文件
#include"math.h"
#defineuintunsignedint
#defineucharunsignedchar
sbitDUAN=P2^0;//74HC573的LE端U5LED的段选端
sbitWEI=P2^1;//74HC573的LE端U4LED的位选端
ucharTemp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴显示字库
voiddelay(uintz)//1ms延时
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{
uchari;
WEI=1;//给573的位选高电平
P0=0;//给数码管位数据,让它们都为低电平
WEI=0;//锁住数码管的位数据(以上3句话锁存了位数据)
DUAN=1;//给573的段选高电平,让段一直保持直通状态
while
(1)//因为数码管的位数据被锁存,我们现在再给P0口数据就是只改
{//变段的数据了
for(i=0;i<10;i++)//显示0-9,,,10个数字
{
delay(500);//延时
P0=Temp[i];//给数码管段数据
delay(500);
}
}
}
附图(3-5)
以上程序就循环在数码管上显示了0-910-个数字。
回顾下,普通的LED接法是让LED的位和段接在不同的MCU的IO口上(按照上图所示就要占用16个IO口),但现在我们使用了2片573将它们都接在了MCU的P0(8个IO口)上,节约了单片机的IO口资源,这在单片机IO口紧张的情况下是很有用的
4)液晶显示
由于液晶显示比较复杂,在这里我们不打算详细介绍它的工作原理,只对其接口电路进行简单的介绍
1)1602字符型液晶
A、1602实物图见附图(3.6)
附图(3.6)
B、电路原理图(1602和12864)见附图(3-7)
附图(3-7)
C、1602引脚定义及时序见附图(3.8,3.9)
附图(3.8)
附图(3.9)
从附图(3.6,3.7)中我们可以看出1602和12864的都是使用的八位并行数据,而它们的数据引脚都并接在了P0口,VCC为DC5V电源,VSS为地线,其中除了DB0-DB7为数据线外,另还有几个可操作引脚是RS,R/W,E,其操作方法请严格按照附图(3.8)的读写时序图。
以上液晶的资料较为简单,详细的资料和测试程序另有收录,下面只列出可参照1602的如何写的程序
写命令子函数:
voidwrite_cmd(ucharcmd)//带要写的命令,无返回值
{
ucharCMD;
CMD=cmd;
while(lcd_busy());//判忙标志,这里也可以用一个普通的延时解决
rs=0;//参照时序图
rw=0;
cs=1;
nop();//稍微延时
P0=CMD;//给P0口附值
cs=0;
}
写数据子函数:
voidwrite_data(uchardata1)//带要写的数据,无返回值
{
ucharDATA;
DATA=data1;
while(lcd_busy());
rs=1;//参照时序图
rw=0;
cs=1;
nop();
P0=DATA;
cs=0;
}
1602液晶显示效果见附图(3.10)
附图(3.10)
从附图(3.10)中可看见中有个00显示不亮,这不是液晶本身的问题,而是程序处理延时时间的不准确所造成的。
如果显示的是数码管,延时不好会造成闪烁的现象
2)12864带中文字库点阵型液晶
A、12864实物图见附图(3.11)
附图(3.11)
B、12864引脚定义及时序见附图(3.12,3.13)
附图(3.12)
读时序
写时序
附图(3.13)
从原理附图(3.7)和12864接口附图(3.12)中我们应注意一点,(3.12)中12864的17脚是液晶的复位引脚,在(3.7)中我们把它直接接到了MCU的P2^7中.。
这个问题大家在编程需注意。
我们在操作液晶的时候一般只是让它显示需要的内容,那就是写数据/命令,下面将列出12864的写子函数,以做参考,其它测试程序另有收录。
写命令子函数:
voidlcd_wcmd(ucharcmd)//写命令RS=L,RW=L,E=高脉冲,D0-D7=指令码。
{
while(lcd_busy());//判忙
LCD_RS=0;//参照时序图
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
写数据子函数
voidlcd_wdat(uchardat)//写数据RS=H,RW=L,E=高脉冲,D0-D7=数据。
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
以上只是列出了它的写时序。
12864显示效果见附图(3.14)
附图(3.14)
这个液晶不但能显示汉字也能显示图画,而且汉字不用自己编码,都是芯片自带了的。
操作很方便很实用、
上面的图片因为相机的问题,不清楚,大家谅解
5)键盘操作
键盘的操作在这里分为两种,独立键盘和距阵编码键盘
A、键盘的实物见附图(5.1)
附图(5.1)
上面附图中按键共有21个,在左边的上面4排4*4个为距阵键盘,下面1排4个为4位独立按键,在右边为一个复位按键
B、键盘的原理图见附图(5.2)
附图(5.2)
C、先说简单的独立键盘吧,就是原理附图(5.2)上的最下面的4个按键,这4个按键分别连接在MCU的P30,P31,P32,P33,上,我们可以先让这几个脚为高电平,当有键按下时某个被按下的按键所连接到的MCU引脚就变成了低电平,在编程时我们不论是采用哪种方法都很容易的判别出来。
这里就不列出源程序了
D、距阵键盘就要复杂得多了
1),原理图分析:
原理附图(5.2)上的上面16个按键,每4个列连在了P30、P31、P32、P33和每4个行连在了P34、P35、P36、P37上
2)编程思路:
由P30-P33送出扫描信号,而由P34-P37读取按键数据返回代码,具体如下:
以程序扫描的方式来检查那一按键被按下,一次扫描一行4个按键,扫描的顺序如下:
a、送出扫描信号1110以扫描第一行的4个按键,读取按键数据,判断该行是否有键按下,如有则连接被按下的该键返回线为0;
b、送出扫描信号1101以扫描第一行的4个按键,读取按键数据,判断该行是否有键按下,如有则连接被按下的该键返回线为0;
c、送出扫描信号1011以扫描第一行的4个按键,读取按键数据,判断该行是否有键按下,如有则连接被按下的该键返回线为0;
d、送出扫描信号0111以扫描第一行的4个按键,读取按键数据,判断该行是否有键按下,如有则连接被按下的该键返回线为0;
e、回到步凑a,继续做按键扫描。
列出键盘扫描子程序:
ucharKeyboard()//扫描子函数
{
uchari,j,pc;
for(i=0;i<4;i++)//循环4次扫描4行
{
P3=keyboard_Scan[i];//送行扫描代码
pc=P3;
pc=pc>>4|0xf0;//假如说有按键按下
for(j=0;j<4;j++)//将扫描值与扫描按键值比较
{
if(keyboard_Scan[j]==pc)in=i+j*4;//计算按键值
while(keyboard_Scan[i]!
=P3)//松手检测
{
P3=keyboard_Scan[i];将扫描后的值返回MCU
}
}
}
returnin;//返回按键值
}
以上的程序在实列测试程序中(列子)中加入另外一些代码,就可以通过按下某个按键后让这个值在LED上显示出来
6)、步进电机
A、步进电机的实物见附图(6.1)
附图(6.1)
附图(6.1)是本开发板选配的高精度2(4)相5(6)线制步进电机,全新(30元)
八成新(8元)。
注:
步进电机以实物为准
因为开发板是个提供您学习的实验平台,所以本开发板具有步进电机电压选择的功能,您可以把电机的驱动电压选为稳压的DC5V(推荐),当你使用外接电源适配器供电时,也可以选择这个电压(在开发板上可以通过跳线冒方便选择)。
步进电机驱动电压选择见附图(6.1.1)
B、步进电机内部原理图见附图(6.2)
附图(6.2)
附图(6.2)为一个两相步进电机的内部原理图,这和附图(6.1)的电机是一样的。
C、怎样通过单片机来控制步进电机
本开发板中使用的步进电机为二(四)相步进电机。
转子小齿数为64。
系统中采用四路I/O 进行并行控制,MCU 控制器直接发出多相脉冲信号,在通过功率放大芯片ULN2003后,进入步进电机的各相绕组。
四相步距电机的控制方法有四相单四拍,四相单、双八拍和四相双四拍三种控制方式。
步距角的计算公式为:
θb=3600/mCk
其中:
m 为相数,控制方法是四相单四拍和四相双四拍时C 为1,控制方法是四相单、双八拍时C 为2,Zk 为转子小齿数。
在本开发板所列出的步进电机测试程序:
采用的是四相单、双八拍控制方法,所以步距角为360°/512。
但步进电机经过一个1/8 的减速器引出,实际的步距角应为360°/512/8。
开发平台中使用P1口 的高四位控制四相步进电机的四个相。
按照四相单、双八拍控制方法,电机正转时的控制顺序为A→AB→B→BC→C→CD→D→DA。
P1口 的高四位的值参见下表:
十六进制
二进制
通电状态
1H