好文档 - 专业文书写作范文服务资料分享网站

基于单片机的压力传感器系统的设计与实现

天下 分享 时间: 加入收藏 我要投稿 点赞

北华航天工业学院毕业论文

写操作时序

看到这里我们在回头对应先前的指令集,就可以发现,所谓的指令集,是要分开两个部分来看的,第一部分是RS和RW两个控制位,第二部分我们可以称之为指令。我们要做的工作就是按照时序图的要求将需要写入的指令或数据送给LCD。在编写程序时,将rs,rw,e三个端口设置好之后,直接将要写入的内容送给D0~D7口就可以了。 程序设计

由先前的分析我们可知,LCD的主要控制程序分为写指令程序和写数据程序,我们先按照时序图将两个子程序写下来

写指令程序

void lcdwrite_com(uchar com) {

lcdrs=0; P0=com;

delay(1);//延时函数 lcden=1; delay(5);

lcden=0; }

写数据程序

void write_data(uchar date) {

lcdrs=0; P0=date;

- 13 -

北华航天工业学院毕业论文

delay(5); lcden=1; delay(5); lcden=0; }

利用这两个子程序就可以写入相关指令和程序了

下面我们先利用这两个子程序完成LCD的初始化设置。 void init() {

lcdwrite_com(0x06);//指令3,光标右移,文字不移动

lcdwrite_com(0x0c);//指令4,显示器开,无光标,无闪烁 lcdwrite_com(0x14);//指令5,光标右移一格

lcdwrite_com(0x38);//指令6,设置 8 位格式,2 行,5x7 lcdwrite_com(0x01);//清屏

delay(5);延时,令LCD有足够时间完成清屏程序 }

然后我们就可以对先前写成的程序进行组装了,组装结果如下: #include

#define uchar unsigned char #define uint unsigned int #define lcd_db P0 sbit lcdrs=P2^0; sbit lcden=P2^1;

void lcdwrite_com(uchar com);//写指令 void lcdwrite_data(uchar date);//写数据

void lcd_disp_char(uchar a,uchar b,uchar c);//显示程序 void init();

void delay(uint z); void main() {

init();

lcd_disp_char(0,1,'A'); while(1); }

void lcd_disp_char(uchar a,uchar b,uchar c)//显示程序 {

uchar address; if(b==1)

address=0x80+a; else

address=0xc0+a;

lcdwrite_com(address); lcdwrite_data(c); }

- 14 -

北华航天工业学院毕业论文

由于其他子程序内容,前文已经给出,所以这里的程序就不再赘述。

第3章 控制程序的设计

在之前的对各个硬件电路的控制过程

3.1 程序要完成的任务

程序即命令,它要担负起整合硬件资源的任务,并且要对信息进分析处理。 针对我们这个课题。我们先做一个简单的流程。

控制AD转换 将数据放到得到数据 LCD里显示

如图实际上我们这个系统就完成了这么一个简单的工作,简要而言我们的单片机相当于一个数据的“搬运工”,对AD模块和LCD模块的的控制程序先前我们已经介绍过了。这里我们要分析一下程序要完成的其他任务。

我们知道AD转换过后的数据是放大电路输出的一个电压值,并不是我们想要显示的力值,所以需要对数据进行处理。我们的AD为8位总线,所以最大数值为255,设满量程质量为100g那么8位总线上的数变化1,实际重量变化100/256g,即为显示精度,若从AD中得到的数为100,那么实际物体的重量为100*100/256=39.0625g,现在我们舍去后面的小数位,只将“39g”输入到LCD中显示,那么我们就要分别将“3”“9”“g”这三个字符放到LCD中,这样我们就要把这三个字符分离出来,所以单片机在搬运数据的过程中要先将数据放到数据处理程序中处理一下,再将处理结果“搬到”LCD中。这样我们就有了程序设计思路了。

程序要完成的任务流程如下, 依次将各位数将重量值各将数据转换成 控制AD转换据输入LCD 个位分离 实物的重量 得到数据

- 15 -

北华航天工业学院毕业论文

3.2 程序流程设计

主程序流程图如下: 开始

程序初始化

启动AD转换一次

读取AD转换结果

将AD转换结果换算成实物重 量

LCD显示重量

END

程序如下

void main() { init();//初始化程序,包括AD和LCD的初始化 while(1) { adread();//启动并读取ad结果 shiwu();//将结果转换成实物重量

- 16 -

北华航天工业学院毕业论文

display();//LCD显示程序 } }

主程序中AD转换和LCD显示程序前文已经介绍过,这里不再赘述。这里仅给出实物转换的子程序。流程如下:

程序如下:

开始 读取转换结果 将结果乘上一个系数 返回一个结果 结束 - 17 -

基于单片机的压力传感器系统的设计与实现

北华航天工业学院毕业论文写操作时序看到这里我们在回头对应先前的指令集,就可以发现,所谓的指令集,是要分开两个部分来看的,第一部分是RS和RW两个控制位,第二部分我们可以称之为指令。我们要做的工作就是按照时序图的要求将需要写入的指令或数据送给LCD。在编写程序时,将rs,rw,e三个端口设置好之后,直
推荐度:
点击下载文档文档为doc格式
2vawy2w1ba9kcek7h0vq
领取福利

微信扫码领取福利

微信扫码分享