ds18b20温控报警c语言,51单片机DS18B20温度控制报警程序(可设置温控范围)
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温度控制报警程序(可设置温控范围)相关推荐
- 红外报警c语言,基于单片机的红外报警系统设计 (毕业论文).docx
基于单片机的红外报警系统设计 (毕业论文) 基于单片机的红外报警系统设计 摘要:随着社会经济的发展,人们生活水平的不断提高,与此同时对人生安全和财产安全提到了一个新的高度,盗窃.入室抢劫等刑事案件的多 ...
- 机械手编程用c语言,51单片机机械手控制C程序.doc
51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...
- 机械手 c语言,51单片机机械手控制C程序
51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...
- ADC0809检测报警c语言,51单片机ADC0809+AD590温度检测、报警程序
#include "reg52.h"//头文件 #include "intrins.h" #define uchar unsigned char//宏定义 #d ...
- 单片机热敏电阻测温度c语言,51单片机热敏电阻测温程序.doc
//本程序是通过热敏电阻测温度(30c-50c #include #include #include #define uchar unsigned char #define uint unsigned ...
- 延时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 ...
- 51单片机直流电机调速c语言,51单片机直流电机调速程序
#includereg52.h>本文引用地址:http://www.eepw.com.cn/article/170917.htm sbit KEY1 = P3^1; //定义调速按键 sbit ...
- 基于单片机的c语言倒计时程序,30秒倒计时c语言51单片机实现.doc
30秒倒计时c语言51单片机实现 原理图: 程序: #include #define uchar unsigned char #define uint unsigned int sbit dula=P ...
- S0011基于51单片机DS18B20温控风扇仿真设计
基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...
最新文章
- Flameshot:Linux 环境下的一个简洁但功能丰富的截图工具
- Python基础05-数据类型:列表list
- android方法中添加 N,Android N 新功能 - 添加快速设定
- 邮箱解决任务间资源共享问题
- 成功解决TypeError: slice indices must be integers or None or have an __index__ method
- 《易学C++(第2版)》——1.10 习题
- 【SICP练习】127 练习3.58
- leetcode1075. 项目员工 I(SQL)
- 怎样在virtualbox下WIN7共享XP的文件
- 多分类决策树 r语言_R语言——决策树模型的相关可视化
- Orale查询返回相似度基数个数
- JAVA JSP网上订餐系统JSP餐厅点餐系统源码JSP点餐系统JSP网上订餐系统JSP在线订餐系统
- 手机号电子邮箱怎么填写?
- 什么原因导致了儿童自闭症?跟父母养育有关吗?
- 【日常】纪录一个愚蠢的问题
- C# dll注入(指定进程注入指定dll)
- ble-mesh笔记整理(1) ble-mesh通信理解
- jdk8 list 反转_反转人生 莫锋颜月荷六朝金粉
- 程序员955不加班名单
- java下载本地excel文件
热门文章
- 无线对讲软交换调度服务器,应急指挥对讲调度SIP通信系统的功能介绍
- MySQL聚合查询实现多表查询,联合查询,合并查询
- 隐藏在Windows XP中的28个秘密武器(黑客防线)
- IEEE1588精密时钟(PTP网络时钟服务器)在数字化变电站时钟同步方面的应用
- 人脸识别还敢闯红灯?人工智能促智慧城市
- DirectShow开发笔记与问题记录(2018.3.12更新)
- 第一篇:SLAM-Gmapping 代码阅读(源码详细注释)
- 【无标题】内部表和外部表的区别
- [字节跳动编程题]雀魂启动!
- 美国 纽约 纽约时间与北京时间24小时时差对照表