单片机与应用操作考核办法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机与应用》操作考核办法
考虑到课程特点与学生学习情况,采用如下考查办法:
出9个试题,每个学生随机抽取一个,要求完成硬件设计、软件设计和系统调试。考核结果按百分制计(硬件设计40%,软件设计40%,调试20%)。
考核时间:50分钟考核地点:躬行楼303(微控制技术实验室)
参考题目
1、循环点亮3个发光二极管,时间间隔可用串口数据控制。(上位机采用scomm32工具发送时间间隔控制数据:0x01:时间间隔1S;0x02:时间间隔2S。默认时间间隔为1S,fosc=11.0592MHz)
2、试用8051单片机产生周期为2ms,占空比可通过串口数据控制的矩形波。(上位机采用scomm32工具发送占空比控制数据:0x01:占空比为25%;0x02:占空比为75%。默认占空比为25%,fosc=11.0592MHz)
3、试用8051单片机产生频率可通过串口数据设置的方波。(上位机采用scomm32工具发送频率控制数据:0x01:f=100Hz;0x02:f=200Hz。默认f=100Hz,fosc=11.0592MHz)
4、现有1个发光二极管D0,试通过串口数据控制D0的点亮。(上位机采用scomm32工具发送控制数据,0x01~D0点亮,0x00~D0熄灭)。
5、现有1个七段LED数码管,试用串口控制数码管的显示。(上位机采用scomm32工具发送数字0~9,数码管显示对应数字)。
6、试用8051单片机实现可通过串口控制不同的循环状态输出。(上位机采用scomm32工具发送控制数据,0x01:循环输出001→010→100;0x02:循环输出001→100→010;默认状态输出为001→010→100。各状态时间间隔1S。fosc=11.0592MHz)
7、试用8051单片机实现可通过串口控制不同的循环状态输出。(上位机采用scomm32工具发送控制数据,0x01:循环输出001→011→010→110→100→101;0x02:循环输出001→101→100→110→010→011;默认状态输出为001→011→010→110→100→101。各状态时间间隔1S。fosc=11.0592MHz)
8、试用8051单片机设计一可通过串口控制8个发光二极管循环点亮的程序,时间间隔为1S。(上位机采用scomm32工具发送控制数据,0x01:循环左移;0x02:循环右移;默认为循环左移。fosc=11.0592MHz)9、编写8051程序检测S0、S1按键状态,并将按键状态通过串口上传PC机。(上位机采用scomm32工具观察按键状态,若S0按下:上传0x00;若S1按下:上传0x01;只有在按键按下瞬间才上传一个数据,按住、不按、松开瞬间都不上传数据)。
物理与电子工程学院
2013.6.9
试题一
#include "reg51.h"
#define COUNT 46080
static unsigned char a=0x01;
void sbuf_init(void)
{
SCON=0x50;
PCON=0x00;
TMOD=(TMOD&0x0f)|0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
void UART_ISR(void) interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
SBUF=a;
while(TI==0);
TI=0;
}
}
union MY
{
unsigned int a;
unsigned char b[2];
};
union MY x;
void TIMER0_ISR (void) interrupt 1
{
unsigned char LED[3]={0XFE,0XFD,0XFB};
static unsigned char i=0,j=0;
TH0=x.b[0];
TL0=x.b[1];
sbuf_init();
ES=1;
EA=1;
j++;
if (a==0x01)
{
P2=LED[i];
if(j==20)
{
i++;
if(i==3)
i=0;
j=0;
}
}
else if (a==0x02)
{
P2=LED[i];
if(j==40)
{
i++;
if(i==3)
i=0;
j=0;
}
}
}
void main(void)
{
TMOD=(TMOD&0xf0)|0x01;
x.a=65536-COUNT;
TH0=x.b[0];
TL0=x.b[1];
ET0=1;
EA=1;
TR0=1;
while(1);
}
试题二
#include "reg51.h"
sbit P2_0=P2^0;
#define COUNT 460
unsigned char a=0x01;
static unsigned char i=0;
void TIMER0_ISR (void) interrupt 1 {
TH0=(65536-COUNT)/256;
TL0=(65536-COUNT)%256;