春季单片机实验报告书28页精选文档.docx

上传人:b****6 文档编号:4449150 上传时间:2022-12-01 格式:DOCX 页数:36 大小:258.80KB
下载 相关 举报
春季单片机实验报告书28页精选文档.docx_第1页
第1页 / 共36页
春季单片机实验报告书28页精选文档.docx_第2页
第2页 / 共36页
春季单片机实验报告书28页精选文档.docx_第3页
第3页 / 共36页
春季单片机实验报告书28页精选文档.docx_第4页
第4页 / 共36页
春季单片机实验报告书28页精选文档.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

春季单片机实验报告书28页精选文档.docx

《春季单片机实验报告书28页精选文档.docx》由会员分享,可在线阅读,更多相关《春季单片机实验报告书28页精选文档.docx(36页珍藏版)》请在冰豆网上搜索。

春季单片机实验报告书28页精选文档.docx

春季单片机实验报告书28页精选文档

实验一I/O口输出实验—LED流水灯实验

一、要练说,得练看。

看与说是统一的,看不准就难以说得好。

练看,就是训练幼儿的观察能力,扩大幼儿的认知范围,让幼儿在观察事物、观察生活、观察自然的活动中,积累词汇、理解词义、发展语言。

在运用观察法组织活动时,我着眼观察于观察对象的选择,着力于观察过程的指导,着重于幼儿观察能力和语言表达能力的提高。

实验电路及连线

“教书先生”恐怕是市井百姓最为熟悉的一种称呼,从最初的门馆、私塾到晚清的学堂,“教书先生”那一行当怎么说也算是让国人景仰甚或敬畏的一种社会职业。

只是更早的“先生”概念并非源于教书,最初出现的“先生”一词也并非有传授知识那般的含义。

《孟子》中的“先生何为出此言也?

”;《论语》中的“有酒食,先生馔”;《国策》中的“先生坐,何至于此?

”等等,均指“先生”为父兄或有学问、有德行的长辈。

其实《国策》中本身就有“先生长者,有德之称”的说法。

可见“先生”之原意非真正的“教师”之意,倒是与当今“先生”的称呼更接近。

看来,“先生”之本源含义在于礼貌和尊称,并非具学问者的专称。

称“老师”为“先生”的记载,首见于《礼记?

曲礼》,有“从于先生,不越礼而与人言”,其中之“先生”意为“年长、资深之传授知识者”,与教师、老师之意基本一致。

MCU模块

其实,任何一门学科都离不开死记硬背,关键是记忆有技巧,“死记”之后会“活用”。

不记住那些基础知识,怎么会向高层次进军?

尤其是语文学科涉猎的范围很广,要真正提高学生的写作水平,单靠分析文章的写作技巧是远远不够的,必须从基础知识抓起,每天挤一点时间让学生“死记”名篇佳句、名言警句,以及丰富的词语、新颖的材料等。

这样,就会在有限的时间、空间里给学生的脑海里注入无限的内容。

日积月累,积少成多,从而收到水滴石穿,绳锯木断的功效。

PB-EDU-011

硬件连接表

P20

D1

P21

D2

P22

D3

P23

D4

P24

D5

P25

D6

P26

D7

P27

D8

+5V

+5V

GND

GND

二、、实验流程图

#include//加载头文件

#include//使用库函数

voiddelay()//定义延时函数

unsignedchari,j;

for(i=0;i<255;i++)

for(j=0;j<255;j++);

main()

P2=0xfe;//最低位是低电位,灌电流

while

(1)

P2=_crol_(P2,1);//移位依次点亮

delay();

实验二定时器实验

一、实验电路及连线

MCU模块

PB-EDU-011

P10

D1

+5V

+5V

GND

GND

硬件连接表

二、实验程序流程图定时中断服务程序

主程序

试验程序如下:

#include

#include//使用库函数

sbitK=P3^2;//定义

voiddelay(inti)//延时

intj;

for(i;i>0;i--)

for(j=0;j<255;j++);

voidinit();//

voidmain(void)

init();//初始化

EA=1;//开总中断

while

(1)

P1=0x00;//全亮

delay(127);

P1=0xff;//全灭

delay(127);//持续

voidinit()

EA=1;//开总中断

EX0=1;//外部中断0

voidinit0()interrupt0

P1=0xfe;//最低位亮

delay(200);

while

(1)

P1=_crol_(P1,1);//带进位循环左移

delay(127);//延时255毫秒

if(K==1)//检测开关状态

break;//

实验三单个外部中断实验

一、实验电路及连线

硬件连接表

MCU模块

PB-EDU-011

P10~P17

D1~D8

INT0

K1

+5V

+5V

GND

GND

二、实验程序流程

主程序框图外部子程序框图

试验程序如下:

#include

unsignedchartime;

sbitK=P1^0;

voidt1_init()

TMOD=0X10;//定时器T1方式1定时16位

IE=0x88;//总中断允许定时器T1中断

TH1=0x3c;//装入时间常数50ms(65536-50000)/256

TL1=0xb0;//(65536-50000)%256

TR1=1;//启动定时器

voidmain()

K=1;//P1.0口置高

t1_init();//中断初始化

time=0;//设定循环初值

while

(1);//等待中断

voidt1_func()interrupt3//中断函数

TH1=0x3c;//装入时间常数50ms

TL1=0xb0;

if(time<20)//循环20次达到1000ms

time=time+1;

elseif(time==20)

time=0;

K=~K;//P1.0口取反闪烁

实验四双单片机通信实验

一、实验电路及连线

硬件连接表

MCU模块

PB-EDU-002

PB-EDU-012

PB-EDU-011

P20~P27

Com1~Com8

P00~P07

L-A—L-H

P10~P13

R1-R4

P14~P17

C1-C4

P33

K1

INT0

INT

+5V

+5V

GND

GND

二、实验流程图

/*试验程序如下*/

#include"reg51.h"

#defineucharunsignedchar

#defineuintunsignedint

#defineoutkP1

#defineoutP0

#defineconP2

ucharcode

seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//共阳极二极管编码

ucharkey_buffer[8]={0xc0,0xc0,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0};//选通数码管,11000000;1100//0000;10111111;10111111;10111111;10111111;11000000;11000000;没什么用,//在程序中重新赋值了

voidseg_scan(void);

ucharscan(void);

voiddelayms(uint);

volatileuchars_seg=0;

bitok;

ucharkey,send,rec;

voidmain(void)

TMOD=0X21;//中断初始化

TH1=0XFD;

TL1=0XFD;//

TR1=1;//启动定时器

TH0=(65536-3000)/256;

TL0=(65536-3000)%256;//装载初值,30ms

TR0=1;//启动定时器0

SCON=0X50;//01010000,

PCON=0X00;//00000000,波特率未加倍

EA=1;//开总中断

EX1=1;//允许外部中断1

IT1=1;//方式1

EX0=1;//允许外部中断0

IT0=1;//方式1

ET0=1;//允许定时器中断

ES=0;//允许串行口中断

while

(1)//

outk=0xf0;

if(ok)//可以显示

ok=0;

seg_scan();//扫描显示

ucharscan(void)

uchark=16,m,n,in;

delayms(10);

outk=0xf0;//判断有键按下

if((outk&0xf0)!

=0xf0)//发生变化,有键按下

for(m=0;m<4;m++)

outk=(0xfe<

in=outk;

for(n=0;n<4;n++)

in=outk;

in=in>>(4+n);//移位扫描高四位

if((in&0x01)==0)//若有变化,被改变

delayms(10);//延时消抖

if((in&0x01)==0)

k=n+m*4;//行数乘以4加上列数

break;

if(k!

=16)

break;//k被改变,则跳出不再循环检测

return(k);//返回数值

voiddelayms(uintj)//延时ms级

uchari;

for(;j>0;j--)

i=250;

while(--i);

i=249;

while(--i);

voidseg_scan(void)//数码管扫描程序

out=key_buffer[s_seg];

con=(1<

s_seg++;

if(s_seg==8)

s_seg=0;//重新开始扫描

voidext0()interrupt0

EX0=0;//关闭外部中断0

key=scan();

if(key!

=16)

send=key,key_buffer[0]=seg[key/10],key_buffer[1]=seg[key%10];

EX0=1;//开启外部中断0

voidtimer0(void)interrupt1

ok=1;//

TH0=(65536-3000)/256;//

TL0=(65536-3000)%256;//30ms的初值装载

out=0xff;//关闭

voidext1()interrupt2//中断传送数据

EX1=0;//外部中断1关闭

ES=0;//关串行口中断,保证顺利发送

SBUF=send;//缓冲器中送入数据

while(!

TI);//等待发送完成,TI=1时,循环结束

TI=0;//软件置零,关中断

ES=1;//开中断

EX1=1;//开外部中断1

voidcom()interrupt4//串行口中断

RI=0;//接收到数据进入中断,软件置零RI

rec=SBUF;//存储接收到的数据

key_buffer[6]=seg[rec/10],key_buffer[7]=seg[rec%10];//存储十位与个位

实验五单片机与PC之间串行通信实验

一、实验电路及连线

使用MCU模块,用串口延长线将其和PC相连。

使用PB006板接入一按键到P3.5,P3.0接到PB005模块的RXD,P3.1接到PB005模块的TXD,。

四、实验说明

1、主要知识点概述:

本实验用到的主要知识点是:

MAX232工作原理和Proteus虚拟终端使用。

在简单的应用中,最常用的是MAX232电路。

它只需要有3条线即可完成通信,分别是第二脚RXD,第3脚TXD,第5脚GND。

串行通信与单片机之间的接口:

由于串行通信的电平逻辑定义是+15V(高电平1)-15V(低电平0)而单片机中分别用5V,0V来表示1,0它们之间必须通过电平转换才可以完成通信。

此设计中将两个虚拟终端按图示挂于电路中,属性分别设置如下:

VT1:

2、实验效果说明:

PROTEUS中,运行仿真后,在弹出虚拟终端窗口中选上HEXDISPLAYMODE,每次按下按键SW1,两个虚拟终端显示51单片机发送的字符01。

实际硬件实验中,连接好硬件后,按下按键,通过串口调试助手查看单片机发送的字符。

VT2:

五、实验流程图

试验程序如下:

#include

sbita=P3^5;//供查询信号

voidinit()

SCON=0x50;

PCON=0x80;//波特率加倍

TI=0;//定时器0

EA=1;//开总中断

ET1=1;

TMOD=0x20;//定时方式1,

TH1=0xfd;//溢出率:

每秒钟溢出的次数,溢出率*定时时间=1秒

TL1=0xfd;//9600,溢出率/16=波特率,定时时间=1/(16*波特率)秒

TR1=1;

main()

init();

while

(1)

if(a==0)//发出了信号

SBUF=0x01;//装入缓冲器

while(!

TI);//等待发送结束

TI=0;//软件置零

while(!

a);//a==0时,循环;a==1时,跳出

voidt1()interrupt3

实验六8255并行I/O扩展实验

一、实验电路及连线

MCU模块

PB-EDU-011

PB-EDU-06

P27

CS0

P00-P07

DB0-DB7

硬件连接表

K1-K8

PB0-PB7

D1-D8

PA0-PA7

ALE

LE

P36,P37

WR,RD

P35

RESET

+5V

+5V

+5V

GND

GND

GND

二、实验程序流程图

试验程序如下:

#include

unsignedcharxdata*con=0x7fff;//地址

unsignedcharxdata*pa=0x7ffc;//地址

unsignedcharxdata*pb=0x7ffd;//地址

main()

*con=0x82;//10000010:

最高位表示有效,设置为PA输出、PB输入

while

(1)

*pb=0xff;//全关

*pa=*pb;//外部输入被传至pa口

实验七矩阵键盘扫描实验

一、实验电路及连线

硬件连接表

MCU模块

PB-EDU-002

PB-EDU-012

P20~P27

L-A~L-G

P10~P13

R1~R4

P14~P17

C1~C4

+5V

+5V

+5V

GND

GND

GND

五、实验流程图

#include

unsignedchartable[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

unsignedcharkey_num;

voiddelay_5ms()

unsignedchari,j;

for(i=0;i<=25;i++)

for(j=0;j<=200;j++)

unsignedcharkey_scan()

/*键盘扫描原理:

①消抖②查询:

key_temp1用于赋给P1口值、key_temp0用于查询P1口值,对低四位赋高电位,按键按下时,高四位赋给是低电位,按键按下时,按下行被置为低,则再反转扫描,查处所在列,综合后知被按下间的位置*/

unsignedcharkey_temp0,key_temp1;

P1=0x0f;

key_temp0=P1;

if(key_temp0!

=0x0f)

delay_5ms();

key_temp0=P1;

if(key_temp0!

=0x0f)

P1=0xf0;

key_temp1=P1;

if(key_temp0==0x0e)

switch(key_temp1)

case0xe0:

key_num=3;break;

case0xd0:

key_num=2;break;

case0xb0:

key_num=1;break;

case0x70:

key_num=0;break;

default:

key_num=0;break;

elseif(key_temp0==0x0d)

switch(key_temp1)

case0xe0:

key_num=7;break;

case0xd0:

key_num=6;break;

case0xb0:

key_num=5;break;

case0x70:

key_num=4;break;

default:

key_num=0;break;

elseif(key_temp0==0x0b)

switch(key_temp1)

case0xe0:

key_num=11;break;

case0xd0:

key_num=10;break;

case0xb0:

key_num=9;break;

case0x70:

key_num=8;break;

default:

key_num=0;break;

elseif(key_temp0==0x07)

switch(key_temp1)

case0xe0:

key_num=15;break;

case0xd0:

key_num=14;break;

case0xb0:

key_num=13;break;

case0x70:

key_num=12;break;

default:

key_num=0;break;

returnkey_num;

main()

while

(1)

key_num=key_scan();//输出键值

P2=table[key_num];//显示

实验八1602液晶显示的控制(44780)

一、实验电路及连线

硬件连接表

MCU模块

PB-EDU-003

PB-EDU-003

P00~P07

DB0~DB7

LD0~LD7

P20

RS

P21

RW

P22

CS

ALE

LE

+5V

+5V

GND

GND

注:

连接好以后,如果液晶无实验现象或显示不对,请通过电位计调整对比度,或按CPU板复位键对系统复位。

二、实验程序流程图

详细的程序流程请参考注释。

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitrs=P2^0;//1602的数据/指令选择控制线

sbitrw=P2^1;//1602的读写控制线

sbiten=P2^2;//1602的使能控制线

ucharcodetable[]="Hello";

ucharcodetable1[]="WelcomeToChina";

voiddelay(uintn)

uintx,y;

for(x=n;x>0;x--)

for(y=110;y>0;y--);

voidlcd_wcom(ucharcom)//1602写命令函数

rs=0;//选择指令寄存器

rw=0;//选择写

P0=com;//把命令字送入P2

delay(5);//延时一小会儿,让1602准备接收数据

en=1;//使能线电平变化,命令送入1602的8位数据口

en=0;

voidlcd_wdat(uchardat)//1602写数据函数

rs=1;//选择数据寄存器

rw=0;//选择写

P0=dat;//把要显示的数据送入P2

delay(5);//延时一小会儿,让1602准备接收数据

en=1;//使能线电平变化,数据送入1602的8位数据口

en=0;

voidlcd_init()//1602初始化函数

lcd_wcom(0x3c);//8位数据,双列,5*7字形功能6

lcd_wcom(0x0c);//开启显示屏,关光标,光标不闪烁功能4

lcd_wcom(0x06);//显示地址递增,即写一个数据后,显示位置右移一位功能3

lcd_wcom(0x01);//清屏功能1

lcd_wcom(0x80+0x05);//显示地址设为80H(即05H,)上排第一位功能8

voidmain()//主函数

ucharn,m=0;

lcd_init();//液晶初始化

for(m=0;m<5;m++)//将table[]中的数据依次写入1602显示

lcd_wdat(table[m]);

delay(200);

lcd_wcom(0x80+0x40);//重新设定显示地址为0xc4,即下排第5位相对地址到绝对地址的变换

for(n=0;n<16;n++)//将table1[]中的数据依次写入1602显示

lcd_wdat(table1[n]);

delay(200);

while

(1);//动态停机

实验九A/D转换实验

一、实验电路及连线

ADC0808是8位的A/D转换器件,在本实验中,它的输出口连接到单片机的P1口,控制信号ALE和START连接到P21,时钟信号CLOCK连接到P20,EOC连接到P23,输出控制信号OE到P27,输入选择地址ADD_A、ADD_B和ADD_C连接到P24-P26。

硬件连接表

MCU模块

PB-EDU-010

PB-EDU-011

P00~P07

D1~D8

P10~P17

DB0~DB7

P20

0809_CLK

P21

0809_ST

P21

0809-ALE

P23

0809_EOC

P24

0809_A

P25

0809_B

P26

0809_C

P27

0809_OE

+5V

+5V

+5V

GND

GND

GND

二、实验程序流程图

#include

sbitclk=P2^0;//时钟信号

sbitst=P2^1;//启动信号

sbi

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

当前位置:首页 > 表格模板 > 调查报告

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

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