您的当前位置:首页正文

基于STC89C52单片机的实验系统开发与设计

2023-04-02 来源:独旅网


课 程 设 计 报 告

课程名称 单片机原理与应用 设计题目 基于STC89C52单片机的实验系统开发与设计 专 业 计算机科学与技术 班 级 B120506 学 号 B12050619 姓 名

完成日期 2014年6月27日

II

课 程 设 计 任 务 书 设计题目: 基于STC89C52单片机的实验系统开发与设计 一、设计内容 利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验系统,主要包括以下内容: 1. 电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计; 2. 学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路板焊接; 3. 在Keil C环境下,进行软件设计。主要包括流水灯、计数器、定时器、LCD字符显示、键盘的控制等功能程序设计; 4. 针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调试、软硬件联调等方面写出课程设计报告。 二、设计要求 1. 完成综合实验系统的电路结构分析,进行模块分解,掌握各部分电路的工作原理; 2. 每组协作完成电路板的焊接,掌握故障排除方法,完成实验系统的硬件设计及开发; 3. 结合Keil uVision4软件在焊接无误的单片机实验系统上开发出流水灯、计数器、LCD显示等程序; 4. 根据分组情况,从硬件、软件方面对学生进行逐一答辩考核; 5. 按照要求撰写课程设计论文。 指导教师:舒云星、李传锋 2014年 6 月 10 日 课 程 设 计 评 语 成绩: 指导教师:_______________ 年 月 日 IIII

基于STC89C52单片机的实验系统开发与设计

摘 要

单片机自20世纪70年代问世到今天,短短几十年间,单片机就凭借它具有控制功能强,集成度高、可靠性高、体积小,低电压、低能耗等特点在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面得到了广泛的应用。

本次课程设计就是利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,主要通过电路原理图,进行电路的焊接。原理图主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计。这次单片机的课设它具有模块化硬件结构和简单的人机交互功能,硬件功能模块及部分演示程序。该实验板具有降低设计成本,缩短开发周期,丰富学生知识,提高设计水平等优点。

关键词: STC单片机,仿真设计,实验系统,计数器,串行通信

II

Experiment Platform Development Design Based on

STC Microcontroller

ABSTRACT

SCM since twentieth Century 70 years came to today, just a few decades, by virtue of its SCM has strong control function, high integration, high reliability, small size, low voltage, low power consumption in industrial automation control, automatic detection, intelligent instruments, household appliances, power electronics, electromechanical integration equipment and other aspects that are a wide range of applications.

SCM Experimental Platform for this course is designed as the combination of micro controller to develop a set of software and hardware, the use of STC series single-chip, mainly through the circuit principle diagram, the welding circuit. Schematic including set LCD display module, serial communication module, digital tube display module, LED light emitting diode, keyboard interface circuit. The single class it has a modular hardware structure and simple human-computer interaction function, hardware module and part of the demo program. The board has the advantages of reducing the design cost, shorten the development cycle, enrich their knowledge, improve design level.

KEYWORDS: STC microcontroller, Simulation design, Experiment platform, Counter, Serial communication

IIII

目 录

前 言................................................................................................................................ 1 第1章 实验系统概述.................................................................................................... 1

1.1 设计题目 ....................................................................................................... 2 1.2 系统设计目的和内容 ................................................................................... 2

1.2.1 设计目的 ............................................................................................ 2 1.2.2 设计内容 ............................................................................................ 2 5.1.1 设计要求 ............................................................................................ 2 5.1.2 设计步骤 ............................................................................................ 2

第2章 整体设计方案.................................................................................................... 3

1................................................................................................................................. 3 2................................................................................................................................. 3 2.1 开发板整体外观 ........................................................................................... 3 2.2 整板电路PROTUES仿真电路 ................................................................... 3 2.3 软件功能描述 ............................................................................................... 4 2.4 仿真软件PROTUES中的效果图 ............................................................... 4 第3章 硬件电路设计.................................................................................................... 7

3.1两位一体共阴数码管......................................................................................... 7

6.......................................................................................................................... 7 7.......................................................................................................................... 7 7.1....................................................................................................................... 7 7.1.1 数码管概述 ........................................................................................ 7 7.1.2 数码管内部结构 ................................................................................ 7 7.1.3 两位一体共阴数码管和74LS373锁存器接口电路........................ 7 7.2 LCD1602液晶 .............................................................................................. 8

7.2.1 LCD1602液晶简介 ........................................................................... 8 7.2.2 LCD1602液晶引脚介绍 ................................................................... 8 7.2.3 LCD1602液晶外围接口电路 ........................................................... 9 3.3 串口通信............................................................................................................ 9

3.3.1 串口通讯概述 .................................................................................... 9 3.3.2 MAX232接口电路 ............................................................................ 9

第4章 软件设计.......................................................................................................... 10

4.1程序整体流程图............................................................................................... 10 4.2程序清单........................................................................................................... 11 第5章 调试及故障分析.............................................................................................. 15

5.1 焊接准备阶段元器件测试、电路原理图故障分析...................................... 15 5.2 电路焊接过程中的故障分析.......................................................................... 15 5.3 程序编写过程中的故障分析.......................................................................... 15 5.4 实物演示效果.................................................................................................. 15 结论................................................................................................................................ 17

IIIIII

谢辞................................................................................................................................ 18 参考文献........................................................................................................................ 19 附 录............................................................................................................................ 20

IVIV

前 言

单片微型计算机简称单片机,是典型的嵌入式(Microcontroller Unit),单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称,它不是完成某一个逻辑功能的,而是把一个到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机,和计算机相比,只缺少了I/O设备。概括的讲:一块就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。

由于在工业控制领域的广泛应用,单片机由内仅有CPU的专用发展而来。最早的设计理念是通过将大量外围设备和集成在一个中,使更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的,当时的都是8位或4位的。其中最成功的是的8031,此后在8031上发展出了系列系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的超过300M的高端,直到目前基于8031的还在广泛的使用。在很多方面单片机比专用更适合应用于,因此它得到了广泛的应用。事实上是世界上数量最多,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有。手机、、、家用电器、电子玩具、以及鼠标等电脑配件中都配有1-2部。 汽车上一般配备40多部,复杂的上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。

第1章 实验系统概述

11

1.1 设计题目

基于STC89C52单片机的实验系统开发与设计

1.2 系统设计目的和内容

1.2.1 设计目的

学会89C51的接口技术,并对实际电板进行系统开发 1.2.2 设计内容

2 电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模

块、LED发光二极管、键盘等接口电路的设计;

3 学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路

板焊接;

4 在Keil C环境下,进行软件设计。主要包括流水灯、计数器、定时器、LCD

字符显示、键盘的控制等功能程序设计;

5 针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调

试、软硬件联调等方面写出课程设计报告。 5.1.1 设计要求

1. 完成综合实验系统的电路结构分析,进行模块分解,掌握各部分电路的工作原理;

2. 每组协作完成电路板的焊接,掌握故障排除方法,完成实验系统的硬件设计及开发;

3. 结合Keil uVision4软件在焊接无误的单片机实验系统上开发出流水灯、计数器、LCD显示等程序 5.1.2 设计步骤

<1>.按照一定的先后顺序,应该先完成综合实验系统电路的焊接,然后在测试一下电路是否有短路或者虚焊的情况。

<2>.完成电路板以后,在电脑上的protuce上把仿真电路也同样连接好,并分

析电路,熟悉这些链接的原因,为写程序做好准备。

<3>.连接好PROTUCE虚拟电路以后,然后对各个芯片的功能引脚和用法,掌握

这些芯片是怎样实现所要求的功能的,在软件上怎么完成。

<4>.熟悉了各个芯片的引脚功能和工作条件后,然后开始编程,在刚开始编一

个多模块的程序比较难的话,可以先编各个模块的然后整合。

<5>.在PROTUCE中先试一下程序是否能够完成要求的功能,如果能够完成就把

程序导入到综合实验系统电路板上的单片机上。然后通电测试!

22

第2章 整体设计方案

2.1 开发板整体外观

2.2 整板电路PROTUES仿真电路

33

2.3 软件功能描述

Protues软件是英国Labcenter electronics公司出版的工具软件。它不仅具有其它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.二极管作流水灯显示

44

2.晶码管做秒表显示:

3.显示屏输出字模显示:

55

66

第3章 硬件电路设计

3.1两位一体共阴数码管

7.1.1 数码管概述

led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示 7.1.2 数码管内部结构

7.1.3 两位一体共阴数码管和74LS373锁存器接口电路

77

7.2 LCD1602液晶

7.2.1 LCD1602液晶简介

工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 7.2.2 LCD1602液晶引脚介绍

第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脚背光负极

88

7.2.3 LCD1602液晶外围接口电路

3.3 串口通信

3.3.1 串口通讯概述

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。

3.3.2 MAX232接口电路

99

第4章 软件设计

4.1程序整体流程图

流水灯的流程图

开始 判断定时中断 定时继续 进行for语句循环 结束

晶码管的流程图

开始 判断1s定时 判断p2.5是否=1 1 0 P0=count%10 P0=count/10 结束

1010

显示器的流程图

开始 写命令 写数据 函数读数据 结束

4.2程序清单

流水灯

#include

#define uchar unsigned char bit ldelay=0; uchar t=0; void main(){

uchar code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar ledi; 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() interrupt 1{ t++;

if(t==10){t=0; ldelay=1;} TH0=0x3c;TL0=0xb0;

1111

}

秒表晶码管

#include

#define uchar unsigned char unsigned char count=0;

uchar led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit A0=P2^5; sbit A1=P2^6; sbit A2=P2^7; sbit P15=P1^5; bit ldelay=0; uchar t=0; void main(){ 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() interrupt 1{ t++;

if(t==20){t=0;ldelay=1;} TH0=0x3c;TL0=0xb0;} 显示屏

#include

#define uchar unsigned char

1212

uchar code table1[]=\"Welcome to use!!\"; uchar code table2[]=\"I am dongkaige\"; uchar code table3[]=\"B11050817\"; uchar code table4[]=\"LED blink\";

uchar code table5[]=\"Byebye!Thank you\"; unsigned char num; sbit lcdrs=P1^6; sbit lcdrw=P1^7; sbit lcden=P2^0; unsigned char count;

void delay(unsigned int time) {

unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); }

void write_com(uchar com)//写指令 { lcdrs=0; //选择写命令模式

P0=com; //将要写的命令字送到数据总线上 lcdrw=0;

delay(10);//稍做延时以待数据稳定

P2=0x40; //lcden=1;使能端给一高脉冲,因为初始化函数中已经将lcden置为0 delay(10);//稍做延时

P2=0x00; //lcden=0;将使能端置0以完成高脉冲 }

void write_data(uchar date) //写数据 { lcdrs=1; //选择写数据模式

P0=date; //将要写的命令字送到数据总线上 lcdrw=0;

delay(10);//稍做延时以待数据稳定

P2=0x40; //lcden=1;使能端给一高脉冲,因为初始化函数中已经将lcden置为0 delay(10);//稍做延时

P2=0x00; //lcden=1;将使能端置0以完成高脉冲 }

void init1() {

P2=0x00;

write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0e); //设置开显示,显示光标

write_com(0x06); //写一个字符后地址指针加1 write_com(0x01); //显示清0,数据指针清0 }

void led1()

1313

{

write_com(0x80);

for(num=0;num<16;num++) { write_data(table1[num]); delay(200); } }

void led2() {

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); }

}

void led3() {

write_com(0x80);

for(num=0;num<9;num++) { write_data(table4[num]); delay(200);}} void led4() {

write_com(0x80);

for(num=0;num<16;num++) { write_data(table5[num]); delay(200); }} void main() { P3=0xff; while(1)

{ switch(P3&0xff)

{ case 0xfb: init1();

led1(); break; case 0xf7: init1();

led3();break;

case 0xef:

init1();

led4(); break; case 0xdf:

1414

init1();

led2(); break; } }}

第5章 调试及故障分析

5.1 焊接准备阶段元器件测试、电路原理图故障分析

在焊接的时候由于比较紧张怕被烫伤了,所以我的手抖得比较厉害,后来向

老师请教了比较专业的焊接方法后,感觉焊接的时候就变得顺利多了。还有中间

我们发现我缺少了一个原件,就是102排电阻,当时手里有这种原件的老师不在,我就去到二楼的一个办公室里找来了这个东西,在PROTUCE中我把二极管的电阻给设置的太大了不能闪烁后来改为了330的就好了,

5.2 电路焊接过程中的故障分析

电路焊接的时候,我们的电络铁始终不热,我们把插座打开发现有问题,把

断开处重新连上后开始了焊接,焊接的过程中我们发现把锡条靠近络铁脚的时候他不容易融化,一旦融化又在络铁的上方,不会流到焊接空里面去,后来我们发现把锡条从侧面放在电络铁的下面时,很快可以融化而且不会粘在络铁脚上,很快而且焊接出来的没有虚焊的都呈锥形。但后来在测试的时候,发现无论怎么搞都不会亮,这才发现原来是在开关处的一个二极管给接反了,后来在老师的帮助下我们成功通过的检测。

5.3 程序编写过程中的故障分析

1.流水灯显示时刚好和程序设置的相反,通过改流水灯的端口就解决了。 2.数码管不能实现正常计数和显示,通过程序检查发现是断码出现错误,改正之后就好了。

3.在测试秒表的时候发现我们的秒表走的特别快,在一秒内走完了原本设置的60秒, 后来发现是我们判断是否定时到时的语句放错了地方,放在了60秒循环的外面造成的,后来把判断语句放在对p0口赋值的语句前问题就解决了!

5.4 实物演示效果

1515

1616

结论

在课程设计这段时间,我们组花费了一个下午焊接电路,两天的时间编程并查找错误,有时候一个小小的错误就可以花费很长的时间修改才能正确,有时候仅仅是因为一个标点符号的错误,就有可能导致程序出错,其错误位置提示的往往是其附近,所以修改时有点小困难,花费的时间也相对的增加了不少。反复理解电路原理图后,才能从中找到解决问题的方法,反复的测试,纠错,不仅提高了我对电路的理解,更深层次对理论的理解,也培养了我分析数字电路问题,解决问题的能力。

在这个过程中,我们要静下心来细心的分析问题,找出解决问题的方法。此次课程设计收获不小,用到了也认识了很多元件和芯片,并了解了相关的引脚及其功能,以及相关的判断规则。在这次的课程设计中所积累的实际开发经验和培养分析问题解决问题的能力是本次课设最大的收获。

这次的课程设计里面还有一些元件,我们老师只是在课堂上稍微提了一下,我们书上又没有这些软件的功能引脚,这就要求我们要有一定的自学能力,在LCD_1602的应用就是这种情况,我在网上找了很多关于LCD_1602的资料,还有很多在编程中要用到的东西,比如一些引脚的功能和在什么条件下才会实现那种功能,内内部电路的分析等等,总之这次的课程设计还让我们有了更强自学能力!

这次的课程设计,让我深深的体会到了团队合作的重要性。合作期间,分工明确,可以使我们更快、更好地完成我们的工作。同时,我学到了怎样在单片机开发板上进行实际测试,认识到理论联系实际的重要性。并且提高了我对硬件开发的兴趣,初步认识到了软件编程与硬件功能实现的结合点。在此期间,我们可以更好的知道自己的优势所在,把握好自己的优势,也可以知道自己的不足和缺陷,加以改正。

1717

谢辞

通过这次课程设计,我要向帮助我的指导老师舒老师和李老师表示衷心的感谢,在这次课程设计中,有不懂的地方您们总能不厌其烦的讲解,在我们犯错误的时候舒老师表现得不是大发雷霆,而是把我们带到一边安静得演示与讲解,让我感受到您们的和蔼可亲,对学生无私的关爱。同时也要感谢我的同学们,虽然我们编的程序不一样,但是当我遇到问题时,他们总能认真的帮我分析问题并耐心的跟我讲解。感谢老师您为我们提供了这次动手锻炼的机会,为同学们营造的浓郁的学习氛围以及在学习上提供的毫不吝啬的帮助!祝可爱的小伙伴们前程似锦,祝老师桃李满天下。

1818

参考文献

[1] 李蒙,毛建东. 单片机原理及应用[M]. 北京:中国轻工业出版社, 2010 [2] 林立,张俊亮 单片机原理及应用——基于Proteus和KeilC(第二版)

电子工业出版社 【3】谭浩强. C程序设计(第三版). 清华大学出版社. 2005、7

1919

2020

录附

因篇幅问题不能全部显示,请点此查看更多更全内容