找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3008|回复: 6
收起左侧

单片机模块化考试资料(题目与答案)

[复制链接]
ID:264668 发表于 2017-12-21 10:39 | 显示全部楼层 |阅读模式
单片机 模块化考试,根据学习单片机知识,
自己总结的各种典型例题,
程序完善,可以供网友学习参考。

后面附程序文件。

电子信息工程2015级1班
《单片机技术》第一模块能力测试方案
一、具体要求
1.每个学生通过抽签从11个A级操作题目中随机抽取一个操作考试题号,同时从B级操作题目中随机抽取一个操作考试题号。
2.根据题目需要实现的功能,在proteus中画出电路图(包括最小系统电路),并标出每个元器件的参数,在亿图中画出程序流程图,功能分别在Proteus和硬件板中实现。
3.在KEIL中编写程序,产生可执行文件。
4.将可执行文件分别下载到Proteus的单片机中和硬件板的单片机中,实现相应功能。
5.在亿图软件中画出程序流程图。
6.考试时间为1.5个小时。
7.整个考试过程都要用录屏软件Camtasia Studio 8录制下来。
8.考试流程为:
(1)学生打开电脑备考,等待开考指令;
(2)监考老师发送考试开始指令;
(3)考生打开录屏软件进入录屏状态(录全屏,显示右下角时间);考试期间全程不能关闭录屏软件;
(4)在电脑桌面建立个人文件夹(以考生学号和姓名命名);将后面考试产生的所有文件放入该文件夹中;
(5)打开PROTEUS仿真软件画出电路图,并标出各器件参数;
(6)打开亿图软件,画出程序流程图;
(7)打开KEIL编程软件,编写程序,通过编译产生hex文件;
(8)将hex文件下载到PROTEUS仿真软件中的AT89C51中;
(9)若功能不能实现重复(6)(7),直到实现功能为止;
(10)将自己焊接的硬件模块与单片机最小系统连接;
(11)打开STC-ISP程序下载软件,将hex文件下载到最小系统单片机中(实物);
(12)若单片机系统(实物)功能不能实现,重复(6)(10),直到实现功能为止;
(13)举手报告完成考试,老师对各项任务进行检查打分,老师检查完后,学生可关闭录屏软件,并将录屏文件存放在个人的文件夹中,将整个考生文件夹考入监考老师指定的U盘里。随之退出考场。
9.如在考试中发现考生有多余动作视为作弊。如若在考试中发现考生作弊,将不能进行补考。在考生上交的录屏文件中发现有作弊行为的,取消本次成绩,不能进行补考。
10.考试成绩只有两个等级通过和不通过。
考核项目为四个方面:电路图、程序流程图、仿真结果、实物结果,其中任何一项不正确视为没有通过。
11.如在第一次的考试中没能通过,一个星期后可申请补考,填写补考申请书,等待老师补考安排通知。
12.补考的题号也是通过抽签选取。需要抽出两道题,在1.5个小时内完成,可进行多次补考。如果补考没有通过,不能参加下一个模块的考试;如果期末考试还有模块考试不通过的,则不能参加期末考试。该门课程需要重修。
13.考试过程中严格遵守考场纪律,凡夹带书籍、小抄、手机、与他人交谈者,一律按作弊对待,成绩为零分,取消补考机会。
14.考试资格:
在学习笔记上完成14道作业题;
二、考试时间及地点
1.考试时间:2017年9月26日单片机技术课上时间和其他课余时间。学生提出申请后,由教师安排合适的时间进行考试。
2.考试地点:考试时通知。
3.考试用电脑:学生自带电脑。
四、模块测试题
A级题
1.一盏LED灯闪烁,LED灯接在P3.0引脚上;
2.点亮2盏LED灯,LED灯分别接在P3.0和P3.1引脚上;
3.两盏LED灯同时闪烁,LED灯分别接在P3.0和P3.1引脚上;
4.两盏LED灯交替闪烁,一盏亮的时间长,一盏亮的时间短;
5.用位移法轮流点亮8盏LED灯,8盏LED灯水平排列,LED灯轮流从右到左循环点亮;
6.用位移法轮流点亮8盏LED灯,8盏LED灯水平排列,LED灯轮流从左到右循环点亮;
7.用位移法依次点亮8盏LED灯,8盏LED灯水平排列,LED灯依次从右到左依次点亮。
8.用位移法依次点亮8盏LED灯,8盏LED灯水平排列,LED灯依次从左到右依次点亮。
9.用位移法依次熄灭8盏LED灯,8盏LED灯水平排列,LED灯依次从右到左依次熄灭。
10.用位移法依次熄灭8盏LED灯,8盏LED灯水平排列,LED灯依次从左到右依次熄灭。
11.八盏LED灯显示0-255二进制数,亮为1,灭为0,LED灯共阳极连接。
B级题
1.花样流水灯
连接要求:8盏LED灯上下排列接在单片机P2口;
功能要求:1盏从上向下跑,从下向上跑二次;8盏灯同时闪二次;两盏灯同时由两边向中间跑,再从中间向两边跑二次;8盏灯同时闪二次,8盏灯拉幕式点亮,拉幕式熄灭两次;8盏灯同时闪二次;1、3、5亮,2、4、6灭,1、3、5灭,2、4、6亮二次;8盏灯同时闪二次;不断重复上面的过程。
2.简单交通灯
连接要求:交通灯接在单片机的P2口;
功能要求:
在十字路口的两个方向上各设一组红绿黄灯,显示顺序如下表:
南北交通灯显示状态    东西交通灯显示状态    显示时间
红灯    绿灯    15秒左右,没有严格时间要求
红灯    黄灯闪3次    较短时间
绿灯    红灯    15秒左右,没有严格时间要求
黄灯闪3次    红灯    较短时间
循环重复上面状态变化    循环重复上面状态变化    循环重复上面状态变化
3.连续显示0-255个二进制数
连接要求:8盏LED灯水平排列接地,并受8个PNP管控制,其控制端基级通过1k电阻连在P2口。PNP发射极通过300Ω电阻接5V电源,集电极接LED灯。
功能要求:8盏LED灯按顺序依次显示0-255个二进制数,亮表示为1,灭表示为0。

答案.zip

1.54 KB, 下载次数: 12, 下载积分: 黑币 -5

考试题目.doc

22.83 KB, 下载次数: 11, 下载积分: 黑币 -5

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:264668 发表于 2017-12-21 10:40 | 显示全部楼层
【A级题】
【1.一盏LED灯闪烁,LED灯接在P3.0引脚上;】
#include<STC15F2K60S2.H>
#define uint unsigned int
sbit led=P3^0;
/*****延时函数*****/
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
/******************/
void main()
{
        while(1)
       {
           led=0;
           Delayms(200);
           led=1;
           Delayms(200);
        }
}
【2.点亮2盏LED灯,LED灯分别接在P3.0和P3.1引脚上;】
#include <STC15F2K60S2.H>
sbit led1=P3^0;
sbit led2=P3^1;
void main()
{
        led1=0;
        led2=0;
        while(1);
}
【3.两盏LED灯同时闪烁,LED灯分别接在P3.0和P3.1引脚上;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led1=P3^0;
sbit led2=P3^1;
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()
{
        while(1)
        {
                led1=0;
                led2=0;
                Delayms(200);
                led1=1;
                led2=1;
                Delayms(200);
        }
}
【4.两盏LED灯交替闪烁,一盏亮的时间长,一盏亮的时间短;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led1=P3^0;
sbit led2=P3^1;
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()
{
        while(1)
        {
                led1=0;
                led2=1;
                Delayms(1000);
                led1=1;
                led2=0;
                Delayms(200);
        }
}
【5.用‘位移法’轮流点亮8盏LED灯,8盏LED灯水平排列,LED灯轮流从右到左循环点亮;】
           3^0--3^7过程中只有一盏灯亮

#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
sbit led=P2;
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for (j=110;j>0;j--);
}
void main()
{
        uchar temp,i;
        temp=0x01;
        for(i=0;i<8;i++)
        {
                P2=~temp;
                Delayms(200);
                    temp=temp<<1;
        }
}
【6.用位移法轮流点亮8盏LED灯,8盏LED灯水平排列,LED灯轮流从左到右循环点亮;】
    3^7--3^0过程中只有一盏灯亮

#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
sbit led=P2;
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for (j=110;j>0;j--);
}
void main()
{
        uchar temp,i;
        temp=0x80;
        for(i=8;i>0;i--)
        {
                P2=~temp;
                Delayms(200);
                temp=temp>>1;
        }
}

【7.用位移法依次点亮8盏LED灯,8盏LED灯水平排列,LED灯依次从右到左依次点亮。】
                                                          “过程中亮过的不灭”
#include <STC15F2K60S2.H>
#define unint unsigned int
#define unchar unsigned char

sbit led=P2;

char temp;

void Delayms(unint n)
{
        unint i;
        while(n--)
        {
                for(i=123;i>0;i--);
        }
}

void main()
{
        while(1)
        {
                for(temp=0;temp<9;temp++)
                {
                        P2=0xff<<temp;
                        Delayms(500);
                }
               
        }
}
【8.用位移法依次点亮8盏LED灯,8盏LED灯水平排列,LED灯依次从左到右依次点亮。】
                                     “过程中亮过的不灭”
#include <STC15F2K60S2.H>
#define unint unsigned int
#define unchar unsigned char

sbit led=P2^0;

char aa;

void Delayms(unint n)
{
        unint i;
        while(n--)
        {
                for(i=123;i>0;i--);
        }
}

void main()
{
        while(1)
        {
                for(aa=0;aa<9;aa++)
                {
                        P2=0xff>>aa;
                        Delayms(500);
                }
               
        }
}

【9.用位移法依次熄灭8盏LED灯,8盏LED灯水平排列,LED灯依次从右到左依次熄灭。】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}

void main()
{               
        uint i,temp;
        while(1)
        {        P2=0x00;
                delay(500);
                temp=0x01;
                for(i=0;i<8;i++)
                {
                        P2=temp;
                        delay(500);
                        temp=temp<<1;
                        temp=temp|0x01;
                }
        }
}

【10.用位移法依次熄灭8盏LED灯,8盏LED灯水平排列,LED灯依次从左到右依次熄灭。】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}

void main()
{               
        uint i,temp;
        while(1)
        {        P2=0x00;
                delay(500);
                temp=0x80;
                for(i=8;i>0;i--)
                {
                        P2=temp;
                        delay(500);
                        temp=temp>>1;
                        temp=temp|0x80;
                }
        }
}

【11.八盏LED灯显示0-255二进制数,亮为1,灭为0,LED灯共阳极连接。】
#include <STC15F2K60S2.H>
#define uint unsigned int   
#define uchar unsigned char  
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()      
{
uchar temp;
while(1)        
{
  temp++;
  P2=~temp;
  Delayms(200);
}
}  

【B级题】

【1.花样流水灯
连接要求:8盏LED灯上下排列接在单片机P2口;】
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
uchar code led[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
                                0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
                                0x00,0xff,0x00,0xff,
                                0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,
                                0xfe,0xfb,0xef,0xbf,0xaa,0xfd,0xf7,0xdf,0x7f,0x55,0xfe,0xfb,0xef,0xbf,0xaa,0xfd,0xf7,0xdf,0x7f,0x55,
                                0x00,0xff,0x00,0xff};
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()
{        uint i;
        while(1)
        {
                for(i=0;i<72;i++)
                {
                        P2=led[i];
                        Delayms(400);
                }
        }
}

【2.简单交通灯
连接要求:交通灯接在单片机的P2口;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()
{
        while(1)
        {
                P2=0X1E;
                Delayms(1000);
                P2=0X1D;
                Delayms(200);
                P2=0X1F;
                Delayms(200);
                P2=0X1D;
                Delayms(200);
                P2=0X1F;
                Delayms(200);
                P2=0X1D;
                Delayms(200);
                P2=0X1F;
                Delayms(200);
                P2=0X33;
                Delayms(1000);
                P2=0X2B;
                Delayms(200);
                P2=0X3B;
                Delayms(200);
                P2=0X2B;
                Delayms(200);
                P2=0X3B;
                Delayms(200);
                P2=0X2B;
                Delayms(200);
                P2=0X3B;
                Delayms(200);

        }
}

【3.连续显示0-255个二进制数
连接要求:8盏LED灯水平排列接地,并受8个PNP管控制,其控制端基级通过1k电阻连在P2口。PNP发射极通过300Ω电阻接5V电源,集电极接LED灯。
功能要求:8盏LED灯按顺序依次显示0-255个二进制数,亮表示为1,灭表示为0。】
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char

void Delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()      
{
uchar a;
while(1)        
{
  P2=0X00;
  a++;
  P0=~a;
  Delayms(200);
}

}  

回复

使用道具 举报

ID:1 发表于 2017-12-22 01:18 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:259403 发表于 2017-12-24 02:34 | 显示全部楼层
好资料,帮了我的大忙.
回复

使用道具 举报

ID:261637 发表于 2017-12-26 13:44 | 显示全部楼层
帮了我的大忙.谢谢
回复

使用道具 举报

ID:99056 发表于 2017-12-27 12:03 来自手机 | 显示全部楼层
不错不错啊
回复

使用道具 举报

ID:266802 发表于 2017-12-27 16:02 来自手机 | 显示全部楼层
资料非常不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表