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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于STC89C52单片机的实验系统开发与设计
洛阳理工学院
课程设计报告
课程名称单片机原理与应用
设计题目基于STC89C52单片机的实验系统开发与设计专业计算机科学与技术
班级B120505
学号
姓名
完成日期2014年6月27日
基于STC89C52单片机的实验系统开发与设计
摘要
STC单片机在8位的MCS51内核单片机行列中逐渐被认可,在单片机教学实验系统中普遍应用.由于STC单片机问世时间短,大部分写录器不能支持或仅支持它的部分功能.STC单片机在出厂时已经为用户写入程序做了充分的准备,在单片机内部设计了ISP在线下载模块,使得用户可以自行设计程序下载器.但其提供的PC 机程序下载软件只能通过Rs232串口下载程序,而目前一般的计算机特别是笔记本大多数没有配置RS232串行接口而只配置了USB串口.为此设计了STC单片机程序下载器,它利用F'1232BM组成串口转换器,将USB串口虚拟成RS232串121,解决了此问题。

TC89C52是S一种低功耗、高性能CMOS8位微控制器,具有以下标准功能: 8k 字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

本次课程设计就是利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台。

利用STC89C52单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,在Keil C环境下进行软件设计,主要包括流水灯、数码管显示以及LCD显示模块,在Protues中仿真成功,下载到电路板中验证成功。

实现流水灯的跳转显示流动,应用中断实现数码管60之内计数以及LCD显示不同字符的功能。

关键词:STC单片机,仿真设计,实验系统,计数器,串行通信
Experiment Platform Development Design Based on
STC Microcontroller
ABSTRACT
STC microcontroller gradually being recognized in the ranks of eight MCS51 microcontroller core, the teaching system in the SCM commonly used. STC microcontroller has been written for the user program at the factory made full preparations, the interior design of the microcontroller ISP online download module allows users to design their own program downloader. But it provides a PC download software only through Rs232 serial download, and in particular current general notebook computer is not configured for most RS232 serial interface and only equipped with a USB port. For this design the STC microcontroller program downloader, which uses F'1232BM composed of serial converter, USB to RS232 serial virtual string 121, solves this problem. S TC89C52 is a low-power, high-performance CMOS8 bit microcontroller with the following standard features: 8k bytes of Flash, 512 bytes of RAM, 32 digital I / O lines, Watchdog timer, built-in 4KB EEPROM, MAX810 reset circuit, three 16-bit timer / counter, four external interrupts, a 7-vector interrupt structure 4 (compatible with traditional 51 2 5 vector interrupt structure), full-duplex serial port. The curriculum design is the use of STC Series MCU microcontroller development as a software and hardware combination of single-chip experiment platform.
As the use of single-chip microcontroller STC89C52 develop a software and hardware platform combining single-chip experiment in Keil C environment for software design, including water lights, digital display and LCD display module, the simulation successfully Protues downloaded to successfully verify the circuit board. Jump to achieve water lights display flow achieved within the application interrupts the count, and 60 digital LCD display different character
.KEYWORDS: STC microcontroller, Simulation
design, Experiment platform, Counter, Serial communication
目录
前言 (1)
第1章实验平台概述 (2)
1.1 .............................................................. 设计题目
2
1.2 .................................................. 系统设计目的和内容
2
1.2.1..................................................... 设计目的
2
1.2.2..................................................... 设计内容
2
1.2.3..................................................... 设计要求
2
1.2.4..................................................... 设计步骤
2
第2章整体设计方案 (3)
2.1 ....................................................... 开发板整体外观
3
2.2 ........................................ 整板电路PROTUES仿真电路
4
2.3 ......................................................... 软件功能描述
4
2.4 ..................................... 仿真软件PROTUES中的效果图
5
第3章硬件电路设计 (7)
3.1两位一体共阴数码管 (7)
3.1.1.................................................. 数码管概述
7
3.1.2.............................................. 数码管内部结构
8
3.1.3............ 两位一体共阴数码管和74LS373锁存器接口电路
9
3.2 ........................................................ LCD1602液晶
9
3.2.1.......................................... LCD1602液晶简介
9
3.2.2...................................... L CD1602液晶引脚介绍
10
3.2.3................................. LCD1602液晶外围接口电路
10
3.3 串口通信 (11)
3.3.1................................................ 串口通讯概述
11
3.3.2........................................... MAX232接口电路
11
第4章软件设计 (12)
4.1程序整体流程图 (12)
4.2程序清单 (13)
第5章调试及故障分析 (20)
5.1 焊接准备阶段元器件测试、电路原理图故障分析 (20)
5.2 电路焊接过程中的故障分析 (20)
5.3 程序编写过程中的故障分析 (20)
5.4 实物演示效果 (21)
结论 (22)
谢辞 (23)
参考文献 (24)
附录 (26)
前言
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。

从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

随着电子技术的发展,单片机在电讯技术、工业控制、汽车自动化、家用电器等领域得到了广泛的应用,而单片机由于其实用性好、可靠性高、便于扩展等特点得到了广泛的应用。

为了更好的学习和应用单片机,可以将经常应用到的单片机外围电路集成到一个学习/开发板上以供使用者方便使用。

同时应提供常用的移植性较好的模块代码(本设计选用C作为源代码的编写工具)。

市场上现存的单片机开发板很多,因此,要求设计尽量能够达到资源丰富、易用性好、设计美观等特点。

而STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

本系统是基于STC89C52单片机的学习开发板,集成了单片机应用过程中常用到的硬件资源,数码管、LCD显示器、流水灯。

为学习和开发单片机产品提供平台。

第1章实验系统概述
1.1设计题目
基于STC89C52单片机的实验系统开发与设计
1.2系统设计目的和内容
1.2.1设计目的
利用学习的知识,编写不同模块的程序。

熟悉理论知识,复习与巩固所学习的知识,并且将所学到的东西,应用到实际的操作过程当中。

1.2.2设计内容
利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,主要包括以下内容:
1.电路原理图设计,主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计;
2.学习集成电路等芯片的焊接方法与技巧,进行实际元器件的识别,进行电路板焊接;
3.在Keil C环境下,进行软件设计。

主要包括流水灯、计数器、计数器、LCD 字符显示、键盘的控制等功能程序设计;
4.针对所开发的实验板,结合器件选择、原理图设计、硬件焊接、软件编程调试、软硬件联调等方面写出课程设计报告。

1.2.3设计要求
1.完成综合实验平台的电路结构分析,进行模块分解,掌握各部分电路的工作原理;
2.独立完成电路板的焊接,掌握故障排除方法,完成实验平台的硬件设计及开发;
3.结合Keil C软件在焊接无误的单片机实验平台上开发出流水灯、LCD显示模块,通信模块等程序设计;
4.按照要求撰写课程设计论文。

1.2.4设计步骤
1.研究讨论纸质电路图,弄清楚各个元器件的用途及可以实现的功能;
2.根据电路图在开发板上进行焊接;
3.在仿真软件上绘制仿真电路图;
4.根据要实现的功能编写程序,先在仿真软件上运行,无误的话下载到单片机上查看运行效果;
5.根据课程设计的要求撰写实验报告。

第2章整体设计方案2.1开发板整体外观
2.2整板电路PROTUES仿真电路
2.3软件功能描述
1.Protues
Protues软件是英国Labcenter electronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051,HC11PIC10/12/16/18/24/30/DsPIC33,AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MATLAB等多种编译.
超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,
可以方便地供WORD、POWERPOINT等多种文档使用。

支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型:如字符LCD 模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。

编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。

2. Keil C51 uVision4
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

2.4仿真软件PROTUES中的效果图
1.流水灯模块
2.LCD显示模块
3.计数器和定时器
第3章硬件电路设计
3.1两位一体共阴数码管
3.1.1数码管概述
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段发光二极管的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

3.1.2数码管内部结构
led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

颜色有红,绿,蓝,黄等几种。

led数码管广泛用于仪表,时钟,车站,家电等场合。

选用时要注意产品尺寸颜色,功耗,亮度,波长等。

下面将介绍常用LED数码管内部引脚图片。

3.1.3两位一体共阴数码管和74LS373锁存器接口电路
3.2LCD1602液晶
3.2.1LCD1602液晶简介
工业字符型液晶,能够同时显示16x02即32个字符。

(16列2行)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

其特性:
● 3.3V或5V工作电压,对比度可调
●内含复位电路
●提供控制命令如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
●有80字节显示数据存储器DDRAM
●内建有192个5X7点阵的字型的字符发生器CGROM
●8个可由用户自定义的5X7的字符发生器CGRA
3.2.2LCD1602液晶引脚介绍
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。

15脚背光正极,16脚背光负极。

3.2.3LCD1602液晶外围接口电路
3.3 串口通信
3.3.1串口通讯概述
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

它很简单并且能够实现远距离通信。

比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。

通信使用3根线完成,分别是地线、发送、接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但不是必须的。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

对于两个进行通信的端口,这些参数必须匹配。

3.3.2MAX232接口电路
第4
章软件设计4.1程序整体流程图
4.2程序清单
#include "reg51.h" unsigned char
led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//
流水灯花样 char
led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//LED 显示字模
unsigned char name_mod[]="wang zhen"; unsigned char num_mod[]="B12050510"; unsigned char count=0; unsigned char count1=0; sbit RS=P1^6;
sbit RW=P1^7; sbit E=P1^5; sbit P34=P3^4;
void delay(unsigned int count)//延时
1ms
{ unsigned char i;
while(count--)
for(i=0;i<120;i++); }
key() interrupt 0 //流水灯{ unsigned char i;
P2=0xff;
delay(500);
P2=0x00;
delay(500);
for(i=0;i<=7;i++){
P2=led[i];
delay(200);
}
P2=0xff;
delay(200);
for(i=7;i>0;i--)
{
P2=led[i];
delay(200);
}
P2=0xff;
delay(500);
P2=0x00;
delay(500);
P2=0xff;
for(i=0;i<=3;i++)
{
P2=0xE7;
delay(200);
P2=0xC3;
delay(200);
P2=0x00;
delay(200);
P2=0xff;
delay(200);
}}
unsigned char busy_check() //查忙函数{ unsigned char LCD_status;
RS=0;
RW=1;
E=1;
P2=0x40;
delay(2);
P2=0x00;
return LCD_status;}
void wcmd(unsigned char cmd) //写指令{ while((busy_check()&0x80)==0x80);
RS=0;
RW=0;
E=1;
P2=0X40;
P0=cmd;
delay(5);
P2=0x00;
delay(5);
}
void wdat(unsigned char dat)//写数据函数{ while((busy_check()&0x80)==0x80);
RS=1;
RW=0;
E=1;
P2=0x40;
delay(5);
P0=dat;
P2=0x00;
delay(5);
}
void Init_LCD()//初始化LCD
{ wcmd(0x38);//8位,2行显示,5*7点阵delay(1);
wcmd(0x01);//清屏
delay(1);
wcmd(0x06);//字符不动,光标右移一位
delay(1);
wcmd(0x0e);//开显示,有光标,字符不闪烁delay(1);}
void timer() interrupt 1 //计数器T0
{
P2=0x00; //判断送字模
count1++;
P0=led_mod[count1%10]; //求模
P2=0x20;
P0=led_mod[count1/10]; //整除
delay(1000);
}
void int1() interrupt 2 //LCD显示,外中断1 { unsigned char j;
Init_LCD();
wcmd(0x80+0x00);//从第一行第一列开始for(j=0;j<9;j++)
{wdat(num_mod[j]);}
wcmd(0x80+0x43); //从第二行第七列开始for(j=0;j<9;j++)
{wdat(name_mod[j]);}
}
void counter() interrupt 3 //定时器T1 { P2=0x00;
count++;
if(count==61)
count=0;
P0=led_mod[count%10];
P2=0x20;
P0=led_mod[count/10];
}
void main()
{ unsigned char mod[]="Welcome to test"; unsigned char mod1[]=" kaifaban"; unsigned char i;
P2=0x00;
Init_LCD();
wcmd(0x80+0x00); for(i=0;i<15;i++) {wdat(mod[i]);} wcmd(0x80+0x40); for(i=0;i<10;i++) {wdat(mod1[i]);} TR0=0;
TMOD=0x61;
TH1=0xff;
TL1=0xff;
IT0=1;
EX0=1;
ET1=ET0=1;
IT1=1;
EX1=1;
EA=1;
TR1=1;
while(1)
{if(P34==0) TR0=1; TR0=0;
}}
第5章调试及故障分析
5.1 焊接准备阶段元器件测试、电路原理图故障分析
在焊接前,准备好所需的元件以及焊接过程当中用到的工具。

然后,了解各个元件的功能,了解功能之后,看懂电路原理图。

知道整个电路正常工作的原理,为后面电路焊接过程中,出现故障做准备。

5.2 电路焊接过程中的故障分析
在电路的焊接过程当中,根据相应的步骤,焊接相应的元件。

现焊接小部件,然后焊接大部件。

在焊接有极性的元件的时候,特别注意正负极之分,比如:发光二极管,三极管,电容等。

还有在焊接芯片的时候,注意缺口对应缺口,在给底座上面插芯片的时候,注意不要插断芯片的引脚。

而且在焊接的过程当中,注意是否将整个焊盘焊接完整,有没有短路、断路的地方。

5.3 程序编写过程中的故障分析
编写相应的程序的过程当中,首先了解主要元件,工作的原理。

比如说LCD1602液晶显示器,根据这个元件的功能,编写相应的程序。

在用中断实现电路的控制中,了解对应的中断号,注意
个变量的定义,函数名的定义。

函数之间的相互调用关系。

定时/计数器在使用的过程当中计算相应的初值。

5.4 实物演示效果
结论
这一次经过一周的的课程设计,我的收获很多。

我们根据电路原理图以及相关的资料编写程序。

在编写程序的过程当中,我们首先需要了解,整个电路的工作原理。

查找相关元件的资料。

只有真正搞懂整个电路的原理之后,才有可能顺利的编写出一个完整的电路图。

电路中有五个按钮,一个是复位按钮,这个按钮主要用于硬件复位,剩余的四个为:外部中断0、外部中断1、内中断T0、内中断T1在编写程序的过程当中,这四个按钮为功能按钮,所以为电路需要编写四个功能。

根据要求分别为:流水灯、LCD显示、计数器、定时器。

在焊接电路版的过程当中,首先了解所有的元件的属性。

查阅色环电阻的资料,根据不同的颜色,不同的环数代表着不同的阻止,在电路板上面,有着不同的位置。

有些电容,分正负极,在焊接的过程中,要注意不要将正负极颠倒,导致电路不能正常工作。

注意发光二极管的正负极的对应,以及元件当中其它具有极性的元件。

在将芯片的焊接过程当中,注意首先要焊接芯片的底座,缺口的一面,相互对应,插芯片的时候,也是缺口与缺口对应,防止将芯片插反。

程序编写完成之后,进行调试,在Protues仿真软件当中,调试完成之后,将程序生成的hex文件,用下载程序软件STC-ISP将程序下载到焊接完成的电路板,下载完成之后,按对应的按键,看最后的效果。

这一周的课程设计,我体会整个单片机开发板的焊接,和程序设计编写的过程。

这个过程当中有环节,我学到很多东西。

在焊接的过程当中,我们三个人组成一个小组,我们三个人负责不同的环节,根据我们自己的特长,进行分工。

其中一个,了解各个元件的资料,计算每个色环电阻的阻值;剩余两个进行焊接电路板。

编写的程序的过程中,遇到问题,相互请教。

懂电路原理的图,给我们讲解电路的原理。

整个过程当中体会到了,整个团队合作的重要性。

我也很感谢我的组员对我的帮助。

谢辞
这一次的单片机的课程设计,对我们来说是一次很好的训练。

通过这次实验,我们在软件和硬件的操作能力,都有所提高。

在电路的焊接过程当中,感谢舒老师和李老师对我们的指导。

我们在焊接电路板的时候,出现漏焊,或者焊接错误两位老师帮我们纠正、查找问题的关键点所在,并且教授我们方法。

等焊接结束之后,舒老师给我们检查问题,并且补焊与指导。

在课程设计的末尾,有李老师指导我们进行程序以及电路原理的答辩过程,并且解决我们有所疑惑的过程。

一周的课程设计当中,我的组员对我的帮助也很大。

我们在一起互相学习,互相解决问题,在这个团队当中我感受到了,我们团队不可忽视的力量。

参考文献
[1]李蒙,毛建东. 单片机原理及应用[M]. 北京:
中国轻工业出版社, 2010
附录。

相关文档
最新文档