发光二极管流水灯实验Word文档下载推荐.docx

上传人:b****4 文档编号:16489925 上传时间:2022-11-24 格式:DOCX 页数:20 大小:1.37MB
下载 相关 举报
发光二极管流水灯实验Word文档下载推荐.docx_第1页
第1页 / 共20页
发光二极管流水灯实验Word文档下载推荐.docx_第2页
第2页 / 共20页
发光二极管流水灯实验Word文档下载推荐.docx_第3页
第3页 / 共20页
发光二极管流水灯实验Word文档下载推荐.docx_第4页
第4页 / 共20页
发光二极管流水灯实验Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

发光二极管流水灯实验Word文档下载推荐.docx

《发光二极管流水灯实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《发光二极管流水灯实验Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。

发光二极管流水灯实验Word文档下载推荐.docx

{

tmp=P0;

P0=(tmp>

>

1)+0x80;

}

实验二开关控制LED数码管实验

1.通过AT89C51读入4位开关K1、K2、K3、K4的输入状态,并按照二进制编码关系0-F输出到数码管显示。

(如K4K3K2K1全部按下,则显示F;

若只有K2按下,则显示2。

2.掌握LED数码管的静态显示。

3.掌握I/O口的控制方法。

 

unsignedchartable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,

0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,};

unsignedcharKEY;

while

(1)

{

KEY=P2;

switch(KEY)

{

case0xff:

P0=table[0];

break;

case0xfe:

P0=table[1];

case0xfd:

P0=table[2];

case0xfc:

P0=table[3];

case0xfb:

P0=table[4];

case0xfa:

P0=table[5];

case0xf9:

P0=table[6];

case0xf8:

P0=table[7];

case0xf7:

P0=table[8];

case0xf6:

P0=table[9];

case0xf5:

P0=table[10];

case0xf4:

P0=table[11];

case0xf3:

P0=table[12];

case0xf2:

P0=table[13];

case0xf1:

P0=table[14];

case0xf0:

P0=table[15];

default:

}

实验三外中断优先级实验

1.理解单片机中断优先级和优先权。

2.用PROTEUS设计,仿真基于AT89C51单片机的中断优先级实验。

3.掌握中断编程方法。

单片机主程序控制P0口数码管循环显示0~8;

外中断0、外中断1发生时分别在P2口、P1口依次显示0~8。

通过实验可演示高优先级可中断低优先级,但低优先级的中断请求不能中断高优先级。

unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};

//共阳数码管的段码

voiddelay(intz)//延时子程序,大约1ms

for(x=110;

for(y=z;

inti0=0,i1=0;

//用于中断0,1显示数码管的变量

inti;

EX0=1;

//开外部中断0

EX1=1;

//开外部中断1

IT0=1;

IT1=1;

PX0=1;

PX1=0;

EA=1;

//开总中断

for(i=0;

9;

i++)//P0循环显示0~8

{

P0=table[i];

delay(200);

}

voidint0()interrupt0//外部中断0优先级高于外部中断1,中断号为0

for(i0=0;

i0<

i0++)//显示0~8

P2=table[i0];

delay(200);

}

voidint1()interrupt2//外部中断1,中断号为2

for(i1=0;

i1<

i1++)//显示0~8

P1=table[i1];

实验四60S倒计时实验

1.通过AT89C51的定时器实现60S倒计时,显示采用两位数码管动态显示。

2.用PROTEUS设计,仿真基于AT89C51单片机的60S倒计时实验。

reg52.h>

sbitGE=P2^1;

sbitSHI=P2^0;

intcount=0,number=60;

unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

voiddelay(intz);

voiddisplay();

voidmain()

EA=1;

ET0=1;

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

while

(1)

display();

voiddelay(intz)

intx,y;

for(x=110;

for(y=z;

voiddisplay()

SHI=0;

GE=1;

P1=table[number%10];

delay(10);

GE=0;

SHI=1;

P1=table[number/10];

voidtime_count()interrupt1

TH0=(65536-50000)/256;

count++;

if(count==20)

count=0;

number--;

if(number<

0)

number=59;

}

实验五矩阵式键盘的设计

1.掌握键盘设计中按键识别的原则。

2.用PROTEUS设计一个常规4×

4的矩阵键盘。

3.键盘编码规则自己定义,分别对应数字键0-9、A-F,按下对应的按键显示在数码管上显示对应的数据。

sbitshow_1=P1^0;

sbitshow_2=P1^1;

sbitshow_3=P1^2;

sbitshow_4=P1^3;

unsignedcharj,k,temp,key;

unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,};

voiddelay(unsignedchari);

voiddisplay(unsignedcharnum);

voidkey_scan();

key_scan();

display(key);

voiddelay(unsignedchari)

for(j=i;

j>

j--)

for(k=110;

k>

k--);

voiddisplay(unsignedcharnum)

P0=table[num];

show_4=0;

voidkey_scan()

P2=0xef;

temp=P2;

temp=temp&

0x0f;

if(temp!

=0x0f)

if(temp!

switch(temp)

case0xe7:

key=0;

break;

case0xeb:

key=1;

case0xed:

key=2;

break;

case0xee:

key=3;

while(temp!

display(key);

P2=0xdf;

case0xd7:

key=4;

case0xdb:

key=5;

case0xdd:

key=6;

case0xde:

key=7;

P2=0xbf;

case0xb7:

key=8;

case0xbb:

key=9;

case0xbd:

key=10;

case0xbe:

key=11;

temp=P2;

display(key);

P2=0x7f;

case0x77:

key=12;

case0x7b:

key=13;

case0x7d:

key=14;

case0x7e:

key=15;

实验六AD转换程序设计

1.掌握转换器ADC0809的使用。

2.用PROTEUS设计,仿真基于AT89C51单片机的A/D转换实验。

3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。

sbitOE=P3^1;

sbitSTART=P3^3;

sbitNUM_1=P3^4;

sbitNUM_2=P3^5;

sbitNUM_3=P3^6;

sbitNUM_4=P3^7;

sbitdp=P1^7;

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedintdate;

voidshow();

START=0;

START=1;

while

(1);

voidover()interrupt0

OE=1;

date=P0;

OE=0;

show();

voidshow()

NUM_3=1;

NUM_2=1;

P1=table[date/51];

dp=1;

NUM_1=0;

delay(5);

NUM_1=1;

P1=table[date%51*100/51/10];

NUM_2=0;

P1=table[date%51*100/51%10];

NUM_3=0;

实验七双机通信实验

1.掌握单片机串口通信程序的设计。

2.了接RS232接口通信的特点。

3.双机通信:

分别把接收到的对方通过逻辑开关输入的信息在本地数码管上显示,如下图甲机的逻辑开关数据为81H,乙机通过串口接收该数据并数码关管显示,而甲机显示乙机发送的数据88H。

voidinit()

TMOD=0X20;

//定时器1方式2

TH1=0XFD;

TL1=0XFD;

//装入初值

TR1=1;

//启动定时器

SM0=0;

SM1=1;

//设置方式1

TI=0;

RI=0;

ES=1;

//打开串口中断

//打开总中断

REN=1;

//接收使能

SBUF=P1;

init();

voidserial()interrupt4

if(RI)

RI=0;

P0=SBUF;

//从缓冲区中把接收的字符放入c中

if(TI)

TI=0;

SBUF=P1;

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

当前位置:首页 > 求职职场 > 简历

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

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