单片机上机操作测验题部分答案.docx

上传人:b****3 文档编号:967969 上传时间:2022-10-14 格式:DOCX 页数:50 大小:482.81KB
下载 相关 举报
单片机上机操作测验题部分答案.docx_第1页
第1页 / 共50页
单片机上机操作测验题部分答案.docx_第2页
第2页 / 共50页
单片机上机操作测验题部分答案.docx_第3页
第3页 / 共50页
单片机上机操作测验题部分答案.docx_第4页
第4页 / 共50页
单片机上机操作测验题部分答案.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

单片机上机操作测验题部分答案.docx

《单片机上机操作测验题部分答案.docx》由会员分享,可在线阅读,更多相关《单片机上机操作测验题部分答案.docx(50页珍藏版)》请在冰豆网上搜索。

单片机上机操作测验题部分答案.docx

单片机上机操作测验题部分答案

单片机上机操作测验题部分答案

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

1.使得8个发光二极管循环点亮,采用定时器方式0使得每个发光二极管点亮的时间为0.5s。

#include<reg51.h>

#include

#defineucharunsignedchar

uchar T_count=0;

//定时中断

voidtoProc()interrupt 1

{

TH0=(8192-5000)/32;//恢复初值

TL0=(8192-5000)%32;

ﻩif(++T_count==100)ﻩ//0.5s移动一位

ﻩ{

ﻩP0=_crol_(P0,1);

ﻩT_count=0;

ﻩ}

//主函数

voidmain()

{

TMOD=0;

TH0=(8192-5000)/32;//5ms定时

TL0=(8192-5000)%32;

EA=1;

ET0=1;

TR0=1;

ﻩP0=0xfe;

while

(1);

}

2.完成下面电路所示的功能,K1,K2对应两个开关按键。

P1口对应发光二极管的状态

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

K1=0,K2=0

K1=0,K2=1

K1=1,K2=0

K1=1,K2=1

#include<reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

sbit k1=P3^2;

sbitk2=P3^3;

//延时

voiddelay(uintx)

{

uchari;

while(--x)

ﻩ{

ﻩﻩfor(i=0;i<120;i++);

ﻩ}

//主函数

voidmain()

ﻩwhile(1)

if((k1==0)&&(k2==0))ﻩ//K1、K2同时按下

ﻩﻩﻩP1=0x00;

ﻩﻩﻩdelay(10);

ﻩ}

ﻩelse if((k1==0)&&(k2==1))ﻩ//K1按下,K2不按

ﻩ{

ﻩﻩﻩP1=0xcc;

ﻩﻩdelay(10);

}

ﻩelseif((k1==1)&&(k2==0))ﻩ//K2按下,K1不按

ﻩ{

ﻩﻩﻩP1=0xf0;

ﻩdelay(10);

ﻩ}

ﻩelse

ﻩ{

ﻩﻩﻩP1=0xff;

delay(10);

ﻩ}

ﻩ}

}

3.在一个数码管上循环显示“H”“E”“L”“L”“O”,循环的时间为1s。

#include

#defineuchar unsignedchar

#defineuintunsignedint

ucharcode tab[]={0xf6,0xf9,0xb8,0xb8,0xbf};

ucharT_count=0;

uchari=1;

voidt0Proc() interrupt1

{

TH0=0x3c;

TL0=0xb0;

if(++T_count==10)

ﻩ{

ﻩﻩP0=tab[i];

ﻩi=(i+1)%5;

ﻩT_count=0;

}

}

voidmain()

ﻩTMOD=1;

TH0=0x3c;

ﻩTL0=0xb0;

EA=1;

TR0=1;

ET0=1;

P0=tab[0];//初始化P0口

ﻩwhile

(1);

4.在6个数码管上分别显示自己学号的后六位数字。

#include

#include<intrins.h>

#defineucharunsigned char

#defineuintunsignedint

ucharcode tab[]={};//学号自己设置

//延时

void delay(uintx)

ﻩuchar i;

ﻩwhile(x--)

{

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

ﻩ}

//主函数

voidmain()

{

ﻩuchark;

ﻩuchar wei=0x01;

P0=~tab[0];

ﻩP2=0x01;

delay(1000);

while

(1)

ﻩ{

ﻩfor(k=1;k<6;k++)

ﻩﻩ{

ﻩﻩwei=wei<<1;

ﻩP0=~tab[k];ﻩ//发送数字段码

ﻩP2=wei;ﻩﻩ//发送位码

ﻩﻩdelay(1000);

ﻩﻩ}

ﻩ}

5.做一个简易30s的倒计时秒表,秒表的显示通过8个发光二极管显示出来。

#include<reg51.h>

#defineucharunsignedchar

void delay1s()

ﻩuchari;

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

{

ﻩﻩTH1=0x3c;

ﻩTL1=0xb0;

TR1=1; //启动T1

while(!

TF1);//判断T1有无请求

TF1=0;

ﻩ}

}

voidmain()

{

ﻩuchari;

uchart;

ﻩTMOD=0x10; //选择T1计时

while

(1)

ﻩfor(i=30;i>0;i--)

{

ﻩﻩt=(((i/10)<<4)|(i%10)); //高四位显示十位,低四位显示个位

ﻩP1=~t;

ﻩﻩdelay1s();

ﻩ }

}

 

6.使用外中断0来控制,去实现下列功能。

其中K1为按键,P1口对应8个发光二极管的状态

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

无按键按下(循环)

有按键按下

#include<reg51.h>

#defineuintunsignedint

#defineucharunsigned char

ucharcodetab[]={0xcc,0x30};

sbitk1=P3^2;

//延时

void delay(uint x)

{

ﻩuchari;

while(--x)

ﻩfor(i=0;i<120;i++);

}

}

void int0Proc()interrupt0

{

P1=0xf0;

//主函数

voidmain()

{

ucharj;

EA=1;

EX0=1;

ﻩIE0=1;

while(1)

{

ﻩﻩif(k1==1)//未按下

ﻩ{

ﻩfor(j=0;j<2;j++)

ﻩﻩﻩ{

ﻩP1=tab[j];

 delay(500);

ﻩﻩﻩ}ﻩﻩ

ﻩ}

}

}

8. 采用定时器方式1使得8个发光二极管按如下方式点亮,循环的时间为2s

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

#include

#define ucharunsignedchar

#defineuint unsignedint

ucharcode tab[]={0x0f,0xf0,0xcc,0x00};

ucharT_count=0;

uchari=1;

voidt0Proc()interrupt 1

{

ﻩTH0=0x3c;

TL0=0xb0;

if(++T_count==20)

{

ﻩP0=tab[i];

ﻩﻩi=(i+1)%4;

ﻩT_count=0;

ﻩ}

}

voidmain()

TMOD=1;

TH0=0x3c;

ﻩTL0=0xb0;

EA=1;

ﻩTR0=1;

ﻩET0=1;

ﻩP0=tab[0];//初始化P0口

while(1);

}

9.在一个数码管上循环显示“0”“1”“5” 3个数字,循环的时间为1s。

#include

#define ucharunsigned char

#defineuintunsignedint

ucharcodetab[]={0xbf,0x86,0xed};

ucharT_count=0;

uchari=1;

voidintoProc()interrupt1

{

TH0=0x3c;

ﻩTL0=0xb0;

ﻩif(++T_count==10)

{

ﻩﻩP0=tab[i];

ﻩi=(i+1)%3;

ﻩT_count=0;

}ﻩ

}

voidmain()

TMOD=1;

ﻩTH0=0x3c;

ﻩTL0=0xb0;

EA=1;

ﻩTR0=1;

ﻩET0=1;

ﻩP0=tab[0];//初始化P0口

ﻩwhile

(1);

}

10.在4个数码管上稳定显示出“A” “C” “E” “P”四个字符。

#include

#defineucharunsignedchar

#define uint unsignedint

voiddelay(uint x)

{

ﻩuchar i;

ﻩwhile(x--)

ﻩ{

ﻩfor(i=0;i<100;i++);

ﻩ}

}

voidmain()

{

ﻩwhile

(1)

{

ﻩP0=0xf7; //A

ﻩP2=0xb9; //C

ﻩP3=0xf9; //E

ﻩP1=0xf3;  //P

ﻩdelay(500);

}

}

12.做一个20s的简易秒表,当按键K1按下时,秒表暂停计数,K2按下时,开始计数。

#include<reg51.h>

#defineuintunsignedint

#defineuchar unsignedchar

uchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbitk1=P3^2;

sbit k2=P3^3;

ucharT_count=0;

uchari=0;

voiddelay(intx)

{

ﻩuchari;

while(x--)

ﻩ{

ﻩfor(i=0;i<100;i++);

ﻩ}

}

voidt0Proc() interrupt1

{

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

当前位置:首页 > 医药卫生 > 临床医学

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

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