當前位置:首頁 » 課程大全 » 單片機電子時鍾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