基于单片机的数字电压表(7)

2019-05-18 21:11

北京化工大学北方学院毕业设计(论文)

语言程序本身并不依赖于机器硬件系统,基本上不作修改就可以根据单片机的不同较快地移植过来。所以单片机AT89S52的软件编程采用C语言指令,即常用的单片机C51语言。

3.1.3单片机C51语言概述

C51程序结构与一般C语言没有什么差别。一个C51程序大体上是一个函数定义的集合,在这个集合中有且仅有一个名为main的函数(主函数)。主函数是程序的入口,主函数中的所有语句执行完毕,则程序执行结束。

C51编译器具体支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。

C51运算符按其在表达式中所起的作用,可分为赋值运算符、算术运算符、增量与减量运算符、关系运算符、逻辑运算符、位运算符、复合赋值运算符、逗号运算符、条件运算符、指针和地址运算符、强制类型转换运算符等。运算符按其在表达式中与运算对象的关系,又可分为单目运算符、双目运算符和三目运算符等。单目运算符只需要有一个运算对象,双目运算符要求有两个运算对象,三目运算符要求有三个运算对象。

C51提供了十分丰富的程序控制语句。C51基本语句有表达式语句、复合语句、条件语句、开关语句、循环语句和返回语句等。

C语言是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性和移植性。在本设计中,软件编程就是基于这种模块化结构设计的思想。

第3.2节 程序设计

综上所述,在本系统中,软件编程采用的是传统的单片机C51语言,在程序

26

北京化工大学北方学院毕业设计(论文)

的具体设计中,采用了模块化结构设计的思想。那么具体优点是什么呢?具体来说,有以下几方面:

(1)每个模块的程序结构简单,任务明确,易于编写、调试和修改。 (2)程序可读性好,对程序的修改可局部进行,其他部分可以保持不变,易于功能扩充和版本升级。

(3)易于使用频繁的子程序可以建立子程序,便于多个模块调用; (4)便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。1

3.2.1系统软件设计方案确定

(1)根据系统所要完成的功能,可以设计出如图3.1所示的功能模块。

主程序模块 A D 转换 数 码 转换 数 码 显 示 通 道 转 换 显 示 延 时 消 抖 延 时

图3.1 数字电压表软件设计的模块

从上述流程图中,可以很好地看出本软件设计方案采用了模块化编程的思想,其中最重要的两个模块是数码转换模块和数码显示模块,这正是单片机数据处理所要完成的主要内容。

(2)程序的设计 ①主程序的设计

主程序的内容一般包括:主程序的起始地址、中断服务源程序的起始地址、

1

摘自马忠梅等《单片机的C语言应用程序设计》.

27

北京化工大学北方学院毕业设计(论文)

有关内存单元及相关部件的初始化和一些子程序调用等。根据设计要求,可以设计出如图3.2所示的主程序流程图。

开始 初始化 调用A/D转换子程序 调用显示子程序

图3.2 主程序流程图

从图3.2可以看出,主程序是整个程序的框架,按照流程图采用模块化编程可以大大降低单片机工作的复杂程度,更有利于设计和维护程序。例如,在附录2中,数码转换模块如下:

adval=500*adval/256; qian=adval/1000; bai=adval/100; shi=adval0/10; ge=adval;

② A/D转换子程序的设计

A/D转换程序的功能是采集数据,这在整个系统设计中占有很高的地位。当系统设置好以后,单片机开始扫描转换结束管脚P2.6的输入电平状态:当输入为高电平则转换完成,将转换的数值转换并显示输出;若输入为低电平,则继续

28

北京化工大学北方学院毕业设计(论文)

扫描。程序流程图具体如图3.3所示。

开始 开始模数转换 N 转换是否 完成? Y 取模数转换结果 并化为工程量 显示转换结果 结束

图3.3 A/D转换子程序流程图

③数码转换及显示子程序的设计

由于人们日常习惯使用十进制数,而计算机的键盘输入、输出以及显示常采用二进制编码的十进制数(即BCD码)或ASCII码。因此,在程序设计中经常要进行数码转换。显示子程序用到了四位共阳极数码管的段码表,显示延时、消抖延时子程序采用了双循环语句。

29

北京化工大学北方学院毕业设计(论文)

第3.3节 本章小结

本章主要介绍了系统的软件部分,根据系统设计的目的与需要,采用了常用的单片机C51语言。根据硬件电路的连接方式,按照模块化的编程思想,先固定每一个模块,对每一个模块进行编程,然后再将每一个模块有机地联系到一起,即可可设计出完整的程序,程序详见附录2。在附录2中可以清楚地看出用C51指令编写的每一个模块。例如,延时子程序模块如下:

void delay(unsigned int z) { }

在后续程序中,显示延时子程序与消抖延时子程序直接调用上述延时模块即可。虽然在设计中共有五个档位(包括空挡),但是编程中只要设计出其中一个档位模块程序,其它档位程序的设计迎刃而解。由此可见,用C51语言编程的好处,这是汇编语言所不具备的优点。

unsigned char x,y; for(x=z;x>0;x--);

for(y=110;y>0;y--);

30


基于单片机的数字电压表(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:网络工程师学习笔记(全)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: