《电子工程训练》课程实验报告Word文件下载.docx
《《电子工程训练》课程实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《《电子工程训练》课程实验报告Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
![《电子工程训练》课程实验报告Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/11b502fa-a8f5-4266-8635-22285a8b564b/11b502fa-a8f5-4266-8635-22285a8b564b1.gif)
2011年5月14日
基于AT89S52单片机的点阵显示与串口通信控制设计
1.设计要求
以AT89S52单片机为核心,设计、焊接并调试一个实际单片机控制系统,通过串口通信控制点阵显示预期的不同内容。
系统设计具体要求:
(1)51单片机最小系统
(2)点阵显示(三极管驱动方式)
(3)动态显示方式
(4)自定义点阵显示内容和具体显示方式
(5)串口通信(使用串口调试助手,通过计算机串口输入16进制数控制点阵显示对应内容)
2.设计分析及系统方案设计
围绕AT89S52单片机,把系统的设计划分为两部分:
硬件部分:
(1)设计并绘制原理图
(2)按照原理图焊接电路板
软件部分:
(1)编写实验程序
(2)系统调试
将单片机最小系统电路的P0口和P2口作为点阵控制端口,P0口进行逐列扫描输入字形,P2口进行逐行扫描。
单片机点阵显示系统通过MAX232电平转换电路与计算机连接,采用RS232C通讯协议。
系统总电路图为:
3.各功能模块硬件电路设计
各功能模块具体硬件电路如下:
(1)最小系统电路图为:
其中:
复位电路:
选用10K电阻和10μF电容
振荡电路:
根据实验要求,选择30pF电容12MHz晶振
(2)点阵系统电路图为:
(3)信号转换电路:
单片机系统使用的是TTL电平而串口输出的信号也是TTL电平,串行口通讯中一般使用的是RS232C通讯协议,两者的电平不相同,需要外接电路进行电平匹配。
解决方案:
MAX232芯片可完成TTL和RS-232C的双向电平转换。
4.系统软件设计
(1)点阵显示软件:
#define_OVER_C_
#include"
reg51.h"
over.h"
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharcodetable2[]=
{0x00,0x00,0x7f,0x08,0x08,0x08,0x7f,0x00,//H
0x00,0x00,0x7f,0x49,0x49,0x49,0x00,0x00,//E
0x00,0x40,0x40,0x7f,0x40,0x40,0x40,0x00,//T
0x04,0x08,0x30,0x50,0x50,0x30,0x08,0x04,//A
0x00,0x00,0x3c,0x42,0x42,0x3c,0x00,0x00//O
};
uintm,n,h;
voiddelay(uintz);
voidmain()
{
while
(1)
{
for(h=0;
h<
40;
h++)//控制显示字数(40/8=5个)
for(n=0;
n<
15;
n++)//控制帧移动速度
for(m=0;
m<
8;
m++)//显示1帧扫描(分8行,
P2=table1[m];
P0=0xff-table2[m+h];
delay
(2);
}
}
voiddelay(uintz)
uintx,y;
for(x=z;
z>
0;
z--)
for(y=110;
y>
y--);
流程图为:
等于5
(2)串口系统软件:
#define_1_C_
1.h"
unsignedchart;
ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharcodeS[]=
0x00,0x00,0x7f,0x41,0x41,0x22,0x1c,0x00,//D
0x00,0x7e,0x01,0x01,0x01,0x7e,0x00,0x00,//U
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodeM[]=
0x00,0x00,0x7f,0xd5,0x55,0x55,0x7f,0x00,//自
0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,//0
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,//8
0x00,0x0c,0x74,0x04,0x04,0x7f,0x04,0x00,//4
ucharcodeN[]=
0x00,0x00,0x7f,0x08,0x08,0x08,0x7f,0x00,//H
0x00,0x3e,0x41,0x41,0x41,0x41,0x3e,0x00,//O
0x00,0x00,0x00,0x00,0x00,0x00
ucharcodeH[]=
0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//2
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,//8
0x00,0x00,0x21,0x7f,0x01,0x00,0x00,0x00,//1
0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00,//9
0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,//7
voidschool(void)//学校缩写
{uintm,n,h;
24;
h++)//控制显示字数(24/8=3个)
10;
P2=table[m];
P0=0xff-S[m+h];
}
voidclass()//专业班级
P0=0xff-M[m+h];
voidname()//英文名字
P0=0xff-N[m+h];
voidnumber()//学号
72;
h++)//控制显示字数(72/8=9个)
P0=0xff-H[m+h];
{TMOD=0x20;
//定时器1工作于8位自动重载模式,用于产生波特率
TH1=0xFD;
//波特率9600
TL1=0xFD;
SCON=0x50;
//设定串行口工作方式
PCON&
=0xef;
//波特率不倍增
RI=0;
TR1=1;
{if(RI)
RI=0;
t=SBUF;
if(t==0x01)
school();
elseif(t==0x02)
class();
elseif(t==0x03)
name();
elseif(t==0x04)
number();
else{
P0=0x00;
P2=0x00;
}
delay(10);
未识别
识别
5.系统调试运行结果说明计分析
(1)系统运行的硬件环境:
80X86cpu电脑一台
(2)系统运行的软件环境:
MedWin(集成开发环境),SuperPro/Z(编程器),软件仿真KeilC51(C51编译器),8X8点阵字模提取软件
其中字符滚动的速度由软件中设置的计数初值给定,可以自由修改。
(3)实验结果:
点阵实验中,成功显示“HETAO”5个预设的字符,并实现滚动循环显示。
串口实验中,点阵显示“DUT”、“自0804”、“HETAO”、“200881197”四个预设字符串,接收串口“0x01”信号时,滚动显示“DUT”;
接收“0x02”信号时,滚动显示“自0804”;
接收“0x03”信号时,滚动显示“HETAO”;
接收“0x04”信号时,滚动显示“200881197”;
无输入时点阵全亮。
6.结论
此次实验电路的设计基本符合设计要求,焊接过程中难度不大,勇于动手就会熟能生巧。
其间应严格按照电路图连接,否则拆除时很麻烦。
在点阵显示过程中,能够滚动显示预设内容,但每次程序执行结束会出现一小段乱码,原因尚未找到,需要进一步的研究。
串口实验中,成功实现了通过串口发送16进制数控制点阵滚动显示4个不同的字符串,实验结果很完美。
通过改变P0口列扫描的代码,可以显示更多的文字图形。
参考文献
1《单片机原理与实例应用》清华大学出版社
作者:
万隆、巴奉丽、陈文刚、王玮等
2《单片机原理与应用实例仿真》北京航空航天大学出版社
李泉溪