| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

全自动电热水壶的设计(包含原理图和程序)

文***享

贡献于2020-12-26

字数:19795


单片机控制电热水壶温度设计

中文摘

着微机测量控制技术迅速发展广泛应单片机核心温度采集控制系统研发应程度提高生产生活中温度控制水设计述种STC89C52单片机控制单元DS18B20温度传感器温度控制系统该控制系统实时存储相关温度数记录前时间系统设计相关硬件电路相关应程序硬件电路包括STC89C52单片机系统测温电路实时时钟电路LCD液晶显示电路通讯模块电路等系统程序包括程序读出温度子程序计算温度子程序键处理程序LCD显示程序数存储程序等

[关键词] STC89C52单片机DS18B20显示电路















目 录

引言 4
()课题研究背景 4
(二)课题研究目意义 5
二硬件电路设计 5
()系统设计框架 5
(二)单片机系统电路 6
(三)单片机选型 6
1STC89C52单片机简介 6
2STC89C52单片机时序 7
3STC89C52单片机引脚介绍 7
(四)温度传感器电路 9
(五)系统电源电路设计 10
(六)LCD显示电路 11
(七)串口通讯电路 12
(八)键接口电路 13
(九)DS1302时钟电路 13
(十)存储器接口电路 13
三系统软件设计 14
()计算温度子程序 15
(二)键处理子程序 15
(三)计算温度子程序 16
(四)显示数刷新子程序 17
四结束语 18
参考文献 19
致谢 20
附件1:系统原理图 21
附件2:系统相关程序 22
DS18B20底层驱动程序 22
二DS1302时钟底层驱动程序 27
三数存储底层驱动程序 33







引言
()课题研究背景
工业控制计算机重应领域计算机控制系统正适应领域需发展起门专业技术研究计算机技术通信息技术动控制理应工业生产程设计出需计算机控制系统着微机测量控制技术迅速发展广泛应单片机核心温度采集控制系统研发应程度提高生产生活中温度控制水设计基单片机STC89C52温度控制系统设计通次课程实践更加明确单片机广泛途方法工作原理
(二)课题研究目意义
着社会发展温度测量控制变越越重文采单片机STC89C52设计温度实时测量控制系统单片机STC89C52 够根温度传感器DS18B20 采集温度液晶屏实时显示通控制温度控制设定范围温度数均通液晶显示器LCD显示出系统根时钟存储相关数
通该课程学计算机控制系统全面解掌握常规控制算法方法掌握简单微型计算机应系统软硬设计方法进步锻炼学微型计算机应方面实际工作力
二硬件电路设计
()系统设计框架
课题设计种STC89C52单片机控制单元DS18B20温度传感器温度控制系统该控制系统实时存储相关温度数记录前时间包括:电源模块温度采集模块键处理模块实时时钟模块数存储模块LCD显示模块通讯模块单片机系统

图1 系统设计框架
(二)单片机系统电路
课题设计温度控制系统设计中控制核心STC89C52单片机该单片机51系列增强型8位单片机32IO口片含4K FLASH工艺程序存储器便电方式瞬间擦改写价格便宜外部晶振12MHz指令周期1μS该单片机完全完成设计务系统包括:复位电路震荡电路存储器选择模式(EA脚高低电选择)电路图2示:

图2 单片机系统
(三)单片机选型
课题设计温度控制系统控制芯片选型STC89C52单片机特点:
1STC89C52单片机简介
目前51系列单片机工业检测领域中广泛应许单片机应领域中配接种类型语音接口构成具合成语音输出力综合应系统增强机话功STC89C52单片机深圳宏晶科技限公司生产种单片机块芯片集成微型计算机组成部分单片机包括:8位微型处理器CPU512K片数存储器RAM4K片程序存储器四8位行IO接口P0P3接口输入输出两定时器记数器五中断源中断控制系统全双工UART串行IO口片振荡器时钟产生电路石英晶体微调电容需外接高允许振荡频率12MHZ部分通部总线相连接
2STC89C52单片机时序
STC89C52单片机执器周期6状态(s1—s6)组成状态持续2震荡周期分P1P2两节拍样机器周期12振荡周期组成采12MHz晶体振荡器机器周期1us状态周期1/6us数情况算术逻辑操作发生N期间部寄存器寄存器传输发生P2期间单周期指令指令操作码读指令寄存器时S1P2开始执行指令果双字节指令机器周期s4读第二字节单字节指令51期间进行读读入字节操作码忽略程序计数加1加结束时完成指令操作数STC89C52指令周期1—2机器周期法法指令需两机器周期指令需4机器周期 双字节单机器指令通常机器周期程序存储器中读两字节Movx指令例外Movx指令访问外部数存储器单字节双机器周期指令执行Movx指令期间外部数存储器访问选通时跳两次取指操作
3STC89C52单片机引脚介绍
STC89C52单片机40引脚中2专电源引脚2外接晶振引脚4控制电源复引脚32条输入输出IO引脚
面引脚功分4部分叙述引脚功
(1)电源引脚VccVss
Vcc(40脚):接+5V电源正端
Vss(20脚):接+5V电源正端
(2)外接晶振引脚XTAL1XTAL2
XTAL1(19脚):接外部石英晶体端单片机部反相放器输入端放器构成采外部时钟时HMOS单片机该引脚接CHOMS单片机该引脚作外部振荡信号输入端
XTAL2(18脚):接外部晶体端单片机部接片振荡器反相放器输出端采外部时钟时HMOS单片机该引脚作外部振荡信号输入端CHMOS芯片该引脚悬空接
(3)控制信号电源复引脚
控制信号电源复引脚RSTVPDALEPPSENEAVPP等4种形式
(A).RSTVPD(9脚):RSTRESETVPD备电源该引脚单片机电复位掉电保护端单片机振荡器工作时该引脚出现持续两机器周期高电实现复位操作单片机复位初始状态
VCC发生障降低低电规定值掉电时该引脚接备电源VPD(+5V)部RAM供电保证RAM中数丢失
(B).ALE P (30脚):访问外部存储器时ALE(允许址锁存信号)机器周期两次信号输出锁存出现P0口低
(C).PSEN(29脚)片外程序存储器读选通输出端低电效外部程序存储器读取指令常数期间机器周期PESN两次效通数总线口读回指令常数访问外部数存储器期间PESN信号出现
(D).EAVpp(31脚):EA访问外部程序储器控制信号低电效EA端保持高电时单片机访问片程序存储器4KB(MS—52子系列8KB)超出该范围时动转执行外部程序存储器程序EA端保持低电时片程序存储器均访问外部程序存储器片含EPROM单片机EPROM编程期间该引脚接21V编程电源Vpp
(4)输入输出(IO)引脚P0口P1口P2口P3口
(A)P0口(39脚~22脚):P00~P07统称P0口接外部存储器扩展IO接口时作准双8位输入输出接口接外部程序存储器扩展IO口时P0口址数分时复口分时提供8位双数总线
片含EPROM单片机EPROM编程时P0口输入指令字节检验程序时输出指令字节
(B)P1口(1脚~8脚):P10~P17统称P1口作准双IO接口MCS—52子系列单片机P10P11第2功:P10口作定时器计数器2计数脉输入端T2P11作定时器计数器2外部控制端T2EXEPROM编程进行程序校验时P0口接收输入低8位址
(C)P2口(21脚~28脚):P20~P27统称P2口般作准双IO接口接外部程序存储器扩展IO接口寻址范围超256字节时P2口高8位址总线送出高8位址EPROM编程进行程序校验时P2口接收输入8位址
(D)P3口(10脚~17脚):P30~P37统称P3口双功口作般准双IO接口1位第2功P3口条引脚均独立定义第1功输入输出第2功P3口第2功见表
表1 单片机P30脚含义
引脚
第2功
P30
RXD(串行口输入端0)
P31
TXD(串行口输出端)
P32
INT0(部中断0请求输入端低电效)
P33
INT1(中断1请求输入端低电效)
P34
T0(时器计数器0计数脉端)
P35
T1(时器计数器1数脉端)
P36
WR(部数存储器写选通信号输出端低电效)
P37
RD(部数存储器读选通信号输出端低电效)

综述MCS—51系列单片机引脚作纳两点:
1)单片机功引脚数少许引脚具第2功
2)单片机外呈3总线形式P2P0口组成16位址总线P0口分时复作数总线
(四)温度传感器电路
采线制数字温度传感器DS18B20作课题温度传感器传感器输出信号进47K拉电阻直接接单片机P10引脚
DS18B20温度传感器美国达拉斯(DALLAS)半导体公司推出应单总线技术数字温度传感器该器件半导体温敏器件AD转换器存储器等做集成电路芯片设计中温度传感器选择单线数字器件DS18B20方面较考虑决定方面原:
(1)系统特性:测温范围55℃~+125℃ 测温精度士05℃温度转换精度9~12位变够直接温度转换值16位二进制数码方式串行输出12位精度转换时间750ms通数线供电具超低功耗工作方式
(2)系统成:计算机技术微电子技术发展新型规模集成电路功越越强体积越越价格越越低支DS18B20体积普通三极相差价格十元民币左右
(3)系统复杂度:DS18B20单总线器件微处理器接口时仅需占1IO端口条总线挂接十DS18B20测温时需外部元件模拟传感器相减少接线数量降低系统复杂度减少工程施工量
(4)系统调试维护:引线减少系统接口简化系统调试带方便时DS18B20全数字元器件障率低抗干扰性强减少系统日常维护工作
DS18B20温度传感器三根外引线:单线数传输总线端口DQ 外供电源线VDD线GNDDS18B20两种供电方式:种数线供电方式时VDD接通部电容空闲时数线获取量完成温度转换相应完成温度转换时间较长种情况单片机IO口完成DS18B20总线拉种外部供电方式(VDD接+5V)相应完成温度测量时间较短
设计中采外部供电方式实现DS18B20传感器单片机连接接口电路图4示

图4 温度传感器接口
(五)系统电源电路设计
系统采电源稳压芯片LM2596该开关电压调节器降压型电源理单片集成电路够输出3A驱动电流输入电压+5v输入电压+24v时具线性负载调节特性
该器件部集成频率补偿固定频率发生器开关频率150KHz低频开关调节器相较更规格滤波元件
该器件特点:特定输入电压输出负载条件输出电压误差保证±4范围振荡频率误差±15范围仅80μA机电流实现外部断电具保护电路(两级降频限流保护异常情况断电温完全保护电路)
该温度控制系统中电源电路设计图10示

图5 系统电源模块
(六)LCD显示电路
课题设计温度控制系统采液晶屏128*64作显示模块接口原理图图6示:

图6 液晶显示接口电路
(七)串口通讯电路
课题设计通讯采常见串口通讯协议转换芯片采MAX232A接口原理图图7示:

图6 串口通讯接口电路
(八)键接口电路
课题设计采键盘模块接口原理图图8示:

图8 键盘模块电路
(九)DS1302时钟电路
课题设计时钟采时钟芯片DS1302接口原理图图9示:

图9 时钟接口电路
(十)存储器接口电路
课题设计存储器采AT24C256接口原理图图十示:

图10 存储器电路
三系统软件设计
系统软件采C语言单片机进行变成实现项功程序模块进行初始化调读温度处理温度显示键盘等模块循环查询方式显示控制温度程序功负责温度实时显示读出处理DS18B20测量前温度值负责调子程序程序流程图10系统程序流程图

开始
初始化



启动DB18B20
读温度
计算温度
LCD显示


图10系统程序流程图
()计算温度子程序
读出温度子程序功包括初始化判断DS18B20否存存进行系列读操作存返回程序流程图图11示


图11 读温度流程图
(二)键处理子程序
键处理子程序负责参数设置程序循环次键进行扫描判断否输入键进行系列键输入操作程序流程框图图12示


图12 温度转换流程图
(三)计算温度子程序
计算温度子程序RAM中读取值进行BCD码转换运算进行温度值正负判定程序流程图图13示


开始
温度零
温度值取补码置—标志
计算数位温度BCD值
计算整数位温度BCD值
结束
置+标志
N
Y

















图13 计算温度子程序
(四)显示数刷新子程序
显示数刷新子程序显示缓器中显示数进行刷新操作高显示位0时符号显示位移入位程序流程图图14








温度数移入显示寄存器
十位数0?
百位数0?
十位数显示符号百位数显示
百位数显示数(显示符号)
结束
N
N
Y
Y













图14 数刷新子程序
四结束语
通次毕业文课题设计学会样学书知识应实践中学会思考整控制系统软硬件设计实践程中遇困难解决问题程中学会团队合作精神样发现问题分析问题进解决问题次课程设计仅增强学专业课兴趣勇气信心更重学指明方









参考文献
[1] 李广弟朱月秀王秀山单片机基础北京航空航天学出版社2001(07)
[2] 蔡美琴张民等MCS51系列单片机系统应高等教育出版社2004(06)
[3] 张毅刚等MCS51单片机应设计[M]哈尔滨工业学出版社1997
[4] 刘瑞星胡健等Protel DXP 实教程机械工业出版社2003(04)
[5] 海生 计算机控制技术 机械工业出版社 2007(05)
[6] 谭浩强 C程序设计 清华学出版社
[7] 康华光 电子技术基础 模拟部分 高等教育出版社 1998(08)
[8] 余锡存 单片机原理接口技术 西安电子科技学出版社2003



















致谢
文指导老师密切关心悉心指导完成老师课题开题期间文写作程中予许指导导师总认真负责丝苟工作态度阅读修改文章中足方优良作风严谨治学态度深深影响着恩师致真挚感谢崇高敬意
时感谢学特室友正年里陪起成长起学天成绩时学生活中予私关怀帮助表示诚挚谢意



















附件1:系统原理图















附件2:系统相关程序
DS18B20底层驱动程序
延时 N ms
DS1820引脚定义
sbit TMDAT P1^0

void DS1820_DelayCount (unsigned char Coun)
{
data unsigned char Count
CountCoun
while(Count>0) Count
CountCoun
while(Count>0) Count
}
复位DS18B20
void DS1820_Reset(void)
{
TMDAT0
DS1820_DelayCount(412)

TMDAT1
DS1820_DelayCount(16)
}
等DS18B20应答
unsigned char DS1820_Answer(void)
{
data unsigned int i
data unsigned char j
i0xc000
while(TMDAT)
{
i
if (i0)
return(aban_return)
}

i0xffff
j3
while(~TMDAT)
{
i
if (i0)
if(j0)
return(aban_return)
else
{
j
i0xffff
}
}
DS1820_DelayCount(16)
return(done_return)
}
等DS18B20应答
读取位
bit DS1820_Readbit(void)
{
data int i0
bit dat
TMDAT0i++i++i++i++
TMDAT1i++i++i++i++i++i++i++i++
dat TMDAT
DS1820_DelayCount(8)
DS1820_DelayCount(32)
return dat
}
读取字节
unsigned char DS1820_Readbyte(void)
{
data unsigned char ijdat0

for(i1i<8i++)
{
jDS1820_Readbit()
dat(j<<7)|(dat>>1)
}
return dat
}
写字节
void DS1820_Writebyte(unsigned char dat)
{
data signed char i0
data unsigned char j
bit testb

for(j1j<8j++)
{
testbdat & 0x01
dat dat>>1
if(testb)
{
TMDAT0
i++i++i++i++i++i++i++i++
TMDAT1
DS1820_DelayCount(8)
DS1820_DelayCount(32)
}
else
{
TMDAT0
DS1820_DelayCount(8)
DS1820_DelayCount(32)
TMDAT1
i++i++i++i++i++i++i++i++
}
}
}
读操作开始
unsigned char DS1820_StartTem(void)
{
EA0
DS1820_Reset()

if(DS1820_Answer()aban_return)
{
EAEa
return(aban_return)
}
DS1820_Delayms(1)
DS1820_Delayms(4)
DS1820_Writebyte(0xcc)
DS1820_Writebyte(0x55)
for(i0i<8i++)
DS1820_Writebyte(DS1820_temp[i])
DS1820_Writebyte(0x44)
EAEa
return(done_return)
}
读传感器
int DS1820_ReadTem(void)
{
data unsigned char ab
data int y3
data float y4
data unsigned char i
EA0

DS1820_Reset()

if(DS1820_Answer()aban_return)
{
EAEa
return(0xffff)
}
DS1820_Delayms(4)
DS1820_Writebyte(0xcc) 跳匹配传感器

DS1820_Writebyte(0x55) 匹配传感器
for(i0i<8i++)
DS1820_Writebyte(run_infsystem_indexDS1820_temp[i])

DS1820_Writebyte(0xbe) 读取温度
for(i0i<9i++)
{
run_infsystem_indexDS1820_temp[i]DS1820_Readbyte()

}
if(CRC(9)0)
{
EA1
return(0xffff)
}
计算CRC
a run_infsystem_indexDS1820_temp[0]
b run_infsystem_indexDS1820_temp[1]
DS1820_Reset()

y3 (b<< 8)|a
y4y3
y4(y4*25)4
EA1
return((int)(y4))

}
二DS1302时钟底层驱动程序
DS1302引脚定义
sbit rtc_scP3^4
sbit rtc_ioP3^5
sbit rst_1302P3^6
bdata unsigned char temp
sbit temp_0 temp^0
sbit temp_7 temp^7

**************************************************************
DS1302驱动程序开始
**************************************************************
功 DS1302写入1Byte数
void v_RTInputByte(unsigned char ucDa)
{
unsigned char i
temp ucDa
for(i8 i>0 i)
{
rtc_io temp_0 *相汇编中 RRC *
rtc_sc 1
rtc_sc 0
temp temp >> 1
}
}
功 DS1302读取1Byte数
unsigned char uc_RTOutputByte(void)
{
unsigned char i
rtc_io1
for(i8 i>0 i)
{
temp temp >>1 *相汇编中 RRC *
temp_7 rtc_io

rtc_sc 1
rtc_sc 0
}
return(temp)
}

功 DS1302写入数
void write1302(unsigned char ucAddrunsigned char ucDa)
{
bit ea
eaEA
EA0
rtc_rs_port&(~rtc_rs_bit)
rtc_sc 0
rtc_rs_port|rtc_rs_bit
v_RTInputByte(ucAddr) * 址命令 *
v_RTInputByte(ucDa) * 写1Byte数*
rtc_sc 1
rtc_rs_port&(~rtc_rs_bit)
EA ea
}
功 读取DS1302某址数
unsigned char read1302(unsigned char ucAddr)
{
unsigned char ucDa
bit ea
eaEA
EA0
rtc_rs_port&(~rtc_rs_bit)
rtc_sc 0
rtc_rs_port|rtc_rs_bit
v_RTInputByte(ucAddr) * 址命令 *
ucDa uc_RTOutputByte() * 读1Byte数 *
rtc_sc 1
rtc_rs_port&(~rtc_rs_bit)
EA ea
return(ucDa)
}

功 设置初始时间
void Set1302(pTime_S time_temp)
{
unsigned char i 0x80
write1302(0x8e0x00) * 控制命令WP0写操作*
write1302(itime_temp>sec)
i +2
write1302(itime_temp>min)
i +2
write1302(itime_temp>hou)
i +2
write1302(itime_temp>day)
i +2
write1302(itime_temp>mon)
i +2
write1302(i0x02)
i +2
write1302(itime_temp>yea)
i +2

write1302(0x8e0x80) * 控制命令WP1写保护*
}

功 读取DS1302前时间
void get1302(void)
{
unsigned char itime_bcd_temp[6]
unsigned char ucAddr 0x81
for (i0i<7i++)
{
time_bcd_temp[i] read1302(ucAddr)*格式 秒 分 时 日 月
星期 年 *
ucAddr + 2

}
sectime_bcd_temp[0]
mintime_bcd_temp[1]
houtime_bcd_temp[2]
daytime_bcd_temp[3]
montime_bcd_temp[4]
yeatime_bcd_temp[6]
}

连续6字节读出程序
void ds1302_read(unsigned char *ptrunsigned char addr)
{

unsigned char i

addraddr*2+0x0c1
for(i0i<6i++)
{
*(ptr+i)read1302(addr)
addr+2
}
}

连续6字节写入程序
void ds1302_write(unsigned char *ptrunsigned char addr)
{
unsigned char i

addraddr*2+0x0c0
write1302(0x8e0x00) 写保护置低(关闭)
for(i0i<6i++)
{
write1302(addr*(ptr+i))
addr+2
}
write1302(0x8e0x80) 写保护置高(开)
}

void Start1302(void)
{
unsigned char temp
bit ea
eaEA
EA0
tempread1302(0x81)
temp&0x7f
write1302(0x8e0x00) * 控制命令WP0写操作*
write1302(0x80temp)
write1302(0x900)
write1302(0x8e0x80) * 控制命令WP1写保护*
EAea
}
DS1302驱动程序结束
三数存储底层驱动程序
ATC256引脚定义
sbit epr_sdP3^3
sbit epr_scP3^2
bdata unsigned char temp1
sbit temp1_0 temp1^0
sbit temp1_7 temp1^7

存储器驱动程序开始
void noack(void)
{
epr_sd1
epr_sc1
epr_sc1
epr_sc1
epr_sc0
}
void ask()
{
unsigned char i0xff
epr_sd1
epr_sc1
epr_sc1
epr_sc1
do{
i
if(epr_sd0)
{
epr_sc0
i0
}
}while(i0)
epr_sd1
epr_sd1
epr_sd1
}

void stop()
{
epr_sd0
epr_sd0
epr_sd0
epr_sc1
epr_sc1
epr_sc1
epr_sd1
epr_sd1
epr_sd1
epr_sd1
}
24c256 start
void start()
{
epr_sc1
epr_sd1
epr_sd1
epr_sd0
epr_sd0
epr_sc0
}

void wrby(unsigned char x)

{ unsigned char i
epr_sc0
temp1x
for(i0i<8i++) 高位开始传送数
{
epr_sdtemp1_7
temp1temp1<<1 左移位
epr_sc1
epr_sc1
epr_sc1
epr_sc1
epr_sc0
}
}
24c256 rdby
unsigned char rdby() 高位开始读出数
{
unsigned char i
epr_sd1
epr_sd1
epr_sd1
for(i0i<8i++)
{

epr_sc1
epr_sc1
temp1temp1<<1
temp1_0epr_sd
epr_sc0
epr_sc0
epr_sc0
}
return(temp1)
}

24c256 waddr
void waddr()
{
start()
wrby(0xa0)
ask()}

24c256 raddr
unsigned char raddr()
{
start()
wrby(0xa1)
ask()
temp1rdby()
noack()
stop()
return(temp1)
}

void w16addr(unsigned int x)
{
union {
unsigned int int_type
unsigned char char_type[1]
}u_int_char

unsigned mn

u_int_charint_typex x高位赋m低位赋n
mu_int_charchar_type[0]
nu_int_charchar_type[1]
wrby(m )
ask()
wrby(n )
ask()
}

延时
void d5ms()
{
unsigned char a b
for (a0a<15a++)
{
for (b0b<0x7fb++)
{}
}
}
24c256 读出字节
unsigned char epr_read(unsigned int x)
{
bit ea
eaEA
EA0 关中断
EPR_WEN
d5ms()
waddr()
w16addr(x)
temp1raddr()
EAea开中断
return(temp1)
}
24c256 写入字节
void epr_write(unsigned int funsigned char x)
{
bit ea
eaEA
EA0 关中断
d5ms()
waddr()
w16addr(f)
wrby(x)
ask()
stop()
d5ms()
EAea 开中断
}
存储器驱动程序结束
汇编部分:
TEMPERATURE_L DATA 31H DS18B20低8位Buffer
TEMPERATURE_H DATA 30H DS18B20高8位Buffer
TEMPERATURE_HC DATA 32H 计算百位十位BCD码存放
BUFFER
TEMPERATURE_LC DATA 33H 计算位数位BCD码存放
TEMPERATURE_ZH DATA 34H 计算十位位HEX码存放BUFFER
DIS_BUF_X DATA 35H 数码数位Buffer
DIS_BUF_G DATA 36H 数码位Buffer
DIS_BUF_S DATA 37H 数码十位Buffer
DIS_BUF_B DATA 38H 数码百位Buffer
KEY_BUF_G DATA 39H 键盘输入位值
KEY_BUF_S DATA 49H 键盘输入十位值
KEY_BUF_B DATA 41H 键盘输入百位值
K_UP EQU P11 调钮
K_DOWN EQU P12 调钮
K_ENTER EQU P10 输入数确认钮
P_DS18B20 EQU P30 读取DS18B20输入端口
P_SWITCH EQU P31 控硅控制
FLAG EQU 20H0 标志位确定否存DS18B20
ENTER_FLAG EQU 20H1 键盘输入标志位
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN MOV SP#60H 初始化
MOV KEY_BUF_G#00H KEY_BUF户输入先赋值初始化
MOV KEY_BUF_S#00H
MOV KEY_BUF_B#00H

NEXT
LCALL READ_TEMP 调读温度子程序
JB FLAGNORMAL 判断否DS18B20存
CALL ERR 存时显示错误信息
AJMP NEXT
NORMAL LCALL DATA_DEA 处理DS18B20数
LCALL SET_DIS_BUF 赋值DIS_BUF_XGSB
LCALL DISPLAY 调数码显示子程序
LCALL SCAN_KEY 扫描键盘
LCALL SWITCH 处理控硅
AJMP NEXT

程序名称ERR
功程序出错处理显示四88888
入口参数
出口参数DIS_BUF_XDIS_BUF_G DIS_BUF_S DIS_BUF_B
ERR MOV DIS_BUF_X#08H 果没找DS18B20显示错误错误
显示888
MOV DIS_BUF_G#08H
MOV DIS_BUF_S#08H
MOV DIS_BUF_B#08H
LCALL DISPLAY
RET
程序名称DATA_DEAL
功处理采集数
入口参数TEMPERATURE_L
出口参数DIS_BUF_G DIS_BUF_S DIS_BUF_
DATA_DEAL
MOV ATEMPERATURE_H 判温度否零
ANL A#80H
JZ TEMPC1 A0说明正数果负数
低8进行补码处理
CLR C
MOV ATEMPERATURE_L 二进制数求补(双字节)
CPL A 取反加1
ADD A#01H
MOV TEMPERATURE_LA
MOV ATEMPERATURE_H
CPL A
ADDC A#00H
MOV TEMPERATURE_HA 写回TEMPERATURE_H
MOV TEMPERATURE_HC#0BH
SJMP TEMPC11
TEMPC1 MOV TEMPERATURE_HC#0AH
TEMPC11 MOV ATEMPERATURE_HC
SWAP A
MOV TEMPERATURE_HCA
MOV ATEMPERATURE_L
ANL A#0FH
MOV DPTR#TEMPDOTTAB
MOVC A@A+DPTR 查表
MOV TEMPERATURE_LCA TEMPERATURE_LC LOW数部分 BCD
MOV DIS_BUF_XA 数位BCD码送入显示buffer中
MOV ATEMPERATURE_L 整数部分
ANL A#0F0H 位单数值
SWAP A SWAP位真正位
MOV TEMPERATURE_LA
MOV ATEMPERATURE_H
ANL A#0FH
SWAP A
ORL ATEMPERATURE_L
MOV TEMPERATURE_ZHA 组合值存入TEMPERATURE_ZH
LCALL HtoB 转换HEx值成BCD码
MOV TEMPERATURE_LA
ANL A#0F0H
SWAP A
ORL ATEMPERATURE_HC TEMPERATURE_HC LOW位 十位数
MOV TEMPERATURE_HCA
MOV ATEMPERATURE_L
ANL A#0FH
SWAP A
MOV R7A
MOV ATEMPERATURE_HC TEMPERATURE_HC HI 百位数 BCD
ANL A#0FH
ORL AR7
MOV TEMPERATURE_HCA

TEMPC12 RET 数部分码表
TEMPDOTTAB
DB 00H01H01H02H03H03H04H04H05H06H06H07H08H08H09H09H
00625>00H
00625*2 0125>01H
00625*3 01875>01H
00625*4 025>02H
00625*5 03125>03H
类推
程序名称HtoB
功十六进制转 BCD
入口参数A
出口参数R7
HtoB MOV B#064H 100
DIV AB a100
MOV R7A
MOV A#0AH
XCH AB
DIV AB
SWAP A
ORL AB
RET

程序名称INIT_TEMP
功初始化DS18B20确定DS18B20否存
入口参数
出口参数FLAG
INIT_TEMP
SETB P_DS18B20
NOP
CLR P_DS18B20 机发出延时537微秒复位低脉
MOV R0#6BH
MOV R1#04H
TSR1 DJNZ R0
MOV 40#6BH
DJNZ R1TSR1
SETB P_DS18B20 然拉高数线释放总线进入接受状态
NOP
NOP
NOP
MOV R0#32H
TSR2 JNB P_DS18B20TSR3 等DS18B20回应
DJNZ R0TSR2
LJMP TSR4 延时
TSR3 SETB FLAG 置标志位表示DS1820存
LJMP TSR5
TSR4 CLR FLAG 清标志位表示DS1820存
LJMP TSR7
TSR5 MOV R0#06BH
TSR6 DJNZ R0TSR6 时序求延时段时间
TSR7 SETB P_DS18B20
RET

程序名称READ_TEMP
功读取DS18B20数
入口参数TEMPERATURE_LTEMPERATURE_H
出口参数
READ_TEMP
SETB P_DS18B20
LCALL INIT_TEMP 先复位DS18B20
JB FLAGTSS2
RET 判断DS1820否存DS18B20存返回
TSS2 MOV A#0CCH 跳ROM匹配
LCALL WRITE_18B20
MOV A#44H 发出温度转换命令
LCALL WRITE_18B20
LCALL DISPLAY 等AD转换结束12位话750微秒
LCALL INIT_TEMP 准备读温度前先复位
MOV A#0CCH 跳ROM匹配
LCALL WRITE_18B20
MOV A#0BEH 发出读温度命令
LCALL WRITE_18B20
LCALL READ_18B20 读出温度数保存35H36H
RET
程序名称WRITE_18B20
功A保存数值写入DS1820中
入口参数A 寄存器
出口参数
WRITE_18B20
MOV R2#8 8位数串行通信
CLR C
WR1 CLR P_DS18B20
MOV R3#07
DJNZ R3
RRC A 循环右移
MOV P_DS18B20C
MOV R3#3CH
DJNZ R3 23*2 46微妙
SETB P_DS18B20
NOP
DJNZ R2WR1 A里面8位送8次
SETB P_DS18B20 释放总线
RET
程序名称READ_18B20
功读取18B20中数串行通信次读取循环8次读取
入口参数TEMPRATURE_L
出口参数
READ_18B20
MOV R4#4 温度高位低位DS18B20中读出
MOV R1#TEMPERATURE_L
RE00 MOV R2#8 数8位
RE01 CLR C
SETB P_DS18B20
NOP
NOP
CLR P_DS18B20
NOP
NOP
NOP
SETB P_DS18B20
MOV R3#09
RE10 DJNZ R3RE10
MOV CP_DS18B20
MOV R3#3CH
RE20 DJNZ R3RE20
RRC A
DJNZ R2RE01
MOV @R1A
DEC R1
DJNZ R4RE00
RET
程序名称SCAN_KEY
功扫描键盘
入口参数DIS_BUF_GDIS_BUF_SDIS_BUF_B
出口参数KEY_BUF_GKEY_BUF_SkEY_BUF_B
SCAN_KEY
JB K_ENTERQUIT 果Enter键入开始键盘输入
LCALL K_DELAY
JB K_ENTERQUIT
CLR ENTER_FLAG 次进赋值输入标志设置0
MOV KEY_BUF_GDIS_BUF_G 前温度赋值KEY_BUF
MOV KEY_BUF_SDIS_BUF_S
MOV KEY_BUF_BDIS_BUF_B
K_LOOP
JB ENTER_FLAGQUIT 果输入完成ENTER_FLAG1退出键盘程

JB K_ENTERKUP
CALL PRO_ENTER
KUP JB K_UPKDOWN
CALL PRO_UP
KDOWN JB K_DOWNLOOPA
CALL PRO_DOWN
LOOPA LCALL DISPLAY
SJMP K_LOOP
QUIT RET

程序名称PRO_ENTER
功确认键盘输入退出键盘输入
入口参数ENTER_FLAG
出口参数ENTER_FLAG
PRO_ENTER
CALL K_DELAY
JB K_ENTERK_LOOP 钮抖动处理
SETB E NTER_FLAG
CALL K_DELAY
RET

程序名称PRO_UP
功数值调处理
入口参数KEY_BUF_GKEY_BUF_SKEY_BUF_B
出口参数DIS_BUF_GDIS_BUF_SDIS_BUF_B
PRO_UP
CALL K_DELAY
JB K_UPK_LOOP 钮抖动处理
INC KEY_BUF_G 位增
MOV AKEY_BUF_G
CJNE A#0AHUPNEXT 位增加10回0
MOV KEY_BUF_G#00H
INC KEY_BUF_S 十位加
MOV AKEY_BUF_S
CJNE A#0AHUPNEXT 十位超99溢出
MOV R0#200
ERROR1 LCALL ERR 出错显示8888
DJNZ R0ERROR1
DEC KEY_BUF_S 退回99
MOV KEY_BUF_G#09H
UPNEXT
MOV DIS_BUF_GKEY_BUF_G
MOV DIS_BUF_SKEY_BUF_S
MOV DIS_BUF_BKEY_BUF_B
CALL K_DELAY
RET
程序名称PRO_DOWN
功数值调处理
入口参数KEY_BUF_GKEY_BUF_SKEY_BUF_B
出口参数DIS_BUF_GDIS_BUF_SDIS_BUF_B
PRO_DOWN
CALL K_DELAY
JB K_DOWNK_LOOP 钮抖动处理
DEC KEY_BUF_G 位减
MOV AKEY_BUF_G
CJNE A#0FFHDOWNNEXT 位减0回9
MOV KEY_BUF_G#09H
DEC KEY_BUF_S 十位减
MOV AKEY_BUF_S
CJNE A#0FFHDOWNNEXT十位低0溢出
MOV R0#200
ERROR2 LCALL ERR 出错显示8888
DJNZ R0ERROR2
INC KEY_BUF_S 退回00
MOV KEY_BUF_G#00H
DOWNNEXT
MOV DIS_BUF_GKEY_BUF_G 增加完成赋值退出然DISPLAY
显示出
MOV DIS_BUF_SKEY_BUF_S
MOV DIS_BUF_BKEY_BUF_B
CALL K_DELAY
RET
K_DELAY 键盘抖动延时子程序
MOV R6#250
DL20MS_1
MOV R7#200
DJNZ R7
DJNZ R6 DL20MS_1
RET
控硅控制
SWITCH
MOV AKEY_BUF_G 三Buffer0话说明没输入数值直
接退出
JNZ SNEXT
MOV AKEY_BUF_S
JNZ SNEXT
MOV AKEY_BUF_B
JZ SQUIT
SNEXT CALL SET_DIS_BUF
MOV AKEY_BUF_S
SUBB ADIS_BUF_S
JC COOL
JNZ HOT 十位果相等继续较位
MOV AKEY_BUF_G
SUBB ADIS_BUF_G
JC COOL
HOT CLR P_SWITCH P_SWITCH0说明前温度设定温度升温
接电阻丝
SETB P13 报警
SJMP SQUIT
COOL SETB P_SWITCH P_SWITCH 1说明前温度设定温度
SETB P13 报警
SQUIT RET

程序名称SET_DIS_BUF
功赋值DIS_BUF_G DIS_BUF_S DIS_BUF_B
入口参数TEMPERATURE_LCTEMPERATURE_HC
出口参数DIS_BUF_G DIS_BUF_S DIS_BUF_B

SET_DIS_BUF
MOV ATEMPERATURE_LC
ANL A#0FH
MOV DIS_BUF_XA 数位
MOV ATEMPERATURE_LC
SWAP A
ANL A#0FH
MOV DIS_BUF_GA 位
MOV ATEMPERATURE_HC
ANL A#0FH
MOV DIS_BUF_SA 十位
MOV ATEMPERATURE_HC
SWAP A
ANL A#0FH
MOV DIS_BUF_BA 百位
MOV ATEMPERATURE_HC
ANL A#0F0H
CJNE A#010HNEXT0
SJMP NEXT1

NEXT0 MOV ATEMPERATURE_HC
ANL A#0FH
JNZ NEXT1 十位数0
MOV ATEMPERATURE_HC
SWAP A
ANL A#0FH
MOV 73H#0AH 符号位显示
MOV 72HA 十位数显示符号
NEXT1 RET
程序名称DISPLAY
功显示数数码中
入口参数DIS_BUF_G DIS_BUF_S DIS_BUF_B
出口参数
DISPLAY
MOV DPTR#DISTAB
MOV R3#0FEH
MOV R1#DIS_BUF_B
DPLOP MOV A@R1
MOVC A@A+DPTR
MOV P2R3
MOV P0A
CJNE R3#0FBHDPNEXT
CLR P07
DPNEXT MOV AR3
RL A
MOV R3A
DEC R1
CALL DS1M
CJNE R3#0EFHDPLOP
MOV P0#0FFH 次显示结束P0口复位
MOV P2#0FFH P2口复位
RET
DS1M MOV R7#0FFH
DJNZ R7
RET
数码TAB
DISTAB
DB 0C0H 0
DB 0F9H 1
DB 0A4H 2
DB 0B0H 3
DB 099H 4
DB 092H 5
DB 082H 6
DB 0F8H 7
DB 080H 8
DB 090H 9
DB 0FFH NONE
END

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

全自动车辆消毒通道设计方案

全自动车辆消毒通道**  根据贵地的环境及气候特点,现推荐以下两种型号车辆消毒通道供参考。  1、      全自动消毒通道型号推荐   · 1. 1. 凯撒6000强力抗风型 1)      产品介绍 运用高科技机电一体化自控原理,可实现无人操作全自动化消毒,喷射范围广,射程远,静风条件≥40米,-20℃下可正常工作,保证雾团完整,消毒的彻底。 2)      适用范围

k***h 11年前 上传10505   0

基于原理图的数字跑表设计课程设计

XX大学设计报告课程名称: 基于FPGA的现代数字系统设计 设计名称: 基于原理图的数字跑表设计 姓 名: 学 号: 班 级: 指导教师:

文***享 1年前 上传328   0

计算机程序设计和软件

软 件总的来说,软件就是指用以指挥计算机运行活动所使用的程序。有两类软件:应用软件和系统软件。程序员设计和编制应用软件来完成面向用户的某些应用,诸如收帐和工资系统等。系统软件更为通用,通常是独立于应用的。它支持基本的计算机功能以及所有的应用领域(而不是特殊的应用)。 系统软件 可以将系统软件从逻辑上分成主要的几类。下面我们对每一类作概括介绍。 1.编译程

q***f 12年前 上传563   0

《冷和热》习作程序设计表

《冷和热》习作程序设计表(word文档,打开后格式正常) 课 堂 名  称:  _  地席课          小组名称:_      果果班           时        间:__  40分钟          全组肌能程度:_                    教室¥地点:_        319            全组智力发展:_                推

笨***6 11年前 上传9818   0

基于单片机的音乐喷泉论文(含原理图、PCB图、程序)

咅乐喷泉控制器是咅乐喷泉的核心部分。在咅乐喷泉中,喷头的多姿造型和 缤纷的水下灯光都受喷泉控制器的控制。由于不同的喷泉对水泵和彩灯组数的要 求各不相同,因此可以设计一种简单、通用、组数可灵活扩充的喷泉控制器。木 喷泉控制器采用全数字集成电路设计,可以灵活改变水泵和彩灯的组数。

雅***韵 5年前 上传1844   0

IATF16949程序文件34设计和开发控制程序

XXXX有限公司控制状态:设计和开发控制程序文件编号:SJ/QP-034文件版本:B生效日期:发文编号:编制技术部审核XXX批准XXX设计开发方针:严谨创新持续改进1目的明确设计开发全过程的主要工作和内容,对设计开发的全过程进行控制,识别并预测设计开发中的问题和不足,事先加以预防和纠正,提高本公司设计开发产品的质量水平,确保产品质量满足合同或客户的要求。2 适用

文***享 4年前 上传621   0

基于PLC控制全自动洗衣机毕业设计论文

高等专科学校 毕业设计论文 论文题目:全自动洗衣机的控制设计系 部 自动控制系 专 业 电气自动化技术 班 级 电气自动化班 学生姓名 学 号 指导教师 2016年 X月 X日摘要本文描述了采

文***享 4年前 上传1774   0

入党程序和步骤

加入中国共产党是一件光荣的事,写过入党申请书的同志应该对入党程序有了一定的了解吧!以下是我整理的入党积极分子入党程序及步骤,与大家分享一下,供参考!

…***… 5年前 上传1814   0

图书馆程序设计程序设计综合课程设计报告

XX学院计算机科学与技术系信息管理与信息系统专业《程序设计综合课程设计》报告 (2010/2011学年 第一学期)学生姓名: 学生班级: 信息管理与信息系统学生学号: 指导教师: 2010年 月 日目 录课程设计的目的....................

文***品 2年前 上传564   0

设计和开发控制程序

中山桑芭丝服装有限公司 程 序 文 件 设计和开发控制程序 编号: 版号:01 生效日期: 拟制: 审核: 批准: 第1页 共3页 1. 主题内容和适用范围 对设计和开发的全过程进行控制,确保产品能满足顾客的需求和期望及有关法律、法规要求。 适用于本公司新产品的设计、开发全过程,包括引进

T***2 13年前 上传1509   0

TS16949设计和开发控制程序

1 目的 明确设计/开发全过程的主要工作和内容,对设计/开发全过程进行控制,确保设计/开发的产品和制造过程满足顾客的要求。2 范围 本程序适用于本公司所有汽车转向器的产品设计和开发,以及制造过程设计和开发。3 职责3.1 总经理任命多方论证小组并批准《产品设计开发计划》。3.2 多方论证小组参与特殊特性的开发确定和监视,FMEA、控制计划的制定。3.3 技术

文***品 4年前 上传594   0

Ping程序的设计与实现课程设计

 计算机网络课程设计报告设计名称 Ping程序的设计与实现 专业班级 同组人姓名 指导教师 成 绩 一、设计目的和要求1、实验目的 利用ICMP数据包、C语言实现

文***享 3年前 上传631   0

毕业设计论文全自动洗衣机的传动模块和PLC控制系统

洗衣机是目前每个家庭必备的生活家电,经济水平的提高与自动化控制技术发展全自动洗衣机逐步走进了每家每户。全自动洗衣机的传动模块是是洗衣机工作环节中一个非常重要电力能源转换枢纽,起着将电能转化为机械能关键作用。

爱***享 3年前 上传546   0

KPI设计实施程序

KPI实施程序 一、诊断 以往的绩效管理不够量化,难以调动员工的积极性。 二、建立业绩指标 1. 确定2006年公司战略目标:即:作为一个公司,我们应该完成什么?我们的任务是什么?例如:规模上翻一番,保持良好的社会形象。 2. 对公司战略目标进行关键成功要素分解,即:实现公司目标应关注的几个关键领域,工作中重点抓的几个方面工作。 例如:下图 3.关键成功要素目标

x***g 10年前 上传14572   0

《Python程序设计》题库

第一章 基础知识1、Python安装扩展库常用的是_______工具。(pip)2、Python标准库math中用来计算平方根的函数是__________。(sqrt)3、Python程序文件扩展名主要有__________和________两种,其中

王***朝 2年前 上传524   0

程序设计基础

程序设计基础 下面我们这一节我们概要向用户管理人员介绍面问过程的程序设计语言的原理。绝大多数生产程序是用诸如COBOL、BASIC这样的POL编制的。虽然用户管理人员通常没有机会去实际地从事这类编程序的工作,但是他(或者她)将经常与从事这些工作的人们相互联系。掌握程序设计的基础知识将使得这种相互联系更加有效,同时也使得管理人员能够理解查询语言的概念。 在POL中,一个指令

r***子 14年前 上传13423   0

工艺设计管理程序

1. 目的 為滿足客戶要求,規定對工藝設計過程進行有效控制,以確保設計輸出符合設計輸入。 2. 范圍 客戶提供產品生產實現所需工藝過程之設計。 3. 權責 3.1 營業部 負責尋找並接受新產品開發要求。 3.2 工程部 負責分析、研究新產品工藝設計和開發的可行性。 3.3 開發小組 負責評審新產品工藝設計和開發是否進行。

1***6 10年前 上传1870   0

组织设计程序

制度名 组织设计程序 电子文件编码 GLZD002 页码 1-1 第一条 设计原则的确定。根据企业的目标和特点,确定组织设计的方针、原则和主要参数。 第二条 职能分析和设计。确定管理职能及其结构,层层分解到各项管理业务和工作中,进行管理业务的总体设计。 第三条 结构框架的设计。设计各个管理层次、部门、岗位及其责任、权力。具体表现为确定企业的组织系统图。 第四条

q***6 9年前 上传9764   0

基于单片机的全自动洗衣机控制系统设计

 XX学院毕业论文题目:基于51单片机的全自动洗衣机控制系统设计专业:电气工程及其自动化 姓名:班级:电气班 学 号:指 导 老 师 : 摘要该系统是《基于单片机的全自动洗衣机控制系统设计》。系统采用AT89C51单片机作为核心控制芯片。并且辅以必要的外围器件和电路,通过I/O口输出控制电动机运行和停止,通过AT

文***品 5个月前 上传207   0

机械开题报告 设计题目:电梯控制系统的PLC原理图及梯形图设计

 机械开题报告  设计题目:电梯控制系统的PLC原理图及梯形图设计  电梯的国内外研究动向及意义  从1887年美国奥的斯公司制造出世界上第一台电梯,到中国最早的一部电梯在上海出现,电梯行业在中国迅速发展,由此电梯变成了高层宾馆、商店、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯也提出了更高的要求。  随着科技的进步

奋***行 4年前 上传721   0

基于DS18B20的温度显示及其报警控制系统(含完整原理图及C程序)毕业论文

 XX 大 学 毕 业 设 计( 论 文 ) 题目 基于单片机的数字温度计及其报警系统 作者 学院 物理学院 专业 电子信息科学与技术 学号 指导教师 二〇XX 年 X 月 X日 XX 大 学 毕业设计(论文)任务书 物理学 院 电子 系(教研室) 系(教研室)主任:

z***u 5年前 上传1720   0

计算器设计报告程序设计与课题设计

程序设计与课题设计计算器设计报告电信索引概要……………………………………………………………………………………3一.设计任务与目标…………………………………………………………………3 1.基本功能………………………………………………………………………3 2.附加功能………………………………………………………………………3二.方案设计与功

z***u 1年前 上传307   0

全自动录播教室装修推荐方案

全自动录播教室装修推荐方案一、 标准录播教室方案(高档方案)1、 顶棚设计顶棚使用矿棉吸音板吊顶。建议使用标准600*600规格的矿棉吸音板。其特点为:不燃性:防止火灾发生是现代公共建筑、高层建筑设计中的一个首要问题,矿棉吸音板是最理想的防火吊顶材料。隔热性:矿棉吸音板具有比其它吊顶材料优越的保温隔热性。吸音性:矿棉吸音板可以改善音质,创造寂静而舒适的环境。四周墙壁

文***品 5年前 上传971   0

计划书中包含的内容

计划书中包含的内容   第一章 总论 1.1 项目名称 1.2 可行性研究报告编写工作的承担单位及其资质 1.3 可行性研究报告工作的内容及范围 1.4 建设项目地址及建设期 1.5 建设内容与规模 1.6 投资预估 第二章 项目建设的依据和必要性 2.1 依据 2.2 项目的必要性 第三章 承办企业基本情况 3.1 企业简介 3.2 厂址状况 3.3 职工人员状况

明***好 11年前 上传9328   0

陶瓷电热水壶促销计划

XXX陶瓷电热水壶促销计划   一、促销前准备工作 促销地点:中山市假日广场(已经确定)负责人:XX 促销时间:2011年01月16日  星期日    上午9点至晚上9点(已经确定,如遇下雨延期进行)负责人:XX 促销口号:厂家促销,厂价销售 促销目的:将公司库存数量较少的机型以促销的形式销售出去,减轻公司仓库压力。争取在过节之前把所有的零碎存仓物品销售完。 促销物资: 1、产品

l***7 13年前 上传12979   0