专业综合实验实验报告Word格式文档下载.docx

上传人:b****2 文档编号:4787071 上传时间:2023-05-04 格式:DOCX 页数:13 大小:38.54KB
下载 相关 举报
专业综合实验实验报告Word格式文档下载.docx_第1页
第1页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第2页
第2页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第3页
第3页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第4页
第4页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第5页
第5页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第6页
第6页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第7页
第7页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第8页
第8页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第9页
第9页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第10页
第10页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第11页
第11页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第12页
第12页 / 共13页
专业综合实验实验报告Word格式文档下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

专业综合实验实验报告Word格式文档下载.docx

《专业综合实验实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《专业综合实验实验报告Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。

专业综合实验实验报告Word格式文档下载.docx

3.熟练掌握相关绘图软件的使用。

二、综合实验的主要内容

1.选择一个实验,画出硬件电路原理图;

2.编写单片机控制程序,并逐条解释;

3.利用开发板,验证程序正确性;

4.完成综合实验报告(附程序)。

5.将全部内容上交电子版

三、成员与分工

姓名

分工

于飞飞

选题、

郝亮

程序编辑与调试、画电路图

彭玮

程序调试

宋凯

开发板的调试

吴卓远

报告总结

附录1:

附录2:

程序

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

#include<

reg52.h>

//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include<

intrins.h>

//包含NOP空指令函数_nop_();

LCD1602.h>

#defineAddWr0x90//写数据地址

#defineAddRd0x91//读数据地址

sbitSda=P2^0;

//定义总线连接端口

sbitScl=P2^1;

sbitwei=P2^7;

sbitduan=P2^6;

bitADFlag;

//定义AD采样标志位

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

延时程序

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

voidmDelay(unsignedcharj)

{

unsignedinti;

for(;

j>

0;

j--)

for(i=0;

i<

125;

i++)

{;

}

}

初始化定时器1

voidInit_Timer1(void)

{

TMOD|=0x10;

TH1=0xff;

/*Initvalue*/

TL1=0x00;

//PT1=1;

/*优先级*/

EA=1;

/*interuptenable*/

ET1=1;

/*enabletimer1interrupt*/

TR1=1;

启动IIC总线

voidStart(void)

Sda=1;

_nop_();

Scl=1;

Sda=0;

Scl=0;

停止IIC总线

voidStop(void)

应答IIC总线

voidAck(void)

非应答IIC总线

voidNoAck(void)

发送一个字节

voidSend(unsignedcharData)

{

unsignedcharBitCounter=8;

unsignedchartemp;

do

temp=Data;

Scl=0;

_nop_();

if((temp&

0x80)==0x80)

Sda=1;

else

Sda=0;

Scl=1;

temp=Data<

<

1;

Data=temp;

BitCounter--;

}

while(BitCounter);

读入一个字节并返回

unsignedcharRead(void)

unsignedchartemp=0;

unsignedchartemp1=0;

Scl=1;

if(Sda)

temp=temp|0x01;

temp=temp&

0xfe;

if(BitCounter-1)

{

temp1=temp<

temp=temp1;

}

while(BitCounter);

return(temp);

写入DA数模转换值

voidDAC(unsignedcharData)

Start();

Send(AddWr);

//写入芯片地址

Ack();

Send(0x40);

//写入控制位,使能DAC输出

Send(Data);

//写数据

Stop();

读取AD模数转换的值,有返回值

unsignedintReadADC(unsignedcharChl)

unsignedintData;

Send(0x40|Chl);

//写入选择的通道,本程序只用单端输入,差分部分需要自行添加

//Chl的值分别为0、1、2、3,分别代表1-4通道

Send(AddRd);

//读入地址

Data=Read();

//读数据

Data=Data*196;

//还原电压值近似

Data=Data/100;

NoAck();

returnData;

//返回值

主程序

voidmain()

unsignedcharnum;

//DA数模输出变量

unsignedcharADtemp;

//定义中间变量

wei=1;

P0=0Xff;

wei=0;

duan=1;

P0=0X00;

duan=0;

LCD_Init();

LCD_Clear();

//清屏

mDelay(20);

Init_Timer1();

while

(1)

DAC(num);

//DA输出,可以用LED模拟电压变化

num++;

//累加,到256后溢出变为0,往复循环。

显示在LED上亮度逐渐变化

mDelay(20);

//延时用于清晰看出变化

if(ADFlag)//定时采集输入模拟量

ADFlag=0;

ADtemp=ReadADC(0);

TempData[0]=(ReadADC(0))/100;

//处理0通道电压显示

TempData[1]=((ReadADC(0))%100)/10;

ADtemp=ReadADC

(1);

TempData[2]=(ReadADC

(1))/100;

//处理1通道电压显示此通道暂时屏蔽,可以自行添加

TempData[3]=((ReadADC

(1))%100)/10;

ADtemp=ReadADC

(2);

TempData[4]=(ReadADC

(2))/100;

//处理2通道电压显示此通道暂时屏蔽,可以自行添加

TempData[5]=((ReadADC

(2))%100)/10;

ADtemp=ReadADC(3);

TempData[6]=(ReadADC(3))/100;

//处理3通道电压显示此通道暂时屏蔽,可以自行添加

TempData[7]=((ReadADC(3))%100)/10;

disp();

定时器中断程序

voidTimer1_isr(void)interrupt3using1//定时器1执行数码管动态扫描

staticunsignedintj;

TH1=0xfb;

//重新赋值

j++;

if(j==200)

{j=0;

ADFlag=1;

}//定时置位AD采样标志位

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2