单片机课程设计定时闹钟docxWord格式文档下载.docx
- 文档编号:18570054
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:21
- 大小:109.19KB
单片机课程设计定时闹钟docxWord格式文档下载.docx
《单片机课程设计定时闹钟docxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计定时闹钟docxWord格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输岀电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INTO(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记吋器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输岀的脉冲或用丁•定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0-此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微竝髙。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程丿芋存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期
两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电半时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)O
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
來自反向振荡器的输出。
U2
AT89C51
图2AT89C51引脚图
3.21602LCD液晶显示器
LM016L<
TEXT>
LCD1
色冒蛍翌菽285S83S8S
卜卜1・
MMZ
00卜|且|二
图3LCD1602引脚图
功能说明
7疗节LCD的引鸭進义
引押号
电平
输入,输辻I
作用
1
#55
2
uce
电刖叩
3
Wee
对比讽整唱压
*
RS
■入I
S
R/W
B/1
11入
A向“0埒入福今衣数祸"
从“叭实取僧思
4
€
4入
便能信号J
治朋?
昭令
bP・
首入冷出
铁退(量低位》
•
DB1
输入命出
敖据^linel
9
DB2
綸入*箱出
費基总线“22
10
D83
a/1
输入/辑出
11
DBb
»
/!
箱入"
fi出
12
DBS
输入"
输岀
数据总线
13
DB6
9H
希入爲出
铁世总经人讪“
“
DB7
镣入,输出
魏据总线“n°
7(最高位)
15
A
♦毗
LC惰朮电i療正極
16
K
接地
LCD背光电擦旬极
图1LCD引脚图说明
第1脚:
VSS为地电源。
第2脚:
VDD接5V正屯源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电半时选择数据寄存器、低电半时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由髙电平跳变成低电平时,液晶模块执行命令。
第7〜14脚:
DO〜D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
3.3其他重要元件
独立式键盘的接口电路:
在单片机应用系统中,有时只需要几个简单的按键向系统输入信息。
这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。
每个独立式按键单独占有一根I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线。
这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。
故只在按键数量不多时采用这种按键电路。
在此电路中,按键输入都采用低电平有效。
上拉电阻保证了按键断开时,I/O接口线有确定的高电平。
当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。
图5锥盘
三、流程图绘制以及说明
主程序开始
本次课程设计实验程序中,用单片机的外部中断定时器來计时,然后通过來判断计时器和闹铃时间來使闹铃响,通过对单片机的一些端口进行扫描來判断时分秒的调整,选择计时器调时还是定时闹钟的调时以及是否闹铃。
程斥流程图
初始化变鼠
初始化LCD
L_l
ZS
初始化计时器,初始化闹铃
打描显示器更新时间数据,闹钟时间是不是到了?
ft
是否按下5个按键
K1:
调时
K2:
调分
K3:
完成
K4:
打开闹铃
图6程序流程图
四、proteus仿真说明
1,开始程序
Y
1Cz*-i>
line-00:
09
虽饉翌套山計EE器芝占
■1■■■■■IhI■la1■■■1
:
卄卅计|特制:
图1显示器幵始及定时
Tine:
01:
01
Ria”:
gj:
02
图8定时闹铃开并调定时闹钟的时间
2•当闹铃打开,计时时间到了定时闹铃的时间后,喇叭开始叫
lccmiHDn.
••tn•
亡fXI..
“■'
■cmsiAu
.H•|•、TO:
附■:
•一x
*•
31•
•5OAH
xmxrn
PCXDd
K19AIH勺尿北
PT
eu
■2XM\
■
F2SW
•2SI9
巧OBW.V1X0•5?
.mn•3XIMTI
八⑷
HVT1
FlJ
PU
PII
PIS
•■召
£
AFXfll…存A.
irxjpg
e]:
91门”2昕龙2
图9仿真结果
五、课程设计体
这次课程设计一个星期,刚知道课程设计的时候感觉题目很简单,应该花很少的时间
就可以完成课程设计,感觉如果用汇编语言的话感觉程序会有点多,所以我决定用ci吾言
8
编程,开始编程时,发现编程的时候就有些问题了。
要学会怎么用KEIL,然后把生成的HEX文档,把它加载到Proteus里的89c51芯片,使芯片能工作。
这次仿真要用到单片机种最重要的两个部分,外部中断和外部计时器,另外学会了如何驱动1602液晶显示器。
这次课程设计让我学会了怎么用C语言来编写程序以供单片机使用,对单片机中的外部中断还有一些P0,Pl,P2口的使用,P0需要添加上拉电阻,对单片有了更加深入的了解,对Proteus,keil的使用更加熟练了。
实验中同样出现些问题,比如闹钟的设定以及K4功能的实现,还有延时功能的实现,所以要对单•片机的执行程斥需要的机器周期得完全了解清楚,用汇编语言容易计算所用的机器周期,用C语言的话就难些,这次课程设计使单片机能够实现定时闹钟的功能,实现了这次设计的要求。
这次课程设计让我更加认真的白己做了些以前想做想学的东西,并且认识到要多请教同学。
参考文献
[1]余发山.单片机原理及应用技术.中国矿业大学出版社,2003.21-45,98-118,185-198
[2]刘和平.单片机编程与入门.重庆人学出版社,2002.68-99,111-122
[3]陈明荧.89C51单•片机课程设计实训教材.清华大学出版社,2003.38-67,102-118
[4]刘瑞新.单片机原理及应用教程•北京机械工业出版社,2005.78-109
[5]杨文龙.单片机原理及应用.西安电子科技人学出版社,2002.33-62
[6]芾国增.单片机接I1及应用实验和训练指导.北京机械工业出版社,1998.43-70
[7]付寿英.张登举,徐E.单片机接II技术及在工业控制中的应用•陕西科学技术出版,2001.78-101
附录I电路原理图
附录II源程序代码
#include<
reg52.h>
#defineuintunsignedint
★defineucharunsignedcharsbitkeyl二P1"
O;
sbitkey2=Pl1:
sbitkey3二Pl2;
sbitkey4=pr3;
sbitlcden=P2"
2;
sbitlcdrs=P20;
sbitlcdrw=P21:
sbitled=P2*4;
sbitsound=P25;
uinta,b,i,nin,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,ahourge,ahourshi,sec;
//unsignedcharcode
x[]={0xFF,0xC7,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x07,OxOF,OxlF,0x3F,0x7F,OxFF,OxFF};
z[]={0xFF,0xE3,OxCl,0x80,0x00,0x00,0x00,0x80,OxCO,OxEO,OxFO,0xF8,OxFC,0x7F,Ox
FF,OxFF};
ucharcodetablel[]={'
O'
T‘2’「3—'
4’「5’「6’/7’,'
8’「9’};
ucharcodetable2[]="
Time:
00"
;
ucharcodeAlarm_l[]Alarm:
00
ucharcodenul[]二"
ucharnuml,num2:
voiddelay(unsignedintxms)//{uinti,j;
for(i=xms;
i>
0;
i―)
//LCD命令控制
for(j=124;
j>
j—);
voidwrite_com(ucharcom)
{delay(5);
lcdrs=0;
P0二com;
delay(5);
lcden=l;
lcden=O;
}
voidwrite_data(uchardate)
{
lcdrs=l;
FO二date;
lcden=0;
voidtime()
wh订e
(1)
if(keyl==0)
{delay(10);
if(hour==23)
hour=0;
else
hour++;
hourge=hour%10;
hourshi=hour/10;
//LCD数据控制
//设置时间
writecom(OxOf);
delay
(2);
write_com(0x80+6);
write_data(table1EhourgeJ);
write_com(0x80+5);
write_data(tablel[hourshi])while(!
keyl);
//delay
(1);
if(key2==0)
delay(10):
if(key2=0)
//分钟设置
if(min==59)
min=0;
min++;
minge=min%10;
minshi=min10;
write_com(OxOf);
write_com(0x80+9);
write_data(tablel[minge]);
delay
(1);
write_com(0x80+8):
write_data(tablel[minshi]);
while(!
key2);
if(key3=0)
delay(10);
if(key3=0)
write_com(0x0c);
TR1=1;
key3);
break;
voidalarm()
while
(1)
delay(10);
if(keyl==0)
if(ahour==24)
ahour=0;
ahour++;
ahourge=ahour%l0;
ahourshi=ahour/10;
//delay
(2);
write_com(0x80+0x40+8);
write_data('
write_com(0x80+0x40+7);
write_data(tablel[ahourge]);
delay(l);
write_com(0x80+0x40+6);
//delay
(2);
write_data(tablel[ahourshi]):
delay
(1);
if(key2==0)
if(amin==59)
amin=0;
amin++;
aminge=amin%10;
aminshi=amin/10;
write_com(0x0f);
write_com(0x80+0x40+10):
write_data(tablel[amingej);
write_com(0x80+0x40+9);
//delay
(2);
write_data(tablelLaminshil);
write_com(0x80+0x40):
for(i=0;
i<
ll;
i++)write_data(nulLil);
voidkeyscan()
if(key1=0)
elseif(key2==0)
key2)
ahourge=ahour%10;
ahourshi=ahour10;
write_com(0x80+0x40+7);
^Tite_data(tablel[ahourge]);
delay(5);
write_com(0x80+0x40+6);
write_data(tablel[ahourshi]);
aminshi=amin10;
write_com(0x80+0x40+10);
^*rite_data(tablel[aminge]);
delay
(2);
write_data(tablel[aminshi]);
write_com(0x80+0x40);
for(i=0;
++i)
write_data(Alarm_lEi]);
write_com(0x80+0x40);
i++)write_data(nul[i]):
elseif(key3==0)
if(key3==0)
key3):
ahourge=ahour%10;
ahourshi=ahour/10;
write_data(tablel[ahourge]);
^Tite_data(tablel[ahourshi]);
aminshi=amin,10;
write_data(tablel[aminge]);
delay
(2);
^Tite_data(tablel[aminshi]);
write_com(0x80+0x40);
write_data(Alarm_l.i]);
alarm();
elseif(key4==0)
if(key4==0)
key4);
a=a+l;
if(a%2=0)
for(b=0;
b<
6;
b++)
sound二、sound;
delay(200);
sound=l;
elseif(a%2==l)
sound=0;
delay(300);
sound=l:
}voidledinit()
lcdrw=O;
write_com(0x38);
write_com(0x06);
write_com(0x01);
delay⑵;
write_com(0x80);
16;
i++)
write_data(table2[i]);
voidinit()
keyl=l;
key2=l;
key3=l;
key4=l;
sec=0;
a=0;
amin=l;
//led二1;
TMOD二0x11;
THl=0x3C;
TL1二OxBO;
EA=1;
ET1=1;
voidledl()interrupt3
numl++;
num2++;
辻(numl==10)
numl=O;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 定时 闹钟 docx