基于51系列单片机的实验平台开发设计.docx
《基于51系列单片机的实验平台开发设计.docx》由会员分享,可在线阅读,更多相关《基于51系列单片机的实验平台开发设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于51系列单片机的实验平台开发设计
摘要
由于单片机技术在各个领域正得到越来越广泛的应用,许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中,MOS.51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了市场,成为国内单片机应用领域中的主流。
目前,可用于MOS.51系列单片机开发的产品越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。
利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,在KeilC环境下进行软件设计,主要包括流水灯、数码管显示以及LCD显示模块,在Protues中仿真成功,下载到电路板中验证成功。
实现流水灯正反向流动,应用中断实现数码管60之内计数以及LCD显示不同字符的功能。
关键词:
STC单片机,实验平台,数码管,流水灯
51seriesmicrocontrollercomprehensiveexperimentalboarddevelopmentdesign
ABSTRACT
Duetothesingle-chipmicrocomputertechnologyinvariousfieldshasbeenmoreandmorewidelyused,manyintegratedcircuitmanufacturershaveintroducedvarioustypesofSCM,themicrocontrollerfamilymanymembers,MOS.51seriesmicrocontrollerwithitssuperiorperformance,maturetechnologyandhighreliabilityandhighperformanceprice,quicklyoccupiedthemarket,becomethemainstreaminthefieldofSCM.Atpresent,canbeusedforMOS.51seriesmicrocontrollerproductsismoreandmore,anditssupportingallkindsofdevelopmentsystem,allkindsofsoftwarehasbecomemoreandmoreperfect,soitcanbeveryconvenienttouseofthepresentresources,developedfordifferentpurposeofallkindsofapplicationsystem.
UsingSTCseriessinglechipmicrocomputerasmicrocontrollerdevelopasetofsoftwareandhardwarecombinationofSCMexperimentplatform,intheKeilCundertheenvironmentofsoftwaredesign,includingthewaterlamp,digitaltubedisplayandLCDdisplaymodule,inProtuessimulationinsuccess,downloadtocircuitboardverifysuccess.Realizationofflowingwaterlightforwardandreverseflow,applicationofinterrupttorealizedigitaltubewithinsixtycounterandLCDdisplaythefunctionofdifferentcharacter.
KEYWORDS:
STCmicrocontroller,comprehensiveexperimentalboard,softwareandhardwarecombinedwith,andtheprogramdevelopmentdesign
前言
1946年第一台电子计算机诞生至今,依靠微电子技术和半导体技术的进步,从电子管——晶体管——集成电路——大规模集成电路,使得计算机体积更小,功能更强。
特别是近20年时间里,计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机应用的意义不仅在于它的广阔范围及所带来的经济效益,更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。
以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。
这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。
随着单片机应用的推广,微控制技术将不断发展完善。
第1章系统概述
1.1设计题目
基于51系列单片机的实验平台开发设计
1.2系统设计目的和内容
1.2.1设计目的
利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台。
锻炼学生的设计思维和动手能力,使其具备独立完成设计的能力。
1.2.2设计内容
1.电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计;
2.学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路板焊接;
3.在KeilC环境下,进行软件设计。
主要包括流水灯、计数器、定时器、LCD字符显示、键盘的控制等功能程序设计;
4.针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调试、软硬件联调等方面写出课程设计报告。
1.2.3设计要求
1.完成综合实验平台的电路结构分析,进行模块分解,掌握各部分电路的工作原理;
2.独立完成电路板的焊接,掌握故障排除方法,完成实验平台的硬件设计及开发;
3.结合KeilC软件在焊接无误的单片机实验平台上开发出流水灯、LCD显示模块,通信模块等程序设计;
4.按照要求撰写课程设计论文。
1.2.4设计步骤
1.完成每一个模块的C51程序,包括数码管显示模块,LCD模块,流水灯模块;并在仿真软件中运行仿真;
2.按照电路原理图完成电路板的焊接;
3.下载验证
第2章整体设计方案
1
2
2.1开发板整体外观
图2-1开发板整体外观
2.2整板电路PROTUES仿真电路
图2-2Protues仿真电路
2.3软件功能描述
1.Keil
KeilC51µVision2集成开发环境是KeilSoftware,Inc/KeilElektronikGmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。
KeilC51集成开发环境的主要功能有以下几点:
●µVision2forWindows:
是一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中;
●C51国际际准化C交叉编译器:
从C源代码产生可重定位的目标模块;
●A51宏汇编器:
从80C51汇编源代码产生可重定位的目标模块;
●BL51链接器/定位器:
组合由C51和A51产生的可重定位的目标模块,生成绝对目标模块;
●LIB51库管理器:
从目标模块生成连接器可以使用的库文件;OH51目标文件至HEX格式的转换器,从绝对目标模块生成IntelHex文件;
●RTX-51实时操作系统:
简化了复杂的实时应用软件项目的设计。
这个工具套件是为专业软件开发人员设计的,但任何层次的编程人员都可以使用,并获得80C51单片机的绝大部分应用。
2.ISISProtues
ProtuesISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
该软件可以对模拟电路、数字电路、模数混合电路、单片机及外围电路进行绘制、分析、仿真,并提供了简便易用的印刷电路板设计工具。
Protues软件有如下几个特点:
●强大的原理绘图功能。
●支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
●提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点的等调试功能,同时在仿真系统中也加入了观察各个变量、寄存器等的当前状态的功能;它还支持第三方的软件编译和调试环境,如KeilC51Vision2等软件。
●丰富的元器件库。
提供30多个元器件库,数千种元器件。
包括:
电阻、电容、二极管、三极管、MOS管、变压器、继电器、各种激励、各种微控制器、各种门电路和终端等。
●软件包中提供各种仪表。
包括:
交直流电压表、交直流电流表、逻辑分析仪、定时\计数器和信号发生器等,它们通过图形显示功能,将线路中的变化的信号以图形方式实时显示出来。
Protues中主要包括ISIS和ARES两个基本模块,其中ISIS集单片机电路图绘制、汇编语言编程、调试和仿真运行等功能于一体;ARES模块则可根据ISIS原理图实现印刷电路板的设计功能。
总之,在Protues中,从原理图设计、单片机编程、系统仿真到PCB设计可以一气呵成,具有从概念到产品的完整设计能力。
2.4仿真软件PROTUES中的效果图
图2-3Protues仿真效果图
第3章硬件电路设计
3.1两位一体共阴数码管
2
3
3.1
3.1.1数码管概述
LED数码管是由发光二极管构成的,具有显示亮度高、响应速度快的特点。
常见的是七段LED显示器为“8”字型,该显示器内部有7个条形发光二级管和一个小圆点发光二级管,共计8段,每段对应一个发光二级管。
有共阴极和共阳极两种,共阴极发光二极管的阴极连在一起,通常公共阴极接地。
当阳极为高电平时发光二级管发光。
共阳极发光二极管的阳极连在一起,通常公共阳极接正电压。
当阴极为低电平时发光二级管发光。
3.1.2数码管内部结构
8段LED数码管如图3-1所示:
图3-18段LED数码管结构及外形
LED数码管通过7个发光二极管亮暗的不同组合可以显示各种数字,另外一个圆的型发光二级管(图3-1(a)中以dp显示)显示小数点。
只要为LED数码管提供了段码就可以显示不同的符号和数字。
LED数码管共计8段。
正好是一个字节。
习惯上是以“a”段对应段码字节的最低位。
各段与字节中各位对应关系如表3-1所示。
表3-1段码与字节中各位对应关系
代码位
D7
D6
D5
D4
D3
D2
D1
D0
显示段
dp
g
f
e
d
c
b
a
按照表3-1中的格式,显示各种字符的8段LED数码管的段码如表3-2所示(以共阴极为例)。
表3-28段LED数码管段码
显示字符
段符号
十六进制代码
dp
g
f
e
d
c
b
a
共阴极
共阳极
0
0
0
1
1
1
1
1
1
3FH
C0H
1
0
0
0
0
0
1
1
0
06H
F9H
2
0
1
0
1
1
0
1
1
5BH
A4H
3
0
1
0
0
1
1
1
1
4FH
B0H
4
0
1
1
0
0
1
1
0
66H
99H
5
0
1
1
0
1
1
0
1
6DH
92H
6
0
1
1
1
1
1
0
1
7DH
82H
7
0
0
0
0
0
1
1
1
07H
F8H
8
0
1
1
1
1
1
1
1
7FH
80H
9
0
1
1
0
1
1
1
1
6FH
90H
3.1.3两位一体共阴数码管和74LS374锁存器接口电路
图3-2两位一体共阴数码管和74LS374锁存器接口电路
3.2LCD1602液晶
3.2.1LCD1602液晶简介
1.1602LCD,工业字符型液晶,能够同时显示16×2即32个字符(16列2行)每行16个字符液晶模块(显示字符和数字)。
。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5×7或者5×10等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
2.液晶显示模块RT-C1602C的内部结构可以分成三部分:
一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图3-1所示:
图3-1RT-C1602内部结构
3.HD44780控制器的特点
HD44780是集控制器、驱动器于一体,专用于字符显示控制驱动集成电路。
可选择5×7或5×10点字符。
HD44780不仅作为控制器而且还具有驱动40×16点阵液晶像素的能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动。
HD44780可控制的字符高达每行80个字,也就是5×80=400点,HD44780内部有16路行驱动器和40路列驱动器,所以HD44780本身就具驱动有16×40点阵LCD的能力(即单行16个字符或两行8个字符)。
如果在外部加一HD44100外扩展多40路/列驱动,则可驱动16×2LCD。
HD44780的显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM全部集成在芯片内。
HD44780有80个字节的显示缓冲区,分两行,地址为:
第一行为00H~27H;(0~39→40个)
第二行为40H~67H。
(64~103→40个)
HD44780具有8位数据和4位数据传输两种方式,可与4/8位CPU相连。
具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。
HD44780内部的字符发生存储器(ROM)已经存储了160个不同的点阵字符图形包括阿拉伯数字、英文字母的大小写、常用的符号和日文假名等。
4.HD44100是作为扩展显示字符位。
3.2.2LCD1602液晶引脚介绍
图3-3RT-1602外观
图3-4RT-1602引脚
显示容量:
16个×2排字符;工作电流2.0mA(5.0V);字符尺寸:
2.95×4.35mm。
RT-1602C采用标准的16脚接口,各引脚情况如下:
第1脚:
VSS为电源地;
第2脚:
VDD为+5V电源;第3脚:
VEE为液晶显示对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时,会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为数据/命令选择端,高电平时选择数据寄存器、低电平时选择命令寄存器。
[RS:
RegisterSelection]
第5脚:
R\W,读写操作选择(1-读,0-写)。
如表3-1所示:
表3-3读写操作选择
RS
R\W
寄存器及操作
0
0
指令寄存器写入
0
1
忙信号和地址计数器读出
1
0
数据寄存器写入
1
1
数据寄存器读出
第6脚:
E端为使能端,当E端由高电平跳变成低电平时(负跳变),液晶模块执行命令。
执行一条命令,都要使E有一个负跳变。
第7~14脚:
D0~D7,为8位双向数据总线,与单片机的数据总线相连,三态。
第15脚:
BLA,背光电源,通常为+5V,并联一个电位器,调节背光亮度。
第16脚:
BLK,背光电源地。
3.2.3LCD1602液晶外围接口电路
图3-5LCD1602液晶外围接口电路
3.3串口通信
3.3.1串口通讯概述
单片机构成的控制系统,由于设计需求,往往需要和外部的微处理器进行数据交流,实现两个或多个处理器之间的数据通信。
常用的数据通信包括两种形式:
并行通信和串行通信。
分别如图3-1(a)和图3-1(b)所示。
(a)(b)
图3-6并行通信与串行通信
1.串行通信与并行通信的优缺点对比,如表3-1所示。
表3-4串并行通信对比
并行数据传送
串行数据传送
原理
各位数据同时传送
数据按位顺序传送
优点
传送速度快、效率高
最少需要一对传输线即可完成:
成本低
缺点
数据位数→传输线根数:
成本高
速度慢,成本低
应用
传送距离<30米,用于近距离或内部
几米~几千公里,用于计算机与外设之间
2.串行通信按信息的格式可分为异步通信和同步通信两种方式;根据信息传送的方向,串行通信可以分为单工、半双工和全双工3种,如图3-2所示。
图3-7串行通信的3种传输形式
3.3.2MAX232接口电路
MAX232接口电路如图3-3所示。
图3-8MAX232接口电路
第4章软件设计
4.1程序整体流程图
4.2程序清单
#include
unsignedcharled[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharled_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbitP15=P1^5;
sbitRS=P1^6;
sbitRW=P1^7;
bitrun=0;
bitdir=0;
unsignedcharLCD_Status;
voiddelay(unsignedintcount)
{unsignedchari;
while(count--)
for(i=0;i<120;i++);
}
unsignedcharBusy_Check()//检查忙函数
{RS=0;
RW=1;//RS=0,RW=1,忙信号地址读出
P2=0x40;//E=1;//E端由高电平跳变成低电平时,液晶模块执行命令
delay
(2);
LCD_Status=P0;//读出的值写入单片机
delay
(2);
P2=0x00;//E=0;
returnLCD_Status;
}
voidwcmd(unsignedcharcmd)//写命令函数,RS=0;RW=0
{while((Busy_Check()&0x80)==0x80);//写命令前,先检查设备是否忙?
//忙信号标志位在最高位,为1时表示忙,程序不往下执行
RS=0;
RW=0;//写控制字
P2=0x40;//E=1;//E设置为高电平
P0=cmd;//命令由P0口送入LCD
delay
(2);
P2=0x00;//E=0;//E由高电平到低电平跳变,液晶模块执行命令
}
voidwdat(unsignedchardat)//写数据函数,RS=1;RW=0
{
while((Busy_Check()&0x80)==0x80);//写数据前,检查是否忙,同上
RS=1;
RW=0;
P2=0x40;//E=1;//E由高电平到低电平跳变,液晶模块执行命令
P0=dat;//数据由P1口送入LCD
delay
(2);//延时大约2ms
P2=0x00;//E=0;
}
voidinit()//初始化函数,主要写命令
{wcmd(0x38);//38H=00111000,使用8位,显示两行;用5×7的字型【命令6】
delay(20);//改为0x3C=00111100,就用5×10字型
wcmd(0x01);//01H=00000001,清屏【命令1】
delay(20);
wcmd(0x06);//06H=00000110,字符不动,光标自动右移一格【命令3】
delay(20);
wcmd(0x0e);//0eH=00001110,开显示,有光标,字符不闪烁【命令4】
delay(20);
}
voidkey1(void)interrupt0
{
run=1;
dir=0;
wcmd(0x80+0x44);
wdat('h');
wdat('e');
wdat('l');
wdat('l');
wdat('o');
}
voidkey2(void)interrupt2
{unsignedintk;
unsignedintj;
while(k<6)
{P2=0x3f;
P0=led_code[k];
k++;
for(j=0;j<10;j++)
{P2=0x1f;
P0=led_code[j];
delay(200);}
}k=0;j=0;
}
voidmain(void)
{signedchari;
IT0=1;IT1=1;
EX0=1;EX1=1;
EA=1;
P15=1;
Busy_Check();
wcmd();
wdat();
init();//0x80,见命令8(显示缓冲区DDRAM地址设置命令格式)
wcmd(0x80+0x00);//写入显示缓冲区起始地址为第1行第1列
wdat('W');
wdat('E');
wdat('L');
wdat('C');
wdat('O');
wdat('M');
wdat('E');
while
(1)
{switch(P3&0x3c)
{case0x2c:
run=1,dir=1;break;
case0x1c:
run=0,dir=0;break;
}
if(run==1)
if(dir==1)
for(i=0;i<=7;i++)
{P2=led[i];