99秒马表课程设计.docx
《99秒马表课程设计.docx》由会员分享,可在线阅读,更多相关《99秒马表课程设计.docx(10页珍藏版)》请在冰点文库上搜索。
99秒马表课程设计
99秒马表课程设计
课程设计说明书
(2012/2013学年第2学期)
课程名称:
单片机课程设计
题目:
99秒马表课程设计
专业班级:
10级电气⑷班
学生姓名:
学号:
100062428
指导教师:
设计周数:
2_3
设计成绩:
2013年07月11日
1:
设计目的1
2:
设计的主要内容和要求1
3:
整体设计方案2
4:
硬件软件设计2
5:
系统仿真3
6:
硬件调试图3
7:
仿真界面4
8:
protel电路图6
9.c语言源程序6
10:
设计总结10
基于单片机的99秒马表设计
1:
设计目的
(1)通过单片机课程设计,熟练掌握C语言或汇编的编程方法,将理论联系到实践中,提高动手能力和动脑能力。
(2)初步了解和掌握PROTEUS软件的操作方法
(3)完成控制系统的硬件设计,软件设计,
仿真调试。
2:
设计的主要内容和要求
设计并制作初一个以单片机为核心的计时控
制系统:
①确定总体的设计方案;②设计键盘输入电路;③设计显示电路;④合理分配地址,编写系统程序;⑤利用protel设计硬件电路原理图和PCB图;⑥软硬件联机调试。
3:
技术要求:
开始时,显示“00”,第1次按下按键后,开始定时。
第2次按下按键后,计时停止,第3次按下按键后,计时归零。
所需器件有:
1个按键、2个数码管。
3:
整体设计方案
4:
硬件软件设计
(1)按键:
通过按键检测判断输入状态,
去改变时间中断。
(2)数码管:
定时1S中断,每过一秒数码管数值显示加一,满99秒自动清零。
(3)程序采用查询方式定时,运用定时器0工作方式1的定时控制设计,选择定时中断时间为50ms,定时计数器初值为3cbho将定时器定时时间扩大20倍达到1秒的时间间隔。
当第一次按键按下时,启动定时器0,开始计时,没过一秒a加1,讲a的十位和个位分离,分别给数码管显示,当第二次按键按下后,停止中断,第三次按键按下后,数码管清零。
5:
系统仿真
在PROTEUS的ISIS7.7SP2软件环境下画出电路原理图,接下来就是将设计的程序在KEILC51UVISION2开发集成环境上编译成机器语言,进入PROTEUS的ISIS,鼠标左键点击菜单“DEBUG”,选中USEROMOTEDEBUGERMONITOR”,便可实现KEILC与PROTEUS连接调试。
首先在PROTEUS中双击单片机AT89c51,将KE1LC下编程生成的*.HEX文件导入到AT89C51中,可在PROTEUS中单击全速仿真运行按钮工[,
进行现象的查看,能清楚观察到芯片上每一个引脚的点平变化,红色代表高电平,蓝色代表低电平;如果现象不正确,则在KEILC中单步调试程序,在PROTEUS观察现象,哪一步不正确则对该段的程序进行修改,调试知道仿真完全成功为止。
6:
硬件调试图
7:
仿真界面
15
I--I0(1:
_==_JCB.YSTAL
—
•••••・••
...巴****■
F口.何/...
.《TEXT誉-
31-
^XTALi
POIVAOD
PO.1/A&1
PCINMN
XTAL2
PEjaxon
PQ.VAD4
PQSXDS
PQSR06
WETT
P口了值07
Pzae
PZ.IfZ®
PZ^AID
PZ^A11
ALE
PZ.4/A12
■
PNW<1♦
P2?
伏15
Plfl
PU
Pam©
P12
P3JWTTJ
P1J
P3^im
P1.4
P3.4HE
P1S
P3ST1
P1E
PI.?
mnrr
1
>XTAL1
Cl
T
rrac5T
1I5CT
Al£可
0.13.f
之C2.
:
mg..
.cTE^r.•|1X1..
xjftnyrni..TT\
XTAL2
■1k
PWphP12
P13Pl4P1SP16
P17
POiyADDP0.VAU1PD^AOZP03^AD3PO.WAD*POS^AOSPOLADSP0.7^A07
P2W旅P2.1/A9
PZ^AIDP23*A11P2.4/A1ZP2S^A13P2»A14P2.7/A1S
P3IYRXDP3.1/TX0P3^TFTOP3^im
P3.4HDP3ST1
P3AVTOP3.7/KF
eTEm
8:
protel电路图
9.c语言源程序#include
ttdefineucharunsignedcharttdefineuintunsignedintsbitanjian=P/0;//定义按键位
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f}:
〃共阴极数码管0-9编
码表uinta,c,num=O;
voidtimeO()interrupt1
c++;
TH0=0x3c;
TLO=OxbO;
)
voiddelay(uintz)
uintx,y;
for(x=z;x>0;x-)
for(y=115;y>0;y—);}voidmain()
(
〃数码管显示
〃第一次按键检测消抖
P0=table[0];
P2=table[0];
if(anjian-0)
delay(5);
if(anjian==0)
num++;
while(!
anjian);
delay(5);
while(lanjian);
}
if(num==1)〃按键计数
(
TM0D=0x01;
TH0=0x3c;
TLO=OxbO;〃501ns定时
EA=1;
ET0=l;
TR0=l;〃开启中断
while
(1)
(
if(c=20)
(
c=0;
a++;
if(a==100)〃a计数a=0;
Portable[a/10];
〃第二、三次
P2=table[a%10];if(anjian-O)按键检测
(
delay(5);
if(anjian-0)num++;
while(!
anjian);
delay(5);
while(!
anjian);if(num==3)
PO=table[0];
P2=table[0];
while
(1);
if(num=2)
TRO=O;〃关中断)))10:
设计总结
在本次单片机课程设计中,我组的题目是《99秒马表》。
这是一项考察综合能力的实验,内容多而繁杂是其的特点,并且实验限定的时间是两周,时间也很紧张。
所以要想把实验做好,必须特别用心。
于是我们从第一天起的懵懂到后边逐步的解决问题从而比较系统的了解了实验的原理与过程做了十分充分的准备。
本次课程设计在考察单片机原理的同时,还使我们基本了解了仿真软件PROTEUS的应用,通过学习,发现了仿真所带来的种种优点,这些正是体现了综合的考察。
在为期一星期的设计中,不仅使我们更深刻的理解了单片机汇编语言的过程和方法,也是我们更进一步的理解了程序的功能,同时提高了我们理论与实践相结合的能力,同学们之间互相
10
合作,积极查阅相关书籍,遇到问题大家一起讨论,难以解决的请教老师,顺利的完成了实验的要求,由此也提升了同学之间相互协作的能力,使同学们各方面能力得到很大的提高,同时在试验中所犯的错误中吸取了教训,以避免在以后的学习生活中犯同样的错误。
在焊接电路的时候,没有遇到大的困难,只是在焊接引脚的时候会出错,但是细心总是可以完成的,我们顺利的完成了.看似简单,但也是我们的心血。
最后也要感谢老师的耐心指导和同学之间的相互协作,使本次课程设计顺利完成。
项目设计评语
项目设计成绩
指导教师(签
字)
年
月日