单片机课程设计说明书.docx
- 文档编号:29044814
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:328.52KB
单片机课程设计说明书.docx
《单片机课程设计说明书.docx》由会员分享,可在线阅读,更多相关《单片机课程设计说明书.docx(32页珍藏版)》请在冰豆网上搜索。
单片机课程设计说明书
单片机产品设计说明书
AT89C51单片机
学院:
专业:
成员:
2012年5月
前言
近十年来,随着计算机的飞速发展,单片机也迅速发展起来,并广泛应用于各种智能产品中,逐渐成为21世纪的一项重要技术。
随着信息技术的飞速发展,计算机越来越朝着微型化、智能化的方向发展,单片机就在这种情况下应运而生。
由于单片机体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。
且高性能、低价格是单片机最显著的特点。
单片机与计算机不同,他是把各个功能部件集成在一个芯片上,使用方便。
所以被广泛应用于仪器仪表、现场数据的采集和控制。
通过本次设计掌握单片机硬件和软件方面的知识、更深入了解单片机的实际应用。
电子闹钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,是人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
数字钟已成为人们日常生活中:
必不可少的必需品给人们带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时自动报时及自动控制的领域。
前言……………………………………………-2-
目录……………………………………………-3-
第一章设计目的与要求……………………………-4-
1.1设计任务…………………………………………-4-
1.2设计目的…………………………………………-4-
1.3设计要求…………………………………………-4-
第二章设计基础及方案选择………………………-5-
2.1理论基础…………………………………………-5-
2.2硬件选型…………………………………………-5-
2.3硬件接口设计……………………………………-6-
第三章整体设计……………………………………-7-
设计特色………………………………………………-7-
3.1总体设计…………………………………………-7-
3.2硬件设计…………………………………………-10-
3.3软件设计…………………………………………-13-
结束语……………………………………………-28-
参考资料……………………………………………-29-
完成过程…………………………………………-29-
第一章.设计目的和要求
1.1设计任务:
设计一个可控制的定时闹钟。
1.2设计目的:
1.了解定时闹钟的组成及工作原理。
2.进一步熟悉和掌握单片机的结构和工作原理。
1.3设计要求:
A.基本要求:
1).由晶振电路产生1HZ标准秒信号。
2).秒、分为00-59六十进制计数器。
3).时为00-23二十四进制计数器。
4).可手动校正:
能分别进行秒、分、时的校正。
只要将开关置于手动位置,可分别对秒、分、时进行连续脉冲输入调整。
5).当时间到达闹钟设定时间时,蜂鸣器发出报警声。
B.提高要求:
a).通过按钮快速切换闹钟显示。
b).通过计算机串口在PC上快速设定时间闹钟。
C.整点报时。
第2章设计基础及方案选择
2.1理论基础
单片机基础知识、单片机的选择及用C语言编写程序。
2.2硬件选型
序号
器件名称
性能
数量
1
AT89C51
单片机
1个
2
40PIC座
0.36寸
1个
3
数码管
共阳极
2个
4
三极管S8550
1个
5
电阻
4.7K
2个
6
晶振
12MHZ立式
1个
7
电容
22P
2个
8
蜂鸣器
1个
9
排阻
1K
1个
10
按键
5个
11
万用板
7cm*9cm
1个
12
DC座
1个
2.3硬件接口设计
以单片机为中心,将各个元件按原理图焊接到电路实验板上。
第三章整体设计
设计特点:
整个制作过程本着节能环保的理念用最易搜集的原材料制作整个产品外壳,且该电子钟操作简单,具有很高的实用价值。
3.1硬件系统:
3.1.1电源电路:
电源是单片机系统的重要组成部分,它不仅为系统提供多路电压源,还直接影响到系统的技术指标和抗干扰性能。
AT89C51单片机和一般的数字芯片一样,都是5V电压供电,所以可以共用一个5V电源。
3.1.2AT89C51单片机
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
使用时VCC接电源,GND接地。
P0-P3可作为输入或者输出端口。
RST接复位电路。
3.1.3时钟电路:
单片机的时钟产生方法有两种:
内部时钟方式和外部时钟方式。
本系统中AT89C51单片机采用内部时钟方式。
最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。
振荡晶体可在1.2MHz~12MHz之间。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。
单片机的时钟产生
、
3.1.4数码管显示电路
要同时使得6个数码管点亮,所需的IO口是很多的。
为了节省单片机的IO口,通常采用动态扫描的显示方法,将每个数码管的同名段连在一起,分6次向数码管写数据,每次对6个数码管写相同的数据,每次选通一个数码管,完成扫描,通过调整、缩短扫描的时间,由于人眼的视觉暂留作用,使得人们看起来就像同时显示一样,以达到动态显示的目的.
3.2设计原理
3.2.1 系统总体方案
1)由于要显示数字时间,所以需要6位数码管。
2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。
3)AT89C52单片机加上外围器件(6个共阴数码管,限流电阻和一个蜂鸣器)和应用程序(KEIL编译软件),构成相应的应用系统。
3.2.2 系统设计方框图
3.2.3软件设计流程
3.3理论原理
3.3.1总体设计原理
3.3.2结构设计
数码管实验,硬件部分是必须首先完成的部分,我们需要以单片机为中心,在它的上面焊接上8个三极管和8个电阻,可以根据原理图或者实物图像进行焊接。
首先知道数码管是共阳管,所以要用PNP型的三极管进行放大,接法就是射集输出器的接法。
由于我是共阳数码管在接图时没用了解就接了NPN型的三极管放大导致数码管不能正常显示,因此我重新设计了一个电路图如下:
3.3.3软件设计
#include
#definetl0xba;
#defineth0x3c;
sbittime=P1^0;
sbittimer=P1^1;
sbitadd=P1^2;
sbitdec=P1^3;
sbitspeaker=P3^5;
bitdisp_sd;
bitdisp_ms;
bitdisp_sdt;
bitzhengdian=0;
//unsignedcharcodeled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数字0-9的编码
unsignedcharcodeled[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,};//数字0-9的编码
unsignedchartime_cc,timer_cc;
unsignedcharcount0,count1,second,minit,hour;unsignedcharsecond1,minit1,hour1;unsignedcharhour_zd;
voiddelay(void)
{
unsignedinti;
for(i=0;i<100;i++);
}
voiddisplay(void)
{
if(disp_ms==0)
{
if(disp_sd==0)
{
P0=led[hour/10];
P2=0xFE;
delay();
P2=0xFF;
P0=led[hour%10];
P2=0xFD;
delay();
P2=0xFF;
P0=0x80;
P2=0xFB;
delay();
P2=0xFF;
P0=led[minit/10];
P2=0xF7;
delay();
P2=0xFF;
P0=led[minit%10];
P2=0xEF;
delay();
P2=0xFF;
P0=0x80;
P2=0xDF;
delay();
P2=0xFF;
P0=led[second/10];
P2=0xBF;
delay();
P2=0xFF;
P0=led[second%10];
P2=0x7F;
delay();
P2=0xFF;
}
else
{
if(time_cc==0x01)
{
if(disp_sdt==1)
P0=led[hour/10];
else
P0=0x00;
P2=0xFE;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[hour%10];
else
P0=0x00;
P2=0xFD;
delay();
P2=0xFF;
}
else
{
P0=led[hour/10];
P2=0xFE;
delay();
P2=0xFF;
P0=led[hour%10];
P2=0xFD;
delay();
P2=0xFF;
}
P0=0x80;
P2=0xFB;
delay();
P2=0xFF;
if(time_cc==0x02)
{
if(disp_sdt==1)
P0=led[minit/10];
else
P0=0x00;
P2=0xF7;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[minit%10];
else
P0=0x00;
P2=0xEF;
delay();
P2=0xFF;
}
else
{
P0=led[minit/10];
P2=0xF7;
delay();
P2=0xFF;
P0=led[minit%10];
P2=0xEF;
delay();
P2=0xFF;
}
P0=0x80;
P2=0xDF;
delay();
P2=0xFF;
if(time_cc==0x03)
{
if(disp_sdt==1)
P0=led[second/10];
else
P0=0x00;
P2=0xBF;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[second%10];
else
P0=0x00;
P2=0x7F;
delay();
P2=0xFF;
}
else
{
P0=led[second/10];
P2=0xBF;
delay();
P2=0xFF;
P0=led[second%10];
P2=0x7F;
delay();
P2=0xFF;
}
}
}
else
{
if(disp_sd==0)
{
P0=led[hour1/10];
P2=0xFE;
delay();
P2=0xFF;
P0=led[hour1%10];
P2=0xFD;
delay();
P2=0xFF;
P0=0x80;
P2=0xFB;
delay();
P2=0xFF;
P0=led[minit1/10];
P2=0xF7;
delay();
P2=0xFF;
P0=led[minit1%10];
P2=0xEF;
delay();
P2=0xFF;
P0=0x80;
P2=0xDF;
delay();
P2=0xFF;
P0=led[second1/10];
P2=0xBF;
delay();
P2=0xFF;
P0=led[second1%10];
P2=0x7F;
delay();
P2=0xFF;
}
else
{
if(timer_cc==0x01)
{
if(disp_sdt==1)
P0=led[hour1/10];
else
P0=0x00;
P2=0xFE;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[hour1%10];
else
P0=0x00;
P2=0xFD;
delay();
P2=0xFF;
}
else
{
P0=led[hour1/10];
P2=0xFE;
delay();
P2=0xFF;
P0=led[hour1%10];
P2=0xFD;
delay();
P2=0xFF;
}
P0=0x80;
P2=0xFB;
delay();
P2=0xFF;
if(timer_cc==0x02)
{
if(disp_sdt==1)
P0=led[minit1/10];
else
P0=0x00;
P2=0xF7;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[minit1%10];
else
P0=0x00;
P2=0xEF;
delay();
P2=0xFF;
}
else
{
P0=led[minit1/10];
P2=0xF7;
delay();
P2=0xFF;
P0=led[minit1%10];
P2=0xEF;
delay();
P2=0xFF;
}
P0=0x80;
P2=0xDF;
delay();
P2=0xFF;
if(timer_cc==0x03)
{
if(disp_sdt==1)
P0=led[second1/10];
else
P0=0x00;
P2=0xBF;
delay();
P2=0xFF;
if(disp_sdt==1)
P0=led[second1%10];
else
P0=0x00;
P2=0x7F;
delay();
P2=0xFF;
}
else
{
P0=led[second1/10];
P2=0xBF;
delay();
P2=0xFF;
P0=led[second1%10];
P2=0x7F;
delay();
P2=0xFF;
}
}
}
}
voidkey_scan(void)
{
unsignedinti;
if(time==0)
{
speaker=1;
for(i=0;i<10;i++)
display();
if(time==0)
{
TR0=0;
do
display();
while(time==0);
disp_sd=1;
disp_ms=0;
time_cc++;
if(time_cc==4)
{
TR0=1;
time_cc=0;
disp_sd=0;
}
}
}
if(timer==0)
{
speaker=1;
for(i=0;i<10;i++)
{
display();
}
if(timer==0)
{
do
display();
while(timer==0);
disp_sd=1;
disp_ms=1;
timer_cc++;
if(timer_cc==4)
{
timer_cc=0;
disp_sd=0;
disp_ms=0;
}
}
}
if(add==0)
{
for(i=0;i<10;i++)
{
display();
}
if(add==0)
{
do
display();
while(add==0);
if(disp_ms==0)
{
switch(time_cc)
{
case(0x01):
{hour++;if(hour>23)hour=23;break;}
case(0x02):
{minit++;if(minit>59)minit=59;break;}
case(0x03):
{second++;if(second>59)second=59;break;}
default:
break;
}
}
else
{
switch(timer_cc)
{
case(0x01):
{if(hour1==23)hour1=23;elsehour1++;break;}
case(0x02):
{if(minit1==59)minit1=59;elseminit1++;break;}
case(0x03):
{if(second1==59)second1=59;elsesecond1++;break;}
default:
break;
}
}
}
}
if(dec==0)
{
for(i=0;i<10;i++)
{
display();
}
if(dec==0)
{
do
display();
while(dec==0);
if(disp_ms==0)
{
switch(time_cc)
{
case(0x01):
{if(hour==0)hour=0;elsehour--;break;}
case(0x02):
{if(minit==0)minit=0;elseminit--;break;}
case(0x03):
{if(second==0)second=0;elsesecond--;break;}
default:
break;
}
}
else
{
switch(timer_cc)
{
case(0x01):
{if(hour1==0)hour1=0;elsehour1--;break;}
case(0x02):
{if(minit1==0)minit1=0;elseminit1--;break;}
case(0x03):
{if(second1==0)second1=0;elsesecond1--;break;}
default:
break;
}
}
}
}
}
voidtimer_alam(void)
{
if((disp_ms==0)&&(disp_sd==0))
{
if((hour1==hour)&&(minit1==minit))
{
speaker=disp_sdt;
}
else
{
if(zhengdian==1)
{
speaker=disp_sdt;
}
else
speaker=1;
}
}
}
//******************************主函数*************************************************
voidmain(void)
{
second=0;//时间初始化为00:
00:
00
minit=0;
hour=0;
second1=0;//闹钟默认为12:
00:
00
minit1=0;
h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 说明书