资料下载链接(包含源代码)
链接:https://pan.baidu.com/s/1TFlFqV93jU00CDDDEN-HvA
提取码:rezp
需求分析
手持式的;按下按钮开始测量;使用液晶屏;
资料准备
1. stm8s固件库 2. stm8s芯片手册 3. DS18B20温度传感器 4. 段式液晶屏(KHL030802A) 5. IAR for STM8 V8.09
硬件设计
原理图设计
1. 先查看各种芯片的数据手册确定其电气参数(额定电流/电压、参考电路)
stm8s芯片电气参数:
stm8s003f3芯片工作电压、时钟等。此芯片有内部时钟,所以为了简化电路可以不接外部晶振
然后查看其他电气参数确定引脚驱动电压/电流为后续设置电路做准备,从数据手册中可以看到芯片最大的输出电流为20mA
段式液晶屏(KHL030802A):驱动电压5V,电流手册中没有提到。所以不需要太关心,保证电压即可。电压值可以从段式液晶显示屏在淘宝对应宝贝详情中查找。
DS18B20传感器:1. 驱动电压:3.0V~5.5V,可以直接接单片机IO口
确认完所有元器件的电气特性后,我们再根据元器件手册中的参考电路图来完成相关器件电路设计
完整原理图设计:
PCB设计
3D效果:
注:实际产品中这个DS18B20应该通过导线引出来,因为它是测量头需要与物体接触。
软件设计
功能:驱动DS18B20并读取它测量到的温度数据并在段式液晶屏上显示。这里主要的程序:DS18B20驱动、段式液晶屏驱动
DS18B20驱动其实没有什么好说的,若下省事或者说偷懒。那么可以直接从网上复制下别人写的DS18B20代码即可。当然我强烈推荐大家实际自己编写下DS18B20驱动,这样可以使用你对DS18B20理解的更加通透。同时提高了你对阅读数据手册的能力,后面再遇到新的芯片时也不会手足无措。
DS18B20:
1. 温度转换精度与转换时间
2. 8位的CRC检验,这个CRC检验可以省略。但是还是建议大家加上它,一来它可以校验数据确保获取的温度数据的准确性,二来可以熟悉CRC检验的。这个为以后在通信
3. 读写时序:这个非常重要,后面DS18B20的操作都是要以这个为基础。
其实时序这些比较简单,我们直接按照它的要求,将对应的IO口电平拉高或者拉低相就时间就行。这里要说明下我们通过单片机读取DS18B20的数据引脚电平时,如果单片机为普通51(端口全部普通IO)那么直接将对应IO引脚释放(相当于给高电平),然后再读取引脚电平。但对于stm8s或者STM32这种单片机(端口可以设置类型:输入/输出),我们在读取DS18B20引脚电平时需要将单片机IO口模式由输出改为输入。
4. DS18B20手册末尾有完整的读写步骤,我们可以直接参考。
段式液晶屏:
说明:其实这个有点像数码管也是同时点亮需要显示的一个数码管中的段,然后再快速切换不同的数码管,频率快的话人眼是分辨不出来的它是逐个显示的。
区别:数码管是单个数码管来逐一显示而这个“段式液晶屏”是整个液晶屏(几个字)的不同段同时显示。驱动比数码管更加麻烦
分析:从下图中的表格中可以看出来,“段式液晶屏”是从COM1~COM4逐个使能的。也就是说COM1~COM4为一个周期根据手册一般显示频率为60HZ~100HZ频率太低人眼可以明显看到闪烁,频率太高对芯片要求过高。所以经过大家使用总结显示频率:60~100HZ最合适了。
第一位显示0~9的数字时COM口与DUAN口(下图中表格中5~10列)组合:
上图红红绿绿的表格中表示了如何让第一位显示0~9的数字,COM1~COM4与DUAN口之间的电平关系
显示原理:通过COM口(COM1~COM4)与DUAN口(DUAN1~DUAN6)组合来实现显示。COM口与DUAN口是依次控制的,所以会有一个刷新周期。这个周期不能太短,不然后我们肉眼会观看到闪烁现象。
工程做法:
COM口的电平每两个周期更换一次,这样是为延长液晶显示屏的使用寿命
编程思路:这个是4位的段式液晶屏。COM口(COM1~COM4)与DUAN口(DUAN1~DUAN6:表格中6-10这四列)通过不同组合实现数字的显示。比如:需要显示左边第一位为"0",那么我们需要设置COM1 = 1,DUAN1 = 0,DUAN2 = 1;COM2 = 1,DUAN1 = 1,DUAN2 = 1;COM3=1, DUAN1 = 0,DUAN2 = 1;COM4=1,DUAN1=1,DUAN2 =1.其他的位依次类推。其中列表中5-6列表示左边第一位数的段控制、列表中7-8列表示左边第二位数的段控制、列表9-10列表示第三位数的段控制。最后那个符号的显示控制为4G、4G、4A包含在5、7、9列了。
驱动程序算法:
扫描周期内COM1~COM4一般为60~100HZ,通过设置定时器周期来设置。我们的显示代码放置在定时器中断函数。这里有两种算法:
1.一位一位数的显示即一个COM周期(COM1~COM4)只显示一位数
2. 一次显示几位的不同段,分COM口显示。一个COM周期就可以将整个数据显示全
分析第一种方法所有的时间比第二种方法慢3倍(显示数据为3位)。
控制要领:
COM口为扫描周期,DUAN口控制显示的段。即COM1为高电平时,控制DUAN口电平(高:显示;低:不显示)来控制段的显示,然后再COM1为低,COM2为高电平再控制DUAN口电平。然后循环即可,由于我们的电路无法产生负电压脉冲所以延长屏幕寿命的操作不做了。
主程序流程(循环):