DS18B20的管脚定义:

1、GND

2、DQ

3、VCC

DQ   →  P1.7

K1   →  P3.2

K2   →  P3.4

K3   →  P3.6

K4   →  P3.7

温度显示用四位数码管,当温度>=100度时,第四位才显示。

第五位数码管显示状态符号。

开机检测 DS18B20 状态:

DS18B20正常显示:

O  18.8  ← 显示实时温度和加热标记“O”

DS18B20不正常显示:

黑屏、蜂鸣器一直响。

这时你要检查DS18B20是否连接好、接对,否则要更换一个新的 DS18B20 芯片。

程序在整个运行过程中,始终对 DS18B20 进行检测。

你可以将 DS18B20 从 51hei-5 拔掉,检测一下此功能。

一、查看温度报警值:

K1 → 进入查看温度报警值 TL 状态:

L--20

TL: 20   低位报警值

K1 → 进入查看温度报警值 TH 状态:

H--28

TH: 28  高位报警值

K1 → 退出查看温度报警值状态。

二、设定温度报警值:

1、K3 → 进入设定温度报警值 TL 状态:

L--20

2、K3 → 进入设定温度报警值 TH 状态:

H--28

3、K3 → 返回

4、设定过程: K1 →加键 (UP), K2 →减键 (DOWN),可快速调。

将设定的温度报警值自动存入 DS18B20 的 EEROM 中,可永久保存。

每次开机时自动从 DS18B20 的 EEROM 读出温度报警值。

三、报警状态的显示:

1、当实际温度大于 TH 的设定值时,

H  38.8       H → 闪动

关闭继电器,表示超温。

2、当实际温度小于 TL 的设定值时,

L  18.8       L → 闪动

表示加热部分出现故障。

3、当实际温度小于 TH 的设定值时,继电器吸合,开始加热。

加热标记为“O”

四、其它功能

1、以闪动方式显示标记符 “ H”、“ L”、“O”。

2、实时温度百位数为 “0”时,不显示。

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

;* 标题: 51Hei单片机开发系统演示程序 - DS18B20温度控制数码管显示 *

;* 晶振: 12M *

;* 跳线设置:J5的12脚用跳线帽短接,J5的第3脚用杜邦线连接到顶部P1.0扩展,其他默认 * *

;* 网站: http://www.51HEI.com *

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

;* 描述: *

;* DS18B20温度控制数码管显示 *

;* 1、K3 → 进入设定温度报警值 TL 状态: *

;* L--20 *

;* 2、K3 → 进入设定温度报警值 TH 状态: *

;* H--28 *

;* 3、K3 → 返回 *

;* 4、设定过程: K1 →加键 (UP), K2 →减键 (DOWN),可快速调。 *

;* *

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

TIMER_L DATA 23H

TIMER_H DATA 24H

TIMER_COUN DATA 25H

TEMPL DATA 26H

TEMPH DATA 27H

TEMP_TH DATA 28H

TEMP_TL DATA 29H

TEMPHC DATA 2AH

TEMPLC DATA 2BH

TEMP_ZH DATA 2CH

BEEP EQU P1.0

DATA_LINE EQU P1.7

RELAY EQU P2.2

FLAG1 EQU 20H.0

FLAG2 EQU 20H.1

;-------------------------------------------------

K1 EQU P3.2

K2 EQU P3.4

K3 EQU P3.6

K4 EQU P3.7

;=================================================

ORG 0000H

JMP MAIN

ORG 000BH

AJMP INT_T0

;--------------------------------------------------

MAIN: MOV SP,#30H

;以下5行的功能是关闭8*8点阵的输出,也就是把所有的行置0,这样不管列为任何电平点阵都不会亮了.

MOV R2,#8 ;输出数据8位

hei: CLR P2.4 ;拉低SCL,以便下次拉高便可产生上升沿

CLR P2.5 ;数据先送入74hc164,等待clk上升沿的到来

SETB P2.4 ;低电平到高电平边沿触发到来,并行数据输出至164的Q0-Q7

DJNZ R2,hei ;判断输出完毕了没有

MOV TMOD,#01H ;T0,方式1

MOV TIMER_L,#00H ;50ms定时值

MOV TIMER_H,#4CH

MOV TIMER_COUN,#00H ;中断计数

MOV IE,#82H ;EA=1,ET0=1

LCALL READ_E2

;LCALL RE_18B20

MOV 20H,#00H

SETB BEEP

SETB RELAY

MOV 7FH,#0AH ;熄灭符

CALL RESET ;复位与检测DS18B20

JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在

JMP START

MAIN1: CALL RESET

JB FLAG1,START

LCALL BEEP_BL ;DS18B20错误,报警

JMP MAIN1

START:

MOV A,#0CCH ; 跳过ROM匹配

CALL WRITE

MOV A,#044H ; 发出温度转换命令

CALL WRITE

CALL RESET

MOV A,#0CCH ; 跳过ROM匹配

CALL WRITE

MOV A,#0BEH ; 发出读温度命令

CALL WRITE

CALL READ ;读温度数据

CALL CONVTEMP

CALL DISPBCD

CALL DISP1

CALL SCANKEY

LCALL TEMP_COMP

JMP MAIN1

;=====================================================

;DS18B20 复位与检测子程序

;FLAG1=1 OK, FLAG1=0 ERROR

;======================================================

RESET:

SETB DATA_LINE

NOP

CLR DATA_LINE

MOV R0,#64H ;主机发出延时600微秒的复位低脉冲

MOV R1,#03H

RESET1: DJNZ R0,$

MOV R0,#64H

DJNZ R1,RESET1

SETB DATA_LINE ;然后拉高数据线

NOP

MOV R0,#25H

RESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回应

DJNZ R0,RESET2

JMP RESET4 ; 延时

RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在

JMP RESET5

RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在

JMP RESET6

RESET5: MOV R0,#064H

DJNZ R0,$ ; 时序要求延时一段时间

RESET6: SETB DATA_LINE

RET

;===========================================================

;

;===========================================================

WRITE: MOV R2,#8 ;一共8位数据

CLR CY

WR1:

CLR DATA_LINE ;开始写入DS18B20总线要处于复位(低)状态

MOV R3,#09

DJNZ R3,$ ;总线复位保持18微妙以上

RRC A ;把一个字节DATA 分成8个BIT环移给C

MOV DATA_LINE,C ;写入一个BIT

MOV R3,#23

DJNZ R3,$ ;等待46微妙

SETB DATA_LINE ;重新释放总线

NOP

DJNZ R2,WR1 ;写入下一个BIT

SETB DATA_LINE

RET

;============================================================

;从DS18B20中读出温度低位、高位和报警值TH、TL

;存入26H、27H、28H、29H

;============================================================

READ: MOV R4,#4 ; 将温度高位和低位从DS18B20中读出

MOV R1,#26H ; 存入26H、27H、28H、29H

RE00: MOV R2,#8

RE01: CLR C

SETB DATA_LINE

NOP

NOP

CLR DATA_LINE ;读前总线保持为低

NOP

NOP

NOP

SETB DATA_LINE ;开始读总线释放

MOV R3,#09 ;延时18微妙

DJNZ R3,$

MOV C,DATA_LINE ;从DS18B20总线读得一个BIT

MOV R3,#23

DJNZ R3,$ ;等待46微妙

RRC A ;把读得的位值环移给A

DJNZ R2,RE01 ;读下一个BIT

MOV @R1,A

INC R1

DJNZ R4,RE00

RET

;--------------------------------------------

;200ms对闪动标记取反一次

;--------------------------------------------

INT_T0:

PUSH ACC

PUSH PSW

MOV TL0,TIMER_L

MOV TH0,TIMER_H

INC TIMER_COUN

MOV A,TIMER_COUN

CJNE A,#04H,INT_END

MOV TIMER_COUN,#00H

CPL FLAG2

INT_END:

POP PSW

POP ACC

RETI

;==========================================================

;重新对 DS18B20 初始化

;将设定的温度报警值写入 DS18B20

;==========================================================

RE_18B20:

JB FLAG1,RE_18B20A

RET

RE_18B20A:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE

MOV A,#4EH ;写暂存寄存器

LCALL WRITE

MOV A,TEMP_TH ;TH(报警上限)

LCALL WRITE

MOV A,TEMP_TL ;TL(报警下限)

LCALL WRITE

MOV A,#7FH ;12位精确度

LCALL WRITE

RET

;====================================================

;功能键扫描子程序

;====================================================

SCANKEY:

;MOV P1,#0F0H

JB K1,SCAN_K2

CALL BEEP_BL

SCAN_K1: CALL ALERT_TL

CALL ALERT_PLAY

JB K1,SCAN_K1

CALL BEEP_BL

SCAN_K11: CALL ALERT_TH

CALL ALERT_PLAY

JB K1,SCAN_K11

CALL BEEP_BL

SCAN_K2: JB K2,SCAN_K3

CALL BEEP_BL

SCAN_K3: JB K3,SCAN_K4

CALL BEEP_BL

LCALL RESET_ALERT

LCALL RE_18B20

LCALL WRITE_E2

SCAN_K4: JB K4,SCAN_END

CALL BEEP_BL

SCAN_END: RET

;================================================

;设置温度报警值

;================================================

RESET_ALERT:

CALL ALERT_TL

CALL ALERT_PLAY

JNB K3,$ ;K3为位移键

SETB TR0

RESET_TL:

CALL ALERT_PLAY

JNB FLAG2,R_TL01

mov 75H,7fh ;送入熄灭符

mov 76H,7fh

CALL ALERT_PLAY

JMP R_TL02

R_TL01: CALL ALERT_TL

mov 75h,7Eh ;送设定值

mov 76h,7Dh

CALL ALERT_PLAY ;显示设定值

R_TL02: JNB K1,K011A

JNB K2,K011B

JNB K3,RESET_TH

JMP RESET_TL

K011A:

INC TEMP_TL

MOV A,TEMP_TL

CJNE A,#120,K012A ;没有到设定上限值,转

MOV TEMP_TL,#0

K012A: CALL TL_DEL

JMP RESET_TL

K011B:

DEC TEMP_TL

MOV A,TEMP_TL

CJNE A,#00H,K012B ;没有到设定下限值,转

MOV TEMP_TL,#119

K012B: CALL TL_DEL

JMP RESET_TL

;-------------------------------------------------------

RESET_TH:

CALL BEEP_BL

JNB K3,$

RESET_TH1:

CALL ALERT_PLAY

JNB FLAG2,R_TH01

mov 75H,7fh ;送入熄灭符

mov 76H,7fh

CALL ALERT_PLAY

JMP R_TH02

R_TH01: CALL ALERT_TH

mov 75h,7Eh ;

mov 76h,7Dh

CALL ALERT_PLAY

R_TH02: JNB K1,K021A

JNB K2,K021B

JNB K3,K002

JMP RESET_TH1

K021A:

INC TEMP_TH

MOV A,TEMP_TH

CJNE A,#120,K022A ;没有到设定上限值,转

MOV TEMP_TH,#0

K022A: CALL TH_DEL

JMP RESET_TH1

K021B:

DEC TEMP_TH ;减1

MOV A,TEMP_TH

CJNE A,#00H,K022B ;没有到设定下限值,转

MOV TEMP_TH,#119

K022B: CALL TH_DEL

JMP RESET_TH1

K002: CALL BEEP_BL

CLR TR0 ;关闭中断

RET

;-----------------------------------------------------

;键延时子程序

;多次调用报警值显示程序来延时

;-----------------------------------------------------

TL_DEL: ;报警低值延时

MOV R2,#0AH

TL_DEL1: CALL ALERT_TL

CALL ALERT_PLAY

DJNZ R2,TL_DEL1

RET

TH_DEL: ;报警高值延时

MOV R2,#0AH

TH_DEL1: CALL ALERT_TH

CALL ALERT_PLAY

DJNZ R2,TH_DEL1

RET

;====================================================

;实时温度值与设定报警温度值 TH、TL 比较子程序

;当实际温度大于 TH 的设定值时,显示“H”,继电器关闭。

;当实际温度小于 TH 的设定值时,显示“O”,继电器吸合。

;当实际温度小于 TL 的设定值时,显示“L”。

;闪动显示标记符 H、L、O

;====================================================

TEMP_COMP:

SETB TR0 ;启动中断

MOV A,TEMP_TH

SUBB A,TEMP_ZH ;减数>被减数,则

JC CHULI1 ;借位标志位C=1,转

MOV A,TEMP_ZH

SUBB A,TEMP_TL ;减数>被减数,则

JC CHULI2 ;借位标志位C=1,转

JNB FLAG2,T_COMP1 ;FLAG2=0,显示标记字符

MOV 74H,#0AH ;熄灭符

LCALL DISP1

JMP T_COMP2

T_COMP1: MOV 74H,#00H

LCALL DISP1 ;显示"O"

T_COMP2: CLR RELAY ;继电器吸合

CLR TR0 ;关闭中断

RET

;---------------------------------------------

;超温处理

;---------------------------------------------

CHULI1:

SETB RELAY ;继电器关闭

JNB FLAG2,CHULI10

MOV 74H,#0AH ;熄灭符

LCALL DISP1

JMP CHULI11

CHULI10: MOV 74H,#0DH

LCALL DISP1 ;显示"H"

;CALL BEEP_BL ;蜂鸣器响

CHULI11:

CLR TR0 ;关闭中断

RET

;---------------------------------------------

;欠温处理

;---------------------------------------------

CHULI2: ;欠温处理

JNB FLAG2,CHULI20

MOV 74H,#0AH ;熄灭符

LCALL DISP1

JMP CHULI21

CHULI20: MOV 74H,#0CH

LCALL DISP1 ;显示"L"

;CALL BEEP_BL ;蜂鸣器响

CHULI21: CLR TR0 ;关闭中断

RET

;------------------------------------------------------------

;把 DS18B20 暂存器里的温度报警值拷贝到EEROM

;------------------------------------------------------------

WRITE_E2:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE

MOV A,#48H ;温度报警值拷贝到EEROM

LCALL WRITE

RET

;--------------------------------------------------------------

;把 DS18B20 EEROM 里的温度报警值拷贝回暂存器

;-------------------------------------------------------------

READ_E2:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE

MOV A,#0B8H ;温度报警值拷贝回暂存器

CALL WRITE

RET

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

; 处理温度 BCD 码子程序

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

CONVTEMP: MOV A,TEMPH ;判温度是否零下

ANL A,#80H

JZ TEMPC1 ;温度零上转

CLR C

MOV A,TEMPL ;二进制数求补(双字节)

CPL A ;取反加1

ADD A,#01H

MOV TEMPL,A

MOV A,TEMPH ;-

CPL A

ADDC A,#00H

MOV TEMPH,A ;TEMPHC HI =符号位

MOV TEMPHC,#0BH

SJMP TEMPC11

TEMPC1: MOV TEMPHC,#0AH ;

TEMPC11: MOV A,TEMPHC

SWAP A

MOV TEMPHC,A

MOV A,TEMPL

ANL A,#0FH ;乘0.0625

MOV DPTR,#TEMPDOTTAB

MOVC A,@A+DPTR

MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD

MOV A,TEMPL ;整数部分

ANL A,#0F0H

SWAP A

MOV TEMPL,A

MOV A,TEMPH

ANL A,#0FH

SWAP A

ORL A,TEMPL

MOV TEMP_ZH,A ;组合后的值存入TEMP_ZH

LCALL HEX2BCD1

MOV TEMPL,A

ANL A,#0F0H

SWAP A

ORL A,TEMPHC ;TEMPHC LOW = 十位数 BCD

MOV TEMPHC,A

MOV A,TEMPL

ANL A,#0FH

SWAP A ;TEMPLC HI = 个位数 BCD

ORL A,TEMPLC

MOV TEMPLC,A

MOV A,R7

JZ TEMPC12

ANL A,#0FH

SWAP A

MOV R7,A

MOV A,TEMPHC ;TEMPHC HI = 百位数 BCD

ANL A,#0FH

ORL A,R7

MOV TEMPHC,A

TEMPC12: RET

;-----------------------------------------------------------

; 小数部分码表

;-----------------------------------------------------------

TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

DB 06H,07H,08H,08H,09H,09H

;===========================================================

;显示区 BCD 码温度值刷新子程序

;===========================================================

DISPBCD: MOV A,TEMPLC

ANL A,#0FH

MOV 70H,A ;小数位

MOV A,TEMPLC

SWAP A

ANL A,#0FH

MOV 71H,A ;个位

MOV A,TEMPHC

ANL A,#0FH

MOV 72H,A ;十位

MOV A,TEMPHC

SWAP A

ANL A,#0FH

MOV 73H,A ;百位

MOV A,TEMPHC

ANL A,#0F0H

CJNE A,#010H,DISPBCD0

SJMP DISPBCD2

DISPBCD0: MOV A,TEMPHC

ANL A,#0FH

JNZ DISPBCD2 ;十位数是0

MOV A,TEMPHC

SWAP A

ANL A,#0FH

MOV 73H,#0AH ;符号位不显示

MOV 72H,A ;十位数显示符号

DISPBCD2: RET

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

; 温度显示子程序

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

;显示数据在70H - 73H 单元内,用4位共阳数码管显示,P0口输出段码数据,

;P0 口作扫描控制,每个 LED 数码管亮 2MS 时间再逐位循环。

DISP1: MOV R1,#70H ;指向显示数据首址

MOV R5,#7FH ;扫描控制字初值

PLAY: ; MOV P0,#0FFH

MOV A,R5 ;扫描字放入A

MOV P0,A

SETB P2.7

CLR P2.7

MOV A,@R1 ;取显示数据到A

MOV DPTR,#TAB ;取段码表地址

MOVC A,@A+DPTR ;查显示数据对应段码

MOV P0,A ;段码放入P0口

SETB P2.6

CLR P2.6

MOV A,R5

JB ACC.6,LOOP5 ;小数点处理

SETB P0.7

SETB P2.6

CLR P2.6

LOOP5: LCALL DL_MS ;显示2MS

INC R1 ;指向下一个地址

MOV A,R5 ;放回 R5 内

JNB ACC.3,ENDOUT ;ACC.3=0时一次显示结束

RR A ;A 中数据循环左移

MOV R5,A ;放入 R5 中

AJMP PLAY ;跳回 PLAY 循环

ENDOUT: ; MOV P0,#0FFH ;一次显示结束,P0口复位

; MOV P2,#0FFH ;P2口复位

RET

TAB:

;定义段码对应 0 1 2 3 4 5 6 7 8 9 - L H

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H,38H,76H

DL_MS: MOV R6,#0AH ;2MS延时程序,LED 显示程序用

DL1: MOV R7,#64H

DL2: DJNZ R7,DL2

DJNZ R6,DL1

MOV P0,#00H ;消隐

SETB P2.6

CLR P2.6

RET

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

;单字节十六进制转 BCD

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

HEX2BCD1: MOV B,#064H

DIV AB

MOV R7,A

MOV A,#0AH

XCH A,B

DIV AB

SWAP A

ORL A,B

RET

;===============================================

;报警值 TH、TL 数据转换

;===============================================

ALERT_TL:

MOV 79H,#0CH

MOV 78H,#0BH

MOV A,TEMP_TL

MOV R0,#77H

MOV B,#064H

DIV AB

CJNE A,#01H,ALERT_TL1

MOV @R0,A

JMP ALERT_TL2

ALERT_TL1: MOV A,#0BH ;显示“-”

MOV @R0,A

ALERT_TL2: MOV A,#0AH

XCH A,B

DIV AB

DEC R0

MOV @R0,A

MOV 7DH,A

DEC R0

MOV @R0,B

MOV 7EH,B

RET

;-----------------------------------------------

ALERT_TH:

MOV 79H,#0DH

MOV 78H,#0BH

MOV A,TEMP_TH

MOV R0,#77H

MOV B,#064H

DIV AB

CJNE A,#01H,ALERT_TH1

MOV @R0,A

JMP ALERT_TH2

ALERT_TH1: MOV A,#0BH ;显示“-”

MOV @R0,A

ALERT_TH2: MOV A,#0AH

XCH A,B

DIV AB

DEC R0

MOV @R0,A

MOV 7DH,A

DEC R0

MOV @R0,B

MOV 7EH,B

RET

;===============================================

;报警值显示子程序

;===============================================

ALERT_PLAY:

MOV R1,#75H ;指向显示数据首址

MOV R5,#7FH ;扫描控制字初值

A_PLAY: ; MOV P0,#0FFH

MOV A,R5 ;扫描字放入A

MOV P0,A

SETB P2.7

CLR P2.7

MOV A,@R1 ;取显示数据到A

MOV DPTR,#ALERT_TAB ;取段码表地址

MOVC A,@A+DPTR ;查显示数据对应段码

MOV P0,A ;段码放入P0口

SETB P2.6

CLR P2.6

LCALL DL_MS1 ;显示2MS

INC R1 ;指向下一个地址

MOV A,R5

JNB ACC.3,ENDOUT1

RR A ;A 中数据循环左移

MOV R5,A ;放入 R5 中

AJMP A_PLAY ;跳回 PLAY 循环

ENDOUT1: ; MOV P0,#0FFH ;一次显示结束,P0口复位

; MOV P2,#0FFH ;P2口复位

RET

ALERT_TAB:

;定义段码对应 0 1 2 3 4 5 6 7 8 9 - L H

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H,38H,76H

DL_MS1: MOV R6,#0AH ;2MS延时程序,LED 显示程序用

ADL1: MOV R7,#64H

ADL2: DJNZ R7,ADL2

DJNZ R6,ADL1

MOV P0,#00H ;消隐

SETB P2.6

CLR P2.6

RET

;===============================================

;蜂鸣器响一声子程序

;P3.7=0,蜂鸣器响

;===============================================

BEEP_BL:

MOV R6,#100

BL2: CALL DEX1

CPL BEEP ;对 beep 取反

DJNZ R6,BL2

MOV R5,#10

CALL DELAY

RET

DEX1: MOV R7,#180

DE2: NOP

DJNZ R7,DE2

RET

DELAY: ;(R5)*延时10MS

MOV R6,#50

DEL1: MOV R7,#100

DJNZ R7,$

DJNZ R6,DEL1

DJNZ R5,DELAY

RET

;==================================================

END

ds18b20温控报警c语言,51单片机DS18B20温度控制报警程序(可设置温控范围)相关推荐

  1. 红外报警c语言,基于单片机的红外报警系统设计 (毕业论文).docx

    基于单片机的红外报警系统设计 (毕业论文) 基于单片机的红外报警系统设计 摘要:随着社会经济的发展,人们生活水平的不断提高,与此同时对人生安全和财产安全提到了一个新的高度,盗窃.入室抢劫等刑事案件的多 ...

  2. 机械手编程用c语言,51单片机机械手控制C程序.doc

    51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...

  3. 机械手 c语言,51单片机机械手控制C程序

    51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...

  4. ADC0809检测报警c语言,51单片机ADC0809+AD590温度检测、报警程序

    #include "reg52.h"//头文件 #include "intrins.h" #define uchar unsigned char//宏定义 #d ...

  5. 单片机热敏电阻测温度c语言,51单片机热敏电阻测温程序.doc

    //本程序是通过热敏电阻测温度(30c-50c #include #include #include #define uchar unsigned char #define uint unsigned ...

  6. 延时1us程序12mhz晶振c语言,51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)...

    一. 500ms延时子程序 void delay500ms(void) { unsignedchari,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for ...

  7. 51单片机直流电机调速c语言,51单片机直流电机调速程序

    #includereg52.h>本文引用地址:http://www.eepw.com.cn/article/170917.htm sbit KEY1 = P3^1; //定义调速按键 sbit ...

  8. 基于单片机的c语言倒计时程序,30秒倒计时c语言51单片机实现.doc

    30秒倒计时c语言51单片机实现 原理图: 程序: #include #define uchar unsigned char #define uint unsigned int sbit dula=P ...

  9. S0011基于51单片机DS18B20温控风扇仿真设计

    基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...

最新文章

  1. Flameshot:Linux 环境下的一个简洁但功能丰富的截图工具
  2. Python基础05-数据类型:列表list
  3. android方法中添加 N,Android N 新功能 - 添加快速设定
  4. 邮箱解决任务间资源共享问题
  5. 成功解决TypeError: slice indices must be integers or None or have an __index__ method
  6. 《易学C++(第2版)》——1.10 习题
  7. 【SICP练习】127 练习3.58
  8. leetcode1075. 项目员工 I(SQL)
  9. 怎样在virtualbox下WIN7共享XP的文件
  10. 多分类决策树 r语言_R语言——决策树模型的相关可视化
  11. Orale查询返回相似度基数个数
  12. JAVA JSP网上订餐系统JSP餐厅点餐系统源码JSP点餐系统JSP网上订餐系统JSP在线订餐系统
  13. 手机号电子邮箱怎么填写?
  14. 什么原因导致了儿童自闭症?跟父母养育有关吗?
  15. 【日常】纪录一个愚蠢的问题
  16. C# dll注入(指定进程注入指定dll)
  17. ble-mesh笔记整理(1) ble-mesh通信理解
  18. jdk8 list 反转_反转人生 莫锋颜月荷六朝金粉
  19. 程序员955不加班名单
  20. java下载本地excel文件

热门文章

  1. 无线对讲软交换调度服务器,应急指挥对讲调度SIP通信系统的功能介绍
  2. MySQL聚合查询实现多表查询,联合查询,合并查询
  3. 隐藏在Windows XP中的28个秘密武器(黑客防线)
  4. IEEE1588精密时钟(PTP网络时钟服务器)在数字化变电站时钟同步方面的应用
  5. 人脸识别还敢闯红灯?人工智能促智慧城市
  6. DirectShow开发笔记与问题记录(2018.3.12更新)
  7. 第一篇:SLAM-Gmapping 代码阅读(源码详细注释)
  8. 【无标题】内部表和外部表的区别
  9. [字节跳动编程题]雀魂启动!
  10. 美国 纽约 纽约时间与北京时间24小时时差对照表