51单片机LCD1602时钟用C语言使用LCD1602设计一个数字时钟

1602LCD液晶数字电子钟 时钟表 C语言
10:20:31编辑:什么鱼 关键字:&&&&
&基本设计思路:
1. 1602LCD显示:&
& &第一行: 年, 月, 日
& &第二行: 时, 分, 秒 23:59:00&
2. 独立按键功能:&
& &Key1 恢复单片机调时之前的实际时间, 由于在调整时间期间,定时器T0暂停, 则启动定时器T1, 保证单片机的时间正确.(即 取消调时)
& &Key2 进入调整时间状态: 停止定时器T0,启动定时器T1.
& &Key3 退出调整时间状态: 启动定时器T0,停止定时器T1.
& &Key4 选择调整时间: 秒, 分, 时, 日, 月, 年
& &Key5 调时: 递增 &同时启动蜂鸣器
& &Key6 调时: 递减 &同时启动蜂鸣器
花了2天半的时间,终于按照自己的设计思路来实现了 , 在这两天多的时间, 感觉最难的就是,当发生错误的时候,不知道如何进行调试,差错,因为有些错误无法进行调试,因此往往都要换一个方向思考问题,所以面对困惑就必须要检测了, 自己的错误,只能自己解决,因为别人对你的错误往往都不容易理解。 哎,像我这样独自一个奋斗,真是寂寞啊, 遇到困惑,要么放弃,要么坚持,可是却不知道要坚持多久, 心里总是害怕 这样 浪费时间。
目前,还有一个问题没有解决: &如果调整时间,不合理,则必须恢复 原来的时间,并且有错误提示。
, 若更改为这个日期,那么必须要有错误提示,并且要取消 这个时间。
#include"MyFuntion.h" &//自定义头文件
//扫描这些按键是否被按下
void Keycan()
& if(Key1==0) //进入调整时间状态
& & &Delay();
& & &if(Key1==0) && &//停止定时器T0 启动定时器T1&
&& &ButtonBeep();
&& &SaveCurrentTime(); //进入调整时间状态 必须保存当前时间 &若取消调时 则可以恢复时间
& & & & TR0=0;//停止定时器T0
TR1=1;//启动定时器T1&
tempSecond=0; && &
& & &while(!Key1);
& if(Key2==0)&
& & &Delay();
& & &if(Key2==0) &// 取消调时 恢复单片机调时之前的实际时间
&& &if(TR0==0) //在调整时间状态下 &恢复时间
&&ButtonBeep();
& & & & & CurrentTime();&
& & &while(!Key2);
& if(Key3==0) //退出调整时间状态:
& & &Delay();
& & &if(Key3==0)
&& &ButtonBeep(); //停止定时器T1 启动定时器T0&
& & & & TR0=1;//启动定时器T0
TR1=0;//停止定时器T1&
Write_Command(0x0c); //设置开显示 & 不显示光标 &&
& & &while(!Key3);
//当定时器T0 停止时 才能 进行下面的各个按键的操作
& if(TR0==0) //定时器T0 停止
&&if(Key4==0) // & &Key4 &控制光标往右移动
&& & Delay();
&& & if(Key4==0)
& AdjustCursorRight(); //控制光标往右移动
ButtonBeep();
&& & while(!Key4);
&&if(Key5==0) // & &Key5 &控制光标往左移动
&& & Delay();
&& & if(Key5==0)
& AdjustCursorLeft(); //控制光标往左移动
ButtonBeep();
&& & while(!Key5);
&&if(Key6==0) // & &递增
&& & Delay();
&& & if(Key6==0)
&& &UpDown=1;
ButtonSetTime();
ButtonBeep();
&& & while(!Key6);
&&if(Key7==0) // &递减&
&& & Delay();
&& & if(Key7==0)
&& &UpDown=0;
ButtonSetTime();
& & & & & & ButtonBeep();
&& & while(!Key7);
void main()
& &TMOD=0X01;
& &TR0=1; //启动定时器T0
// & TR1=0; //停止定时器T1 即暂时不启动定时器T1
& &TH0=()/256;
& &TL0=()%256;
& &TH1=()/256;
& &TL1=()%256;
& &InitLCD(); //初始化LCD
& &Init_Table_YMD(table1); // LCD 时间表 年月日
& &Init_Table_HMS(table2); // LCD 时间表 时分秒
& &DisplayLCD_YMD(table1, 10); //LCD显示时间 年月日
& &DisplayLCD_HMS(table2, 8); //LCD显示时间 时分秒
& &while(1)
& & & Keycan();
&&if(t0==20)
IncreaseHMS(); // &时分秒 &递增
&//定时器T0 实现自动 计时
void LCD_Timer0() interrupt 1 using 0
& &TH0=()/256;
& &TL0=()%256;
&//定时器T1 实现自动 计时 &从而减少调整时间产生的误差
void LCD_Timer1() interrupt 3 using 1
& &TH1=()/256;
& &TL1=()%256;
& &if(t1==20)
&&tempSecond++;
关键字:&&&&
来源: eefocus
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
/******************************************************************************* &* 实 验 名 & & &: LCD1602实验 &* 使用的IO & & &: LCD使用P0 &&* 实验效果 & & & : 在液晶屏上显示 &love &* 注 & &意 & & & & : &nbsp
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!&/******************************************************/&&/*&*/&&/*&12232F串口驱动程序C51,11.0592M晶振&*/ &/*使用这款LCD应该要注意的问题:&*/&&/*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器,&nbsp
& &STM8L152XX系列带有片上段式LCD驱动程序,这为低成本应用和高密度系统设计提供了保证,利用片上LCD驱动模块,可以有效的控制系统整体功耗,简化系统结构,从整体来说可靠性得到提高。&&& 此处不介绍LCD驱动模块的原理以及驱动时序,请参考STM8原版英文说明文档,已描述的很详细,以下介绍其寄存器的配置方法以及编程方法。&&& 时钟,系统时钟同样用来产生LCD驱动时钟,通过时钟模块配置:&&& CLK_PCKENR2|=S3;&& //LCD&&&&nbsp
/*使用这款LCD应该要注意的问题: */ z
/*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器, */&
/*电位器的中间脚接VO,其它二脚接VDD和VSS。 */&
/*然后调节电位器的大小,直到有显示为止。若是不接的话,*/&
/*显示器可能是一片黑暗,什么也没有显示,发命令也没有反*/&
/*应的。本程序我已经测试通过了。欢迎大家提出意见。 */&
/******************************************************/&
#include &AT89X52.H&&nbsp
& & 以前,学习单片机,都没有开发板,因此感觉编写数字电子钟的程序,是非常难的,简直就是不知道如何着手。 现在已经对单片机各种操作都逐渐熟悉了,因此刚刚就已经实现了自己关于数字电子钟的一点小小的设计思想
& &由于时间关系,现在已经比较晚了,所以就暂时不编写按键功能,但是已经实现了动态计时功能了,明天再继续添加按键功能。
#include&reg52.h&
#include&MyFuntion.h& &//自定义头文件
unsigned char year1=20; // 年1
该数字钟可实现精度误差≤&1S/天的变精度时钟,并能方便地调节时钟、时间、定时时间等.&&  &       LED1&bit&p1.0&      ;LED定义&       led2&bit&p1.1     &       led3&bit&p1.2&       led4&bit&p1.3       led5&bit&p1.4       led6&bit&p1.5&       led7&nbsp
热门资源推荐
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件一个51单片机实现数字时钟(1602显示)
用 实现 ,关于时间显示,是用的 液晶,C ,然后再加一个定时器,每到一秒就动态的更新一下液晶的时间显示,在更新的时候也要计算相应的分针和时针的变化,还要注意边界问题.为了能够达到一个最好的效果,我还加了一个键盘扫描,用到了3个键,分别为功能键,增1,减1来实现用户自定义时间.
在实现过程中,用到了单片机的的相关知识,还有定时器,液晶显示,键盘的动态扫描,都是以前的知识,没什么难度.
程序如下,可以正常运行.
#i nclude &reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs = P1^0;
sbit lcdrw = P1^1;
sbit lcden = P1^2;
sbit key0 = P2^0;//功能键,选择时分秒
sbit key1 = P2^1;//加1键
sbit key2 = P2^2;//减1键
sbit key4 = P2^4;
uchar key0_//按键0被按的次数(0~3)
char hour,minute, //时分秒
uint timer_ //计数
uchar table_date[] = " Mon";
uchar table_time[] = "00:00:00";
/****** 函数申明 ********/
void write_cmd_1602(uchar cmd);
void write_data_1602(uchar dat);
void write_add(uchar add,uchar dat);
void init1602();
void delay(uint z);
uchar reverse(uchar c);
void keyscan();
void init();
/****** 主函数 ********/
void main()
//init1602();
//while(1);
keyscan();
//1602液晶初始化
void init1602()
lcdrw = 0; //本程序只读不写,故将其置低
lcden = 0; //关闭1602
write_cmd_); //清屏
write_cmd_); //显示模式
write_cmd_c); //开显示,不显示光标,不闪烁
write_cmd_); //地址指针自动加1
write_cmd_+1);//将光标指向第一行第二个位置
void delay(uint z)
for(x=z;x&0;x--)
for(y=110;y&0;y--);
/** 将发送的数据进行翻转,高位到低位,低位转到高位 **/
uchar reverse(uchar c)
uchar chbuff=0;
if (c&0x01) chbuff=chbuff|0x80;
if (c&0x02) chbuff=chbuff|0x40;
if (c&0x04) chbuff=chbuff|0x20;
if (c&0x08) chbuff=chbuff|0x10;
if (c&0x10) chbuff=chbuff|0x08;
if (c&0x20) chbuff=chbuff|0x04;
if (c&0x40) chbuff=chbuff|0x02;
if (c&0x80) chbuff=chbuff|0x01;
//向液晶写命令
void write_cmd_1602(uchar cmd)
lcdrs = 0; //低表示写命令,高表示写数据
P0 = reverse(cmd);
lcden = 1; //给一个高脉冲
lcden = 0;
//向液晶写数据
void write_data_1602(uchar dat)
lcdrs = 1; //低表示写命令,高表示写数据
P0 = reverse(dat);
lcden = 1; //给一个高脉冲
lcden = 0;
//根据地址向液晶写数据
void write_add(uchar add,uchar dat)
uchar shi,
shi = dat/10;
ge = dat%10;
write_cmd_+add);
write_data_1602(shi+0x30);
write_data_1602(ge+0x30);
//键盘扫描函数
void keyscan()
if(0==key0) //第一个键被按下
delay(5); //消抖
if(0==key0)
key0_count ++;
if(4==key0_count)
key0_count = 0;
while(!key0); //松手检测
if(0==key0_count)
TR0 = 1; //重新开始计时
write_cmd_c); //禁止显示光标并不让其闪烁
if(1==key0_count)
TR0 = 0; //暂停计时
write_cmd_+0x40+11);//将地址指针指向秒的位置
write_cmd_f); //显示光标并闪烁
if(2==key0_count)
TR0 = 0; //暂停计时
write_cmd_+0x40+8);//将地址指针指向分的位置
write_cmd_f); //显示光标并闪烁
if(3==key0_count)
TR0 = 0; //暂停计时
write_cmd_+0x40+5);//将地址指针指向小时的位置
write_cmd_f); //显示光标并闪烁
if(0==key1) //第二个键被按下
delay(5); //消抖
if(0==key1)
while(!key1); //松手检测
if(key0_count==1)
second ++;
if(60==second)
second = 0;
write_add(0x40+10,second);
if(key0_count==2)
minute ++;
if(60==minute)
minute = 0;
write_add(0x40+7,minute);
if(key0_count==3)
if(24==hour)
write_add(0x40+4,hour);
if(0==key2) //第三个键被按下
delay(5); //消抖
if(0==key2)
while(!key2); //松手检测
if(key0_count==1)
second --;
if(-1==second)
second = 59;
write_add(0x40+10,second);
if(key0_count==2)
minute --;
if(-1==minute)
minute = 59;
write_add(0x40+7,minute);
if(key0_count==3)
if(-1==hour)
hour = 23;
write_add(0x40+4,hour);
//程序初始化函数
void init()
minute = 0;
second = 0;
key0_count = 0;
init1602();
delay(20); //延长时间,确保液晶处于非忙状态
for(i=0;i&14;i++)
write_data_1602(table_date[i]);
write_cmd_+0x40+4); //调整地址指针
for(i=0;i&8;i++)
write_data_1602(table_time[i]);
//初始化定时器
TMOD = 0x01; //定时器模式
TH0 = ()/256; //装初值
TL0 = ()%256;
EA = 1;//开总中断
ET0 = 1;//开定时器0中断
TR0 = 1; //启动定时器,此时开始计时
void timer0() 1 //定时器0的中断处理函数
TH0 = ()/256; //装初值
TL0 = ()%256;
timer_count ++;
if(20==timer_count) //到了1秒更新时分秒的显示
timer_count = 0; //中断次数清0,重新计数
second ++; //秒针加1
if(second==60)
second = 0;
minute ++; //分针加1
if(60==minute)
minute = 0;
hour ++; //小时加1
if(24==hour)
write_add(0x40+4,hour);
write_add(0x40+7,minute); //更新分针的显示
write_add(0x40+10,second); //更新秒针
原文链接:
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点&&|&& &&|&& &&|&&
基于51单片机的1602LCD显示
21:19:49 && 阅读:4240&&
基于51单片机的1602LCD显示
&&& LCD(liquid crystal display)为液晶显示器,它一般不会单独使用,而是将LCD面板、驱动与控制电路组合成LCD模块(1iquid crystal display moulde,简称为LCM)来使用。LCM是一种很省电的显示设备,常被应用在数字或微处理器控制的系统,做为简易的人机接口,但人们一般还是习惯称之为LCD显示器。
1& 硬件设计
采用51单片机控制1602LCD显示器的电路如下所示。
在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令&文件&&&新建设计&,选择DEFAULT模板,保存文件名为&LCD.DSN&。在器件选择按钮中单击&P&按钮,或执行菜单命令&库&&&拾取元件/符号&,添加如下表所示的元件。
若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。
在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。
2& 软件设计
用1602LCD显示两行字符的流程图如下所示。
用1602LCD显示&Welcom to China&和&Hi!Good morning!&的详细C51程序如下。
//用LCD循环显示&Welcome to China&和&Hi!Good morning!&
#include&reg51.h&&&& //包含单片机的头文件
#include&intrins.h&& //包含_nop_()函数定义的头文件
sbit RS=&P2&^0;&&& //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=&P2&^1;&&& //读写选择位,将RW位定义为P2.1引脚
sbit E=&P2&^2;&&&& //使能信号位,将E位定义为P2.2引脚
sbit BF=&P0&^7;&&& //忙碌标志位,,将BF位定义为P0.7引脚
unsigned char code string[ ]={&Welcome to China&};
unsigned char code string1[ ]={&Hi!Good morning!&};
/*************************************************
函数功能:延时1ms
(3j+2)*i=(3&33+2)&10=1010(微秒),可以认为是1毫秒
*************************************************/
void delay1ms()
&&&&&& unsigned char i,j;&&&&&&
&&&&&& for(i=0;i&10;i++)
&&&&&& for(j=0;j&33;j++)
&&&&&& && ;&&&&&&&&&&&&&
&/*****************************
函数功能:延时若干毫秒
入口参数:n
******************************/
void delay(unsigned char n)
&&&&&& for(i=0;i&n;i++)
&&&&&&&&&&&&& delay1ms();
/*******************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;& result=0,不忙
*******************************************/
unsigned char BusyTest(void)
&&&&&& RS=0;&&&&&& //根据规定,RS为低电平,RW为高电平时,可以读状态
&&& E=1;&&&&&&& //E=1,才允许读写
&&& _nop_();&& //空操作
&&& _nop_();
&&& _nop_();
&&& _nop_();&& //空操作四个机器周期,给硬件反应时间&&&&&&
&&& result=BF;& //将忙碌标志电平赋给result
&&&&&& E=0;
/**************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
入口参数:dictate
**************************************************/
void WriteInstruction (unsigned char dictate)
&&&&&& while(BusyTest()==1); //如果忙就等待
&&&&&& RS=0;&&&&&&&&&&&& //根据规定,RS和R/W同时为低电平时,可以写入指令
&&&&&& RW=0;&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& E=0;&&&&&&&&& &&&&&&&//E置低电平
&&&&&& _nop_();
&&&&&& _nop_();&&&&&&&&&&&& //空操作两个机器周期,给硬件反应时间
&&&&&& P0=&&&&&&&&& //将数据送入P0口,即写入指令或地址
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();&&&&&&&&&&&&&& //空操作四个机器周期,给硬件反应时间
&&&&&& E=1;&&&&&&&&&&&&&&&&&& //E置高电平(正跳变)
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();&&&&&&&&&&&&&& //空操作四个机器周期,给硬件反应时间
&&&&&& E=0;&&&&&&&&&&&& //当E由高电平跳变成低电平时,液晶模块开始执行命令
/**************************************************
函数功能:将数据(字符的标准ASCII码)写入液晶模块
入口参数:y(为字符常量)
**************************************************/
void WriteData(unsigned char y)
&&&&&& while(BusyTest()==1);&
&&&&&& RS=1;&&&&&&&&&& //RS为高电平,RW为低电平时,可以写入数据
&&&&&& RW=0;
&&&&&& E=0;&&&&&&&&&&& //E置低电平
&&&&&& P0=y;&&&&&&&&&& //将数据送入P0口,即将数据写入液晶模块
&&&&&& _nop_();
&&&&&& _nop_();
&&&&& _nop_();
&&& _nop_();&&&&&& //空操作四个机器周期,给硬件反应时间
&&&&&& E=1;&&&&&&&&& //E置高电平(正跳变)
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();
&&&&&& _nop_();&&&&&&& //空操作四个机器周期,给硬件反应时间
&&&&&& E=0;&&&&&&&&&&& //当E由高电平跳变成低电平时,液晶模块开始执行命令
/******************************************
函数功能:对LCD的显示模式进行初始化设置
******************************************/
void LcdInitiate(void)
&&&&&& delay(15);&&&&&&& //延时15ms,首次写指令时应给LCD一段较长的反应时间
&& WriteInstruction(0x38);& //显示模式设置:8位数据,16&2显示,5&7点阵,&&&&&& delay(5);&& //延时5ms 
&&&&&& WriteInstruction(0x38);
&&&&&& delay(5);
&&&&&& WriteInstruction(0x38);
&&&&&& delay(5);
&&&&&& WriteInstruction(0x0f);& //显示模式设置:显示开,有光标,光标闪烁
&&&&&& delay(5);
&&&&&& WriteInstruction(0x06);& //显示模式设置:光标右移,字符不移
&&&&&& delay(5);
&&&&&& WriteInstruction(0x01);& //清屏幕指令,将以前的显示内容清除
&&&&&& delay(5);
void main(void)&&&&&&&&&&& //主函数
& && LcdInitiate();&&&&&&&& //调用LCD初始化函数&
& && delay(10);
& && while(1)
&&& &&&&& WriteInstruction(0x01);&&&&&&&&&&&&&&&&&&&&&&&& //清显示:清屏幕指令
&&&&&&&&&&&&& WriteInstruction(0x80); &&&&&&&&&&&&&&&&&&&&&& //第一行显示地址
&&&&&&&&&&&&& i = 0;
&&&&&&&&&&&&& while(string[i] != '\0')
&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& // 显示字符
&&&&&&&&&&&&&&&&&&&& WriteData(string[i]);
&&&&&&&&&&&&&&&&&&&& i++;
&&&&&&&&&&&&&&&&&&&& delay(150);
&&&&&&&&&&&&& }&&&&&
&&&&&&& for(i=0;i&4;i++)
&&&&&&&&&&&&& &&& delay(250);
&&&&&&&&&&&&& WriteInstruction(0xc0);&&&&&&&&&&&&&&&&&&&&&&&&& //第二行显示地址
&&&&&&&&&&&&& i = 0;
&&&&&&&&&&&&& while(string1[i] != '\0')
&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& // 显示字符
&&&&&&&&&&&&&&&&&&&& WriteData(string1[i]);
&&&&&&&&&&&&&&&&&&&& i++;
&&&&&&&&&&&&&&&&&&&& delay(150);
&&&&&&&&&&&&& }&&&&&
&&&&&&& for(i=0;i&4;i++)
&&&&&&&&&&&&& &&& delay(250);
打开Keil程序(本人使用的是Keil8.05中文版),执行菜单命令&工程&&&新建工程&创建&LCD&项目,并选择单片机型号为AT89C51。执行菜单命令&文件&&&新建&创建文件,输入C语言源程序,保存为&LCD.C&。在Project Workspace窗口中右击源代码组1,选择&添加文件到组&源代码组 l&&将源程序&LCD.C&添加到项目中。
在Keil中执行执行菜单命令&工程&&&创建目标&(或点击&创建目标&快捷按钮),编译源程序。如果编译成功,则在&Output Window&的&创建&窗口中显示没有错误,并创建了&LCD.HEX&文件。
3& 仿真与调试
关于Proteus与Keil的联合仿真调试,可参见我以前所写的博文或其它参考资料。
启动Proteus的ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再启动Keil的&Vision3,并将其放在屏幕的左下角。
&&& 在Keil中执行菜单命令&调试&&&启动/停止调试&,或直接单击图标,进入Keil调试环境。同时,在Proteus ISIS的窗口中可看出Proteus也进入了程序调试状态。
&&& 在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句前双击鼠标左键,可设置断点;再次双击,可取消该断点。
在Keil中按F5键(或点击&运行&快捷按钮)运行程序。1602LCD循环显示&Welcom to China&和&Hi!Good morning!&,如下图所示。
或可以点击单步、运行到光标处、全速运行等快捷按钮,以及同时观察工程窗口寄存器页面、存储器窗口等,来进行仿真调试。
后参与讨论
阅读:2629
阅读:3104
阅读:7592
阅读:11649 上传我的文档
 上传文档
 下载
 收藏
粉丝量:23
该文档贡献者很忙,什么也没留下。
 下载此文档
基于51单片机的简易计算器_时间显示(LCD1602显示)
下载积分:1000
内容提示:基于51单片机的简易计算器_时间显示(LCD1602显示)
文档格式:DOC|
浏览次数:363|
上传日期: 09:39:49|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
基于51单片机的简易计算器_时间显示(LCD1602显示)
关注微信公众号

我要回帖

更多关于 51单片机LCD1602时钟 的文章

 

随机推荐