河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx

上传人:b****6 文档编号:20701487 上传时间:2023-01-25 格式:DOCX 页数:14 大小:205.02KB
下载 相关 举报
河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx_第1页
第1页 / 共14页
河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx_第2页
第2页 / 共14页
河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx_第3页
第3页 / 共14页
河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx_第4页
第4页 / 共14页
河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx

《河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

河北工程大学基于单片机微电压传感器信号测量仪课程设计Word文档格式.docx

它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。

所以说,一片单片机芯片就具有了组成计算机的全部功能,从某种意义上来说,一块单片机就是一台微型计算机。

51系列单片机的主要功能特点:

  ⑴一个8位微处理器CPU;

  ⑵片内振荡器,振荡频率范围为1.2~12MHZ;

  ⑶4KB/8KB的片内ROM(8031、8032、80C31无);

  ⑷128/256字节的片内RAM;

  ⑸片外ROM的寻址范围为64KB;

  ⑹片外RAM的寻址范围为64KB;

  ⑺21个特殊功能寄存器(SFR);

⑻四个8位并行I/O接口(P0~P3),32根I/O口线;

⑼1个全双工UART串行口,可多级通信;

  ⑾具有5/6个中断源,可编程为两个优先级;

  ⑿有位寻址功能,适于布尔处理的位处理机;

  ⒀111条指令;

  ⒁片内采用单总线结构;

 ⒂用单一+5V电源。

2.1.2液晶显示

1602液晶模块内部的控制器共有11条控制指令,如表1所示

表1控制命令表

序号

指令

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

2

光标返回

*

3

置输入模式

I/D

S

4

显示开/关控制

D

C

B

5

光标或者字符移位

S/C

R/L

6

置功能

DL

N

F

7

字符发生贮存地址

字符发生存贮器地址

8

数据存贮器地址

显示数据存贮器地址

9

读忙标志或地址

BF

计数器地址

10

写数到CGRAM

要写的数据内容

11

从CGRAM读数

独出的数据内容

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

1)指令1:

清显示,指令码01H,光标复位到地址00H位置。

2)指令2:

光标复位,光标返回到地址00H。

3)指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

4)指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

5)指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标。

6)指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

7)指令7:

字符发生器RAM地址设置。

8)指令8:

DDRAM地址设置。

9)指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

10)指令10:

写数据。

11)指令11:

读数据。

2.1.3系统框图

根据项目要求,确定该系统的设计方案,图3-1为该方案的硬件电路设计框图。

由6个部分组成,即单片机、时钟电路、复位电路、LED显示电路、A/D转换器和测量电压输入电路。

图1系统结构框图

图1系统框图

2.2系统设计

2.2.1整体电路

本系统的整体电路如下图2所示

图2系统的的整体电路图

2.2.2程序流程图

2.2.3系统的代码实现

程序代码

/******************adc0832****************************

sbitCLK=P3^4;

//时钟接口

sbitDI=P3^3;

//数据输入接口

sbitDO=P3^3;

//数据输出接口

sbitCS=P3^5;

//片选使能接口

0x02就是单通道0;

0x03就是单通道1;

0x00就是双通道ch0="

+"

ch0="

-"

0x01就是双通道ch0="

*****************************************************/

#include<

reg52.h>

intrins.h>

string.h>

#defineuintunsignedint

#defineucharunsignedchar

sbitCS=P3^5;

sbitCLK=P3^4;

sbitDI=P3^3;

sbitDO=P3^3;

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^4;

ucharResult_ADC0832=0;

//转换结果变量

ucharDisplay_Buffer[2][16]={

{"

CurrentVoltage:

"

},

CH=0.00V"

}

};

//函数声明

ucharGet_Value_ADC0832();

//获取指定通道的A/D转换结果

voidRefesh_Disp_Buffer();

//刷新显示缓冲

voidLCD_Busy_Check();

//忙检查

voidLCD_Write_Command(ucharcmd);

//向LCD写入命令

voidWrite_LCD_Data(uchardat);

//向LCD写入数据

voidInitialize_LCD1602();

//液晶初始化函数

voidLCD_Display(ucharstr[]);

//在LCD上显示字符串

voidDelayMS(uintX);

//延时程序

ucharRead_State();

//读取LCD的状态

//--------------------------------------------------------------

//主程序

//-----------------------------------------------------------------

voidmain()

{

ucharj;

Initialize_LCD1602();

//液晶初始化函数

while

(1)

{

for(j=0;

j<

2;

j++)

{

Get_Value_ADC0832();

//通道0.1,A/D转换

Refesh_Disp_Buffer();

//刷新显示缓冲

if(j==0)

{

LCD_Write_Command(0x80);

//写LCD命令,设置从第0行位置开始显示

LCD_Display(Display_Buffer[j]);

//在LCD上显示字符串

}

else

{

LCD_Write_Command(0xC0);

//写LCD命令,设置从第1行位置开始显示

}

}

}

//---------------------------------------------------------------

ucharGet_Value_ADC0832()

{

uchari,dat1=0,dat2=0;

//起始控制位

CS=0;

_nop_();

CLK=0;

DI=1;

CLK=1;

//第一个下降沿之前,设置DI=1/0;

//选择单端/差分(SGL/DIF)模式中的单端输入模式

//第二个下降沿之前,设置DI=0/1;

选择CH0/CH1

DI=0;

//第三个下降沿之前,设置DI=1;

DI=1;

_nop_();

//第4-11个脉冲期间读数据(MSB->

LSB)

for(i=0;

i<

8;

i++)

dat1=dat1<

<

1|DO;

//第12-19个脉冲期间读数据(LSB->

MSB)

dat2=dat2|((uchar)(DO)<

i);

CLK=1;

_nop_();

CS=1;

//CLK=1;

returnResult_ADC0832=(dat1==dat2)?

dat1:

0;

//--------------------------------------------------------------------------

//刷新显示缓冲

//-------------------------------------------------------------------------

voidRefesh_Disp_Buffer()

uintt=(Result_ADC0832*500.0/255.0-0.86)/9.6;

//

Display_Buffer[1][7]=t/100+'

0'

;

//整数位

Display_Buffer[1][9]=t/10%10+'

//两个小数位

Display_Buffer[1][10]=t%10+'

//---------------------------------------------------

voidDelayMS(uintX)

uchari;

while(X--)for(i=0;

120;

i++);

//----------------------------------------------------

//-------------------------------------------------

ucharRead_State()

ucharstate;

RS=0;

RW=1;

E=1;

DelayMS

(1);

state=P0;

E=0;

returnstate;

//--------------------------------

//忙等待

//----------------------------------

voidLCD_Busy_Check()

while(Read_State()&

0x80!

=0x80);

DelayMS

(1);

//--------------------------------------------------

//-----------------------------------------------

voidLCD_Write_Command(ucharcmd)

LCD_Busy_Check();

RW=0;

P0=cmd;

//向LCD写入数据

//--------------------------------------

voidWrite_LCD_Data(uchardat)

RS=1;

P0=dat;

//LCD初始化

//-----------------------------------------------------------

voidInitialize_LCD1602()

LCD_Write_Command(0x38);

DelayMS

(1);

//功能设置,数据长度为8位,双行显示,5×

7点阵字体

LCD_Write_Command(0x0C);

//显示开,关光标

LCD_Write_Command(0x06);

//字符进入模式:

屏幕不动,字符后移

LCD_Write_Command(0x01);

//清屏

//-----------在LCD上显示字符串-----------------*/

voidLCD_Display(uchar*str)

uchark;

for(k=0;

k<

strlen(str);

k++)

Write_LCD_Data(str[k]);

DelayMS

(2);

3、设计总结或结论

本次课程设计我们做的是计算机辅助语言教学系统,通过此次课程设计,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

过而能改,善莫大焉。

发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。

同时,设计让我感触很深。

在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。

果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。

4、参考文献

[1]周元一.电机与电气控制.机械工业出版社.2006.8

[2]曹克澄.单片机原理及应用.机械工业出版社.2005.

[3]靳达编著.单片机应用系统开发实例导航.北京:

人民邮电出版社,2003

[4]南建辉、熊鸣、王军茹.MCS-51单片机原理及应用实例.清华大学出版社,2004

[5]万福君.单片微机原理系统设计与开发应用.中国科学出版社,1995

[6]张友德、赵志英等.单片机原理应用与实验.上海复旦大学出版社,1992

课程设计

评语

成绩

指导教师

(签字)

年月日

注:

此表必须在同一页面。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1