最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

《单片机实验报告》

日期:2020-12-14  类别:最新范文  编辑:一流范文网  【下载本文Word版

《单片机实验报告》word版 本文关键词:单片机,实验,报告,word

《单片机实验报告》word版 本文简介:实验报告课程名称计算机测控技术实验项目单片机实验仪器keil4.0系别仪器科学与光电工程专业测控技术与仪器班级/学号学生姓名实验日期成绩指导教师实验一单片机程序设计基础一.实验设备硬件使用的是单片机SS-8051高级单片机实验仪,软件使用的是Keiluv2软件开发环境。二.实验目的熟悉单片机的调试环

《单片机实验报告》word版 本文内容:

课程名称

计算机测控技术

实验项目

单片机

实验仪器

keil4.0

仪器科学与光电工程

测控技术与仪器

班级/学号

学生姓名

实验日期

指导教师

实验一

单片机程序设计基础

一.实验设备

硬件使用的是单片机SS-8051高级单片机实验仪,软件使用的是Keil

uv2软件开发环境。

二.

实验目的

熟悉单片机的调试环境与指令系统

三.实验内容

自编一个汇编小程序,使用Keil

uv2软件开发环境,进行编译、调试、运行程序。

Keil

uv2

操作流程的简单说明:

1.

NEW

PROJECT

↙,建一个新的项目,取项目名并存于F:盘下(最好在F盘下建一个自己的文件夹)。在出现的对

话框中选Atmel/AT89c51

芯片型号;或者可以从File/

devices

database

的对话框中选择芯片型号。

2.

FILE/

NEW

↙,建立一个新文件,在打开的窗口下输入程序,取文件名并存盘。

3.

选中Source

Group1点击鼠标右键,在出现的菜单中选中

Add

Files

to

Group

`

Source

Group1`,将文件加入到项目中。

4.

选中Target1点击鼠标右键,在出现的菜单中选中Options

for

Target

`

Target1`:

l

在出现的对话框中打开output项的对话框,选中`Great

HEX

File`,以保证编译时能生成.HEX文件,为后续下载程序做准备。

l

在出现的对话框中打开debug项的对话框,选中`Use

“keil

monitor

51-driver”,并将其下的选项均选中系统处于在线下载调试状态。。

5.

Project/Build

target或Rebuild

all

target

files,编译所输入的程序,检查语法错误,更改错误直至无错为止。

6.

Debug/

‘Start/Stop

Debug

Session’

↙,开始调试程序,单步或断点运行程序额,检查逻辑错误。

4.

实验程序

#include

unsigned

int

code

chOriginalSet[10]={30,30,550,30,8,30,550,30,8,1};

/*阀序时间间隔设置*/

unsigned

char

code

chFarXu[9]={0x00,0x51,0x55,0x45,0x80,0x62,0x6a,0x4a,0x80};

/*阀序*/

void

delay(unsigned

int

times);

main()

{

unsigned

char

i;

while(1)

{

for(i=1;i

#include

typedef

unsigned

char

Byte;

BytedataAA;

voidOUT(void)

{

SBUF=AA;/*发送字符子程序*/

wait:if(TI==1)

{

TI=0;

goto

end1;

}/*发送完毕返回*/

gotowait;/*否则等待TI=1*/

end1:_nop_();

}

void

IN(void)

{

in1:if(RI==1)

{

RI=0;

goto

end2;

}/*接收到字符(RI=1)时启动接收*/

goto

in1;/*否则查询是否接收到字符*/

end2:AA=SBUF;/*启动接收*/

}

voidmain(void)

{

TH1=0xF3;/*设置波特率为2400*/

TL1=0xF3;/*设置波特率为2400*/

TMOD=0x20;/*选择计时器1方式2产生波特率*/

IE=0;/*禁止所有的中断,采用查询方式*/

SCON=0x50;/*设置串口为方式1,接收允许*/

TR1=1;/*启动定时器1*/

AGAIN:IN();/*接收字符子程序*/

OUT();/*回送字符子程序*/

goto

AGAIN;/*循环*/

}

7.

实验截图

实验三

V/F转换电路实验

1、

实验内容

V/F转换电路的调试。

2、

实验要求

1、

在了解LM331工作原理(转换原理)的基础上,考虑以下几个问题:输入电压范围;输出频率范围;输入和输出间的对应关系。

2、

调试电路,直至V/F转换器可以正确输出波形。如果V/F转换器没有输出或输出波形不理想,请分析查找原因,并将波形调至等占空比。

3、

用示波器、频率计等工具观察V/F转换器的输出波形,观察定标调整环节W1,W2和W3对波形的影响。

4、

通过实测数据分析V/F转换器的线性,画出实际的V、F对应关系。

3、

实验电路图

四、实验数据处理

V(V)

4.973

4.029

3.500

3.005

2.499

1.999

1.504

1.001

0.502

F(Hz)

6.64

5.38

4.63

4.00

3.32

2.66

2.00

1.32

0.67

实验四

V/F转换的数据采集

一.

实验内容

连线并编制程序:使用定时器和计数器完成

LM331脉冲输出信号的采集功能,

对采集的数据进行处理,最终得到频率值。

二.

实验目的

1.

定时器中断的使用;

2.

学习定时器中断间隔时间的计算;

3.

掌握计数器的使用方法;

4.

学习中断处理程序的编程方法。

三.

原理简述

1.定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/12。本实验中时钟频率为12M,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=14H,即可实现1秒的延时,

时间常数可按下法确定:

机器周期=12/晶振频率=12/12=1uS

定时器需设初值为X,则(2^16—X)*1=50000uS

求出X=15536

化为十六进制:X=3CB0H,故初始值为:TH1=3CH,TL1=B0H。

2.

初始化程序

包括定时器初始化和中断系统初始化,主要对IP,IE,TCON,TMOD的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP不必设置。

注意一点:定时器1初始化时建议用如下的指令:

ANLTMOD,#0FH

ORLTMOD,#10H

3.

设计中断服务程序和主程序

中断服务程序除了要完成计数减1工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则对计数器的数值进行处理,转换成频率值。

实验五

7279键盘显示控制实验

一.

实验题目

连线并编制程序,将HD7279A的全部编码送HD7279A显示,以一秒钟为间隔显示下一位,以前的显示内容左移。

二.

实验目的

1.

了解HD7279A键盘显示芯片的基本应用;

2.

掌握HD7279A键盘显示芯片的接口电路及编程方法。

三.

原理简述

HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。

HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外还有多种控制命令,如消隐、闪烁、左移、右移、段寻址等。命令的具体形式可查阅HD7279A相关的技术资料。

四.

实验电路

五.

连线方法

电路单元

2单元

6单元

8单元

9单元

连接一

P1.2-P1.5

DATA,/KEY,/CS,/CLK

(JP38.2-JP38.5)

连接二

左边的DG0-DG5

6G-1G

连接三

SA-DP

B7-B0

连接四

右边的DG0-DG3

C0-C3

连接五

SA-SC

C4-C6

连接六

JP16跳线接GND

另外,在实验之前,应将8单元的U7(7406)和U6(74LS245)芯片取下,因7279已经有直接驱动数码管的能力,如果另外放置驱动芯片,反而会影响数码管的显示效果。

六.

实验程序

程序清单(C51):

#include/*C51内部资源定义*/

#include

typedef

unsigned

char

Byte;/*下面的程序中用Byte代替unsigned

char*/

bdata

Byte

BIT_COUNT,TIMER,TIMER1,TEN,DATA_IN,DATA_OUT,AA,BB;

sbit

data_in0=DATA_IN^0;

sbit

data_out7=DATA_OUT^7;

sbit

DAT=P1^2;/*HD7279A的DATA连接于P1.2*/

sbit

KEY=P1^3;/*HD7279A的KEY(键盘中断信号)连接于P1.3*/

sbit

CS=P1^4;/*HD7279A的CS(片选信号)连接于P1.4*/

sbit

CLK=P1^5;/*HD7279A的CLK连接于P1.5*/

void

SEND(void);/*发送*/

void

LONG_DELAY(void);/*长延时*/

void

SHORT_DELAY(void);/*短延时*/

void

RECEIVE(void);/*接收*/

void

main(void)/*主程序*/

{

START:_nop_();/*启动,短延时几微秒*/

P1=0xDB;

/*给P1赋值0xDB*/

TIMER=50;/*定时50秒*/

START_DELAY:TIMER1=255;/*定时255秒*/

START_DELAY1:TIMER1--;/**/

if(TIMER1>0)

goto

START_DELAY1;/*如果TIMER1大于0跳转到START_DELAY1*/

TIMER--;/**/

if(TIMER>0)

goto

START_DELAY;/*如果TIMER大于0跳转到START_DELAY*/

DATA_OUT=0xA4;

/*给DATA_OUT赋值0xA4*/

SEND();

/*发送数据*/

CS=1;

/*片选置1*/

MAIN1:if(KEY==1)

goto

MAIN1;

/*如果键盘中断信号为1,跳转到MAIN1*/

DATA_OUT=0x15;

/*DATA_OUT赋值0x15*/

SEND();

/*发送*/

RECEIVE();

/*接收*/

CS=1;

/*片选为1*/

AA=DATA_IN;

/*给AA赋值DATA_IN*/

if(AA==6)BB=1;/*如果AA为6,BB为1*/

if(AA==5)BB=2;/*如果AA为5,BB为2*/

if(AA==4)BB=3;/*如果AA为4,BB为3*/

if(AA==14)BB=4;/*如果AA为14,BB为4*/

if(AA==13)BB=5;/*如果AA为13,BB为5*/

if(AA==12)BB=6;/*如果AA为12,BB为6*/

if(AA==22)BB=7;/*如果AA为22,BB为7*/

if(AA==21)BB=8;/*如果AA为21,BB为8*/

if(AA==20)BB=9;/*如果AA为20,BB为9*/

if(AA==30)BB=11;/*如果AA为30,BB为11*/

if(AA==29)BB=0;/*如果AA为29,BB为0*/

if(AA==28)BB=12;/*如果AA为28,BB为12*/

TEN=0;/*MOVTEN,A*/

DATA_OUT=0xA1;/*MOVDATA_OUT,#10100001B*/

SEND();/*CALLSEND*/

DATA_OUT=0xA1;/*MOVDATA_OUT,#10100001B*/

SEND();/*CALLSEND*/

DATA_OUT=0x81;/*MOVDATA_OUT,#10000001B*/

SEND();/*CALLSEND*/

DATA_OUT=TEN;/*MOVDATA_OUT,TEN*/

SEND();/*CALLSEND*/

DATA_OUT=0x80;/*MOVDATA_OUT,#10000000B*/

SEND();/*CALLSEND*/

DATA_OUT=BB;/*MOVDATA_OUT,B*/

SEND();/*CALLSEND*/

CS=1;

/*片选信号置1*/

WAIT:if(KEY==0)

goto

WAIT;

goto

MAIN1;

/*如果KEY为0,跳转到WAIT,否则跳转到MAIN1*/

}

void

SEND(void)

/*发送子程序*/

{

BIT_COUNT=8;

/*统计为8*/

CS=0;

/*片选置0*/

LONG_DELAY();

/*长延时*/

SEND_LOOP:CY=data_out7;

/*发送循环*/

DAT=CY;

/*引脚的状态*/

CLK=1;

/*时钟信号为1*/

AA=DATA_OUT;

/*给AA赋值DATA_OUT*/

AA=_crol_(AA,1);/*_crol_函数在这里是把左边的一个零移到右边*/

DATA_OUT=AA;/*给DATA_OUT赋值AA*/

SHORT_DELAY();

/*短延时*/

CLK=0;/*时钟信号为0*/

SHORT_DELAY;/*短延时*/

BIT_COUNT--;

if(BIT_COUNT>0)

goto

SEND_LOOP;/*DJNZBIT_COUNT,SEND_LOOP;

DAT=0;/*将DAT清0*/

}

void

LONG_DELAY(void)/*长延时子程序*/

{

TIMER=25;

/*定时25秒*/

DELAY_LOOP:TIMER--;/*延时循环*/

if(TIMER>0)

goto

DELAY_LOOP;/*如果TIMER大于0,跳转到DELAY_LOOP*/

}/*RET*/

void

SHORT_DELAY(void)/*短延时子程序*/

{

TIMER=4;/*MOVTIMER,#4;

/**/

DELAY_LOOP1:TIMER--;/*延时循环*/

if(TIMER>0)

goto

DELAY_LOOP1;/*如果TIMER大于0,跳转到DELAY_LOOP1*/

}

void

RECEIVE(void)/*接收子程序*/

{

BIT_COUNT=8;/*MOVBIT_COUNT,#8*/

DAT=1;/*SETBDAT*/

LONG_DELAY();/*CALLLONG_DELAY*/

RECEIVE_LOOP:CLK=1;/*SETBCLK*/

SHORT_DELAY();/*CALLSHORT_DELAY*/

AA=DATA_IN;/*MOVA,DATA_IN*/

AA=_crol_(AA,1);/*RLAA*/

DATA_IN=AA;/*MOVDATA_IN,A*/

CY=DAT;/*MOVC,DAT*/

data_in0=CY;/*MOVDATA_IN.0,C*/

CLK=0;/*CLRCLK*/

SHORT_DELAY();/*CALLSHORT_DELAY*/

BIT_COUNT--;/**/

if(BIT_COUNT>0)

goto

RECEIVE_LOOP;/*如果BIT_COUNT大于0,跳转到DELAY_LOOP*/

DAT=0;/*CLR

DAT*/

}

七.

实验截图

实验六

电机调速控制实验

一.

实验内容

连线并编制程序,产生脉冲信号,控制直流电动机的运行。

二.

实验目的

1.

掌握采用单片机控制直流电动机的硬件接口技术。

2.

掌握直流电动机驱动程序的设计与调试方法。

3.

熟悉直流电动机的工作特性。

三.

实验电路

4.

连线方法

电路单元

2单元

电机单元

电机单元

连接一

P10-P13

AD4-AD7

连接二

GND

CS1

连接三

GND

GND(有跳线)

连接四

VCC

VCC(有跳线)

5.

实验程序

#include

typedef

unsigned

char

Byte;

sbit

PAA=P1^0;

sbit

PBB=P1^2;

sbit

PCC=P1^1;

sbit

PDD=P1^3;//设置引脚

void

DelayXms()//延时程序

{

int

i,j;

for(i=0;i

#include

int

f,f0;

void

main()

{

TMOD=0X51;

TH0=0X9E;

TL0=0X58;

TH1=0X00;

TL1=0X00;

ET0=1;

EA=1;

TR0=1;

TR1=1;

while(1);

}

void

time1()

interrupt

1

using

2

{

EA=0;

TR0=0;

TR1=0;

f=TL1+TH1*256;

f0=f*2;

}

八.

实验截图

实验八

微型打印机接口控制实验

一.

实验内容:

将实验仪接上微型打印机,控制打印机打印出各种效果的汉字和字符。

二.

实验目的:

1.

了解微型打印机接口及其打印字符的方法;

2.

了解微型打印机打印汉字的方法;

3.

了解单片机与微型打印机的连线方法。

三.

有关说明:

l

并行接口连接

接口与引脚定义:本系列打印机并口与CENTRONICS

兼容,支持BUSY/ACK

握手协议,接口插座如下图:

并行接口各引脚信号的定义如下图表所示:

注:

1.“入”表示输入到打印机。

2.“出”表示从打印机输出。

3.信号的逻辑电平为TTL

电平。

l

并行接口引脚信号时序

并口时序如下图所示:

四.

实验电路:

五.

连线方法:

电路单元

第2单元

打印机

连接1

P0.0-P0.7

Data1-Data8(3,5,7,9,11,13,15,17)

连接2

P3.7

/STB(1)

连接3

P3.2(INT0)

BUSY(21)

连接4

Gnd

18

六.

实验程序

l

单片机控制打印机时汇编例程

BUSY

EQU

P3.2

;

定义BUSY

信号引脚

nSTB

EQU

P3.7

;

定义nSTB

信号引脚

JB

BUSY,$

;

等待打印机到空闲

MOV

P1,A

;

送数据到数据口

CLR

nSTB

;

置nSTB

为低电平

NOP

;

延长nSTB

信号脉冲宽度以满足时序要求

nop

nop

SETB

nSTB

;

置nSTB

为高电平(此时数据将被读入打印机)

RET

print_content:

DB

北京炜煌

DB

0dh

END

l

单片机C51

例程

//

北京炜煌科技打印机示例程序

//

Nocky

Tian

//

2007-07-17

#include

//

Hardware

configuration

#define

PRINTER_DATA

P1

//

定义打印机数据线端口

sbit

BUSY

=

P3^2;

//

定义打印机忙信号引脚

sbit

nSTB

=

P3^7;

//

定义打印机nSTB

信号引脚

sbit

PE

=

P3^3;

//

定义打印机纸状态检测信号引脚

sbit

nACK

=

P3^2;

//

定义打印机应答信号引脚

sbit

nERR

=

P3^1;

//

定义打印机错误检测信号引脚

sbit

nSEL

=

P3^0;

//

定义打印机在线检测信号引脚

#define

CR

0x0d

#define

LF

0x0a

void

PrintByte(unsigned

char

byte_data);

void

PrintString(char*

str);

void

PrintByteN(unsigned

char*

data_src,unsigned

char

N);

void

main(void)

{

char

str[]

=

“Printer

demo“;

PrintString(“北京炜煌WH“);

PrintByte(CR);

while(1);

}

/*

PrintByte()

Send

a

byte

to

printer

Nocky

Tian

@

2006-7-17/

#include

void

PrintByte(unsigned

char

byte_data)

{

while(

BUSY

==

1

){

}

PRINTER_DATA

=

byte_data;

nSTB

=

0;

_nop_();

//

调整nSTB

信号脉宽

nSTB

=

1;

}

/*

PrintString()

Print

a

string

which

is

ending

with

a

/0

character

To

Excuted

the

print

command

a

addition

CR

character

is

needed

Nocky

Tian

@

2006-7-17/

void

PrintString(char*

str)

{

while(str

){

PrintByte((str++));

}

}

/*

PrintByteN()

Print

N

bytes

through

printer

no

more

than

255

bytes

could

be

printed

by

the

function

If

more

than

255

bytes

need

printing,the

type

of

N

need

changing

to

unsigned

int,even

unsigned

long

if

necessary.

Nocky

Tian

@

2006-07-17/

void

PrintByteN(

unsigned

char*

data_src,//

pointer

to

data

source

unsigned

char

N)

//

number

of

data(byte)

{

while(

N--){

PrintByte(*(data_src++));

}

}

七.

实验截图

    以上《《单片机实验报告》》范文由一流范文网精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »一流范文网»最新范文»《单片机实验报告》
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 一流范文网 如对《《单片机实验报告》》有疑问请及时反馈。All Rights Reserved