基于单片机流水灯设计Word文档格式.docx
- 文档编号:6789010
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:26
- 大小:618.74KB
基于单片机流水灯设计Word文档格式.docx
《基于单片机流水灯设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机流水灯设计Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
3.1小组成员及其学号21
3.2本人工作任务说明21
第4章实习心得21
参考文献22
第1章基础实验报告
1.1设计题目
1.2工艺流程
1.3设计任务
基于AT89C51单片机来设计一款简单的流水灯。
结合Uvision3和ISIS7Professional这两款软件来设计和模拟。
利用51单片机来控制发光二极管的点亮和熄灭,主要实现延时控制和循环移位。
1.4软件使用指南
一、进入Keil
双击桌面KeiluVision3图标,或者“开始”→“程序”→“KeiluVision3”。
二、工作界面
图1.4.1
(1)Keil工作界面
三、建立工程
1.点击“Project”→“NewProject”。
如图1.4.1
(2)、(3)所示。
在弹出的窗口选择工程要保存的路径,输入工程文件名,然后点击“保存”按钮。
图1.4.1
(2)建立工程截取图
图1.4.1(3)建工程菜单栏
2.在弹出的对话框要求选择单片机的型号,因为51内核单片机具有通用性,所以我们任选一款89C52就行。
在这里我们选择Atmel的89C52或89C51,然后点击“确定”按钮。
如图1.4.1(4)所示。
图1.4.1(4)建工程元件选择
至此,我们已经建立一个工程,但工程中海没有任何文件及代码。
下面我们学习如何加载文件。
四、添加文件及代码
1.添加代码到文件。
点击“File”→“New”或者点击
来新建文件。
新建文件后,窗口界面如图1.4.1(5)所示。
图1.4.1(5)新建文件
2.在当前编辑框中输入程序,程序输入完毕后,如图1.4.1(6-1)所示。
图1.4.1(6-1)编写程序
3.点击“File”→“Save”或者点击
,弹出窗口如图所示,在“文件名”处输入要保存的文件名(例:
pmd.c),必须输入正确的扩展名(如果用C语言编写程序,则扩展名必须是.c;
如果用汇编语言编写程序,则扩展名必须是.asm)。
这里的文件名不一定和工程名相同,可以随意填写文件名,然后单击“保存”按钮。
看到图1.4.1(6-2)。
此时这个新建文件与我们刚刚建的工程还没有直接联系。
图1.4.1(6-2)保存程序
4.添加文件到工程
单击“Target1”前面的“+”号,然后右键单击“SourceGroup1”,选择“AddFilestoGroup‘SourceGroup1’”,如图1.4.1(7)所示。
在弹出对话框中,选中pmd.c,单击“Add”按钮,再单击“Close”按钮,然后再单击左侧“SourceGroup1”前面的“+”号,屏幕窗口如图1.4.1(8)所示。
这时,源代码文件就与工程关联起来了。
图1.4.1(7)加载程序
图1.4.1(8)加载完毕
五、编译、连接
1.点击“Project”→“Rebuildalltargetfiles”或者点击
。
信息输出窗口中显示了编译过程和编译结果,如图1.4.1(9)、(10)所示。
如果源代码中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到“”pmd”-0Error(s),0Warning(s).”的结果。
图1.4.1(9)编译
图1.4.1(10)编译结果
六、生成HEX文件
单击“Project”→“OptionsforTarget‘Target1’”或者单击
,弹出窗口如图1.4.1(11),选择“Output”,然后选中“CreateHEXFile”,使程序编译后产生HEX代码,供下载器下载到单片机中。
再次单击
,编译工程,编译过程和编译结果如图1.4.1(12)所示。
我们发现编译过程多出一行“creatinghexfilefrom“pmd”…”。
当创建并编译一个工程时,生成的HEX文件名与工程名是相同的。
现在,我们就可以把HEX文件加到单片机内使用了。
图1.4.1(11)
图1.4.1(12)
1.5硬件电路
1.5.1元件清单
元件名称
所属类
所属子类
AT89C51
MicroprpcessorICs
8051Family
CAP
Capacitors
Generic
CAP-ELEC
CRYSTAL
Miscellaneous
-----
RES
Resistors
LED-red
Oproeletronics
LEDs
1.5.2电路原理图
1.6程序设计
1.6.1源程序
#include<
AT89X51.h>
stdio.h>
#defineucharunsignedchar
ucharbianma[8]={0x80,0x40,0x20,0x10,0x08,0X04,0X02,0X01};
voidmain()
{
inti,j,k;
while
(1)
{for(i=0;
i<
8;
i++)
{
for(j=110;
j>
0;
j--)
for(k=110;
k>
k--);
P2=bianma[i];
}
}
1.6.2调试与仿真
1.7成果展示
第2章提高设计报告
2.1设计题目
基于单片机与上位机的通信系统
2.2设计任务
利用uvision软件设计实现单片机和上位机(即计算机)之间的通信系统。
要求计算机发送数据给单片机,单片机通过数码管现实,并且能反馈信息给单片机。
2.3设计基本原理
2.3.1串行通信的基本原理
串行通信是指数据按位顺序传送的通信。
串行数据传送的特点是:
通
信线路简单,最多只需一对传输线即可实现通信,成本低但速度慢,其通信线路既能传送数据信息,又能传送联络控制信息;
它对信息的传送格式有固定要求,具体分为异步和同步两种信息格式.与此相应有异步通信和同步通信两种方式;
在串行通信中,对信息的逻辑定义与TTL不兼容,需要进行逻辑电平转换:
计算机与外界的数据传送大多是串行的,其传送的距离可以从几米到几千公里。
单片机中使用的串行通信通常都是异步方式的。
2.3.2串行通信的基本方式
1.单片机串行口有四种不同的工作方式:
方式0:
移位寄存器输入/出方式,波特率固定为:
fosc/12。
方式1:
10位UART(通用异步接口电路),一帧数据包括1位起始位(0),8位数据位和1位停止位
(1)。
波特率可变,公式为:
其中X为定时器T1的初值,当然我们一般都是先确定波特率然后算初值的,所以我们更想知道X等于多少。
把上面的式子变一下就可以得到初值X了:
方式2/3:
这两种方式都是11位的UART,它们比方式1多了一个第9位数据。
他们不同的是:
方式2波特率固定为fosc/32或fosc/64,由SMOD位决定,方式3的波特率同方式1。
2.本实验中采用方式1,波特率为9600(计算机默认值),根据波特率算出初值X=253(定时器T1工作方式2)。
我们以9600的波特率循环发送和接收数据。
2.3.3通信中数据的传送方式
通常在串行通信中。
数据在两个站之间是双向传送的,既可以A站作
发送端,B站作接收端:
也可以B站作发送端,A站接收端。
根据具体的需要,又可分为半双工(HalfDuplex)和全双工(FullDuplex),半双工只有一条传输线,尽管传输也可以双向进行,但每次只能有一个站发送,另一个站接收。
即可以是A发送到B,也可以是B发送到A,但A,B不能同时发送。
当然也不能同时接收。
而全双工有两条传输线,因此两个站既可以同时发送,又可以同时接收,或者说一个站可以同时进行发收。
2.3.4接口处相应元件
1.RS-232C是异步通信中应用最广的标准串行接口,它定义了数据终端设备(DTE)和数据通信设备(DCE)之间的串行接口标准,主要包括了有关串行数据的电气和机械方面的规定。
目前的PC机都配有标准的RS-232接口,RS-232C标准规定了25针连接器,但在实际应用中并不一定用到RS-232C的全部信号线,所以,PC机配置的都是9针“D”型连接器。
图2.3.4
(1)为RS-232C的“D”型9针插口的引脚图。
在通常的异步串行通信中只使用其中三个引脚,即引脚2(接收RXD)、引脚3(发送TXD)、引脚5(信号地SG).各引脚功能如图2.3.4
(2)所示.
图2.3.4
(1)9针“D”型连接器
引脚号
符号
方向
功能
1
DCD
输入
数据载体检测
2
TXD
输出
发送数据
3
RXD
接收数据
4
DTR
数据终端准备好
5
GND
信号地
6
DSR
数据通信设备准备好
7
RTS
请求发送
8
CTS
清除发送
9
RI
振铃指示
图2.3.4
(2)PC机的RS-232C接口信号
2.由于TTL电平和RS-232C电平互不兼容,所以两者对接时,必须进行电平转换。
RS-232C与TTL电平转换最常用的芯片是MC1488、MC1489和MAX232等,各个生产的此类芯片虽然不一样,但原理相似。
一般选用MAX232。
MAX232的引脚图如下所示:
图2.3.4(3)MAX232的引脚图
管脚说明如下:
1C0+、C0-、C1+、C1-是外接电容端;
②R1IN、R2IN是2路RS-232C电平信号接收输入端;
③RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;
④TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;
⑤TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;
⑥V+经电容接电源+5V;
⑦V-经电容接地。
这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。
3.图2.3.4(4)给出了采用MAX232芯片的PC机与单片机串行通信接口电路,与PC机相连采用PC机的9芯标准插座。
图2.3.4(4)PC机与单片机串行通信接口电路
(注意:
本实验为仿真实验,为使实验电路简单明了,所以实际电路中未加电平转换器件,并不影响仿真结果,但是如上原理我们必须理解。
)
2.4辅助软件介绍
1.打开虚拟串口的文件夹,可以看见如图2.4
(1)两个文件,一个是破解用的,一个是安装用的。
图2.4
(1)
2.双击安装图标开始安装。
选择同意,一路NEXT即可。
安装后再将破解用的文件粘贴到C:
\ProgramFiles\EltimaSoftware\VSPDXP5.1目录下,覆盖原来的文件即可。
在桌面就可以看到快捷方式。
双击快捷方式后会看到图2.4
(2)
图2.4
(2)虚拟串口界
3.上面为实际的物理串行口,下面是虚拟的物理串行口。
下面来增加一对虚拟串行口。
因为一般的电脑最多为两个串行口,我们设置first为com3,second为com4,点击addpair就可以增加一对虚拟串口(如下图2.4(3)、(4)所示)。
这两对端口是通过这个软件物理连接的,并且是rs232电平连接。
这样我们就完成里串口的设置,可以把此软件关闭,这两个端口将会一直存在电脑中,下次直接使用就可以了。
图2.4(3)图2.4(4)
4.下面对串口进行设置和邦定,在proteus右键单击图2.3.4
(1)所示的图选定,然后左键单击此元件打开它的属性对话框。
如下图2.4(5)所示:
图2.4(5)
5.下面就是对串口调试工具的设置了,设置如下图2.4(6):
因本例proteus用了com3,那么串口调试工具这里就要绑定为com4了,并且设置为16进制发送和显示,这样准备工作就做好了。
图2.4(6)串口调试工具设置界面
2.5硬件部分
2.5.1元件清单
所属类别
COMPIM
———
7SE-COMCATHODE
OPTOELECTRONICS
7-SEGMENTDISPLAY
2.5.2设计电路
2.6程序设计
2.6.1流程图
2.6.2源程序
#include"
reg51.h"
string.h"
charreceive_data[]="
0123456789"
;
charflag;
unsignedcharcodetable[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//串口初始化晶振为11.0592M 方式1波特率300-57600
voidInitCom(unsignedcharBaudRate)
unsignedcharTHTL;
switch(BaudRate)
case1:
THTL=64;
break;
//波特率300
case2:
THTL=160;
//600
case3:
THTL=208;
//1200
case4:
THTL=232;
//2400
case5:
THTL=244;
//4800
case6:
THTL=250;
//9600
case7:
THTL=253;
//19200
case8:
THTL=255;
//57600
default:
SCON=0x50;
//串口方式1,允许接收
TMOD=0x20;
//定时器1定时方式2
TCON=0x40;
//设定时器1开始计数
TH1=THTL;
TL1=THTL;
PCON=0x80;
//波特率加倍控制,SMOD位
RI=0;
//清收发标志
TI=0;
TR1=1;
//启动定时器
//从串口接收一个定长字符串(非中断方式,只用于字符需有一个的idata字符串数组)
//如unsignedchar*Str;
//unsignedchari[]="
abcd"
//InHandStr=&
i;
voidComInStr(unsignedchar*Str)
while(*Str!
=0x00)//判断是否到了字符串的尾部
while(!
RI);
//空语句判断字符是否收完
*Str=SBUF;
//保存字符
//清RI
SBUF=*Str;
TI);
TI=0;
Str++;
//字符串指针加一
voiddelay1s(void)
{
unsignedchari,j,k;
for(k=40;
k--)
for(i=20;
i>
i--)
for(j=248;
j--);
}
InitCom(6);
EA=1;
ES=1;
ET1=0;
{chari;
ComInStr(receive_data);
for(i=0;
10;
{//P2=table[1];
P2=table[receive_data[i]-48];
delay1s();
flag=0;
//串口接收中断函数
//voidserial()interrupt4using3
//{
//ComInStr(receive_data);
//flag=1;
//}
2.6.3调试与仿真
图2.6.3调试仿真运行结果截取图
2.7成果展示
点击proteus的播放键,切换到串口调试工具,即可收到数据。
然后再发送一些数据给单片机,便可在数码管上看到结果
第3章提高设计报告任务说明书
3.1小组成员及其学号
姓名
学号
徐正磊
0807040224
巩雅琨
0807040102
3.2本人工作任务说明
在实验过程中,我和队友分工协作。
由于我编程方面还有欠缺,所以我主要负责电路的设计以及绘制等硬件部分,另外前期查阅资料、软件学习、制定具体的设计方向以及后期的整理、实验报告的撰写,都是我和队友一起完成的。
第4章实习心得
本次课程设计对平时很少动手操作的我们是一次很好的锻炼。
回顾整个过程,感悟良多:
首先,这次的课程设计对我们来说,是从理论到实践的一个跳板。
不管我们课堂上把问题想的多么透彻,但是真正上机运行,却是困难重重,漏洞百出。
真正只有在实践中才能检验是否真正学懂了知识,学活了方法。
其次,在设计过程中,我们翻阅了很多单片机课程设计的相关资料,看到原来众多与我们生活息息相关的装置和设备,都是小小的单片机在发挥作用,着实惊叹,对这门学科有了新的认识,同时这也拓宽了我们的眼界。
然后最重要的,就是团队精神。
我和小组成员一起查阅资料,确定初步计划,以及在操作过程中的分工协作,包括后期繁杂的的整理工作,单凭一人之力,确实无法顺利完成。
尽管我们小组的进程很慢,但是每次有了一小步的进展都会使我们欣喜。
当然,通过本次课程设计实验,我也看到了自己知识上的漏洞,以及动手能力的欠缺,我们同其他小组相比,的确差距很大。
这让我们认识到,光靠课上学的那些知识是远远不够的,不仅要多查阅课外相关书籍,更要提高自己的动手能力,这对电信专业的我们非常重要。
这次课程设计是对我们的一次检验,也是对我们的一次提醒。
看到差距就要加油弥补,虽然这次的课程设计过程有些不顺利,但是勤能补拙,我们会不断学习!
参考文献
【1】李建忠单片机原理及应用(第二版)西安电子科技大学出版社,2008年
【2】马忠梅单片机的C程序应用设计北京航空航天大学出版社,1999年
【3】侯媛彬袁益民霍汉平凌阳单片机原理及其毕业设计精选北京科学出版社,2006
【4】周航慈;
饶运涛
单片机程序设计基础
北京航空航天大学出版社,1997.5
【5】王金汉
C程序设计语言
上海:
同济大学出版社,1987.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 流水 设计