单片机作业黄星.docx
- 文档编号:6799930
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:19
- 大小:94.33KB
单片机作业黄星.docx
《单片机作业黄星.docx》由会员分享,可在线阅读,更多相关《单片机作业黄星.docx(19页珍藏版)》请在冰豆网上搜索。
单片机作业黄星
数
子
时
钟
大
型
作
业
前言
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、RAM、ROM、多种I/O口和中断系统、定时器/计时器等功能(可能包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
目录
第一章单片机电子时钟简介……………….....................…1
1.1电子时钟功能…………………...…………..1
1.2电子时钟实现步骤……………………...…..1
第二章:
绘制电路图准备……………......................……….2
2.1绘制原理图所需元器件清单………………2
2.2控制器引脚分配……………………..……...3
2.3硬件描述……………………………….……3
第3章:
总体设计方案……………………....................…..4
第四章:
电子时钟模块电路……………....................……..5
4.1数码管显示管设计部分……………………5
4.2.键盘控制部分…………………………....…5
4.3闹铃电路……………………....…….…..….5
4.4复位电路………………………………...….6
4.5电子时钟原理图……………………...…….6
第五章:
电子时钟的调试及程序编写……..................……9
5.1程序的编写……………………………..…..9
第6章:
总结........................................................................19
第7章参考文献....................................................................20
III
第一章单片机电子时钟简介
1.1电子时钟功能
制作一个电子时钟,通过编程,实现以下功能:
1)显示当前时间
2)调整时间(小时、分钟)
3)显示闹铃时间
4)调整闹铃时间(小时、分钟)
5)设置闹铃、解除闹铃
1.2电子时钟实现步骤
应用protel制作仿真电路原理图,经过程序下载,验证电路所实现的功能,具体要求如下:
1)电子元件的选取
2)确定电子元件的参数及使用方法
3)单片机引脚的分配方案
4)绘制电子时钟原理图
5)Protel仿真设计
6)编程、调试、实现功能
7)实习总结报告
第二章绘制原理图所需元器件及控制器引脚分配
2.1绘制原理图所需元器件
1)stc89c52一片
2)12M晶振一个
3)共阳极数码管四个
4)发光二极管两个
5)蜂鸣器一个
6)微动按键五个
7)晶体管58550五个
8)max232一个
9)集成稳压块L7805
10)电源孔一个
11)开关一个
12)串口线一条
13)串口接口D(D型口)一个
14)IC插座(40P)一个
15)IC插座(18P)一个
16)电源电容若干
2.2控制器引脚分配
1)单片机最小系统
2)通信电路P3.0、p3.1
3)显示电路(P0、P2.1~P2.4)
4)蜂鸣电路(P2.0)
5)键盘电路(P3.2、P3.3、P3.4、P3.5)
2.3硬件描述
1)控制器用AT89S51,12M晶振
2)数码管动态扫描驱动——P2口
3)数码管段码驱动——P1口
4)闹铃驱动——P1.0
5)调整键K1——P3.2(外部中断0,正常、调时、调分、调秒)
6)定时/正常切换键K2——P3.3
7)时间参数低位加1键K3——P3.4
8)时间参数高位加1键K4——P3.5
第三章总体设计方案
系统框架图
第四章模块设计
4.1数码管显示管设计部分
数码管显示部分采用LED六段数码显示管,利用单片机输出高低电平实现数码管的刷新显示。
4.2.键盘控制部分
按键部分采用四个按键开关,实现不同功能
4.3闹铃电路
4.4复位电路
本设计各部分采用统一5V电源集中供电.
4.5电子时钟原理图
4.6电子时钟仿真图:
第五章电子时钟控制程序
#include"reg51.h"
#defineucharunsignedchar
#defineuintunsignedint
#definesmgplayP2
sbits1out=P0^3;
sbits2out=P0^2;
sbits3out=P0^1;
sbits4out=P0^0;
sbitkeyadd=P3^4;
sbitkeysub=P3^5;
sbitleds=P1^2;
sbitleds1=P1^5;
sbitspeak=P0^4;
ucharhourg,hourd,ming,mind,secdata=0;
uchardhourg,dhourd,dming,dmind;
uchart1num=6;
uchart0num1,t0num2;
uintdtime,chgtime=50;
ucharfselect=0;
bitsysflg=0;
bitfdesplay=0;
bitfspk=0;
unsignedcharcodetabsm[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71};
unsignedcharcodedtabsm[]={0x02,0x9E,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08,0x10,0xC0,0x62,0x84,0x60,0x70};
voiddlyplay()
{
uchari,j;
for(i=0;i<2;i++)
for(j=0;j<100;j++);
}
voidcomparetime()
{
if((dhourg==0)&&(dhourd==0)&&(ming==0)&&(mind==0))
fspk=0;
else
{
if((hourg==dhourg)&&(hourd==dhourd)&&(ming==dming)&&(mind==dmind))
fspk=1;
else
fspk=0;
}
}
voidmain()/主函数/
{
P0=P1=P2=P3=0xff;
hourg=2;
hourd=3;
ming=5;
mind=9;
dhourg=0;
dhourd=0;
dming=0;
dmind=0;
EA=EX0=IT0=EX1=IT1=ET1=ET0=1;
TMOD=0x11;
TH1=0x3c;
TL1=0xb0;
TH0=0x3c;
TL0=0xb0;
t0num1=10;
t0num2=2;
TR0=1;
leds=0;
leds1=0;
while
(1)/显示部分/
{
while(sysflg==0)
{
s1out=s2out=s3out=s4out=1;
smgplay=tabsm[hourg];
if(fselect==1)
s1out=fdesplay;
else
s1out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=tabsm[hourd];
if(fselect==1)
s2out=fdesplay;
else
s2out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=tabsm[ming];
if(fselect==2)
s3out=fdesplay;
else
s3out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=tabsm[mind];
if(fselect==2)
s4out=fdesplay;
else
s4out=0;
dlyplay();
if(chgtime==0)
{
chgtime=50;
if(keyadd==0)
{
switch(fselect)
{
case1:
{
hourd++;
if((hourg!
=2)&&(hourd==10))
{hourd=0;
hourg++;}
else
{
if((hourg==2)&&(hourd==4))
hourg=hourd=0;
}
}
break;
case2:
{
mind++;
if(mind==10)
{
mind=0;
ming++;
if(ming==6)
ming=0;
}
}break;
}
}//keyadd
if(keysub==0)
{
switch(fselect)
{
case1:
{
hourd--;
if(hourd==255)
{hourd=9;
hourg--;
if(hourg==255)
{hourg=2;
hourd=3;}
}
}break;
case2:
{
mind--;
if(mind==255)
{
mind=9;
ming--;
if(ming==255)
ming=5;
}
}break;
}
}//keysub
}//chgtime
chgtime--;
if(fspk)
{
if((keyadd==0)||(keysub==0))
fspk=0;
}
}//flgsys==0
while(sysflg)
{
s1out=s2out=s3out=s4out=1;
smgplay=dtabsm[dhourg];
if(fselect==1)
s1out=fdesplay;
else
s1out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=dtabsm[dhourd];
if(fselect==1)
s2out=fdesplay;
else
s2out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=dtabsm[dming];
if(fselect==2)
s3out=fdesplay;
else
s3out=0;
dlyplay();
s1out=s2out=s3out=s4out=1;
smgplay=dtabsm[dmind];
if(fselect==2)
s4out=fdesplay;
else
s4out=0;
dlyplay();
if(fselect==0)
dtime++;
if(dtime==2000)
{
sysflg=0;
dtime=0;
}
if(chgtime==0)
{
chgtime=50;
if(keyadd==0)
{
switch(fselect)
{
case1:
{
dhourd++;
if((dhourg!
=2)&&(dhourd==10))
{dhourd=0;
dhourg++;}
else
{
if((dhourg==2)&&(dhourd==4))
dhourg=dhourd=0;
}
}
break;
case2:
{
dmind++;
if(dmind==10)
{
dmind=0;
dming++;
if(dming==6)
dming=0;
}
}break;
}
}//keyadd
if(keysub==0)
{
switch(fselect)
{
case1:
{
dhourd--;
if(dhourd==255)
{dhourd=9;
dhourg--;
if(dhourg==255)
{dhourg=2;
dhourd=3;}
}
}
break;
case2:
{
dmind--;
if(dmind==255)
{
dmind=9;
dming--;
if(dming==255)
dming=5;
}
}break;
}
}//keysub
}//chgtime
chgtime--;
if(fspk)
{
if((keyadd==0)||(keysub==0))
fspk=0;
}
}//sysflg==1
}//while
(1)
}//main
voidzd0()interrupt0
{
if(fspk)
fspk=0;
else
{
sysflg=~sysflg;
fselect=0;
}
IE0=0;
}
voidzd2()interrupt2
{
if(fspk)
fspk=0;
else
{
fselect++;
fselect%=3;
if(fselect!
=0)
TR1=1;
else
TR1=fdesplay=0;
}
IE1=0;
}
voidzd3()interrupt3
{
TH1=0x3c;
TL1=0xb0;
t1num--;
if(t1num==0)
{
t1num=6;
fdesplay=~fdesplay;
}
}
voidzd1()interrupt1
{
TH0=0x3c;
TL0=0xb0;
t0num1--;
if(t0num1==0)
{
t0num1=10;
leds=~leds;
leds1=~leds1;
if(fspk)
speak=~speak;
else
speak=1;
t0num2--;
if(t0num2==0)
{
t0num2=2;
secdata++;
if(secdata==60)
{
secdata=0;
mind++;
if(mind==10)
{
mind=0;
ming++;
if(ming==6)
{
ming=0;
hourd++;
if((hourg!
=2)&&(hourd==10))
{hourd=0;
hourg++;}
else
{
if((hourg==2)&&(hourd==4))
hourg=hourd=0;
}
}
comparetime();
}
}
}
}
第六章总结
经过这次的实践,也可以说是经过了多天的学习,尽管期间苦难重重,但我们还是从中学习了不少新的知识和解决困难的方法,也体验到了自主创作的快乐。
在本次课题设计中,我更加熟练掌握了单片机的开发系统,对于开发系统的应用和软件的使用更加熟练。
对于单片机最小系统,内部组成,信号引脚有了一个更全面的认识。
本次设计中,用到了单片机内部定时器资源、I/O端口、键盘和显示接口等功能的知识,让我学会知识的综合运用,锻炼独立设计、制作和调试应用系统的能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方法等,并掌握单片机的开发过程。
其实,在课题设计过程中,有很多地方都有问题,在绘制电路原理图过程中,有些元件的连接出了问题,在运行过程中,会显示出错,在确定总体框架图时候,有些地方被遗漏,没有完全复合功能要求,在设计电路模块的时候,遗漏某些电子元件,有些模块二不符合要求等,编写程序就出现了更多的问题,对于变量、功能引脚的设置、使用,函数的定义、应用,外部中断,等的使用,都出现过问题。
所有这些问题,通过和同学讨论,翻阅课本,并最终在老师引导下,都得到了解答。
第七章参考文献
1.单片机技术(C语言版)
2.单片机实验指导书
3.单片机C语言版100例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)