16 DM 输入/输出 USB端口D-信号
17 VO_33 输出 常规3.3V电源输出
18 GND 接地
19 NC 无连接
20 VDD_5 电源 USB端口的5V电压电源
21 GND 接地
22 GP0 输入/输出 通用I/O引脚0
23 GP1 输入/输出 通用I/O引脚1
24 NC 无连接
25 GND_A 模拟地锁相环
26 PLL_TEST 输入 PLL锁相环测试模式控制
27 OSC1 输入 晶体振荡器输入
28 OSC2 输入/输出 晶体振荡器输出
4. 模块化软件设计
模块化设计的使用,使得板子的应用变得比较灵活,可以根据不同的用户或者不同的需要,按需连接需要的模块即可[13-15]。模块化的设计也使得需要对不同的应用模块进行模块化的软件设计。
4.1 A/D模块的软件设计
AT89S51内部不含有A/D转换模块,可选择外部芯片如ADC0809数模转换芯片进行电路的设计[16]。
设Vin为输入电压,Vref为参考电压则以下程序中data计算公式如下所示。
图17 AD模块流程图
首先给最小系统上电即开始,然后初始化单片机内部寄存器,设定的VREF基准电压由图中RVI 可以取到的最高电压,调用即为调用基准AD模块函数读取电压值,然后显示。
4.2数码管显示的软件设计
74HC595串行输入数据后,并行输出驱动数码管,串行输出向下一级74HC595发送数据,利用74HC595的级联驱动数码管同时静态显示,要显示出传输过来的串行数据,首先要将数据串行输入到三个级联的74HC595内存寄存器中,等待输入完成以后同时显示[17,18]。
图18静态显示驱动电路
图19 四位数码管显示驱动电路图
图20 74HC595流程图
4.3 4×4矩阵键盘的编程方法
矩阵键盘的编程步骤主要有两步:
(1) 先读取键盘的状态,得到按键的特征编码。
(2) 根据按键的特征编码,进行查表可以得到按键的顺序编码。矩阵键盘键值查找程序的具体编程如图21所示。
图21 矩阵键盘驱动流程图
单片机上电后,应先将单片机内存初始化,然后扫描是否有键摁下,但是为了排除干扰,应先延时10~15ms之后再进行检测是否有按键摁下,然后再把数据显示出来,这样可以提高系统的稳定性。
4.4 传感器DS18B20子程序设计
DS18B20与上位机(控制器)之间的的数据通信通过严格的单总线协议来进行,以确保数据的完整性与准确性[19,20]。其流程图如图22所示,其中所有的信号除主机启动复位信号外,全部都由DS18B20产生。
通过单总线访问DS18B20顺序归纳如下:
(1)主机发开始信号;
(2)主机等待接收DS18B20响应信号;
(3)主机连续接收24 Bit的数据和校验和;
(4)数据处理。
传感器数据输出的是未编码的二进制数据,一次完整的数据传输为24bit,高位先出且需分别处理。
数据格式:8bit温度整数数据+8bit温度小数数据+8bit校验和
其中,校验和数据为前四个字节相加。
图22 传感器DS18B20 子程序流程图
5. 结论 单片机最小工控系统的设计与开发+电路图+流程图(8):http://www.751com.cn/zidonghua/lunwen_1665.html