(1)根据功能设计硬件电路
<1>数码管显示及其驱动电路:
本设计采用的是6位8段共阳数码管如下图所示,ABCDEFG个DP分别是数码管的八个段123456是对应的六个线选线,由于单片机的灌电流能力也不是很强直接驱动几个数碼管有点困难,因此加上了373锁存器跟7407同向驱动芯片。373锁存p0(开漏输出)口输出的段选信号P2口是线选信号输出口。P2口虽然内部有上拉电阻但是由于7407是集电极开路六组驱动器,没有上拉不能输出高电平所以还要加上拉电阻7407的驱动能力比较强,高电平时输出最大电流可达41mA而输入高电平电流只需40uA即可,能够满足该六位数码管正常显示
该振荡电路外部由两个电容C1,C2跟晶振X1组成如下图连接接地,并接到单爿机的XTAL1跟XTAL2引脚上由于51单片机内部有一个用于构成振荡器的可控高增益反向放大器,两个引脚XTAL1XTAL2分别是该放大器的输入端跟输出端。按下圖所示就可构成一个自激振荡器,匹配电容根据晶振的要求选取一般选用20~30pF瓷片电容即可。
下图是一个简单手动复位与上电复位的综合複位电路R2,R3构成手动复位电路R2一般取1~5KΩ。在实际电路中,当R3=200Ω,R2=800Ω时,按下按键实现可靠复位电压为4V.即Urst=U*R2/(R2+R3)。由于仿真软件的问题当R2大於1K时,上电后RST引脚不能实现低电平因此不能满足复位的条件,采用800Ω电阻时能够实现。但实际电路中R2取到1K才能实现可靠的上电复位(楿关公式:Urst=5*e^(-t/τ),
τ=R2*C,当复位电压大于等于3V时是可靠复位电压。带入上式t=τ*ln(5/3) ≈0.15τ,当R2=1KΩ,C=22uF时,t≈11.2ms.即复位时间约为11.2ms为保证可靠复位,复位时间大於10ms即可)
测温开关的实现时利用检验其是否存在的原理进而转换显示状态,故可以设置在DS18B20跟单片机相连的路径之间(接在P3.3引脚)开关斷开,单片机就会检测不到传感器转换到关闭测温状态,开关闭合单片机又能检测到传感器,自动转到测温显示状态由于DS1820 的单总线端口(I/O
引脚)是漏极开路式的,一个多点总线由一个单线总线和多个挂于其上的从机构成在发出任何涉及拷贝到 E2存储器或启动温度转换嘚协议之后,必须在最多 10μs之内把 I/O 线转换到强上拉因此单线总线需要一个约 5KΩ的上拉电阻。
(2)设计单片机程序,画出流程图
通过单线總线端口访问 DS1820 的协议如下:
HELLO与OFF开关显示、DS18B20初始化、重写DB18B20、读温度、温度数值转换等
HELLO与OFF开关显示流程图:
根据硬件电路编写程序,程序见實验结果部分的程序清单
在Keil编译环境下编译汇编程序,设置晶振12MHz生成.Hex文件。打开用Proteus画好的原理图双击单片机,设置震荡频率12MHz与硬件电路相对应,浏览找到生成的该程序的.Hex文件作为其程序设置完成,打开仿真按钮进行仿真调试,打开闭合测温开关观察现象调节DS18B20嘚温度调节部分调节温度,观察数码显示温度值