问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

1602电子钟的设计

发布网友 发布时间:2022-05-07 21:28

我来回答

3个回答

热心网友 时间:2023-05-19 07:57

//按4X4键盘的F键 进入设定状态
//E D 键是前后移动键
//C按键是调整数值按键
#include "reg52.h"
#define uchar unsigned char
sbit RW=P2^1;
sbit RS=P2^0;
sbit E=P2^2;
bit at=0;
uchar code shen[]={"CLOCK!"};
uchar code word[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x20};
uchar dispbuf[8],h,m,s,counter;
void delay()
{
uchar i;
for(i=0;i<255;i++);
}

/*******写命令**********/
void lcd_wmc(uchar i)
{

P0=i;
RS=0;
RW=0;
E=0;
delay();
E=1;
}

/*******写数据***********/

void lcd_wmd(uchar i)
{

P0=i;
RS=1;
RW=0;
E=0;
delay();
E=1;
}

/*******初始化液晶*******/
void lcd_init()
{
uchar i;
lcd_wmc(0x01);
lcd_wmc(0x38);
lcd_wmc(0x0c);
lcd_wmc(0x06);
lcd_wmc(0xc9);
for(i=0;i<6;i++)
lcd_wmd(shen[i]);
lcd_wmc(0xc0);
}

/*******更新缓冲区子程序*******/
void newbuf()
{
dispbuf[0]=s%10;
dispbuf[1]=s/10;
dispbuf[3]=m%10;
dispbuf[4]=m/10;
dispbuf[6]=h%10;
dispbuf[7]=h/10;
}

/*******显示子程序**********/
void disp(uchar dispadd)
{
uchar tmp;
lcd_wmc(dispadd);
tmp=dispbuf[7];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[6];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[5];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[4];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[3];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[2];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[1];
tmp=word[tmp];
lcd_wmd(tmp);
tmp=dispbuf[0];
tmp=word[tmp];
lcd_wmd(tmp);
}

/*********************键盘子程序***********************/

uchar keypro(void)
{
uchar scanl,scanh;
P1=0x0f;//先将所有行线拉低
if((P1&0x0f)!=0x0f) //如果列线有变化
{
delay();//延迟一段时间。
if((P1&0x0f)!=0x0f)//如果此时此刻列线还有变化,说明确实有按键按下
{
scanl=0xfe;
while((scanl&0x10)!=0)
{
P1=scanl; //给P1口赋扫描码,每次只拉低一行
if((P1&0xf0)!=0xf0) //如果判断为真,则说明找到了按键按下的行
{
scanh=(P1&0xf0)|0x0f; //计算识别码
return (~scanh)+(~scanl);
}
else scanl=(scanl<<1)|0x01; //否则依次将第二,第三,第四行拉低

}
}
}
return 0;//没有按键 按下 返回0
}

/********************时间调整子程序********************/
void adjustime()
{
uchar k;
static uchar add;
k=keypro();
switch(k)
{
case 0x88: if(!at){add=0xc1;EA=0;lcd_wmc(0xc1);lcd_wmc(0x0f);at=1;}
else {lcd_wmc(0xc0);lcd_wmc(0x0c);at=0;EA=1;} break;

case 0x48: if(at)
{
if(add==0xc1){add=0xc7; lcd_wmc(add);}
else {add=add-3;lcd_wmc(add);}
}
break;

case 0x28: if(at)
{
if(add==0xc7) {add=0xc1;lcd_wmc(add);}
else {add=add+3;lcd_wmc(add);}
}
break;

case 0x18: if(at)
{
if(add==0xc1) h++;
if(h==24)
h=0;
if(add==0xc4) m++;
if(m==60)
m=0;
if(add==0xc7) s++;
if(s==60)
s=0;
newbuf();
disp(0xc0);
lcd_wmc(add);
}
break;
default: break;
}
if(k!=0)
{
while((P1&0xf0)!=0xf0)
P1=0xf0;
}

}

/*********************初始化子程序**********************/
void init()
{

TMOD=0x01;
TH0=0x4c;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
counter=0;
h=12;m=0;s=0;
dispbuf[2]=10;
dispbuf[5]=10;
}

/***************************主程序************************/

void main(void)
{
init();
lcd_init();

while(1)
{
adjustime();
if(!at)
{
//闪烁
if(counter<10)
{
dispbuf[2]=10;
dispbuf[5]=10;
}
else
{
dispbuf[2]=11;
dispbuf[5]=11;
}
//更新显示缓冲区及调用显示程序
if(counter==0)
{
newbuf();
disp(0xc0);
}
else if(counter==10)
disp(0xc0);
}
}
}

/*************************定时器0的中断**********************/
void Time0() interrupt 1 using 2 //再次强调中断子程序执行时间越短越好
{
TH0=(65536-46075)/256;
TL0=(65536-46075)%256;
counter++;
if(counter==20)
{
s++;
counter=0;
if(s==60)
{
m++;
s=0;
if(m==60)
{
h++;
m=0;
if(h==24)
h=0;
}
}

}
}

热心网友 时间:2023-05-19 07:57

自个编去……

热心网友 时间:2023-05-19 07:58

百度一下....

我有 不过... 这是基础 自己老实写的好
不同平台下 程序不一样 最好跟大家说说你用的什么器件驱动这个LCD
最后... 可以联系我
基于51单片机的1602显示带闹钟万年历设计

硬件部分采用AT89C52作为控制核心,结合DS1302时钟芯片、DS18B20温度传感器、LCD1602显示屏和按键电路。系统设计考虑到单片机兼容性、温度检测精度、显示模块可靠性与操作便捷性。第二章 硬件电路设计 §2.1 单片机最小系统 以AT89C52为核心构建最小系统,采用11.0592MHz晶振,确保系统稳定运行。电路设计包括复位...

基于51单片机的1602显示带闹钟万年历设计

万年历采用直观的1602液晶显示模块,能同时显示年、月、日、周、时、分、秒,还具有时间校准功能,操作简便且显示清晰。设计初衷在于适应科技发展趋势,提高生活便利性。单片机技术在电子万年历中发挥了关键作用,它的体积小、性价比高,适用于各种电子设备。课题研究的背景包括电子钟的发展历程,以及单片机在...

基于单片机51系列及DS1302时钟芯片数字电子钟的制作。求电路总原理图...

这是1602电路,和时钟电路。元件基本差不多。电路如图 include &lt;intrins.h&gt; define uchar unsigned char define uint unsigned int sbit ds1302_RST =P2^0;sbit ds1302_IO =P2^1;sbit ds1302_SCLK=P2^2;sbit ACC0=ACC^0;sbit ACC7=ACC^7;sbit A1=P3^0;sbit A2=P3^1;sbit A3=P3^2;...

如何用ARDUINO UNO+1602+DS1302做电子时钟

时时钟具有能计算2100 年之前的秒、分、时、日、星期、月、年的能力,还有闰年调整的能力 ★ 31 8 位暂存数据存储RAM ★ 串行 I/O 口方式使得管脚数量最少 ★ 宽范围工作电压2.0 5.5V ★ 工作电流 2.0V 时,小于300nA ★ 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组...

设计显示年月日小时分钟秒的电子时钟,每当用户按报时键或整点时,时钟...

/*=== 使用1602液晶显示DS1302+c51时钟 [注12M晶振]===*/ include &lt;AT89x52.h&gt; include &lt;string.h&gt; include &lt; intrins.h &gt; define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;define LCM_RW P3_1 //定义引脚 define LCM_RS P3_0 define LCM_E P3_2 define...

...LM016L液晶显示、时钟芯片DS1302芯片制作电子钟,需要一个程序,帮帮...

直接百度 1602 的时钟程序,lm016l好像就是1602。晶振使用12m的。define LCM_RW P2^4 //定义引脚#define LCM_RS P2^3#define LCM_E P2^5#define LCM_Data P0#define Busy 0x80 //用于检测LCM状态字中的Busy标识#include &lt;reg52.h&gt;void WriteDataLCM (unsigned char WDLCM);void...

液晶数字钟 使用LCM1602液晶做显示器 使用单片机定时计数器设计时钟...

液晶数字钟,使用LCD1602液晶做显示器,是要做仿真数字钟吗,可先画出仿真图,确定好连线,也可以写程序。至于1602的显示格式,可采用如下仿真图的显示方式。

(急!!!)用DS1302与1602LCD设计的可调式电子日历与时钟 我要C程序...

void Display_LCD_String(uchar p,uchar *s) //1602显示{ uchar i; Set_LCD_POS(p); for(i=0;i&lt;16;i++) { Write_LCD_Data(s[i]); DelayMS(1); }}void write_com(uchar com){ RS=0; P0=com; DelayMS(5); EN=1; DelayMS(5); EN=0;}void write_date(uchar date){ RS=1; P0=...

那要如何在用DS1302与1602LCD设计的可调式电子日历与时钟的程序里加上...

include &lt;reg51.h&gt; typedef unsigned int uint;typedef unsigned char uchar;sbit DS1302_SDA=P1^0;sbit DS1302_SCK=P1^1;sbit DS1302_RST=P1^2;sbit KEY1=P3^0;sbit KEY2=P3^1;sbit KEY3=P3^2;sbit KEY4=P3^3;sbit BEEP=P3^7;uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x...

求教一个51单片机程序。。(LCD电子时钟)

这一次老师要求做一个基于LCD显示的电子时钟。完全不知所云,所以希望能请教一下高手关于LCD时钟的事情。做一个LCD时钟需要些什么东西啊,具体步骤是怎么做的呢?现在手上有一块单片机开发板,还有一个1602显示屏,设计要求如下:以单片机控制的时钟,在LCD显示器上显示当前的时间。设计的基本要求:1.使用文字型LCD显示器...

数电电子钟设计 电子时钟的设计 多功能电子钟的设计与制作 数字电子钟的设计原理 数字电子钟的设计方案 数字电子钟的设计与调试 数字电子钟的设计与实现报告 数字电子钟的设计与制作 电子时钟的设计方案
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
急求高人解答 ···管理类的问题 ···!!!急急急···我会在线等... ...如果基层管理幅度为8,高层管理人员管理幅度为3,则该公司中层管理人员... ...发生化学变化的实质是( )A.分子间隔发生变化B.物质状态发生改变C... 下列变化不能说明发生了化学变化的是( )A.变化时有电子的得失或共用电... 下列描述正确的是( )A.固态物质的分子间无间隔B.液态物质的分子不断运动... 原来微信打开这个功能,能够看到马路上的街景,涨知识了! ...百度帐号被人在异地登录了,问题是没有任何人知道我的密码啊?而且也... 医疗事故纠纷和医疗损害纠纷的区别是什么 医疗纠纷与医疗事故的定义是什么? 医疗事故纠纷是指什么的 考拉旗下的贷款产品是全都可以借还是只能借其中的某一个呢? 考拉是什么东西?怎么用? 考拉海购全额兑换款真实吗? 越南考拉香烟那有的卖 U盘win7 32位安装系统 VB.NET的几种延时方法 win7系统32位旗舰版怎样u盘安装 奶茶加盟店,除了加盟费,其他的还有什么费用? 加盟店除了加盟费还有什么其他费用??? 加盟和氏修脚堂除了加盟费还有其他费用吗? 加盟杨国福除了加盟费用还有什么费用啊?加盟后有保障吗? 加盟麻辣烫品牌除了加盟费外,为什么还要收取管理费? 轮胎在使用中应该注意什么?多久更换一次轮胎是正确的? 奶昔是什么东西,它的作用是什么 钳工实训周记,谁会写? 奶昔是什么东西做的 求硕士翻译学方向的论文开题报告范文 梦见大便虫 驱虫药怎么吃~~~ 小狗拉稀呕吐便虫 谁能简单的说一下 由AT89C52 DS12C887 DS18B20 1602 构成的电子钟的工作原理 求单片机ds1302+1602电子钟c语言编程。谢谢。 如何用ARDUINO UNO+1602+DS1302做电子时钟 哪位大神能给改下程序,用1602做个电子时钟,显示时分秒年月日的?感激不尽~ 为什么用1602A显示屏不会显示? 用1602调电子钟时为什么会显示出I4:I4:01 基于单片机的电子时钟里,用的1602的显示再接单片机P0口时还需要加上拉电阻吗?急!!!!!!!! 怎样给小餐厅取名 单片机1602只显示一排小方块 求教郭天祥单片机视频第10课用1602写数字钟程序 “你知道世界上最大的动物”用英语怎么说? 化妆品、护肤品使用都有讲究,水乳和隔离防晒霜的正确使用顺序是什么? 水乳霜龙血膏防晒霜气垫隔顺序离霜 水乳霜精华气垫隔离喷雾怎么用? 荣耀畅玩7X每次打开华为输入法都是默认的英文,有啥办法改成默认中文输入吧? 水,乳液,眼霜,防晒霜,隔离霜,顺序是什么呢? 水乳霜精华隔离防晒搅拌在一起能用吗 爽肤水,乳液,防晒霜,隔离霜涂抹的先后顺序 华为荣耀畅玩4c怎么切换默认的输入法 华为荣耀七手机怎么换那个输入法