单片机课程设计报告Word文件下载.docx
《单片机课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
3.1时钟的电路设计
3.2中断电路设计
3.3灯控电路设计
3.4倒计时电路设计
3.5按键电路设计
4.系统软件设计
4.11秒定时
4.2定时程序流程
4.3LED灯设计流程
4.4定时器与中断
5.仿真及性能分析
6.心得体会
1.设计任务
利用单片机完成篮球筐上的计时器的设计。
该控制器有数码管和LED灯组成。
每次显示24秒,24秒结束后LED等亮。
数码管重新计时。
如图所示:
单片机的数码管可以作为计时器的数字显示,LED灯可以清晰的显示截止时间。
利用中断功能可以使时间暂停。
单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展8255或8155满足系统的要求
3系统硬件设计
3.1时钟电路设计
如上图所示,采用内部时钟产生方式,在1.1和1.2和1.5接开关
接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。
其发出的
时钟脉冲直接送入片内定时控制部件。
图中暂停按钮时中断请求,当按下暂停按钮时,时钟停止计时。
当数码管的倒计时结束时,所有LED灯点亮,显示结束一个轮回,数码管重新开始计时。
LED之间用串联电阻,接在p3口。
3.4倒计时显示电路设计
如上图所示,由两个个共阴极两位数码管来实现倒计时。
由于P0口
控制位,p2口控制段,位的利用只有3和4,段选控制单片机的显示数字。
4系统软件设计
4.11S定时
以在系统中要实现准确的1s定时。
采用89C51内部的定时/计数器TH,TL,工作在方式1,把秒计时用硬件和软件计数相结合的方法实现。
即把定时器的定时时间定为50ms,可用软件方法实现。
设计数初值为工,TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
从上式计算得到计数初值。
定时器定时采用中断方式完成.以便于通过中断服务程序累计
。
4.2定时程序流程;
4.3LED灯流程及程序。
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetab[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,
~0x80,~0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//数码管段码表
ucharwei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uinti=0;
uintj=0;
uinta=24;
uchark1flag=0;
uchark2flag=0;
sbitk1=P1^1;
sbitk2=P1^5;
sbitk3=P1^2;
voiddelay(uintz);
voiddisplay();
voidscan();
voidmain(void)
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=0;
while
(1)
{
scan();
if(k1flag==1)
{
k2flag=0;
TR0=1;
}
display();
if(k2==0)
k2flag=1;
k1flag=0;
if(k2flag==1)
TR0=0;
}
}
}
voidscan()
if(k1==0)
delay
(1);
if(k1==0)
k1flag=1;
voidtime1()interrupt1//中断服务
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==20)
j=0;
a=a-1;
P3=0xff;
if(a==-1)
{a=24;
P3=0x00;
delay(500);
voiddisplay()
P2=wei[2];
P0=tab[a/10];
delay
(2);
P0=0x00;
P2=wei[3];
P0=tab[a%10];
voiddelay(uintz)
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
5仿真与性能
6心得体会
这次单片机课程设计历时三个星期的时间,在这三个星期里我们体验了从设计、画板、编程、焊板到调试的整个过程,让我们小小的体验了一次工程师的感觉。
起初我们先到图书馆和网上查阅了大量有关超声波测距仪的资料,然后开始设计我们自己的方案,为了设计精度要求和抱着学习新知识的想法,我们选择则了从没接触过的DS18B20和LCD1602液晶芯片,虽然我们并没把这两个芯片的应用原理研究的很透彻,但基本的应用编程是可以实现的,说实话整天抱着电脑查资料、看资料是一件很痛苦的事情,一天下来眼都花了,但每学会一点新知识还是挺高兴的,有的时候想要的资料查不到我们就向老师求助,他们都会毫无保留的帮助我们。
设计完电路以后我们便开始画PCB板,这是我们上学期学习的一门课程,趁着这次机会也让我们又将这部分只是复习了一下,并将其应用于实际,终于发现我们所学的知识和实际有点联系了,也对其产生了一点兴趣。
不过我们学得并不全面,只能说是引路用的,所以在实际当中我们还要再加深一下学习,这也是我们获得新知识的一个地方。
画板时需要注意的地方很多,比如封装要根据实际器件的尺寸来设计孔的大小,间距也要符合要求,布线时线宽与线距也有一定讲究,部件摆放要按一定规律等等。
这三周的时间说轻松也不轻松,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。
总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。
更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。
通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。
而这些才是我们作为一名工科学生最宝贵的财富。