武汉理工大学单片机课程设计

更新时间:2024-06-18 21:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉理工大学《单片机实习报告书》

目 录

摘 要 ........................................................................................................................... - 2 - Abstract ........................................................................................................................ - 3 - 1.基本原理及电路图 .................................................................................................... - 4 - 2.硬件电路原理与设计................................................................................................. - 5 -

2.1复位电路 ........................................................................................................ - 5 -

2.1.1上电复位 .............................................................................................. - 5 - 2.1.2按键复位 .............................................................................................. - 5 - 2.2振荡电路 ........................................................................................................ - 6 - 2.3数码管显示电路 .............................................................................................. - 7 - 2.4串口通信电路 ................................................................................................. - 9 - 2.5矩阵键盘电路 ................................................................................................- 10 - 2.6 温度检测模块................................................................................................- 12 - 3 软件设计 .................................................................................................................- 13 -

3.1软件介绍 .......................................................................................................- 13 -

3.1.1设计软件Protel..................................................................................- 13 - 3.1.2程序编写软件Keil ..............................................................................- 13 - 3.1.3仿真软件Proteus ................................................................................- 13 - 3.2软件设计原理分析 .........................................................................................- 14 -

3.2.1接收机流程图 ......................................................................................- 14 -

3.2.2 接收机程序流程图 ..............................................................................- 15 -

4.仿真结果与实物运行................................................................................................- 17 -

4.1温度检测和串口仿真结果 ...............................................................................- 17 - 4.2数字移位和串口仿真结果 ...............................................................................- 17 - 4.3温度检测实物运行结果 ..................................................................................- 17 - 4.4 数字移位实物运行结果..................................................................................- 18 - 4.5 串口收发实物运行结果..................................................................................- 18 - 5小结与体会 ..............................................................................................................- 20 - 参考文献.....................................................................................................................- 21 - 附录1:最小系统原理图 .............................................................................................- 22 - 附录2:C语言源程序 .................................................................................................- 23 - 附录3:元件清单 .......................................................................................................- 30 - 附录4:实物照片 .......................................................................................................- 30 - 附录5:实习日记 .......................................................................................................- 31 -

- 1 -

武汉理工大学《单片机实习报告书》

摘 要

单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。单片机最小系统电路板在单片机开发市场和大学生电子设计方面十分流行。本次课程设计包括STC89S52单片机最小系统包括复位和时钟电路及供电系统、4×4矩阵键盘、独立6个8段LED数码管显示电路以及DS18B20温度传感器。利用相关设计软件进行原理图设计利用Keil软件编程以及Proteus软件仿真借此巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。

关键字:单片机 最小系统 矩阵键盘 LED显示 DS18B20温度传感器 Protues keil

- 2 -

武汉理工大学《单片机实习报告书》

Abstract

MCU minimum system, regardless of the singlechip novice staff or staff development ,who can use minimum system program for industrial control,has very important sense. MCU minimum system board in the MCU develop market and college students electronic design is very popular. The curriculum design, including STC89S52MCU minimum system ( including a reset and clock circuit and power supply system ),4 x4 matrix keyboard, the independent 6 LED digital tube display circuit and a DS18B20 temperature sensor. Using circuit design software schematic design, using Keil software and Protues software simulation, we consolidate the MCU application, analog circuit, digital circuit course and learn all kinds of engineering software use.

Key Words:MCU

minimum system matrix keyboard LED digital tube

display DS18B20 temperature sensor Keil Protues

- 3 -

武汉理工大学《单片机实习报告书》

1.基本原理及电路图

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、按键输入、显示输出等。单片机接口电路主要用来连接计算机和其它外部设备。

本次设计主要完成的扩展电路包括矩阵键盘、数码管显示电路、温度检测电路和串口电路。其原理框图如下图1.1所示:

图1.1 系统原理框图

本设计中选用的微处理芯片是STC89C52,它是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

- 4 -

武汉理工大学《单片机实习报告书》

2.硬件电路原理与设计

硬件电路主要由复位电路、振荡电路、数码管显示电路、矩阵键盘电路和串口电路等组成。

2.1复位电路

单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。

单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。

复位电路由按键复位和上电复位两部分组成。。

2.1.1上电复位

STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

2.1.2按键复位

按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。电路图如图2.1。

- 5 -

武汉理工大学《单片机实习报告书》

图2.1 按键复位电路

2.2振荡电路

单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。 STC89C51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡

- 6 -

武汉理工大学《单片机实习报告书》

电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。其电路原理图如2.2所示。

图2.2 晶体振荡电路

2.3数码管显示电路

LED数码管显示是利用半导体发光制成条形的发光二极管,封装在一起组成数字或其他符号形状。数码管根据公共端不同,分为共阴极和共阳极两种形式。

图2.3 共阴极数码管内部电路

- 7 -

武汉理工大学《单片机实习报告书》

图2.4 共阳数码管电路内部电路

图2.5 共阴数码管

根据设计需要,本次选用共阴极数码管。由于一个数码管不能实现多位数显示,同时从节省I/O端口考虑,结合数电知识,利用两片74HC573扩展单片机的IO口,两片74HC573的输出分别接6位7段共阴数码管的段选端和公共端。

74HC573是8数据锁存器。主要用于数码管、按键等等的控制,其输出受输出允许端OE和锁存允许端LE的控制,当LE为高时锁存器输出为高阻态,当OE为低,LE也为低时,输入端的信号输出到输出端。在这里,使用两片74HC573的目的是为了扩展IO,达到时分复用单片机P0口的目的。输出端与6位7段阴数码管相连,共同组成数码管显示电路。电路图如图2.6所示。

- 8 -

武汉理工大学《单片机实习报告书》

图2.6 数码管显示电路

2.4串口通信电路

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

MAX232是电平转换芯片。1970年,美国电气学会规定“RS232”串口通信协

- 9 -

武汉理工大学《单片机实习报告书》

议。规定逻辑“1”,-5— -15V;逻辑“0”,+5— +15V 。噪声容限为2V。要实现利用串口与单片机进行通信,就要进行电平转换,把标准转化成单片机可以识别的。MAX220–MAX249都是电平转换芯片,在单片机最小系统中,使用MAX232。其电路原理图如图2.7所示。

图2.7 串口电路

2.5矩阵键盘电路

从编码的功能上,键盘又可以分成全编码键盘和非编码键盘两种。全编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由全编码电路产生一个唯一对应的编码信息(如ASCII码)。非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序转换成相应的编码信息。非编码键盘的速度较低,但结构简单的,并且通过软件能为某些键的重定义提供很大的方便。 编码键盘本身带有实现接口主要功能所需的硬件电路,不仅能自动栓测被按下的键并完成去抖动防串键等功能,而且能提供与被按键功能对应的键码(如ASCⅡ码)送往CPU,而非编码键盘只简单的提供按键开关的行列矩阵,有关键的识别,键码的输入与确定,以及去抖动等功能场由软件完成。

在这里,我们所需要的按键完成的功能就只是简单的功能切换和数字输入的

- 10 -

武汉理工大学《单片机实习报告书》

图3.2 接收机主程序流程图

同发送机一样,在接收机中,程序开始时,进行T1和串口的初始化,然后开启中断,执行显示函数和等待串口中断。

接收机中断服务程序如图3.3所示。

图3.3 接收中断程序流程图

- 16 -

武汉理工大学《单片机实习报告书》

4.仿真结果与实物运行

4.1温度检测和串口仿真结果

图4.1 温度检测仿真图

4.2数字移位和串口仿真结果

图4.2 数字移位仿真图

4.3温度检测实物运行结果

图4.3 温度检测实物运行结果

- 17 -

武汉理工大学《单片机实习报告书》

4.4 数字移位实物运行结果

图4.4 实物运行结果

4.5 串口收发实物运行结果

图4.5 温度检测串口发送实物运行结果

- 18 -

武汉理工大学《单片机实习报告书》

图4.6 数字移位串口发送实物运行图

- 19 -

武汉理工大学《单片机实习报告书》

5小结与体会

这次为期两周的课程设计让我受益匪浅。以前对单片机更多的只是一些感性的,理论上的认识,自己真正动手的时候,才真正理解到其中的精华所在。 本次设计让我更好的了解如何应用单片机的定时器计数器模块,灵活应用IO口。其中最重要的是分析问题解决问题的能力,在我看来,写程序并不难,重要的是把程序优化,无论是在节省硬件资源,还是提高数据的准确度来看,都需要下一些功夫把它做到最好。

与此同时,我们进一步加强了自己查找资料的自学能力,每天都遨游在各种专业书籍和文献之中,不断学习,不断提炼。特别是对专业软件的学习和使用,同时也大大加强了我们编程的能力。后期在程序调试方面,同学们互相讨论,互相解决问题,现在想起来还意犹未尽,着实令人难忘。

- 20 -

武汉理工大学《单片机实习报告书》

参考文献

[1] 谢自美. 电子线路设计·实验·测试(第三版).武汉:华中科技大学出版社 [2] 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,2008 [3] 刘教瑜. 单片机原理及应用.武汉理工大学出版社,2011 [4] 张东亮. [5] 郭天祥. 51

单片机原理与应用.人民邮电出版社,2009 单片机C语言教程.电子工业出版社 - 21 -

武汉理工大学《单片机实习报告书》

附录1:最小系统原理图

图1 最小系统原理图

- 22 -

武汉理工大学《单片机实习报告书》

附录2:C语言源程序

发送机主程序: #include

#define NO_DEF

20

//声明无效键值 //声明显示数字的标志 //声明显示温度的标志

#define SHOW_NUM 1 #define SHOW_TEP 0 #define CLEAR 11 #define

//定义清0键

//定义功能切换键

SWITCH 10

typedef unsigned char uchar; typedef unsigned int uint;

#define SM_PORT P0 #define KEY P3

//声明数码管数据端口 //声明矩阵键盘端口

sbit dula = P2^6; sbit wela = P2^7;

//声明数码管段选端口 //声明数码管位选端口

sbit DS = P2^2; //声明温度传感器的数据端口

uint temp; // variable of temperature ,用于接收来自DS18B20传回的温度数据 uint key_value=20; uchar show_flag=SHOW_TEP; uchar send_cnt=0;

uchar *s;

uint tep_index[4]={0,0,0,0};

//温度索引,因为用前4位数码管显

- 23 -

武汉理工大学《单片机实习报告书》

示温度值,后两位分别显示-C,故温度索引之定义了4位 uchar tem_value[6]={0x3f,0xbf,0x3f,0x3f,0x40,0x39}; 的,数码管显示码

uint num_index[6]={13,13,13,13,13,13}; uchar num_value[6]={0,0,0,0,0,0}; 显示码值

unsigned char code table[14]={0x3f,0x06,0x5b,

void delayms(uint count); void key_scan();

void display(uchar ch[6]);

void num_shift(uint *num,uint new_key_value); void dsreset(void); bit tmpreadbit(void); uchar tmpread(void);

void tmpwritebyte(uchar dat); void tmpchange(void); void tmp();

void toTmpIndex(uint *index);

void indexToValue(uint *index,uchar *value,int flag); void shut_down();

- 24 -

//温度值对应

//数字索引

//要显示的数字对应的数码管

0x4f,0x66,0x6d, 0x7d,0x07,0x7f, 0x6f, //数字:0——9

0x39, //字母:C 数组第10个字符 0x40, //字符:- 数组第11个字符 0x80, //字符:. 数组第12个字符 0x00 //无显示 数组第13个字符 };

武汉理工大学《单片机实习报告书》

void main() {

TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; SCON = 0x40; EA = 1; PCON = 0x80; ES = 1; TR1 = 1; while(1) {

key_scan(); delayms(1);

if(key_value==SWITCH)

//检测功能切换键

//开启定时器1,开始发送数据

//串口波特率加倍

//设置串口的工作方式为方式1

//设置定时器的工作方式为方式2

//设置波特率为19200

是否被按下

{ }

switch(show_flag) {

case SHOW_NUM:

//key_scan();

//检测数字键是否被按

shut_down(); key_value=NO_DEF;

//将键值赋值为无效值

if(show_flag==SHOW_TEP)

show_flag=SHOW_NUM;

else

show_flag=SHOW_TEP;

if(key_value<=9)

- 25 -

武汉理工大学《单片机实习报告书》

}

{ }

if(key_value==CLEAR) { }

indexToValue(num_index,num_value,SHOW_NUM); s = num_value; //display(num_value); key_value=NO_DEF; break;

//将键值赋值为无效值

uchar i=6; while(i>0)

num_index[--i] = 13;

//检测清0键是否按下

num_shift(num_index,key_value);

case SHOW_TEP:

tmpchange(); tmp();

toTmpIndex(tep_index);

indexToValue(tep_index,tem_value,SHOW_TEP); s = tem_value; //display(tem_value); break;

default: show_flag=SHOW_TEP;

break;

//delayms(1); display(s);

- 26 -

武汉理工大学《单片机实习报告书》

}

}

SBUF = 0xee; while(!TI); TI = 0;

//发送帧同步信号

while(send_cnt<6) { }

send_cnt = 0;

//清空发送计数器

SBUF = s[send_cnt++]; while(!TI); TI = 0;

//发送数据

//等待发送完成 //清空发送标志

接收机主程序与中断服务程序: #include

#define SM_PORT P0 sbit dula = P2^6; sbit wela = P2^7;

#define uchar unsigned char #define uint unsigned int

uchar receive_cnt = 0; uchar r_syn_code = 0x00;

//接收帧同步码

//声明数码管数据端口

//声明数码管段选端口 //声明数码管位选端口

uchar receive[6] = {0x3f,0x06,0x5b,

0x4f,0x66,0x6d,};

//接收数据缓冲数组,

初始化什么也不显示

- 27 -

武汉理工大学《单片机实习报告书》

void delayms(uint count); void display(uchar ch[6]); void main() { }

void Re()interrupt 4 //using 0 {

TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; SM0=0; SM1=1; REN=1; EA = 1; PCON = 0x80; ES = 1; TR1 = 1; while(1) { }

//设置定时器的工作方式为方式2

//设置波特率为19200

//串口波特率加倍

//开启定时器1,开始发送数据

display(receive);

RI = 0;

if(r_syn_code == 0xee) { }

if(receive_cnt == 0)

r_syn_code = SBUF;

- 28 -

//检测到帧同步码:0xee

receive[receive_cnt]=SBUF; receive_cnt++;

//开始接收数据

//数据开始,先检测同步码

武汉理工大学《单片机实习报告书》

if(receive_cnt==6) //一帧数据接收完成,将接

收计数器清0,同时清除同步码标志 { receive_cnt = 0; r_syn_code =0x00;

}

}

- 29 -

武汉理工大学《单片机实习报告书》

附录3:元件清单

序 号 1 2 3 4 5 6 7 8 9 10 11 名称 铜板 数量 2块 表1 元件清单表

单片机STC89C52 晶振12MHz 30PF瓷片电容 10k/0.25W电阻 10uF/16V电解电容 2k/0.25W电阻 10k/9脚排阻 5V/500mA直流电源 74HC573 MAX232 104电容 1片 1个 2个 2个 1个 1个 1个 1个 2片 1片 5个

附录4:实物照

12 13 排针、按钮、LED、导线等 若干 片

图2 实物图

- 30 -

武汉理工大学《单片机实习报告书》

附录5:实习日记

表2 实习日记表 日期 2012.12.17 2012.12.18 2012.12.19 2012.12.20 2012.12.21 2012.12.22 2012.12.23 2012.12.24 2012.12.25 2012.12.26 2012.12.27 2012.12.28 2012.12.29

安排 方案设计 方案设计 硬件设计 硬件设计 软件设计 软件设计 软件设计 电路板焊接 电路板焊接 系统调试 系统调试 系统调试 答辩 - 31 -

武汉理工大学《单片机实习报告书》

附录5:实习日记

表2 实习日记表 日期 2012.12.17 2012.12.18 2012.12.19 2012.12.20 2012.12.21 2012.12.22 2012.12.23 2012.12.24 2012.12.25 2012.12.26 2012.12.27 2012.12.28 2012.12.29

安排 方案设计 方案设计 硬件设计 硬件设计 软件设计 软件设计 软件设计 电路板焊接 电路板焊接 系统调试 系统调试 系统调试 答辩 - 31 -

本文来源:https://www.bwwdw.com/article/eiq3.html

Top