当前位置:首页 » 课程大全 » 单片机电子时钟lcd显示课程设计

单片机电子时钟lcd显示课程设计

发布时间: 2021-02-28 20:27:31

① 单片机89c51的电子时钟课程设计

#include <reg52.h>

#include<stddef.h>

#define uchar unsigned char

#define uint unsigned int

#define LCD1602_FLAG

#define LCD1602_PORT P0


sbit lcd1602_rs=P2^0;

sbit lcd1602_e=P2^2;

sbit lcd1602_rw=P2^1;

sbit lcd1602_busy=P0^7;

sbit key_ch=P3^5;

sbit key_add=P3^6;

sbit key_minus=P3^7;


uchar i,sec,min,h,date,month,flag;

uint year;

uchar *chgstr[7]={" ","sec","min","hour","date","min","year"};

uchar j,k,m,n,o,p;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar timestr[10],datestr[10];

void init();

void delay(uint);

void time_display();

void date_display();

void control();

void time();

/*

************************************

* 函数名称:lcd1602_CheckBusy()

* 函数功能:状态查询

************************************

*/


void lcd1602_CheckBusy()

{

do

{

lcd1602_busy=1;

lcd1602_rs=0;

lcd1602_rw=1;

lcd1602_e=0;

lcd1602_e=1;

}

while(lcd1602_busy);

}


/*

***************************************

* 函数名称: lcd1602_WriteCmd()

* 函数功能:写命令

* 入口参数:命令字

* 出口参数:无

***************************************

*/


void lcd1602_WriteCmd(const uchar cmd)

{

lcd1602_CheckBusy();

lcd1602_rs=0;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=cmd;

lcd1602_e=0;

}


/*

*******************************************

* 函数名称:lcd1602_WriteData()

* 函数功能:写数据

* 入口参数:c--待写数据

* 出口参数:无

*********************************************

*/


void lcd1602_WriteData(const uchar c)

{

lcd1602_CheckBusy();

lcd1602_rs=1;

lcd1602_rw=0;

lcd1602_e=1;

LCD1602_PORT=c;

lcd1602_e=0;

}


/*

***********************************************

* 函数名称:lcd1602_Init()

* 函数功能:初始化LCD

* 入口参数:无

* 出口参数:无

***********************************************

*/


void lcd1602_Init()

{

lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵

lcd1602_WriteCmd(0x0c); //display enable,flag enable,flash enable,

lcd1602_WriteCmd(0x06); //flag move to right,screen don't move

lcd1602_WriteCmd(0x01); //clear screen

}


/*

************************************************

* 函数名称:lcd1602_Display()

* 函数功能: 字符显示

* 入口参数:ptr--字符或字符串指针

* 出口参数:无

* 说 明:用户可通过以下方式来调用:

* 1)lcd1602_Display("Hello,world!");

* 2) INT8U 存储类型 txt[]="要显示的字符串";

* 或者 INT8U 存储类型 txt[]={'t','x','t',..,''};

* INT8U *ptr;

* ptr=&txt;

* lcd1602_Display(ptr);

* 或 lcd1602_Display(txt);

* 或 lcd1602_Display(&txt);

************************************************

*/


void lcd1602_Display(const uchar *ptr,uchar line,uchar xaddr)

{

uchar data i=0;

uchar *data q;


q=ptr;

switch(line)

{

case 0:

lcd1602_WriteCmd(0x80+xaddr);

while(q!=NULL && (*q!='') && i<16)

{

lcd1602_WriteData(*q);

q++;

i++;

}

break;

case 1:

lcd1602_WriteCmd(0xc0+xaddr);

while(q!=NULL && (*q!='') && i<16)

{

lcd1602_WriteData(*q);

q++;

i++;

}

break;

}

}



void main()

{

lcd1602_Init();

init();

while(1)

{

time_display();

date_display();

control();

}

}

void init()

{

i=0;

sec=0;

min=30;

h=7;

date=17;

month=10;

year=2017;

flag=0;

EA=1;

ET0=1;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void time_display()

{

timestr[7]=0x30+sec%10;

timestr[6]=0x30+sec/10;

timestr[5]=':';

timestr[4]=0x30+min%10;

timestr[3]=0x30+min/10;

timestr[2]=':';

timestr[1]=0x30+h%10;

timestr[0]=0x30+h/10;

timestr[8]=0;

lcd1602_Display(timestr,1,3);

}

void date_display()

{

datestr[9]=0x30+date%10;

datestr[8]=0x30+date/10;

datestr[7]=':';

datestr[6]=0x30+month%10;

datestr[5]=0x30+month/10;

datestr[4]=':';

datestr[3]=0x30+year%10;

datestr[2]=0x30+year/10%10;

datestr[1]=0x30+year/100%10;

datestr[0]=0x30+year/1000;

lcd1602_Display(datestr,0,2);

}

void control()

{

if(!key_ch)

{

delay(5);

if(!key_ch)

{

flag++;

TR0=0;

if(flag==7)

{flag=0;TR0=1;lcd1602_Init();}

lcd1602_Display(chgstr[flag],1,12);

}

}

while(!key_ch);

if(flag==1&&key_add==0)

{

while(!key_add);

sec++;

if(sec==60)

sec=0;

}

if(flag==1&&key_minus==0)

{

while(!key_minus);

sec--;

if(sec==-1)

sec=59;

}


if(flag==2&&key_add==0)

{

while(!key_add);

min++;

if(min==60)

min=0;

}

if(flag==2&&key_minus==0)

{

while(!key_minus);

min--;

if(min==-1)

min=59;

}


if(flag==3&&key_add==0)

{

while(!key_add);

h++;

if(h==24)

h=0;

}

if(flag==3&&key_minus==0)

{

while(!key_minus);

h--;

if(h==-1)

h=23;

}


if(flag==4&&key_add==0)

{

while(!key_add);

date++;

if(date==29)

if((year%4!=0)&&(month==2))

date=1;

if(date==30)

if((year%4==0)&&(month==2))

date=1;

if(date==31)

if((month==4)||(month==6)||(month==9)||(month==11))

date=1;

if(date==32)

if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))

date=1;

}


if(flag==4&&key_minus==0)

{

while(!key_minus);

if(date>1)date--;

}


if(flag==5&&key_add==0)

{

while(!key_add);

month++;

if(month==13)

month=1;

}

if(flag==5&&key_minus==0)

{

while(!key_minus);

month--;

if(month==0)

month=12;

}


if(flag==6&&key_add==0)

{

while(!key_add);

year++;

if(year==99)

year=1;

}

if(flag==6&&key_minus==0)

{

while(!key_minus);

year--;

if(year==0)

year=99;

}

}


void T0_rpt() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++;

time();

}


void time()

{

if(i==20)

{

i=0;

sec++;

if(sec==60)

{

sec=0;

min++;

if(min==60)

{

min=0;

h++;

if(h==24)

{

h=0;

min=0;

sec=0;

date++;

if(date==29)

if((year%4!=0)&&(month==2))

{

date=1;

month++;

if(month==13)

{

month=1;

year++;

}

}

if(date==30)

if((year%4==0)&&(month==2))

{

date=1;

month++;

if(month==13)

{

month=1;

year++;

}

}

if(date==31)

if((month==4)||(month==6)||(month==9)||(month==11))

{

date=1;

month++;

if(month==13)

{

month=1;

year++;

}

}

if(date==32)

if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))

{

date=1;

month++;

if(month==13)

{

month=1;

year++;

}

}

}

}

}

}

}

② 带有LCD显示的定时闹钟-单片机课程设计

很困难。。。 我看了你的图,没有时钟芯片。 如果不用时钟芯片的话,用定时器,程序要多出好多。

③ 求一篇单片机课程设计1、LCD显示的电子钟

参考郭天祥的《51单片机C语言教程+入门、提高、开发》,有具体差不多的程序代码和电路图

④ 用单片机编程在显示屏lcd显示数字电子钟~~~急用!!!谢谢!

智瑶抄向韩康子袭要地,韩康子想不给。段规说:“智瑶贪财好利,又刚愎自用,如果不给,一定讨伐我们,不如姑且给他。他拿到地更加狂妄,一定又会向别人索要;别人不给,他必定向人动武用兵,这样我们就可以免于祸患而伺机行动了。”韩康子说:“好主意。”便派了使臣去送上有万户居民的领地。智瑶大喜,果然又向魏桓子提出索地要求,魏桓子想不给。家相任章问:“为崐什么不给呢?”魏桓子说:“无缘无故来要地,所以不给。”任章说:“智瑶无缘无故强索他人领地,一定会引起其他大夫官员的警惧;我们给智瑶地,他一定会骄傲。他骄傲而轻敌,我们警惧而互相亲善;用精诚团结之兵来对付狂妄轻敌的智瑶,智家的命运一定不会长久了。《周书》说:‘要打败敌人,必须暂时听从他;要夺取敌人利益,必须先给他一些好处。’主公不如先答应智瑶的要求,让他骄傲自大,然后我们可以选择盟友共同图谋,又何必单独以我们作智瑶的靶子呢!”魏桓子说:“对。”也交给智瑶一个有万户的封地。

⑤ 单片机课程设计 电子时钟设计

基于AVR单片机Mega16的电子时钟设计

摘要】 Mega16是一款采用先进RISC精简指令,内置A/D的8位单片机内,可支持低电压联机Flash和EEPROM写入功能容;同时还支持Basic和C等高级语言编程。用它设计电子时钟不仅成本低,硬件简单,而且很容易实现系统移植。介绍了如何利用AVR系列单片机Mega16及1602字符液晶来设计电子时钟的方法,同时给出了相应的电路原理及部分语言程序。

⑥ 求一段为51单片机编写的LCD电子时钟的设计,简单就好!高分伺候!

简单的时钟,不用1302即可办到。

题目要求的设计已经完成,电路图如下。

程序稍长,放在我的网络空间了。

可以用网络、网页,进行查找:

做而论道用LCD1602显示的时钟

网络一下,即可查到。

⑦ 一、基于单片机的电子时钟设计 设计内容:1、用LCD液晶作为显示设备(30分)

你好!是仿真还是做实物,需要了解情况,才能完成

⑧ 求一个为 51 单片机编写的 LCD 1602电子时钟的设计

//按你的仿真图编写的
BIT P2.0 //重命名IO口
RW BIT P2.1
E BIT P2.2
BF BIT P3.7 //D0~D7接在P3口
K1 BIT P1.0
K2 BIT P1.1
K3 BIT P1.2
K4 BIT P1.3
NOP
MOV TMOD ,#11H //设定时器0和1工作在定时方式一
MOV IE,#8AH
SETB TR0
AJMP L0
JS: MOV TH0,#0BH //定时器中断0
MOV TL0,#0DCH
INC R7 //R7为秒的个位
CJNE R7,#160,JW
INC R6 //R6为秒的十位
CPL P2.4 //LED每过10秒状态变一下
AJMP L1
JW: RETI
INC R7 //定时器中断1
CJNE R7,#2,JW
MOV R7,#0
INC @R0
CJNE R5,#3AH,L3 //R5为分的个位
MOV R5,#48
INC R4
L3: CJNE R4,#36H,L6 //R4为分的十位
MOV R4,#48
L6: CJNE R3,#24,JW //R3为小时
MOV R3,#0
RETI
L1: MOV R7,#0
CJNE R6,#36H,JW
MOV R6,#48
INC R5
CJNE R5,#3AH,JW
MOV R5,#48
INC R4
CJNE R4,#36H,JW
MOV R4,#48
INC R3
CJNE R3,#24,JW
MOV R3,#0
RETI
L0: MOV R6,#48 //初始化程序
MOV R5,#48
MOV R4,#48
MOV R3,#12
CLR K2
CLR K3
CLR K4
ACALL CSH
L2: MOV R2,#87H //1602显示时间
ACALL ML
MOV B,#10
MOV A,R3
DIV AB
ADD A,#48
XCH A,R2
ACALL SJ
XCH A,B
ADD A,#48
XCH A,R2
ACALL SJ
MOV R2,#':'
ACALL SJ
MOV R2,4
ACALL SJ
MOV R2,5
ACALL SJ
MOV R2,#':'
ACALL SJ
MOV R2,6
ACALL SJ
MOV B,#16
MOV A,R7
DIV AB
ADD A,#30H
XCH A,R2
ACALL SJ
JNB K1,SS //检测K1
AJMP L2
SS: CLR TR0 //K1:进入设置现在的时间
SETB K2
SETB K3
SETB K4
JNB K3,F
JNB K2,S
JNB K4,W
CLR TR1
MOV TH1,#0
MOV TL1,#0
MOV R7,#0
MOV R6,#48
CLR K1
AJMP L2
S: MOV R0,#3 //K2:设置小时。
SETB TR1
AJMP L2
F: MOV R0,#5 //K3:设置分钟。
SETB TR1
AJMP L2
W: SETB TR0 //K4:确认完成设置
SETB K1
CLR K2
CLR K3
CLR K4
AJMP L2
T: MOV R1,#1 //延时
DJNZ R1,$
RET
ZT: CLR RS //查状态
SETB RW
L9: ACALL T
SETB E
ACALL T
MOV C,BF
CLR E
JC L9
CLR RW
RET
ML: ACALL ZT //传命令
SETB E
MOV P3,R2
ACALL T
CLR E
RET
SJ: ACALL ZT //传数据
SETB RS
SETB E
MOV P3,R2
ACALL T
CLR E
RET
CSH:MOV R2,#38H //初始化1602
ACALL ML
MOV R2,#0CH
ACALL ML
MOV R2,#06H
ACALL ML
MOV R2,#81H
ACALL ML
MOV R2,#'T'
ACALL SJ
MOV R2,#'i'
ACALL SJ
MOV R2,#'m'
ACALL SJ
MOV R2,#'e'
ACALL SJ
MOV R2,#':'
ACALL SJ
RET
END

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919