资源描述
JIU JIANG UNIVERSITY
《单片机原理和应用》大作业
题 目 单片机和上位机通信系统设计
院 系 信息科学和技术学院
专 业 计算机应用设计
姓 名
班级学号
指导老师
12月14
信息科学和技术学院
单片机大作业任务书
作业名称
基于AT89C52单片机和上位机通信系统设计
姓 名
院(系)
班级
专业
学号
电话
QQ号
信息学院
计算机应用技术
1、设计任务: 设计一个基于AT89C52单片机应用系统
2、设计要求
(1)能够由上位机经过串口操作单片机模块。
(2)利用单片机本身功效实现通信。
完成时间
-第一学期
目 录
一、摘要································································4
二、总体方案设计和论证··················································5
1、设计·····························································5
2、框图设计·························································5
3、知识点 ··················································5
三、系统硬件设计···················································7
1、电路原理图···················································
四、系统软件设计···················································11
五、系统硬件PROTEUS仿真原理图···································13
六、系统PROTEUS运行情况图 ···························13
七、心得体会··································································18
八、致谢··································································2
摘要
本文介绍了一个基于AT89C52 单片机和上位机通信系统, 并对其工作原理及软、硬件设计和实现方法进行了具体叙述。
在单片机输入输出控制中,除直接上小键盘和LCD显示等方法外,通常全部经过
串口和上位机PC进行通信,后面一个方法因为能实现远程控制而且PC机拥有强大数据处理功效和友好控制界面所以显得尤为有用。此系统能够由上位机控制经过串口操作
单片机模块
本单元就是来完成由上位机经过串口控制来实现以发光二极管发光状态模拟开关电路
通断,用上位机DOS命令对其进行控制
经过此次作业能够愈加牢靠掌握单片机应用技术,增强动手能力、硬件设计能力和软件设计能力。
关键词:AT89C52; 上位机,单片机
二.总体方案论证和设计
1设计
本论文是设计一基于AT89C52单片机应用系统,能够由上位机经过串口操作控制单片机模块以发光二极管发光状态模拟开关电路通断,用上位机DOS命令来控制
2框图设计
基于AT89C52单片机和上位机通信系统设计由电源电路,单片机主控电路,按键控制电路数码管控制对像和上位机接口组成,系统框图图所表示
三 知识点
本项目需要经过学习和查阅资料,掌握和了解以下知识:
a +5V电源原理及设计
b 单片机复位电路工作原理及设计
c 单片机晶振电路工作原理机设计
d 单片机和上位机通信接口电路设计
e 发光二极管特征
f AT89C52单片机引脚
g 单片机汇编语言机程序设计
四.系统硬件设计
电路原理图
基于AT89C52单片机和上位机通信系统设计原理图图19-2所表示。电源电路为单片机和其它模块提供标准电源。晶振模块为单片机提供时钟标准,使系统各部分能协调工作。复位电路模块为单片机提供复位功效。单片机作为主控制器,依据输入信号对系统进行对应控制处理。9针接口电路和上位机接口相连实现上位机和单片机之间通信。发光二极管是单片机控制控制对象实际应用中,它连接对应光电隔离和驱动电路。
五.系统软件设计
程序步骤图图19-3所表示,其中初始化关键是对串口工作方法等设置
程序清单:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
sbit d = P3^7;
//--------------------------------------
say_CR_LF()
{
SBUF = 13; while (TI == 0); TI = 0;
SBUF = 10; while (TI == 0); TI = 0;
}
//--------------------------------------
say_yeah()
{
SBUF = a; while (TI == 0); TI = 0;
SBUF = ','; while (TI == 0); TI = 0;
SBUF = ' '; while (TI == 0); TI = 0;
SBUF = 'y'; while (TI == 0); TI = 0;
SBUF = 'e'; while (TI == 0); TI = 0;
SBUF = 'a'; while (TI == 0); TI = 0;
SBUF = 'h'; while (TI == 0); TI = 0;
SBUF = '!'; while (TI == 0); TI = 0;
say_CR_LF();
}
//--------------------------------------
say_hello()
{
SBUF = 'H'; while (TI == 0); TI = 0;
SBUF = 'e'; while (TI == 0); TI = 0;
SBUF = 'l'; while (TI == 0); TI = 0;
SBUF = 'l'; while (TI == 0); TI = 0;
SBUF = 'o'; while (TI == 0); TI = 0;
SBUF = '!'; while (TI == 0); TI = 0;
say_CR_LF();
}
//--------------------------------------
void init()
{
SCON = 0x50; //设置串口通信方法1, 许可接收
PCON &= 0x7F;
TMOD = 0x20; //设置T1定时方法2
TH1 = 0xfd; //
TL1 = 0xfd;
TR1 = 1; //开启T1
ES = 1; //开串口中止.
EA = 1; //开总中止.
say_hello();
}
//--------------------------------------
void delay(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}
//--------------------------------------
void main()
{
init();
TI = 1;
a = '4';
while(1) {
if(a == '1') {
d = 0; delay(400);
d = 1; delay(400);
}
else if(a == '2') {
d = 0; delay(200);
d = 1; delay(200);
}
else if(a == '3') {
d = 0; delay(100);
d = 1; delay(100);
}
else if(a == '4') {
d = 1;
} } }
//--------------------------------------
void ser() interrupt 4
{
if (TI == 1) TI = 0;
if (RI == 1) {
RI = 0;
P0 = SBUF;
a = SBUF; //中间变量.
say_yeah();
} }
六.系统硬件PROTEUS仿真原理图
七.系统Proteus仿真运行情况图
显示开始测试界面
输入123
输入879
八.致谢
论文写作是枯燥艰辛而又富有挑战。老师谆谆诱导、同学出计划策及家长支持激励,是我坚持完成论文动力源泉。在此,我尤其要感谢我导师严青老师。从论文选题、文件采集、框架设计、结构布局到最终论文定稿,从内容到格式,从标题到标点,全部她费尽心血。没有严青老师辛勤栽培、孜孜教育,就没有我论文顺利完成。
感谢601寝室各位同学,和她们交流使我受益颇多。最终要感谢我家人和我好友们对我了解、支持、激励和帮助,正是因为有了她们,我所做一切才更有意义;也正是因为有了她们,我才有了追求进步勇气和信心。
我很真诚感谢一直来帮助我做这个作业老师和同学,谢谢!
展开阅读全文