单片机课程设计指导书Word格式.docx
《单片机课程设计指导书Word格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计指导书Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
四、实验电路
五、实验程序框图
六、思考题:
1、参考程序程序中两条指令TCON=TCON&
0xfd;
TCON=TCON&
0xf7有什么作用?
可以去掉吗?
为什么?
若采用电平触发方式,可以去掉吗?
定时器实验
1、掌握定时器的原理和过程,
2、掌握定时器的初始化方法
3、掌握定时器的中断服务程序编写
P0接8个LED,令其作跑马灯左右移,亮灯时间0.5S由定时器控制,
定时器是否溢出,采用中断方式,
2、改变定时常数亮灯时间为1S重复实验
四、实验电路
五、实验程序并注释
T0最大的定时时间为多长?
串口通讯
1、掌握串行口的原理和编程方法,
2、掌握串行口的初始化及波特率计算
3、掌握串行口中断的编程方法
1、PC机运行串口调试助手,从串口发送一个数据,由单片机接收
2、单片机将刚接收到的数据加1后,再发送给PC机
1、按要求编辑、编译运行单片机端程序,
2运行PC机端串口调试助手,并发送一个数据
3、改变波特率,观察波特率对通讯的影响
实验一参考程序:
#include<
REGX51.H>
voiddelay(void)
{
unsignedintj;
for(j=0;
j<
32000;
j++);
}
voidint0()interrupt0/*外部中断0服务子程序*/
unsignedchari;
unsignedcharj;
TCON=TCON&
i=0x01;
for(j=0;
8;
j++)
{
P0=i;
i=i<
<
1;
delay();
}
voidint1()interrupt2/*外部中断1服务子程序*/
unsignedchari;
0xf7;
i=0x80;
i=i>
>
voidmain(void)
unsignedchari,j;
IE=0x85;
IP=0x04;
TCON|=0x05;
while
(1)
P0=0xff;
delay();
P0=0x00;
}
实验三参考程序:
#defineSPEAKRD
voidsint()interrupt4
unsignedchartemp;
if(RI==1)RI=0;
temp=SBUF;
SBUF=temp+1;
while(!
TI);
TI=0;
SPEAK=0;
SPEAK=1;
P0=0;
TMOD|=0x20;
TL1=0xfd;
TH1=0xfd;
//9600
SCON=0x50;
PCON=0x00;
TR1=1;
EA=1;
ES=1;
while
(1);
2、课程设计部分
时间:
学校课表安排的时间是:
12周六、日;
13周六、日;
14周六、日共6天
15周五前,交课程设计报告,统一由班长收交给老师。
分组:
两人一组。
成绩:
需要评优同学需做答辩。
验收:
单人单组
课程设计内容:
所有课程设计内容均采用实验板上基础电路部分实现,同学们无需自搭电路,主要考虑软件结构即可。
电路见实验箱电路说明部分。
题目一:
定时闹钟
要求:
利用动态数码管作为显示器,K20-K27作为输入按键,蜂鸣器作为声音输出制作一个定时闹钟。
1、正确显示时分。
2、可以利用按钮调整时间和设定闹钟时间。
3、当时间到达设定的闹钟时间时,蜂鸣器发出嘀、嘀、嘀的报警声。
提示:
利用定时器作为时间的基准。
提高:
通过串口在PC上设定时间和闹钟。
题目二:
八音盒
利用蜂鸣器和K20-K27制作一个八音盒,内存八首乐曲,当按下不同的按键时,奏出不同的乐曲。
其中《茉莉花》是必选曲目,其他任意。
例如:
按下K20奏出《茉莉花》。
利用定时器产生不同的音调,需要查do、re、mi等音调的频率。
把其他按键当作琴键,可以弹奏乐曲。
题目三:
模拟电话键盘
把
S207、S206、S205;
S217、S216、S215;
S227、S226、S225;
S237、S236、S235;
按键分别当作电话按键的123456789*0#。
当拨打电话时,电话号码显示在动态LED上(相当于手机的显示屏)。
当按下S204键Call电话时,电话号码通过串口发送到PC上,通过串口调试助手可以观察。
(相当于把号码发给基站)
掌握动态led显示和逐行扫描键盘原理。
模拟电话不同时,每隔1分钟自动重拨一次。
题目四:
零件计数器
把接在INT0上的单稳信号当作零件信号,每来一个零件,单片机计数一次,当计满10次时,蜂鸣器发出一声警告音,并使继电器闭合一次,产生零件打包动作。
要求LED上显示当前一共生产了多少零件。
主要掌握外部中断和动态显示的应用。
实时通过串口把零件数量发送给PC。
三、项目工作流程:
编写源程序――通过KeiLC编译为机器代码――烧写入单片机――调运行试
四、课程设计报告要求
整个报告包括:
●封面
●摘要
●关键字
●目录
●正文
●系统设计
●实验结果与讨论
●结论
●参考文献
●附录
封面
包括题目、专业、年级、学号、姓名、指导教师、学校名称
摘要
以最简洁的文字来表达这篇课程设计报告的主要构架,300字以内为宜,主要方便参阅者在短时间内了解其内容,因此文字的使用必需简洁有力。
一般包括以下部分:
1.课程设计动机
2.主要问题所在
3.解决该问题使用的方法
4.重要的结果
关键字:
本篇内容非常重要的3-5词
正文:
分章节论述主要包含系统设计、实验结果讨论、结论等部分。
系统设计
整篇报告的核心部分,一般包括:
要求的目标及总体方案
1.使用的主要组件及特殊零件功能说明
2.电路方框图及说明
3.电路设计及说明
4.软件方框图及流程图说明
实验结果及讨论
完整记录实验的结果,并对结果进一步的分析及讨论,包含以下部分:
1.实际电路设计及程序设计
2.记录实际的数据及测试所用设备
3.实验测量的波形、数据记录
4.对实验数据做分析及讨论
结论
对整篇报告做一总结,包括:
1.本课程设计的特点
2.本课程设计的主要贡献
3.评估结果
4.改善建议
5.自我体会
参考文献
本设计用到的参考资源,列出资料的出处,包括书名、作者、出版社、页码、发行日期
标准参考文献写法:
例:
①专著类:
作者名.著作题名[M].出版地,出版者.,出版年。
②期刊类:
作者名.文献题名[J].刊名,年,卷(期):
文献起止页码.
附录
整篇设计中可以陈述的记录却未放入报告的部分,包括:
1.硬件电路零件列表
2.软件程序清单及说明
3.特殊零件技术数据
4.特殊仪器的规格数据
实验箱电路说明
实验电路共分为A、B、C、D、E、F、G、H、I、J,10个部分,每部分各完成一个基本功能。
现对各个部分进行说明。
A部分由一个8位琴健开关(U11)和8个LED(D00-D07)组成。
连在P1口上完成基本输入输出功能。
输入功能:
当某开关闭合后,对应P1口线上输入0,同时相应的LED点亮。
否则,对应P1口线上输入1,同时相应的LED熄灭。
第一位开关闭合,D10点亮,同时P1.0输入0。
LED可以做为开关是否闭合的直观指示。
输出功能:
当某开关打开时,对得用P1口线可以做为输出引脚使用。
当输出1时,相应的LED熄灭,当输出0时,相应的LED点亮。
当某开关闭合时,无法做输出功能使用。
B部分是单片机的最小系统部分,只有这部分电路正常,整个系统才能工作。
单片机为内含8KFLASH程序存储器的STC89C52RC,EA接高电平;
各并行口都加了10K的上拉电阻;
晶振为11.0592M。
设置了上电复位和手动复位电路。
S1为手动复位按钮。
C部分电路由4位一体的数码管LED1、单个数码管LED2和8个独立发光二极管L1-L7组成。
这3个部分都是共阴结构,并联在一起,连接在P0口上。
LED1用于完成LED动态显示实验,各个位选线为P24-P27,段码由P0口输出;
LED2的COM端接地,完成LED静态显示实验;
L1-L7,可以方便地读出P0输出的二进制数据,亦可做流水灯实验。
7407在此起驱动作用。
D部分电路由555和电容构成多谐振荡器经7400后接到单片机T0端,做为计数器的外部时钟源,频率约1Hz。
当SW_CLK开关闭合后,振荡信号可以到达T0端,同时D_CLK闪烁。
人工可以观察D_ClK的闪烁次数,从而知道T0端输入了多少个振荡周期。
便于对计数器工作过程的理解。
当SW_CLK开关断开后,不再有振荡信号输入T0端。
F和H两部分电路构成相同,都是有555和电容组成的单稳电路。
当S_INT0按钮按下后产生一个低电平单稳信号送单片机的INT0,同时D_PLUS1亮一次,做为外部中断请求信号。
当S_INT1按钮按下后产生一个低电平单稳信号送单片机的INT1,同时D_PLUS2亮一次,做为外部中断请求信号。
单稳时长约50ms。
E部分电路为行列式键盘和独立式按键输入电路。
P20-P23为行,P24-P27为列,构成4×
4行列式键盘。
按键编号规律为S2+行号+列号。
例如S226表示P22行和P26列跨接处的按键。
K20-K27构成独立式按键,分别接在P20-P27上,当按键按下时,对应的口线输入0,同时相应的LED点亮。
D20-D27构成P20-P27的状态指示,当某口线输出0,相应的LED点亮。
有4个用途:
1、当行列式键盘逐行扫描时,可做为正在被扫描的行的指示。
2、当行列式键盘逐行扫描时,可做为已按下键的指示。
当S215键按下,扫到P21行时,D21和D25会被点亮。
3、可做为独立式按键被按下的指示。
见上一段。
4、当P2口不做为键盘输入时,D20-D27可做为输出器件,实现流水灯等功能。
G部分电路为串口通讯部分。
U5PL2303HX构成了USB转URAT电路,即完成USB口转TTL串口电平。
U6MAX232构成了RS232转URAT电路,即完成RS232串口转TTL串口电平。
由于单片机只有一个串口,所以以上两部分通过双刀双掷开关切换使用,当实验板上S-COM开关按下时选择USB转URAT电路。
否则选RS232转URAT电路。
这部分电路可以完成PC机跟单片机的串行通讯,也可以完成两个单片机进行串行通讯。
D_RXD和D_TXD指示收和发线上是否有信号,当通信时可观察到二灯闪烁。
当选择USB转URAT电路时,PC机的USB口同时承担给实验板供电的任务。
I部分电路为蜂鸣器和继电器电路。
蜂鸣器采用9012三极管驱动,其基极接到RD端,当RD端为低电平时,三极管导通,蜂鸣器响。
否则关断。
继电器采用9013三极管驱动,其基极接到WR端,当WRD端为低电平时,三极管关断,继电器不吸合,常闭触点闭合,常开触点打开,D1熄灭;
反之则反。
J部分为电源部分。
当USB供电不足时可通过J3接入后备电源。
SW_PWR为电源开关,闭合时电路板得电,同时D_P1亮。
F1为自恢复保险,防止电源反接和短路,保护PC机USB口。
烧写软件使用说明
本实验板使用的STC89C52RC单片机具有ISP功能,可通过串口把程序代码烧进单片机内部的FLASH程序存储器内,烧后可全速运行程序,以检查代码的正确性。
第一步:
检查实验板所有开关处于打开状态,即全部弹起。
第二步:
把S_COM(串口电平转换区域)开关按下,选择USB转URAT功能。
第三步:
把USB线插在PC和实验板上。
第四步:
检查虚拟串口号。
我的电脑――右击――选择――管理――设备管理――展开右边的端口-记下USB虚拟的串口号。
例如下图中的COM6
第五步:
找到STC-ISP文件夹,双击STC_ISP_V483.exe,打开烧写软件
1、选择你使用的单片机型号,实验板上的型号为STC89C52RC
2、打开你要烧写的程序代码,例如:
TEST.HEX
3、选择PC连接实验板的串行口,即第四步记下的串行口号。
4、选择其它选项,如图。
5、点击Download/下载按钮,
6、当信息提示框出现:
“正在尝试与MCU握手连接…”时,按下实验板电源开关。
7、烧写自动完成,程序开始运行。
注意:
下次烧写时,仍然要先关闭电源,重复以上步骤。
如烧写不成功,请先检查s_com按钮是否按下。
如已按下则关闭实验板电源,拔下USB线。
等待一分钟,然后再插上USB线。
重复1-6步骤。
串口调试助手使用说明
串口调试助手是一款运行在PC机上并通过PC的串口发送和接收数据的软件。
我们经常把PC的串口和单片机的串口连接,并用此软件来调试单片机的串口程序,故称串口调试助手。
找到“串口调试助手”文件夹,双击“sscom32.exe”运行程序
选择串口,此时要关闭所有使用该串口的应用程序,例如烧写软件。
设置串口参数。
波特率等。
选择HEX发送,HEX显示
打开串口
第六步:
在字符串输入框中输入要发送的字符,按“发送”按钮发送给单片机。
单片机发送过来的字符,显示在上部的信息窗中。
使用完毕后记得关闭串口,否则可能引起其它软件工作不正常。
Keil上机指南
keilC51是目前功能最强大的单片机c语言集成开发环境,下面我们通过图解的方式来学习KeilC51软件的使用。
整个KeilC51步骤大概分为:
输入源程序→新建工程→工程详细设置→源程序编译得到目标代码文件等四个步骤。
也可参考课本第8章。
第一步:
双击KeiluVision2的桌面快捷方式(图1),启动Keil集成开发开发软件。
软件启动后的界面如图2所示。
图1:
启动KeiluVision2单片机集成开发环境
图2:
软件启动后的界面
第二步:
新建文本编辑窗。
(如果你已用其它文本编辑软件编写好源程序,可跳过2、3、4步骤)点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗,见图3所示。
图3:
新建文本编辑窗
第三步:
输入源程序。
在新的文本编辑窗中输入源程序,可以输入C语言程序,也可以输入汇编语言程序,见图4。
图4:
输入源程序
保存源程序。
保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“.C”。
图5:
保存源程序
注:
第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序。
如果你已用其它文本编辑软件编写好源程序,可跳过2、3、4步骤。
第五步:
新建立Keil工程。
如图6所示,点击"
工程"
→"
新建工程"
命令,将出现保存对话框(图7)。
图6:
新建工程
图7:
保存工程对话框
在保存工程对话框中输入你的工程的文件名,Keil工程默认扩展名为"
.uv2"
,工程名称不用输入扩展名(见图7),一般情况下使工程文件名称和源文件名称相同即可,输入名称后保存,将出现"
选择设备"
对话框(图8),在对话框中选择CPU的型号。
第六步:
选择CPU型号。
如图8所示,为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C51单片机。
图8:
选择CPU型号对话框
第七步:
加入源程序到工程中。
在选择好CPU型号后,点击"
确定"
按钮返回主界面,此时可见到工程管理窗中出现“Target1”,点击“Target1”前面的“+”号展开下一层的“SourceGroup1”文件夹,此时的新工程是空的,“SourceGroup1”文件夹中什么文件都没有,必须把刚才输入的源程序加入到工程当中。
如图9所示,右击工程管理窗中的“SourceGroup1”,出现下拉菜单,点击“增加文件到组'
SourceGroup1'
”命令,将出现添加文件对话框(图10)。
图9:
添加文件到工程命令
在添加文件对话框(图10)中,找到要添加到工程中的源程序文件。
在对话框中的文件类型默认为"
C源文件(*.c)"
,如果你要添加到工程中的是汇编语言程序,则在文件类型中必须选中“Asm源文件(*.a*;
*.src)”,以*.asm为扩展名的汇编源程序才会出现在文件列表框中。
我们可以把第四步保存的源程序添加进来。
图10:
浏览选择ASM源程序
双击该文件lich1.asm,即可将该文件添加到工程当中,另外也可以单击lich1.asm选中该文件,再点击"
Add"
按钮,也可以把文件加入工程中(见图11)。
图11:
选中ASM源程序,加入到工程中
点击Add按钮后,把文件添加到工程中,此时添加文家对话框并不会自动关闭,而是等待继续添加其他文件,初学者往往以为没有加入成功,再次双击该文件,则会出现图12对话框,表示该文件不再加入目标。
此时此时应该点击“确定”按钮,返回到前一对话框,再点击“关闭”按钮,返回到主界面。
图12:
重复加入文件对话框
当给工程添加源程序文件成功后,工程管理器中的“SourceGroup1”文件夹的前面会出现一个“+”号,单击“+”号,展开文件夹,可以看到lich1.asm已经出现在里面,双击即可打开该文件进行编辑修改源程序(见图13)
图13:
文件成功加入工程
第八步:
工程目标'
Target1'
属性设置。
如下图14所示,在工程项目管理窗中的"
Target1"
文件夹上右击,出现下拉菜单,点击“目标'
属性”命令,就进入目标属性设置界面。
图14:
进入工程目标属性设置
工程目标'
属性设置对话框(图15)中有8个页面,设置的项目繁多复杂,大部分使用默认设置即可,我们主要设置其中的“目标”、“输出”、“调试”三个页面,下面对这三个页面的设置进行详细介绍。
1、工程目标属性设置。
该页面单片机的晶振频率、存储器等,我们把晶振的频率改为11.0592,频率设置和你实验板上的实际晶振频率相同即可(图15)。
存储器模式改为:
Small:
variablesindata。
其余用默认。
图15:
晶振频率设置
2、工程输出设置。
该页面设置如下图16所示。
如果要进行单片机写片实验,则一定要把“E生成HEX文件”选项选中,程序编译后才能生成我们写单片机需要的HEX格式目标文件。
图16:
工程输出设置
第九步:
源程序的编译与目标文件的获得
至此,我们已经完成了从源程序输入、工程建立、工程详细设置的工作,接下来我们将完成最后的步骤,此时我们可以在文本编辑窗中继续输入或修改我们的源程序,使程序实现我们的目标,在检查程序无误后保存工程。
接着如下图19所示,点击“构造目标”快捷按钮,进行源程序的编译连接,源程序编译相关的信息会出现在输出窗口中的“构造”页中。
下图19显示编译结果为0错误,0警告,同时产生了目标文件lich1.hex。
如果源程序中有错误,则不能通过编译,错误会在输出窗口中报告出来,双击该错误,就可以定位到源程序的出错行,我们可以对源程序进行反复修改,再编译,直到没有错误为止。
每次修改源程序后一定要保存。
图19:
源程序的编译
编译通过后,我们打开工程文件夹(图20),可以看到文件夹中有了“lich1.hex”,这就是我们需要的最终目标文件,用编程器(也称烧录器)把该文件写入单片机,单片机就可以实现我们程序的功能了,赶快把目标文件写入单片机,在实验板上看看程序的效果吧。
图20:
编译成功,获得目标文件lich1.hex