四虎国产精品成人免费4hu_欧美xx网站_一本色道久久加勒比88综合_国产在视频一区二区三区吞精_国产精品一区二区x88av_日韩精品一区二区三区四区 _天天影视涩香欲综合网

跳至正文

單片機(jī)課程設(shè)計(jì)(單片機(jī)課程設(shè)計(jì)心得)

單片機(jī)課程設(shè)計(jì)

單片機(jī)課程設(shè)計(jì)

#include#include #define unint unsigned int unint nt=0; void time()interrupt 1 using 1 { TH0=0x3c; TL0=0xb0; nt++; } void main() { unint led=0xfe; TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while(1) { if(nt%4==0) {P0=led;} eles P0=0; if(nt>40) {led=_crol_(led,1); if(led==0xef) {led=0xfe;} nt=0; }}

單片機(jī)課程設(shè)計(jì),請(qǐng)大家?guī)兔~~

單片機(jī)課程設(shè)計(jì),請(qǐng)大家?guī)兔~~

首先先判斷按鍵…用一個(gè)寄存器來放按鍵的值 舉個(gè)例子吧. 比如R3放按鍵數(shù) 當(dāng)按下第一次時(shí),CJNE R3,#1,AA AA程序就是你要執(zhí)行了第一個(gè)L1閃的程序… 這個(gè)應(yīng)該懂了吧

單片機(jī)課程設(shè)計(jì),誰有報(bào)告?

單片機(jī)課程設(shè)計(jì),誰有報(bào)告?

這是我們做的《微機(jī)控制技術(shù)》課程設(shè)計(jì),里面包含了課程設(shè)計(jì)報(bào)告,課程設(shè)計(jì)報(bào)告非常的完整對(duì)各個(gè)階段的設(shè)計(jì)都有完整的說明,包含所有的源代碼。同時(shí),附帶Protues仿真文件,在安裝了Protues的電腦上就可直接運(yùn)行仿真文件。希望對(duì)相同課題設(shè)計(jì)的朋友有所幫助。下面是對(duì)內(nèi)容的一些介紹:

=======================================

項(xiàng)目要求與擴(kuò)展

========================================

1.1 項(xiàng)目要求:

1、 總共可以設(shè)置8位密碼,每位密碼值范圍1—8。

2、 用戶可以自行設(shè)定和修改密碼。

3、 按每個(gè)密碼鍵時(shí)都有聲音提示。

4、 若鍵入的8位開鎖密碼不完全正確,則報(bào)警5S。

5、 開鎖密碼連續(xù)錯(cuò)3次要報(bào)警1分鐘,報(bào)警期中輸入密碼無效,以防盜賊多次試探密碼。

6、 鍵入的8位開鎖密碼完全正確才能開鎖,開始時(shí)要有1S的提示音。

7、 電磁鎖的電磁線圈每次充電5S,然后恢復(fù)初態(tài)。

8、 密碼鍵盤上只有8個(gè)密碼按鍵,鎖內(nèi)有備用電池,只有內(nèi)部上電復(fù)位時(shí)才能設(shè)置成終改密碼,因此,僅在門外按鍵是不能修改或設(shè)置密碼的。

9、密碼設(shè)置完畢后要有2S的提示音。

1.2用途與功能擴(kuò)展:

我們?cè)诓桓淖冊(cè)许?xiàng)目要求的基礎(chǔ)上,從實(shí)用角度做了如下擴(kuò)展:

1、將密碼范圍從0~8擴(kuò)展到為 0~9;使密碼鎖的密碼設(shè)置更加符合人們的習(xí)慣。

2、解除對(duì)密碼的位數(shù) (原要求長(zhǎng)度為8位)的限定,把主動(dòng)權(quán)交給用戶,由用戶根據(jù)需要自定義密碼位數(shù),以便于實(shí)現(xiàn)任意位密碼的設(shè)置。

3、增加清除鍵用于清除輸入的誤碼:增加密碼輸入確認(rèn)鍵用于對(duì)輸入結(jié)果進(jìn)行確認(rèn)。

=========================================

課程設(shè)計(jì)報(bào)告目錄

=========================================

目錄

引言 1

一、單片機(jī)概述 1

1.1 AT89S52的主要性能 1

1.2 AT89S52的功能特性描述 1

1.3 AT89S52的管腳排列 2

二、硬件設(shè)計(jì) 2

2.1 硬件設(shè)計(jì)思想 2

2.2 部分硬件方案論述 2

2.2.1 七段數(shù)碼管掃描顯示方式的方案比較 2

2.2.2 鍵盤連接方式方案比較 3

2.3 硬件電路圖 4

2.3.1硬件原理框圖 4

2.3.2 硬件protues仿真原理圖 5

2.4 硬件單元 5

2.4.1 鍵盤輸入單元: 5

2.4.2 顯示單元: 6

2.4.3報(bào)警電路模塊: 7

2.4.4晶振電路模塊: 7

2.4.5復(fù)位電路模塊: 7

2.4.6開鎖模塊 8

2.4.7單片機(jī)模塊 8

三、軟件設(shè)計(jì) 9

3.1 軟件基本思想: 9

3.1.1設(shè)置密碼模式: 9

3.1.2密碼驗(yàn)證開鎖模式: 9

3.1.3密碼判決: 9

3.2 程序模塊介紹 9

3.3 程序簡(jiǎn)述 10

3.4 內(nèi)存單元的分配 10

3.4.1RAM存儲(chǔ)單元的分配方案 10

3.4.2 寄存器的分配方案 10

3.5 程序框圖 11

3.6 子程序清單列表 15

3.7 程序核心代碼(主函數(shù)代碼) 16

四、總結(jié) 20

4.1 基本成果: 20

4.2 技術(shù)特色與創(chuàng)新 20

4.2.1 安全 20

4.2.2 方便 20

4.3 應(yīng)用拓展 20

4.4 與同類課題研究的比對(duì)和優(yōu)勢(shì) 20

4.4.1 傳統(tǒng)的機(jī)械鎖: 21

4.4.2 指紋識(shí)別系統(tǒng): 21

4.4.3 我們的特點(diǎn)及優(yōu)勢(shì): 21

五、參考文獻(xiàn) 21

六、收獲與感悟: 22

七、致謝 22

八、附錄 23

8.1電子密碼鎖用戶使用手冊(cè) 23

8.2 本組成員及分工情況 24

8.3 程序源代碼

==========================================

如果你需要可以到CSDN下載,資料可以分享。

1單片機(jī)課程設(shè)計(jì) 波形發(fā)生器的設(shè)計(jì)

單片機(jī)只能產(chǎn)生方波,還需要外圍器件,da0832加741;再高點(diǎn)的頻率就不行了;也可以波形發(fā)生芯片icl8038,它能同時(shí)產(chǎn)生正弦波,方波,三角波,采用ad采集電壓并記錄記錄,加12864液晶顯示;或者是波形發(fā)生電路加整形電路再加單片機(jī)采集顯示!三種方法樓主看哪個(gè)合適你吧.最后給你一個(gè)icl8038電路圖

單片機(jī)課程設(shè)計(jì)實(shí)例

redlightzhu bit p1.0

yellowlightzhu bit p1.1

greenlightzhu bit p1.2

redlightzhi bit p1.3

yellowlightzhi bit p1.4

greenlightzhi bit p1.5

shiw equ 78h

gew equ 79h

xh1 equ 30h

xh2 equ 31h

org 0000h

jmp main

org 0080h

main:

mov xh1,#255

mov xh2,#255

mov p1,#0ffh

mov P0,#0ffh

mov P2,#0ffh

mov dptr,#tab

green:

mov xh1,#255

mov xh2,#255

mov r4,#35

mov r3,#35

loopa:clr greenlightzhu

clr redlightzhi

loop1:lcall shuxian

djnz xh1,loop1

setb greenlightzhu

setb redlightzhi

loop2:lcall shuxian

djnz xh2,loop2

dec r3

dec r4

mov a,r4

cjne a,#5,loopa

greenlight:

mov xh1,#255

mov xh2,#255

mov r4,#5

mov r3,#5

loopb:clr greenlightzhu

clr yellowlightzhu

clr redlightzhi

loop11:lcall shuxian

djnz xh1,loop11

setb greenlightzhu

setb redlightzhi

setb yellowlightzhu

loop12:lcall shuxian

djnz xh2,loop12

dec r3

djnz r4,loopb

red1:

mov xh1,#255

mov xh2,#255

mov r4,#20

mov r3,#20

loopc:clr greenlightzhi

clr redlightzhu

loop21:call shuxian

djnz xh1,loop21

setb greenlightzhi

setb redlightzhu

loop22:call shuxian

djnz xh2,loop22

dec r4

dec r3

mov a,r3

cjne a,#5,loopc

red2:

mov xh1,#255

mov xh2,#255

mov r4,#5

mov r3,#5

loopd:clr greenlightzhi

clr yellowlightzhi

clr redlightzhu

loop31:call shuxian

djnz xh1,loop31

setb greenlightzhi

setb redlightzhu

setb yellowlightzhi

loop32:call shuxian

djnz xh2,loop32

dec r3

djnz r4,loopd

jmp green

shuxian:

mov a,r4

mov b,#10

div ab

mov shiw,a

mov gew,b

movc a,@a+dptr

mov shiw,a

mov a,gew

movc a,@a+dptr

mov gew,a

mov p0,#0ffh

mov p2,#0ffh

clr p2.3

mov p0,shiw

call delay

mov p0,#0ffh

mov p2,#0ffh

clr p2.4

mov p0,gew

call delay

mov a,r3

mov b,#10

div ab

mov shiw,a

mov gew,b

movc a,@a+dptr

mov shiw,a

mov a,gew

movc a,@a+dptr

mov gew,a

mov p0,#0ffH

mov p2,0ffh

clr p2.5

mov p0,shiw

call delay

mov p0,#0ffh

mov p2,#0ffh

clr p2.6

mov p0,gew

call delay

ret

delay:

mov r6,#30;延時(shí)1ms子程序

mov r7,#255

d1:djnz r6,d1

d2:djnz r7,d2

ret

tab:

DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h

end

簡(jiǎn)單的單片機(jī)課程設(shè)計(jì)

S_SET BIT P3.2 ;數(shù)字鐘秒控制位

M_SET BIT P3.3 ;分鐘控制位

H_SET BIT P3.4 ;小時(shí)控制位

SECOND EQU 30H

MINUTE EQU 31H

HOUR EQU 32H

TCNT EQU 34H

ORG 0000H

SJMP START

ORG 000BH

LJMP INT_T0

START:MOV DPTR,#TABLE

MOV P1,#0FEH

MOV HOUR,#0 ;初始化

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

MOV TMOD,#01H

MOV TH0,#(65536-50000)/256 ;定時(shí)50毫秒

MOV TL0,#(65536-50000)/256

MOV IE,#82H

SETB TR0

;****************************;判斷是否有控制鍵按下,是哪一個(gè)鍵按下

A1: LCALL DISPLAY

JNB S_SET,S1

JNB M_SET,S2

JNB H_SET,S3

LJMP A1

S1: LCALL DELAY ;去抖動(dòng)

JB S_SET,A1

INC SECOND ;秒值加1

MOV A,SECOND

CJNE A,#60,J0 ;判斷是否加到60秒

MOV SECOND,#0

LJMP K1

S2: LCALL DELAY

JB M_SET,A1

K1: INC MINUTE ;分鐘值加1

MOV A,MINUTE

CJNE A,#60,J1 ;判斷是否加到60分

MOV MINUTE,#0

LJMP K2

S3: LCALL DELAY

JB H_SET,A1

K2: INC HOUR ;小時(shí)值加1

MOV A,HOUR

CJNE A,#24,J2 ;判斷是否加到24小時(shí)

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

LJMP A1

;*********************;等待按鍵抬起

J0: JB S_SET,A1

LCALL DISPLAY

SJMP J0

J1: JB M_SET,A1

LCALL DISPLAY

SJMP J1

J2: JB H_SET,A1

LCALL DISPLAY

SJMP J2

;***********************************************

;定時(shí)器中斷服務(wù)程序,對(duì)秒,分鐘和小時(shí)的計(jì)數(shù)

INT_T0:MOV TH0,#(65536-50000)/256

MOV TL0,#(65536-50000)/256

INC TCNT

MOV A,TCNT

CJNE A,#20,RETUNE ;計(jì)時(shí)1秒

INC SECOND

MOV A,P1

RR A

MOV P1,A

MOV TCNT,#0

MOV A,SECOND

CJNE A,#60,RETUNE

INC MINUTE

MOV SECOND,#0

MOV A,MINUTE

CJNE A,#60,RETUNE

INC HOUR

MOV MINUTE,#0

MOV A,HOUR

CJNE A,#25,RETUNE

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

RETUNE: RETI

;*********************;顯示控制子程序

DISPLAY: MOV A,SECOND ;顯示秒

MOV B,#10

DIV AB

CLR P2.1

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.1

MOV A,B

CLR P2.0

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.0

CLR P2.2

MOV P0,#40H

LCALL DELAY

SETB P2.2

MOV A,MINUTE ;顯示分鐘

MOV B,#10

DIV AB

CLR P2.4

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.4

MOV A,B

CLR P2.3

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.3

CLR P2.5

MOV P0,#40H

LCALL DELAY

SETB P2.5

MOV A,HOUR ;顯示小時(shí)

MOV B,#10

DIV AB

CLR P2.7

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.7

MOV A,B

CLR P2.6

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.6

RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DELAY: MOV R6,#10

D1: MOV R7,#250

DJNZ R7,$

DJNZ R6,D1

RET

END

單片機(jī)課程設(shè)計(jì):學(xué)校作息時(shí)間控制系統(tǒng)的設(shè)計(jì)!

C8051f040單片機(jī),內(nèi)部資源豐富,12864液晶顯示器,4X4鍵盤作為輸入模塊,主要是軟件.

單片機(jī)課程設(shè)計(jì)—–數(shù)字溫度計(jì)(要有原程序)

系統(tǒng)程序主要包括C程序主函數(shù)、DS18B20復(fù)位函數(shù)、DS18B20寫字節(jié)函數(shù)、DS18B20讀字節(jié)函數(shù)、溫度計(jì)算轉(zhuǎn)換函數(shù)、顯示函數(shù)等等。

以下是DS18B20溫度計(jì)C語言程序清單:

/*********************************************************************/

//

// DS18B20溫度計(jì)C程序

// 2005.2.28通過調(diào)試

/*********************************************************************/

//使用AT89C2051單片機(jī),12MHZ晶振,用共陽LED數(shù)碼管

//P1口輸出段碼,P3口掃描

//#pragma src(d:\aa.asm)

#include “reg51.h”

#include “intrins.h” //_nop_();延時(shí)函數(shù)用

#define Disdata P1 //段碼輸出口

#define discan P3 //掃描口

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^7; //溫度輸入口

sbit DIN=P1^7; //LED小數(shù)點(diǎn)控制

uint h;

//

//

//*******溫度小數(shù)部分用查表法**********//

uchar code ditab[16]=

{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

//

uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/* 共陽LED段碼表 “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” “不亮” “-” */

uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列掃描控制字

uchar data temp_data[2]={0x00,0x00}; // 讀出溫度暫放

uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù),一個(gè)運(yùn)算暫存用

//

//

//

/***********11微秒延時(shí)函數(shù)**********/

//

void delay(uint t)

{

for(;t>0;t–);

}

//

/***********顯示掃描函數(shù)**********/

scan()

{

char k;

for(k=0;k<4;k++) //四位LED掃描控制

{

Disdata=dis_7[display[k]];

if(k==1){DIN=0;}

discan=scan_con[k];delay(90);discan=0xff;

}

}

//

//

/***********18B20復(fù)位函數(shù)**********/

ow_reset(void)

{

char presence=1;

while(presence)

{

while(presence)

{

DQ=1;_nop_();_nop_();

DQ=0; //

delay(50); // 550us

DQ=1; //

delay(6); // 66us

presence=DQ; // presence=0繼續(xù)下一步

}

delay(45); //延時(shí)500us

presence = ~DQ;

}

DQ=1;

}

//

//

/**********18B20寫命令函數(shù)*********/

//向 1-WIRE 總線上寫一個(gè)字節(jié)

void write_byte(uchar val)

{

uchar i;

for (i=8; i>0; i–) //

{

DQ=1;_nop_();_nop_();

DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us

DQ = val&0x01; //最低位移出

delay(6); //66us

val=val/2; //右移一位

}

DQ = 1;

delay(1);

}

//

/*********18B20讀1個(gè)字節(jié)函數(shù)********/

//從總線上讀取一個(gè)字節(jié)

uchar read_byte(void)

{

uchar i;

uchar value = 0;

for (i=8;i>0;i–)

{

DQ=1;_nop_();_nop_();

value>>=1;

DQ = 0; //

_nop_();_nop_();_nop_();_nop_(); //4us

DQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us

if(DQ)value|=0x80;

delay(6); //66us

}

DQ=1;

return(value);

}

//

/***********讀出溫度函數(shù)**********/

//

read_temp()

{

ow_reset(); //總線復(fù)位

write_byte(0xCC); // 發(fā)Skip ROM命令

write_byte(0xBE); // 發(fā)讀命令

temp_data[0]=read_byte(); //溫度低8位

temp_data[1]=read_byte(); //溫度高8位

ow_reset();

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 發(fā)轉(zhuǎn)換命令

}

//

/***********溫度數(shù)據(jù)處理函數(shù)**********/

work_temp()

{

uchar n=0; //

if(temp_data[1]>127)

{temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}//負(fù)溫度求補(bǔ)碼

display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);//

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;

if(!display[3]){display[3]=0x0A;if(!display[2]){display[2]=0x0A;}}//最高位為0時(shí)都不顯示

if(n){display[3]=0x0B;}//負(fù)溫度時(shí)最高位顯示”-“

}

//

//

/**************主函數(shù)****************/

main()

{

Disdata=0xff; //初始化端口

discan=0xff;

for(h=0;h<4;h++){display[h]=8;}//開機(jī)顯示8888

ow_reset(); // 開機(jī)先轉(zhuǎn)換一次

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 發(fā)轉(zhuǎn)換命令

for(h=0;h<500;h++)

{scan();} //開機(jī)顯示”8888″2秒

while(1)

{

read_temp(); //讀出18B20溫度數(shù)據(jù)

work_temp(); //處理溫度數(shù)據(jù)

for(h=0;h<500;h++)

{scan();} //顯示溫度值2秒

}

}

//

//*********************結(jié)束**************************//

單片機(jī)課程設(shè)計(jì) 單片機(jī)溫度的檢測(cè)與顯示的設(shè)計(jì)

用18b20做很簡(jiǎn)單啊。

溫度的子程序給你,,你重定義一下接口,主程序已經(jīng)調(diào)用出溫度了,你送到顯示就行了。。

/* 延時(shí)t毫秒 */

void delay(uint t)

{

uint i;

while(t–)

{

/* 對(duì)于11.0592M時(shí)鐘,約延時(shí)1ms */

for (i=0;i<125;i++)

{}

}

}

/* 產(chǎn)生復(fù)位脈沖初始化DS18B20 */

void TxReset(void)

{

uint i;

DQ = 0;

/* 拉低約900us */

i = 100;

while (i>0) i–;

DQ = 1; // 產(chǎn)生上升沿

i = 4;

while (i>0) i–;

}

/* 等待應(yīng)答脈沖 */

void RxWait(void)

{

uint i;

while(DQ);

while(~DQ); // 檢測(cè)到應(yīng)答脈沖

i = 4;

while (i>0) i–;

}

/* 讀取數(shù)據(jù)的一位,滿足讀時(shí)隙要求 */

bit RdBit(void)

{

uint i;

bit b;

DQ = 0;

i++;

DQ = 1;

i++;i++; // 延時(shí)15us以上,讀時(shí)隙下降沿后15us,DS18B20輸出數(shù)據(jù)才有效

b = DQ;

i = 8;

while(i>0) i–;

return (b);

}

/* 讀取數(shù)據(jù)的一個(gè)字節(jié) */

uchar RdByte(void)

{

uchar i,j,b;

b = 0;

for (i=1;i<=8;i++)

{

j = RdBit();

b = (j<<7)|(b>>1);

}

return(b);

}

/* 寫數(shù)據(jù)的一個(gè)字節(jié),滿足寫1和寫0的時(shí)隙要求 */

void WrByte(uchar b)

{

uint i;

uchar j;

bit btmp;

for(j=1;j<=8;j++)

{

btmp = b&0x01;

b = b>>1; // 取下一位(由低位向高位)

if (btmp)

{

/* 寫1 */

DQ = 0;

i++;i++; // 延時(shí),使得15us以內(nèi)拉高

DQ = 1;

i = 8;

while(i>0) i–; // 整個(gè)寫1時(shí)隙不低于60us

}

else

{

/* 寫0 */

DQ = 0;

i = 8;

while(i>0) i–; // 保持低在60us到120us之間

DQ = 1;

i++;

i++;

}

}

}

/* 啟動(dòng)溫度轉(zhuǎn)換 */

void convert(void)

{

TxReset(); // 產(chǎn)生復(fù)位脈沖,初始化DS18B20

RxWait(); // 等待DS18B20給出應(yīng)答脈沖

delay(1); // 延時(shí)

WrByte(0xcc); // skip rom 命令

WrByte(0x44); // convert T 命令

}

/* 讀取溫度值 */

void RdTemp(void)

{

TxReset(); // 產(chǎn)生復(fù)位脈沖,初始化DS18B20

RxWait(); // 等待DS18B20給出應(yīng)答脈沖

delay(1); // 延時(shí)

WrByte(0xcc); // skip rom 命令

WrByte(0xbe); // read scratchpad 命令

tplsb = RdByte(); // 溫度值低位字節(jié)(其中低4位為二進(jìn)制的“小數(shù)”部分)

tpmsb = RdByte(); // 高位值高位字節(jié)(其中高5位為符號(hào)位)

}

void main(void)

{

do

{

delay(1); // 延時(shí)1ms

convert(); // 啟動(dòng)溫度轉(zhuǎn)換,需要750ms

delay(1000); // 延時(shí)1s

RdTemp(); // 讀取溫度

}

while(1);

}

單片機(jī)課程設(shè)計(jì)電子時(shí)鐘程序

#include <at89x51.h> //頭文件包含

#define uchar unsigned char //宏定義

#define uint unsigned int

#define ON 0 //定義0為打開

#define OFF 1 //定義1為關(guān)閉

#define LEDBus P1 //定義p1口為數(shù)碼管段碼口

sbit MIAO =P1^2; //秒點(diǎn)

sbit HOU_S=P3^0; //時(shí)十位位選

sbit HOU_G=P3^1; //時(shí)個(gè)位位選

sbit MIN_S=P3^2; //分十位位選

sbit MIN_G=P3^3; //分個(gè)位位選

sbit H_KEY=P3^4; //時(shí)調(diào)整鍵

sbit M_KEY=P3^5; //分調(diào)整鍵

bit SHAN; //閃爍標(biāo)志位

uchar second,minute,hour; //定義秒、分、時(shí)寄存器

uchar code LEDTab[]={0x14,0xd7,0x4c, //數(shù)碼管段碼表0–9

0x45,0x87,0x25,0x24,0x57,0x04,0x05};

void delay(uchar t); //延時(shí)函數(shù)

void init(); //初始化函數(shù)

void display(); //顯示函數(shù)

void min_tiao(); //分調(diào)整函數(shù)

void hou_tiao(); //時(shí)調(diào)整函數(shù)

/***************************************

函 數(shù) 名:main

功 能:主函數(shù)

說 明:

入口參數(shù):無

返 回 值:無

****************************************/

void main()

{

init(); //調(diào)用初始化函數(shù)

while(1) //主程序循環(huán)

{

if(!H_KEY) hou_tiao(); //如果時(shí)調(diào)整鍵按下(為0),調(diào)用時(shí)調(diào)整函數(shù)

if(!M_KEY) min_tiao(); //如果分調(diào)整鍵按下(為0),調(diào)用分調(diào)整函數(shù)

display(); //調(diào)用顯示函數(shù)

}

}

/***************************************

函 數(shù) 名:init

功 能:初始化函數(shù)

說 明:初始化定時(shí)器及中斷

入口參數(shù):無

返 回 值:無

***************************************/

void init()

{

TMOD=1;TH0=0X3C;TL0=0XB0; //定時(shí)器0模式1,50毫秒

ET0=1;TR0=1;EA=1; //開定時(shí)器0中斷、啟動(dòng)定時(shí)器0、開總中斷

}

/***************************************

函 數(shù) 名:display

功 能:顯示函數(shù)

說 明:

入口參數(shù):無

返 回 值:無

***************************************/

void display()

{

LEDBus=LEDTab[minute%10]; //分個(gè)位送數(shù)碼管顯示

MIAO=SHAN; //秒點(diǎn)閃爍

MIN_G=ON; //打開分個(gè)位位選

delay(1); //顯示1毫秒

MIN_G=OFF; //關(guān)閉分個(gè)位位選

LEDBus=LEDTab[minute/10]; //分十位送數(shù)碼管顯示

MIAO=SHAN; //秒點(diǎn)閃爍

MIN_S=ON; //打開分十位位選

delay(1); //顯示1毫秒

MIN_S=OFF; //關(guān)閉分十位位選

LEDBus=LEDTab[hour%10]; //時(shí)個(gè)位送數(shù)碼管顯示

HOU_G=ON; //打開時(shí)個(gè)位位選

delay(1); //顯示1毫秒

HOU_G=OFF; //關(guān)閉時(shí)個(gè)位位選

if(hour/10) //如果時(shí)十位為0,不顯示十位數(shù)字

{

LEDBus=LEDTab[hour/10]; //時(shí)十位送數(shù)碼管顯示

HOU_S=ON; //打開時(shí)十位位選

delay(1); //顯示1毫秒

HOU_S=OFF; //關(guān)閉時(shí)十位位選

}

}

/***************************************

函 數(shù) 名:min_tiao

功 能:分調(diào)整

說 明:

入口參數(shù):無

返 回 值:無

***************************************/

void min_tiao()

{

while(!M_KEY) display(); //等待分調(diào)整鍵松開

second=0;minute++; //秒清零、分加1

if(minute==60) minute=0; //如果分等于60,分變0

}

/***************************************

函 數(shù) 名:hou_tiao

功 能:時(shí)調(diào)整

說 明:

入口參數(shù):無

返 回 值:無

***************************************/

void hou_tiao()

{

while(!H_KEY) display(); //等待時(shí)調(diào)整鍵松開

second=0;hour++; //秒清零,時(shí)加1

if(hour==24) hour=0; //如果時(shí)等于24,時(shí)變0

}

/***************************************

函 數(shù) 名:delay

功 能:延時(shí)函數(shù)

說 明:

入口參數(shù):t:延時(shí)時(shí)間長(zhǎng)短

返 回 值:無

***************************************/

void delay(uchar t)

{

uchar i; //定義變量

for(;t>0;t–) //如果t大于0,t減1(外層循環(huán))

for(i=124;i>0;i–); //i等于124,如果i大于0,i減1

}

/***************************************

函 數(shù) 名:timer0

功 能:定時(shí)器0中斷函數(shù)

說 明:

入口參數(shù):無

返 回 值:無

***************************************/

void timer0() interrupt 1 //定時(shí)器0(中斷1)

{

uchar tim1,tim2; //定義臨時(shí)變量

TL0=TL0+0XB0;TH0=0X3C; //重裝定時(shí)器初值

tim1++; //每中斷一次tim1加1

if(tim1==10) //中斷10(0.5秒)

{

SHAN=!SHAN; //閃爍標(biāo)志取反

tim1=0;tim2++; //tim1清零,tim2加1

if(tim2==2) //到了1秒

{

tim2=0;second++; //tim2清零,秒加1

if(second==60) //如果秒到60

{

second=0;minute++; //秒變0,分加1

if(minute==60) //如果分到60

{

minute=0;hour++; //分變0,時(shí)加1

if(hour==24) hour=0; //如果時(shí)到24,時(shí)變0

}

}

}

}

}

/***************************************

program end 程序結(jié)束

四虎国产精品成人免费4hu_欧美xx网站_一本色道久久加勒比88综合_国产在视频一区二区三区吞精_国产精品一区二区x88av_日韩精品一区二区三区四区 _天天影视涩香欲综合网
91视频在线看| 精品va天堂亚洲国产| 青青国产91久久久久久| 亚洲欧美一区二区不卡| 国产视频911| 欧美成人激情免费网| 欧美撒尿777hd撒尿| 不卡的电视剧免费网站有什么| 久久精品99久久久| 日韩电影免费一区| 午夜av电影一区| 五月婷婷久久综合| 亚洲国产一区二区三区青草影视| 亚洲男同性恋视频| 亚洲摸摸操操av| 亚洲麻豆国产自偷在线| 亚洲乱码中文字幕综合| 亚洲欧美另类在线| 一区二区在线电影| 亚洲一卡二卡三卡四卡五卡| 午夜欧美电影在线观看| 午夜精品在线看| 日一区二区三区| 麻豆精品一区二区三区| 麻豆精品国产传媒mv男同| 日韩av高清在线观看| 秋霞国产午夜精品免费视频| 日本成人在线电影网| 蜜桃视频在线一区| 国产九色sp调教91| 不卡的电视剧免费网站有什么| 97久久精品人人澡人人爽| 99国产精品久久久久久久久久久| 91影院在线免费观看| 在线一区二区三区做爰视频网站| 日本高清免费不卡视频| 欧美日韩久久不卡| 欧美一卡2卡三卡4卡5免费| 精品免费视频.| 亚洲国产精品高清| 中文字幕亚洲不卡| 亚洲一区二区视频| 裸体在线国模精品偷拍| 国产一区二区h| 粉嫩久久99精品久久久久久夜| 成人性生交大片免费看在线播放| 99re6这里只有精品视频在线观看| 欧美亚洲高清一区二区三区不卡| 欧美一区二区女人| 国产欧美一区二区精品婷婷| 亚洲视频在线观看一区| 亚洲国产乱码最新视频| 久久精品国产免费看久久精品| 国产二区国产一区在线观看| 91美女视频网站| 777色狠狠一区二区三区| 精品剧情在线观看| 国产精品成人午夜| 五月婷婷综合网| 成人综合婷婷国产精品久久蜜臀| 欧美性淫爽ww久久久久无| 欧美不卡激情三级在线观看| 亚洲欧美日韩人成在线播放| www.日韩大片| 制服丝袜亚洲网站| 日韩精品中文字幕在线一区| 综合av第一页| 蜜臀av性久久久久蜜臀aⅴ| 成人综合在线观看| 欧美一个色资源| 1024成人网| 国产一区91精品张津瑜| 欧美视频三区在线播放| 国产丝袜在线精品| 午夜av一区二区| 91网址在线看| 精品国产成人在线影院 | 精品国产亚洲在线| 亚洲嫩草精品久久| 国产精品综合视频| 欧美日韩不卡视频| 国产精品久久久久一区二区三区| 奇米影视一区二区三区| 97国产一区二区| 久久久久久久精| 日本成人在线看| 日本高清不卡在线观看| 国产欧美日产一区| 美女网站色91| 欧美系列一区二区| 亚洲视频在线一区二区| 国产精品影视网| 日韩色视频在线观看| 亚洲国产精品久久久男人的天堂| 国产成人在线影院| 日韩美女在线视频| 五月天婷婷综合| 91麻豆免费在线观看| 久久久五月婷婷| 免费成人你懂的| 欧美高清视频不卡网| 亚洲国产视频一区二区| 99综合电影在线视频| 久久精品视频免费观看| 久久aⅴ国产欧美74aaa| 欧美一区二区三区四区在线观看 | 亚洲国产精品一区二区久久| 成人av一区二区三区| 亚洲精品在线三区| 久久国内精品视频| 欧美r级电影在线观看| 日韩中文字幕麻豆| 欧美丝袜丝交足nylons图片| 亚洲男人的天堂一区二区| 99久久伊人精品| 国产亚洲欧美日韩日本| 国产一区二区三区av电影| 欧美一区二区三区免费观看视频| 婷婷开心激情综合| 在线观看一区二区视频| 亚洲国产色一区| 欧美日韩另类国产亚洲欧美一级| 亚洲国产综合在线| 欧美日韩在线播放| 午夜精品成人在线视频| 欧美喷水一区二区| 青青草原综合久久大伊人精品优势| 5858s免费视频成人| 无码av中文一区二区三区桃花岛| 欧美日韩午夜精品| 奇米777欧美一区二区| 欧美videos中文字幕| 精品在线播放免费| 久久综合网色—综合色88| 国产精品影视在线观看| 国产精品美女久久久久久| av亚洲产国偷v产偷v自拍| 亚洲欧美电影一区二区| 欧美日韩精品电影| 日韩av电影天堂| 337p日本欧洲亚洲大胆精品| 日韩午夜在线观看| 国模无码大尺度一区二区三区| 久久婷婷色综合| 成人av网站在线观看免费| 亚洲视频每日更新| 欧美日韩一区二区三区四区五区| 日本中文在线一区| 久久久不卡网国产精品二区| 成人精品小蝌蚪| 亚洲国产精品一区二区久久| 日韩欧美一二区| 高清不卡一二三区| 亚洲精品免费视频| 日韩一区二区三| 国产福利一区二区三区视频| 国产精品不卡视频| 911精品国产一区二区在线| 国产在线精品一区二区三区不卡 | 国产精品久久毛片av大全日韩| www.av精品| 午夜精品福利久久久| 国产网站一区二区三区| 色婷婷香蕉在线一区二区| 日韩**一区毛片| 亚洲国产精品激情在线观看| 欧美影院精品一区| 国产资源精品在线观看| 亚洲少妇屁股交4| 欧美一区二区三区爱爱| 成人免费视频视频在线观看免费| 一区二区三区在线不卡| 日韩美一区二区三区| 一本大道久久a久久精品综合| 日本欧洲一区二区| 亚洲久草在线视频| 欧美电影精品一区二区| 99国产精品久久久久久久久久 | 韩国在线一区二区| 亚洲视频一二三| 日韩视频在线你懂得| www.激情成人| 麻豆精品在线播放| 亚洲综合在线五月| 久久久久久日产精品| 欧美日韩精品一区二区在线播放| 狠狠色丁香久久婷婷综合丁香| 亚洲欧美国产高清| 久久无码av三级| 91精品国产aⅴ一区二区| 97久久精品人人爽人人爽蜜臀| 精一区二区三区| 亚洲成人福利片| 亚洲青青青在线视频| 欧美精品一区二区三区很污很色的 | 蜜桃视频免费观看一区| 中文字幕在线观看一区二区| 精品国产免费视频| 欧美日韩久久不卡| 在线观看视频91|