接口实验报告(4)

2019-08-30 21:46

最小系统的P1.0,P1.1接串行静态显示的DIN,CLK端。打开相关模块电源。

2. 用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机锁

紧插座中,请注意仿真器的方向:缺口朝上。请指导老师检查接线后再打开模块电源。打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。全速运行程序。 3. 程序正常运行后,按下自锁开关‘控制’SIC。LED数显为 “XX”为十

进制温度测量值, “XX”为十进制温度设定值,按下自锁开关“控制”SIC则加热源开始加热,温度也随着变化,当加热到设定的控制温度时如40度时,停止加热。

注意:实验完成以后务必关闭该模块,防止没有控制无限加热造成模块损坏 VCC+12V+12V+12V四、电路原理图 JDQR8CC3C 1K0.1uF IN4007JDQ100+12V D1CT1CCONTROLR7C10KR9C 210K T2CS1CR10C100K2U3C9013 18ACCONTROL 901327KER14CTLP521 R13C75/2W2.2K R11CR12C22K100 实验程序 #include

#define uchar unsigned char #define uint unsigned int

sbit DQ=P2^0;//ds18b20与单片机连接口 sbit Din=P1^0;// sbit CLK=P1^1;// unsigned char code LED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40 };//0-F , ,- uchar data disdata[5]; uint tvalue;//温度值

uchar tflag;//温度正负标志 void delay(int count) {

unsigned int i;

for(i=0;i

//数码显示

28235117133146

void display() {

uchar LED_code[5]; uchar i,j,chr,sel;

/////////////// for(i=0;i<4;i++)

LED_code[i]=LED_Map[disdata[i]]; //LED_code[i]=LED_Map[0];

if((LED_code[0]==0)&&(tflag==1)&&(LED_code[1]!=0)) LED_code[0]=0x40;//显示负号

if((LED_code[1]==0)&&(tflag==1)) LED_code[0]=0x40; for(i=0;i<4;i++) {

chr= LED_code[3-i]; // if(i==1) chr= chr|0x80; sel=0x80; for(j=0;j<8;j++) {

Din=chr&sel; CLK=0; sel=sel>>1; delay(1); CLK=1; delay(1); } } }

/******************************ds1820程***************************************/

void delay_18B20(unsigned int i)//延时1微秒 {

while(i--); }

void ds1820rst()/*ds1820复位*/ { unsigned char x=0;

DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40);

}

uchar ds1820rd()/*读数据*/ { unsigned char i=0;

unsigned char dat = 0; for (i=8;i>0;i--)

{ DQ = 0; //给脉冲信号 dat>>=1;

DQ = 1; //给脉冲信号 if(DQ)

dat|=0x80;

delay_18B20(10); }

return(dat); }

void ds1820wr(uchar wdata)/*写数据*/ {unsigned char i=0; for (i=8; i>0; i--) { DQ = 0;

DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } }

//////////////////////////////////////////////////////// read_temp()/*读取温度值并转换*/ {uchar a,b; ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8;

tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else

{tvalue=~tvalue+1;//求负数绝对值 tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue); }

/*******************************************************************/ void ds1820disp()//温度值显示 {

disdata[0]=tvalue/1000;//百位数

disdata[1]=tvalue00/100;//十位数 disdata[2]=tvalue0/10;//个位数 disdata[3]=tvalue;//小数位

if(disdata[0]==0) {

disdata[0]=0x10;//如果百位为0,不显示 if(disdata[1]==0) {

disdata[1]=0x10;//如果百位为0,十位为0也不显示 } } display(); }

/********************主程序*************************/ void main() {

uint i;

while(1) {

read_temp();//读取温度

ds1820disp();//显示 for(i=0;i<255;i++) delay(100); } }

五 实心得体会

通过软件编及仿真,了解了温度传感器电路的工作原理,编程过程中,熟悉

并了解温度控制的基本原理,以及熟悉了解并掌握了一线总线接口的使用

实验五 步进电机控制实验

一、实验目的

1.了解步进电机控制的基本原理 2.掌握控制步进电机转动的编程方法 3.了解单片机控制外部设备的常用电路

二、实验说明

1. 输入给定程序,配置选项,调试并运行程序,观察程序控制下仿真器输

出的变化。

2.

选中此项keil为硬件仿真

3. 设置Port 串口:一般为COM3,Baudrate 波特率为最大值:115200bit/s, 最后确认 4. 步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必

须以脉冲电流来驱动。若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。

5. 步进电动机的励磁方式可分为全步励磁及半步励磁,其中全步励磁又有

1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。每输出一个脉冲信号,步进电动机只走一步。因此,依序不断送出脉冲信号,即可步进电动机连续转动。

6. 用C51进行程序设计,选择汇编或者C语言编程均可,要求程序结构清

晰,模块化结构,反复调用部分做成子模块,有必要的注释。编写程序上机调试通过,实验报告要求提交程序流程图及源程序。

三、实验内容及步骤(完成分值:100分/单个程序)

本实验需要用到本实验需要用到单片机最小应用系统(F1区)、步进电机模块(M2区)和查询式键盘(B2区)。

1. 单片机最小应用系统的P1.0、P1.1、P1.2、P1.3口分别接步进电机模块

的SA、SB、SC、SD。最小系统的P2.0、P2.1、P2.2分别对应的接查询式键盘的K0、K1、K2键。打开相关模块的电源开关。

2. 用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机锁

紧插座中,请注意仿真器的方向:缺口朝上。请指导老师检查接线后再打开模块电源。打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。全速运行程序。 3. 按下K0键电机正转,K1反转,K2电机STOP。

四、电路原理图


接口实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018届高考语文语言连贯补写句子专练(高考真题及名校模拟题汇编

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

马上注册会员

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