基于STC89C52单片机的实验系统开发与设计.docx
- 文档编号:13996690
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:24
- 大小:2.25MB
基于STC89C52单片机的实验系统开发与设计.docx
《基于STC89C52单片机的实验系统开发与设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的实验系统开发与设计.docx(24页珍藏版)》请在冰点文库上搜索。
基于STC89C52单片机的实验系统开发与设计
课程设计报告
课程名称单片机原理与应用
设计题目基于STC89C52单片机的实验系统开发与设计
专业计算机科学与技术
班级B120506
学号B********
姓名
完成日期2014年6月27日
课程设计任务书
设计题目:
基于STC89C52单片机的实验系统开发与设计
一、设计内容
利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验系统,主要包括以下内容:
1.电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计;
2.学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路板焊接;
3.在KeilC环境下,进行软件设计。
主要包括流水灯、计数器、定时器、LCD字符显示、键盘的控制等功能程序设计;
4.针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调试、软硬件联调等方面写出课程设计报告。
二、设计要求
1.完成综合实验系统的电路结构分析,进行模块分解,掌握各部分电路的工作原理;
2.每组协作完成电路板的焊接,掌握故障排除方法,完成实验系统的硬件设计及开发;
3.结合KeiluVision4软件在焊接无误的单片机实验系统上开发出流水灯、计数器、LCD显示等程序;
4.根据分组情况,从硬件、软件方面对学生进行逐一答辩考核;
5.按照要求撰写课程设计论文。
指导教师:
舒云星、李传锋
2014年6月10日
课程设计评语
成绩:
指导教师:
_______________
年月日
基于STC89C52单片机的实验系统开发与设计
摘要
单片机自20世纪70年代问世到今天,短短几十年间,单片机就凭借它具有控制功能强,集成度高、可靠性高、体积小,低电压、低能耗等特点在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面得到了广泛的应用。
本次课程设计就是利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,主要通过电路原理图,进行电路的焊接。
原理图主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计。
这次单片机的课设它具有模块化硬件结构和简单的人机交互功能,硬件功能模块及部分演示程序。
该实验板具有降低设计成本,缩短开发周期,丰富学生知识,提高设计水平等优点。
关键词:
STC单片机,仿真设计,实验系统,计数器,串行通信
ExperimentPlatformDevelopmentDesignBasedon
STCMicrocontroller
ABSTRACT
SCMsincetwentiethCentury70yearscametotoday,justafewdecades,byvirtueofitsSCMhasstrongcontrolfunction,highintegration,highreliability,smallsize,lowvoltage,lowpowerconsumptioninindustrialautomationcontrol,automaticdetection,intelligentinstruments,householdappliances,powerelectronics,electromechanicalintegrationequipmentandotheraspectsthatareawiderangeofapplications.
SCMExperimentalPlatformforthiscourseisdesignedasthecombinationofmicrocontrollertodevelopasetofsoftwareandhardware,theuseofSTCseriessingle-chip,mainlythroughthecircuitprinciplediagram,theweldingcircuit.SchematicincludingsetLCDdisplaymodule,serialcommunicationmodule,digitaltubedisplaymodule,LEDlightemittingdiode,keyboardinterfacecircuit.Thesingleclassithasamodularhardwarestructureandsimplehuman-computerinteractionfunction,hardwaremoduleandpartofthedemoprogram.Theboardhastheadvantagesofreducingthedesigncost,shortenthedevelopmentcycle,enrichtheirknowledge,improvedesignlevel.
KEYWORDS:
STCmicrocontroller,Simulationdesign,Experimentplatform,Counter,Serialcommunication
前言
单片微型计算机简称单片机,是典型的嵌入式(MicrocontrollerUnit),单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称,它不是完成某一个逻辑功能的,而是把一个到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机,和计算机相比,只缺少了I/O设备。
概括的讲:
一块就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
由于在工业控制领域的广泛应用,单片机由内仅有CPU的专用发展而来。
最早的设计理念是通过将大量外围设备和集成在一个中,使更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的,当时的都是8位或4位的。
其中最成功的是的8031,此后在8031上发展出了系列系统。
因为简单可靠而性能不错获得了很大的好评。
尽管2000年以后ARM已经发展出了32位的超过300M的高端,直到目前基于8031的还在广泛的使用。
在很多方面单片机比专用更适合应用于,因此它得到了广泛的应用。
事实上是世界上数量最多,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有。
手机、、、家用电器、电子玩具、以及鼠标等电脑配件中都配有1-2部。
汽车上一般配备40多部,复杂的上甚至可能有数百台单片机在同时工作!
单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
第1章实验系统概述
1.1设计题目
基于STC89C52单片机的实验系统开发与设计
1.2系统设计目的和内容
1.2.1设计目的
学会89C51的接口技术,并对实际电板进行系统开发
1.2.2设计内容
2电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计;
3学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路板焊接;
4在KeilC环境下,进行软件设计。
主要包括流水灯、计数器、定时器、LCD字符显示、键盘的控制等功能程序设计;
5针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调试、软硬件联调等方面写出课程设计报告。
5.1.1设计要求
1.完成综合实验系统的电路结构分析,进行模块分解,掌握各部分电路的工作原理;
2.每组协作完成电路板的焊接,掌握故障排除方法,完成实验系统的硬件设计及开发;
3.结合KeiluVision4软件在焊接无误的单片机实验系统上开发出流水灯、计数器、LCD显示等程序
5.1.2设计步骤
<1>.按照一定的先后顺序,应该先完成综合实验系统电路的焊接,然后在测试一下电路是否有短路或者虚焊的情况。
<2>.完成电路板以后,在电脑上的protuce上把仿真电路也同样连接好,并分析电路,熟悉这些链接的原因,为写程序做好准备。
<3>.连接好PROTUCE虚拟电路以后,然后对各个芯片的功能引脚和用法,掌握这些芯片是怎样实现所要求的功能的,在软件上怎么完成。
<4>.熟悉了各个芯片的引脚功能和工作条件后,然后开始编程,在刚开始编一个多模块的程序比较难的话,可以先编各个模块的然后整合。
<5>.在PROTUCE中先试一下程序是否能够完成要求的功能,如果能够完成就把程序导入到综合实验系统电路板上的单片机上。
然后通电测试!
第2章整体设计方案
1
2
2.1开发板整体外观
2.2整板电路PROTUES仿真电路
2.3软件功能描述
Protues软件是英国Labcenterelectronics公司出版的工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真及外围器件。
它是目前最好的仿真及外围器件的工具。
虽然目前国内推广刚起步,但已受到爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(),从原理图布图、代码调试到与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、和MPLAB等多种编译
2.4仿真软件PROTUES中的效果图
1.二极管作流水灯显示
2.晶码管做秒表显示:
3.显示屏输出字模显示:
第3章硬件电路设计
3.1两位一体共阴数码管
6
7
7.1
7.1.1数码管概述
led数码管(LEDSegmentDisplays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示
7.1.2数码管内部结构
7.1.3两位一体共阴数码管和74LS373锁存器接口电路
7.2LCD1602液晶
7.2.1LCD1602液晶简介
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
7.2.2LCD1602液晶引脚介绍
第1脚:
VSS为
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为选择,高电平1时选择、低电平0时选择。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
或背灯电源。
15脚背光正极,16脚背光负极
7.2.3LCD1602液晶外围接口电路
3.3串口通信
3.3.1串口通讯概述
串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。
3.3.2MAX232接口电路
第4章软件设计
4.1程序整体流程图
流水灯的流程图
晶码管的流程图
显示器的流程图
4.2程序清单
流水灯
#include
#defineucharunsignedchar
bitldelay=0;
uchart=0;
voidmain(){
ucharcodeledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharledi;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
while
(1){
if(ldelay){
ldelay=0;
P2=ledp[ledi];
ledi++;
if(ledi==8)ledi=0;
}}}
timer0()interrupt1{
t++;
if(t==10){t=0;ldelay=1;}
TH0=0x3c;TL0=0xb0;
}
秒表晶码管
#include
#defineucharunsignedchar
unsignedcharcount=0;
ucharled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbitA0=P2^5;
sbitA1=P2^6;
sbitA2=P2^7;
sbitP15=P1^5;
bitldelay=0;
uchart=0;
voidmain(){
P0=0x00;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
while
(1){
if(ldelay){
ldelay=0;
A0=0;
A1=0;
A2=0;
P15=1;
P0=led_mod[count%10];
A0=1;
A1=0;
A2=0;
P15=1;
P0=led_mod[count/10];
count++;
if(count==60)count=0;
}}}
timer0()interrupt1{
t++;
if(t==20){t=0;ldelay=1;}
TH0=0x3c;TL0=0xb0;}
显示屏
#include
#defineucharunsignedchar
ucharcodetable1[]="Welcometouse!
!
";
ucharcodetable2[]="Iamdongkaige";
ucharcodetable3[]="B11050817";
ucharcodetable4[]="LEDblink";
ucharcodetable5[]="Byebye!
Thankyou";
unsignedcharnum;
sbitlcdrs=P1^6;
sbitlcdrw=P1^7;
sbitlcden=P2^0;
unsignedcharcount;
voiddelay(unsignedinttime)
{
unsignedintj=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
voidwrite_com(ucharcom)//写指令
{lcdrs=0;//选择写命令模式
P0=com;//将要写的命令字送到数据总线上
lcdrw=0;
delay(10);//稍做延时以待数据稳定
P2=0x40;//lcden=1;使能端给一高脉冲,因为初始化函数中已经将lcden置为0
delay(10);//稍做延时
P2=0x00;//lcden=0;将使能端置0以完成高脉冲
}
voidwrite_data(uchardate)//写数据
{lcdrs=1;//选择写数据模式
P0=date;//将要写的命令字送到数据总线上
lcdrw=0;
delay(10);//稍做延时以待数据稳定
P2=0x40;//lcden=1;使能端给一高脉冲,因为初始化函数中已经将lcden置为0
delay(10);//稍做延时
P2=0x00;//lcden=1;将使能端置0以完成高脉冲
}
voidinit1()
{
P2=0x00;
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
write_com(0x0e);//设置开显示,显示光标
write_com(0x06);//写一个字符后地址指针加1
write_com(0x01);//显示清0,数据指针清0
}
voidled1()
{
write_com(0x80);
for(num=0;num<16;num++)
{write_data(table1[num]);
delay(200);}
}
voidled2()
{
write_com(0x80);
for(num=0;num<14;num++)
{write_data(table2[num]);
delay(200);}
write_com(0x80+0x40);
for(num=0;num<9;num++)
{write_data(table3[num]);
delay(200);}
}
voidled3()
{
write_com(0x80);
for(num=0;num<9;num++)
{write_data(table4[num]);
delay(200);}}
voidled4()
{
write_com(0x80);
for(num=0;num<16;num++)
{write_data(table5[num]);
delay(200);}}
voidmain()
{P3=0xff;
while
(1)
{switch(P3&0xff)
{case0xfb:
init1();
led1();break;
case0xf7:
init1();
led3();break;
case0xef:
init1();
led4();break;
case0xdf:
init1();
led2();break;
}}}
第5章调试及故障分析
5.1焊接准备阶段元器件测试、电路原理图故障分析
在焊接的时候由于比较紧张怕被烫伤了,所以我的手抖得比较厉害,后来向老师请教了比较专业的焊接方法后,感觉焊接的时候就变得顺利多了。
还有中间我们发现我缺少了一个原件,就是102排电阻,当时手里有这种原件的老师不在,我就去到二楼的一个办公室里找来了这个东西,在PROTUCE中我把二极管的电阻给设置的太大了不能闪烁后来改为了330的就好了,
5.2电路焊接过程中的故障分析
电路焊接的时候,我们的电络铁始终不热,我们把插座打开发现有问题,把断开处重新连上后开始了焊接,焊接的过程中我们发现把锡条靠近络铁脚的时候他不容易融化,一旦融化又在络铁的上方,不会流到焊接空里面去,后来我们发现把锡条从侧面放在电络铁的下面时,很快可以融化而且不会粘在络铁脚上,很快而且焊接出来的没有虚焊的都呈锥形。
但后来在测试的时候,发现无论怎么搞都不会亮,这才发现原来是在开关处的一个二极管给接反了,后来在老师的帮助下我们成功通过的检测。
5.3程序编写过程中的故障分析
1.流水灯显示时刚好和程序设置的相反,通过改流水灯的端口就解决了。
2.数码管不能实现正常计数和显示,通过程序检查发现是断码出现错误,改正之后就好了。
3.在测试秒表的时候发现我们的秒表走的特别快,在一秒内走完了原本设置的60秒,
后来发现是我们判断是否定时到时的语句放错了地方,放在了60秒循环的外面造成的,后来把判断语句放在对p0口赋值的语句前问题就解决了!
5.4实物演示效果
结论
在课程设计这段时间,我们组花费了一个下午焊接电路,两天的时间编程并查找错误,有时候一个小小的错误就可以花费很长的时间修改才能正确,有时候仅仅是因为一个标点符号的错误,就有可能导致程序出错,其错误位置提示的往往是其附近,所以修改时有点小困难,花费的时间也相对的增加了不少。
反复理解电路原理图后,才能从中找到解决问题的方法,反复的测试,纠错,不仅提高了我对电路的理解,更深层次对理论的理解,也培养了我分析数字电路问题,解决问题的能力。
在这个过程中,我们要静下心来细心的分析问题,找出解决问题的方法。
此次课程设计收获不小,用到了也认识了很多元件和芯片,并了解了相关的引脚及其功能,以及相关的判断规则。
在这次的课程设计中所积累的实际开发经验和培养分析问题解决问题的能力是本次课设最大的收获。
这次的课程设计里面还有一些元件,我们老师只是在课堂上稍微提了一下,我们书上又没有这些软件的功能引脚,这就要求我们要有一定的自学能力,在LCD_1602的应用就是这种情况,我在网上找了很多关于LCD_1602的资料,还有很多在编程中要用到的东西,比如一些引脚的功能和在什么条件下才会实现那种功能,内内部电路的分析等等,总之这次的课程设计还让我们有了更强自学能力!
这次的课程设计,让我深深的体会到了团队合作的重要性。
合作期间,分工明确,可以使我们更快、更好地完成我们的工作。
同时,我学到了怎样在单片机开发板上进行实际测试,认识到理论联系实际的重要性。
并且提高了我对硬件开发的兴趣,初步认识到了软件编程与硬件功能实现的结合点。
在此期间,我们可以更好的知道自己的优势所在,把握好自己的优势,也可以知道自己的不足和缺陷,加以改正。
谢辞
通过这次课程设计,我要向帮助我的指导老师舒老师和李老师表示衷心的感谢,在这次课程设计中,有不懂的地方您们总能不厌其烦的讲解,在我们犯错误的时候舒老师表现得不是大发雷霆,而是把我们带到一边安静得演示与讲解,让我感受到您们的和蔼可亲,对学生无私的关爱。
同时也要感谢我的同学们,虽然我们编的程序不一样,但是当我遇到问题时,他们总能认真的帮我分析问题并耐心的跟我讲解。
感谢老师您为我们提供了这次动手锻炼的机会,为同学们营造的浓郁的学习氛围以及在学习上提供的毫不吝啬的帮助!
祝可爱的小伙伴们前程似锦,祝老师桃李满天下。
参考文献
[1]李蒙,毛建东.单片机原理及应用[M].北京:
中国轻工业出版社,2010
[2]林立,张俊亮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C52 单片机 实验 系统 开发 设计