液晶时钟Word下载.docx
- 文档编号:16339633
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:1.15MB
液晶时钟Word下载.docx
《液晶时钟Word下载.docx》由会员分享,可在线阅读,更多相关《液晶时钟Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
⒈电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输
入输出和控制信号(属控制总线)。
内容来自单片机之家
LCD管脚及控制字;
LCD管脚的定义
控制字
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
指令1:
清显示,指令码01H,光标复位到地址00H位置
指令2:
光标复位,光标返回到地址00H
指令3:
光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:
屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。
指令4:
显示开关控制。
D:
控制整体的显示开与关,高电平表示开显示,低电平表示关显示。
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时显示移动的文字,低电平时移动光标
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时为双行显示,F:
低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。
LCD实现滚动显示;
方法一:
采用LCD1602控制命令,显示后画面移动一个字符;
方法二:
循环使用显示不同位置,形成滚动效果。
三,Proteus仿真截图
(1)扬声器模块
(2)液晶显示模块
(3)晶振及复位电路模块
(4)按键模块
(5)原理图
(6)自动布局效果
(7)自动布线效果
(8)调整后布线效果
(9)PCB3D效果图
四,部分源程序
voidinit()//初始化函数
{
ucharnum;
rw=0;
lcden=0;
a=0;
b=0;
freq=0;
tab=0;
year=2012;
month=6;
day=30;
shi=23;
fen=59;
miao=45;
xq=6;
rn();
///*闰年2月调整*/
daymax=dayup[month];
initlcd();
delay
(2);
for(num=0;
num<
15;
num++)
{
wrdat(date[num]);
delay
(2);
}
wrcom(0x80+0x43);
8;
wrdat(time[num]);
TMOD=0X21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
PT0=1;
TH1=0xce;
TL1=0xce;
ET0=1;
ET1=1;
IT0=1;
EA=1;
TR0=1;
}
voidtimer0()interrupt1//定时器T0中断函数
{
a++;
if(a==20)//a=20
a=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
TR1=1;
if(shi==24)
{
shi=0;
day++;
//日期上限
if(day>
=daymax)
{
day=1;
month++;
if(month>
=13)
{
month=1;
year++;
if(year>
=3000)
year=2000;
newy();
rn();
///*闰年2月调整*/
}
daymax=dayup[month];
sfm(0x05,month);
}
sfm(0x08,day);
xq=xq+1;
//刷新星期
if(xq==7)
xq=0;
reweek();
sfm(0x43,shi);
}
sfm(0x46,fen);
}
sfm(0x49,miao);
voidsfm(ucharadd,uchardat)//写年月日函数
ucharh,l;
h=dat/10;
l=dat%10;
wrcom(0x80+add);
wrdat(0x30+h);
wrdat(0x30+l);
voidnewy()//更新年函数
h=year/100;
l=year%100;
wrcom(0x80);
wrdat(0x30+h/10);
wrdat(0x30+h%10);
wrdat(0x30+l/10);
wrdat(0x30+l%10);
voidinitlcd()//初始化液晶函数
wrcom(0x38);
wrcom(0x0c);
wrcom(0x06);
wrcom
(1);
voidwrcom(ucharcom)//液晶写命令函数
rs=0;
P0=com;
delay
(1);
lcden=1;
delay(5);
lcden=0;
voidwrdat(uchardat)//液晶写数据函数
rs=1;
P0=dat;
voiddelay(ucharz)//延时函数
ucharx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
voidreweek()//更新星期函数
{ucharnum,fir;
fir=xq*4;
wrcom(0x80+0x0c);
for(num=3;
num>
num--)
wrdat(week[fir]);
fir++;
voidrn()////闰年调整
if(year%100==0)
if(year%400==0)
dayup[2]=30;
else
dayup[2]=29;
else
{
if(year%4==0)
voidint0()interrupt0//中断0函数
count++;
flacount(count);
voidclear()//清除计数函数
wrcom(0x80+0x4d);
wrdat('
'
);
switch(keynum)
case1:
wrcom(0x80+0x49);
break;
case2:
wrcom(0x80+0x46);
case3:
wrcom(0x80+0x43);
case4:
wrcom(0x80+0x0c);
case5:
wrcom(0x80+0x08);
case6:
wrcom(0x80+0x05);
case7:
wrcom(0x80+0x02);
case8:
wrcom(0x80+0x00);
}
voidflacount(uintval)//更新计数值函数
ucharbai,shi,ge;
bai=val/100;
shi=val%100/10;
ge=val%10;
wrdat(0x30+bai);
wrdat(0x30+shi);
wrdat(0x30+ge);
voidtimer1()interrupt3//50us定时器T1函数
b++;
if(b==mus[freq])
b=0;
spk=~spk;
tab++;
if(tab==8000)
tab=0;
freq++;
if(freq==4)
freq=0;
TR1=0;
TL1=0xce;
spk=0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶 时钟