文档库 最新最全的文档下载
当前位置:文档库 › 单片机实验题

单片机实验题

四个二极管轮流亮

#include

#define uchar unsigned char

uchar tab[ ]={0x01,0x02,0x04,0x08}; void delay() { uchar ij;

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

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

}

void main()

{ uchar i;

while (1)

{ for(i=0;i<4; i++)

{ Pl=tab[i];

delay();

}

}

}

点亮一只发光二极管

#include

#define uchar unsigned char

void main (void)

{

Pl=0x01;

}

1、点亮8只发光二极管

#include

#define uchar unsigned char

void main (void)

Pl=Oxff;

K 一只发光二极管闪烁控制

#include

#define uchar unsigned char

uchar tab[ ]={0x01 z 0x02,0x04,0x0&0x10,0x20,0x40,0x80}; void delay()

{ uchar ij;

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

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

}

void main()

{ uchar i;

while (1)

{ for(i=0;i<8; i++)

{ Pl=tab[i];

delay();

}

}

}

让8只发光二极管朝相反的方向轮流点亮

#include

#define uchar unsigned char

uchar tab[ ]={ 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; void delay()

{ uchar ij;

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

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

}

void main()

{ uchar i;

while (1)

{ for(i=0;i<8; i++)

{ Pl=tab[i];

delay();

让8只发光二极管从两边开始轮流点亮

#include

#define uchar unsigned char

uchar tab[ ]={ 0x81,0x42,0x24,0x18};

void delay()

{ uchar ij;

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

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

}

void main()

{ uchar i;

while (1)

{ for(i=0;i<4; i++)

{ Pl=tab[i]; delay();

}

}

}

让8只发光二极管从中间开始向两边轮流点亮

#include

#define uchar unsigned char

uchar tab[ ]={ 0x18,0x24,0x42,0x81};

void delay()

{ uchar ij;

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

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

}

void main()

{ uchar i;

while (1)

{ for(i=0;i<4; i++)

{ Pl=tab[i];

delay();

}

}

}

使用单片机的P2 口, P2 口的高半字节接发光二极管,低半字节接开关,编程实现开关对灯的控制(开关

按下灯亮,放开灯灭)。

#in clude

#define uchar unsigned char void delay()

uchar i z j; for(i=0;i<255;i++) for(j=0;j<255;j++);

}

void main()

{

while(l)

{

unsigned char temp; P2=0XFF;

temp=P2&OXOF; temp=temp«4; P2=~temp;

delay();

»

检测4个开关S1~S4的状态,只需识别出单个开关闭合(按下)的状态。例如仅开关S1合上时,数码管显示“1” ;仅开关S2合上时,数码管显示“2” ;仅开关S3合上时,数码管显示“3” ;仅开关S4合上时,数码管显示“4” ;当没有开关合上,或合上的开关多于1个时,数码管均显示"0力o

#include

#define uchar unsigned char

void main()

{

uchar state;

do

P1=OXFF;

state=Pl; state=state&OXOF;

switch(~state)

case 0XF0:P2=0XC0;break;

case 0XFl:P2=0XF9;break; case 0XF2:P2=0XA4;break;

case 0XF4:P2=0XB0;break;

case 0XF8:P2=0X99;break; default:P2=0XC0;break;

}

}while(l);

(1)显示一个H;

#in clude

void main()

{

P2=0x76;

Pl=0xfe;

}

(1)单个数码管循环显示o, 2, 4, 6, 8;#in clude

#define uchar unsigned char

#define uint unsigned int

uchar code dis[]={0x3f/0x5b,0x66/0x7d/0x7f};

void delay(uint t)

{

uchar i;

while(t-) for(i=0;i<200;i++);

void main()

{ uchar i;

Pl=0xfe;

while(l)

{ for(i=0;i<5;i++)

{

P2=dis[i]; delay(900);

}

}

}

在数码管上显示你的8位学号;

# include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code dis[]={0x06/0x07/0x06/0x3t0x7d/0x06/0x7d z0x07};

void delay(uint t)

{

uchar i;

while(t-)

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

}

void main()

{

uchar ij=0x01;

while(l)

{

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

{

Pl=~j;

P2=dis[i];

j=_crol_(j,l);

delay(l);

}

}

}在其中两个数码管上实现从0—99循环显示。

#in clude

# include

#define uchar unsigned char

#define uint unsigned int

uchar code dis[]={0xc0,0xf9,0xa4/0xb0,0x99/0x92/0x82/0xf8/0x80/0x90,};

void delay(uint t)

uchar i; while(t-)

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

void main()

{

uchar ij;

while(l)

{

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

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

Pl=dis[i];

PO=dis[j]; delay(200);

}

}

}

}

动态显示

#in clude

#define uchar unsigned char

#define uint unsigned int

sbit P1_O=P"O;

sbit P1_1=P1A1;

uchar code tab[]={0x3f/0x06/0x5b,0x4f/0x66,0x6d/0x7d/0x07/0x7t0x6f};

void delay(uint t)

{

uchar j;

uint i;

for(i=0;i

for(j=0;j<102;j++);}

while(l)

void main()

uint j;

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

{ P1_O=1;P1_1=O;

P2=tab[j%10];

delay(200);

P1-O=O;P1-1=1;

P2=tab[j/10];

delay(200);

}

}

}

中断插入低四位高四位轮流跳

#in clude

#define uchar unsigned char

void Delay(unsigned int i)

{

unsigned int j;

for(;i>0;i-)

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

{;}

}

void main()

{

EA=1;

EXO=1;

ITO=1;

while(l)

{Pl=Oxff;}

}

void int0() interrupt 0 using 1

{

uchar m;

EXO=O;

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

{

Pl=OxOf;

Delay(400);

Pl=OxfO;

Delay(400);

}

void displayl(uchar weil,uchar shu)

EXO=1;

}

计数器脉冲10次 二极管变化

#in clude

sbit P2_0=P2A 0;

void main()

{

TMOD=0x50;

TH 1=(65536-10)/256;

TLl=(65536-10)%256;

EA=1;

ET1=1;

TR1=1;

P2=0xff;

while(l);

}

void a() interrupt 3

{

THl=(65536-10)/256;

TLl=(65536-10)%256;

P2少! P2_0;

}

60s 倒计时

#in clude

#define guan P0

#define wei P2

#define uchar unsigned char

#define uint unsigned int

uint m=0;

uchar

jk,s=60;

sbit beep=P2A 3;

unsigned char code weiyu[]={0xlf,0x2f,0x4f,0x8f}; unsigned char code table[]={0x3t0x06/0x5b /0x4f /0x66,0x6d /0x7d / 0x07,0x7f /0x6f0x77,0x7cX )x39/0x5e ,0x79,0x71}; void delay(unsigned char xms)

{

for(j=xms;j>0;j-)

for(k=125;k>0;k-);

} wei=0xff;

PO=table[shu];

wei=wei&weiyu[weil]; delay(5); }

void display(uchar a,uchar b)

{

displayl(2,a);

display]⑶ b);

}

void main()

{

TMOD=0x01;

ETO=1;

TRO=1;

EA=1;

while(l)

{

if(m==20)

{

m=0;

s-S

}

al=s/10;

a0=s%10;

display®,aO);

if(s==O)

{

TRO=O;

beep=0;

}

}

}

void TO_TIMER () interrupt 1 { TH0=(65536-46080)/256;

TL0=(65536-46080)%256; m++; }

单片机实验题

四个二极管轮流亮 #include #define uchar unsigned char uchar tab[ ]={0x01,0x02,0x04,0x08}; void delay() { uchar ij; for(i=0; i<255; i++) for(j=0; j<255; j++); } void main() { uchar i; while (1) { for(i=0;i<4; i++) { Pl=tab[i]; delay(); } } } 点亮一只发光二极管 #include #define uchar unsigned char void main (void) { Pl=0x01; } 1、点亮8只发光二极管 #include #define uchar unsigned char void main (void) Pl=Oxff;

K 一只发光二极管闪烁控制 #include #define uchar unsigned char uchar tab[ ]={0x01 z 0x02,0x04,0x0&0x10,0x20,0x40,0x80}; void delay() { uchar ij; for(i=0; i<255; i++) for(j=0; j<255; j++); } void main() { uchar i; while (1) { for(i=0;i<8; i++) { Pl=tab[i]; delay(); } } } 让8只发光二极管朝相反的方向轮流点亮 #include #define uchar unsigned char uchar tab[ ]={ 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; void delay() { uchar ij; for(i=0; i<255; i++) for(j=0; j<255; j++); } void main() { uchar i; while (1) { for(i=0;i<8; i++) { Pl=tab[i]; delay();

单片机原理与应用实验考查题和标准答案

单片机原理与应用实验考查题及标准答案 1.AT89S51内部四个并行I/O口各有什么异同?作用是什么? 答:MCS-51单片机共有四个8位双向并行的I/O端口,每个端口都包括一个锁存器、一个输出驱动器和一个输入缓冲器。但这四个端口的功能不全相同,P0口既可作一般I/O端口使用,又可作地址/数据总线使用;P1口是一个准双向并行口,作通用并行I/O口使用;P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址使用;P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。 2.开机复位后,CPU使用的是那组工作寄存器?他们的地址是设呢么?CPU如何确定和改变当 前工作寄存器组? 答:开机复位后,cpu使用第0组工作寄存器,地址是00H~07H,可通过对PSW状态字寄存器 中的RS1和RS0两位的设置来确定和改变CPU当前使用的工作寄存器组 3.微处理器,微计算机,微处理机,CPU,单片机,嵌入式处理器之间有何区别? 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不 是计算机。而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片 上的用于测控目的的单片微计算机。 嵌入式处理器一般意义上讲,是指嵌入系统的单片机、DSP、嵌入式微处理器。目前多 把嵌入式处理器多指嵌入式微处理器,例如ARM7、ARM9等。嵌入式微处理器相当于通用计算 机中的CPU。与单片机相比,单片机本身(或稍加扩展)就是一个小的计算机系统,可独立 运行,具有完整的功能。而嵌入式微处理器仅仅相当于单片机中的中央处理器。为了满足嵌 入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工 作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 4.AT89S51单片机的片内都集成了哪些功能部件? 答:AT89S51单片机的片内都集成了如下功能部件:(1)1个微处理器(CPU);(2)128 个数据存储器(RAM)单元;(3)4K Flash程序存储器;(4)4个8位可编程并行I/O口(P0 口、P1口、P2口、P3口);(5)1个全双工串行口;(6)2个16位定时器/计数器;(7)1个看 门狗定时器;(8)一个中断系统,5个中断源,2个优先级;(9)25个特殊功能寄存器(SFR),(10)1个看门狗定时器。 5.简述P0,P2口的功能和使用注意事项 答:(1)P0口和P2口都可以作为I/O口使用,P0口作为输出口输出高电平时要外接上拉电阻。 (2)P0口作为地址(低8位)/数据总线使用,P2口作为地址(高8位)总线使用。 6.AT89S51单片机的时钟周期与振荡周期之间有什么关系?一个机器周期的时序如何划分?答:时钟周期是单片机最基本的时间单位。机器周期则是完成某一个规定操作所需要的时间。一个机器周期为6个时钟周期,共12个振荡周期性,依次表示为S1P1、S1P2、… S6P1、S6P2 7.AT89S51单片机的时钟周期机器周期指令周期是如何定义的?当主频为6MHz的时候,一个机 器周期是多长时间?执行一条最短指令需要多长时间? 答:时钟周期:晶振的的振荡周期,为最小的时序单位 机器周期:1个机器周期由12个时钟周期组成。它是计算机执行一种基本操作的时间单位 指令周期,执行一条指令所需要的时间,1个指令周期由1~4个机器周期组成 12/6=2μs,指令周期最短为2μs

单片机练习试题答案解析

单片机练习题答案 一、填空题 1、若单片机振荡脉冲频率为6MHz时,一个机器周期为______2μs________。 2、AT89C51单片机的XTAL1和XTAL2引脚是___外接晶振或时钟__引脚。 3、定时器/计数器的工作方式3是指的将定时器/计数器T0 拆成两个独立的8位计数器。 4、若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为__08~0FH____。 5、写出完成相应功能的汇编指令:将立即数11H送到R2____ MOV R2,#11H ____、使ACC.2置位____ SETB ACC.2__、使累加器的最低2位清零___ ANL A,#0FCH ___。 6、A/D转换的作用是将__模拟____量转为数字量。ADC0809是__8___位的A/D转换芯片。 7、8051的堆栈区一般开辟在用户RAM区的地址为30H~7FH。 8、所谓寻址,其实质就是__如何确定操作数的单元地址问题_。 9、若单片机振荡脉冲频率为12MHz时,一个机器周期为____1μs ______。 10、定时器中断请求发生在__计数溢出的时候_____。 11、中断响应时间是指__从中断请求发生直到被响应去执行中断服务程序所需的时间____。 12、通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方 式称为____程序查询方式___。 13、在中断服务程序中现场保护和现场恢复期间,中断系统应处在__关中断__状态。 14、8051单片机的部硬件结构包括了:中央处理器(CPU)、数据存储器(RAM)、程序存储器、和2个16位定时/计数器以及并行I/O口、串行口、中断控制系统、时钟电路、位 处理器等部件,这些部件通过部总线相连接。 15、MCS-51的堆栈只可设置在RAM的地址为30H~7FH,堆栈寄存器sp是8位寄存器。 16、MCS-51单片机的P0~P4口均是并行I/O口,其中的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的数据总线和地址总线,在P0~P4口中,P0为真正的双相口,P1—P3为准双向口;P3口具有第二引脚功能。 17、若LED为共阳极接法(即负逻辑控制),则字符3的八段代码值(a->dot)应当为__0D__H。 18、MCS-51片20H~2FH围的数据存储器,既可以__字节__寻址又可以位寻址。 19、AT89C51单片机有___2___级中断,___5___个中断源。 20、MCS-51系列单片机的典型芯片型号分别为_____8031或8051_____、_____ AT89C5 1或AT89C52_____、_____ AT89S51或AT89S52____。

单片机实验思考题(不完整,仅做参考)

单片机实验思考题(不完整,仅做参考) 实验一、思考题 1、寄存器寻址与寄存器间接寻址有什么区别? 寄存器寻址是将指令指定的寄存器作为操作数地址,寄存器间接寻址是将指令指定的寄存器内容作为操作数地址。 2、PC指针与SP指针有什么区别? 答:PC指针是16位的存储器,指向即将执行命令的栈顶。SP指针是8位的存储器。指栈顶。 3、DPTR指针与Ri(R0,R1)指针有什么区别? Ri(R0,R1)指针可寻址片内RAM低128B,用DPTR可寻址片外数据存储器的64KB 4、立即寻址与直接寻址有什么区别? 直接寻址指令中直接给出操作数所在的单元地址或位地址,立即寻址中操作数直接由指令给出。 5、同一个特殊功能寄存器不同表达形式。 如累加器A 可表示为 A ACC 或者OEOH 6、三种不同的交换指令的区别是什么? XCH是字节间的整字节交换,XCHD是字节间的低字节交换指令,SWAP是累加器高低半字节交换。 实验二、思考题 1)若两个数据块都在外部数据存储器中,如何实现数据块的传送? 答:选择PC或DPTR指针,用MOVX通过A储存器进行交换。 2)在调试程序时,若不用程序给40H~4FH赋初值,而用键盘在CPU DATA区给40H~4FH单元预赋初值,如何做? 答:在存储器窗口输入D:0X00处键入D:0X40然后再键入需要的值。 实验三、思考题 1.字节与位逻辑运算指令在编程上什么区别?应注意什么? 答:主要在寻址方式的不同使得命令使用不同。应当注意为逻辑

运算的寻址方式是位寻址,改变的数是某一位的0或1。 2.若把两位十六进制数转换成对应的ASCII码,应如何编写程序? 答:注意高八位转化时首先要用SWAP指令,然后再判断转化。 3.采用其它方法设计第一个程序。 4.如何用断点方式调试本程序? 答:在开始调试时用断点按钮和光标配合设定断点然后开始调试 实验四、思考题 1.如何查看上面三个程序的结果。 视图,打开存储器窗口,memory#2查看内部数据,输入指定的单元 2.在程序1中,如果十六进制数未指定是否包含A~F数码,程序应如何修改? 加一步判断字符属于是否属于30H到39H. 字符0到9的ASCII码只要加上30H就可以了;但字符A到F的ASCII码为41H到46H,0AH到0FH加37H。 3.在程序2中,如果要转换的二进制数是十六位的,程序应如何编写? CLR A MOV R2, A ;先清零 MOV R3, A MOV R4, A MOV R5, #16 ;共转换十六位数 LOOP: CLR C MOV A, R1 ;从待转换数的高端移出一位到Cy RLC A MOV R1, A MOV A, R0 RLC A MOV R0, A MOV A, R4 ;送到BCD码的低端 ADDC A, R4 ;带进位加。自身相加,相当于左移一位

单片机实验考核试题.docx

一.实验考核第一类 单片机I/O 口应用 1.实验原理图 2.实验考核内容 题目开关K1每拨动一次,L0〜L7发光二极管按16进制方式加一点亮。 题目2:按下不同的健使得8个发光二级管按照不同形式点亮。按下按键KI, L0 —L7由左至右循环点亮。按下K2,则所有发光二级管同时闪烁。 由图1可知,P3 口接开关K1-K7, P1 口接8个发光二极管LO —L7 K 1 K 2 图1第一类实验原理图

实验考核第二类数据传输实验 实验原理图 由图2可知,RAM CS 插孔连到译码输出P2.7插孔,P1.0连接到L0 (也可 为任意一个I0 口连接到任意一个LED 发光二极管)。 U8 62256 CPU 图2第二类实验原理图 2.实验考核内容 题目 3:将 RAM 中 60H~69H 单元送入 10 个数据:30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H, 39H 。将 60H ~ 69H 单元中的 10 个数据复制到 70H ~ 79H 单元中, 运行结果可通过察看“内存窗口”进行验证。(无需按图2接线即可完 成本实验) 题目 4:将 RAM 中 60H~69H 单元送入 10 个数据:30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H, 39H 。将 RAM 中 60H ~ 69H 单元数据传输到外部 RAM 0000H 开始的内存单元中。(需要按图2进行连接) 题目5:将片外RAM 0000H 开始的10个单元清零,清零完毕使L1闪烁表示该工 作执行完毕。(需要按图2进行连接) Al 9 A2 8 A3 7 A4 6 A5 5 A6 4 A7 3 A8 25 A9 24 A10 21 Al 1 23 A12 2 A13 26 A14 1 D05D2D3D4D5D6D7 12 DI 13 D2 15 D3 16 IM 17 D5 18 D6 19 D7 VCC Rtl I OK CEOEWE 20 _______ 22 RD 27 WR ORANLCS 丄匕)- ■ P27 AO IO 0 12 3 4 A0AIA2A3A4A5A6A7A8A9A1A1AIA1A1

单片机实验1

单片机实验1 实验一、MCS51单片机基本开发环境 1.实验目的: 1) 熟悉软件的集成开发环境 2) 掌握单片机软件设计流程 3) 掌握单片机存贮器结构及各窗口之间的联系 2.实验内容: 1) 用三种方法实现将累加器A内容改为20H 方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 2) 将58H位单元置为1,观察内部RAM中2BH内容的变化 代码: SETB 2BH.0 JMP $ END 这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为 MOV R0,#58H;MOV @R0,#1 这是错误的指令。这就需要认真去了解单片机中的字节地址与位地址的关系。80C51中有位寻址区和字节寻址区。题目中58H为位地址,2BH为字节地址,且58H为2B字节的最低位。由于58H属于位寻址区,可用位操作指令SETB进行置位,SETB 2BH.0执行后,2BH中内容变为01 3) 如果当前状态为有进位、工作寄存器使用区2,请用3种方法设置这种状态 代码:

ANL PSW,#01H MOV A,PSW CJNE A,#01,LAB2 LAB1:JMP LAB1 LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END 以上LAB2写了三段代码,可分别完成题目要求。不过实验时只是对代码进行了错误调试,没有对结果进行检验。其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C,如第二段中MOV P0,#01H ; MOV C,P0.0 ,以及对于位寻址的方式(如需用到“.”隔开)的应用。 4) 编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试(分组完成) 代码: 5) 用程序将堆栈指针指向60H,然后在堆栈中依次压入01,02,03,04,05五个数,观察哪些单元内容发生了变化,各变为多少?从哪些窗口可以发现这些变化?顺序将堆栈中的五个数放入30H~34H 五个单元中,编程实现之。 代码:(分组完成) 3.选做实验内容:数据传送 目的: 1) 掌握8051单片机内部数据存贮器、外部数据存贮器的数据传送特点和应用 2) 掌握MOV,MOVX和MOVC类指令的用法及区别 内容: 1)将片内RAM数据区20H为首地址的十六个字节传送到30H为

单片机课后习题答案(《单片机应用技术》C语言版)

单片机课后习题答案(《单片机应用技术》C 语言版) 单片机课后习题答案 《单片机应用技术》C语言版 1. 实验一:单片机概述与开发环境搭建 题目一:简述单片机的概念及其优势。 答案:单片机是一种集成电路,具有微型化、低功耗、低成本等优势。它可以独立完成各种任务,广泛应用于嵌入式系统中。 题目二:描述单片机开发环境的搭建步骤。 答案:单片机开发环境的搭建步骤如下: 1) 安装C语言编译器; 2) 安装单片机开发工具; 3) 配置单片机开发环境; 4) 创建工程并编写程序; 5) 编译、下载并运行程序。 2. 实验二:基本IO口操作 题目一:使用C语言编写程序,将P0口的四个引脚连接到四个LED灯,实现依次点亮、逐个点亮、全亮和全灭功能。

答案:代码如下: ```c #include #define uchar unsigned char void delay(uchar t) { while (t--); } void main() { P0 = 0xfe; // 1111 1110,点亮第一个LED delay(60000); P0 = 0xfd; // 1111 1101,点亮第二个LED delay(60000); P0 = 0xfb; // 1111 1011,点亮第三个LED delay(60000); P0 = 0xf7; // 1111 0111,点亮第四个LED delay(60000); P0 = 0xff; // 1111 1111,全亮 delay(60000);

P0 = 0x00; // 0000 0000,全灭 while (1); } ``` 题目二:编写程序,通过P1口的第0~3引脚接收外部开关信号,并通过P2口的0~3引脚控制LED灯的亮灭状态。 答案:代码如下: ```c #include #define uchar unsigned char void delay(uchar t) { while (t--); } void main() { uchar temp; while (1) { temp = P1 & 0x0f; // 获取P1口低4位的值 P2 = ~temp; // 反转temp后赋值给P2口 delay(60000);

12电气单片机实验题目说明

12电气《单片机原理与应用》实验题目 1 软件实验说明 软件实验1 C51程序设计 一、实验目的 1、熟悉C51的编程格式及相关定义。 2、熟练掌握单片机的C语言编程方法及程序设计。 3、熟练掌握WA VE6000的C语言程序仿真及调试。 二、实验要求 1、用查表方式编写y=x13+x23+x33。(x为0~9的整数) 2、有10个8位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的数据(1 的个数为偶数)都要存到内RAM50H开始的数据区中。试编写有关程序。 3、有10个8位带符号二进制数,请将10个数按从小到大的顺序排列,并存到内RAM50H 开始的单元中。

2 硬件实验说明 硬件实验一 P1口输入、输出实验 一、 实验要求 1、基本部分: (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 (2)P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。 2、扩展部分: (1) 利用P1口控制发光二极管LED 灯按照下面方式工作: a) LED 灯从左到右依次点亮; b) LED 灯从右到左依次点亮; c) 按照以上步骤重复运行,其中要求灯亮的时间为500ms 。 (2) 利用P1口控制发光二极管LED 灯按照下面方式工作: a )从左到右奇数LED 灯依次点亮; b )从右到左偶数LED 灯依次点亮; c )按照以上步骤重复运行,其中要求灯亮的时间为500ms 。 二、实验目的 1. 学习P1口的使用方法。 2. 学习延时子程序的编写和使用。 三、实验电路及连线 四、实验说明 a) P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用 为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。 b) 8051延时子程序的延时计算问题,对于时钟频率为6MHz 的晶振,下面程序延时时间大约为500ms 。 void delay(unsigned char x) //延时500ms*x { unsigned char i,j,k; //延时500ms do { for(i=10;i>0;i--) for(j=100;j>0;j--) for(k=249;k>0;k--); } while(--x);}

单片机考试题

单片机考试题 复习题 一、填空题 1.通常单片机上电复位时PC=__0000__H,SP=_07___H,通用寄存器则采用第_0____组。 2.MCS-51单片机系列有_5__个中断源。 3.MCS-51系列又分为__51______和____52____两个子系列。4.指令格式由____操作码____和___操作数____这两部分组成。5.8051在物理结构上有__4__个存储空间,它们分别是__片内数据存储区____、 __片外数据存储区__、_片内程序存储区__、__片外程序存储区__。 6.若系统晶振频率为12MHz,则T0工作于定时和计数方式时的最高信号频率分别为__1024__KHz和_512_KHz. 7.当实验箱上晶振频率6.144M,1个机器周期所对应的时间是 _1.95______。最大定时为___128ms________ 8.MCS-51单片机8031 中有___2__个__16____位的定时器/计数器,可以被设定的工作方式有____4_____种。 9、在变址寻址方式中,只能使用累加器A 作变址寄存器,以PC 或___DPTR___ 作基址寄存器。 10、异步串行通信的侦格式由起始位位、数据位位、奇偶校验位和停止位位组成。 11、在定时器工作方式0下,计数器的宽度为13位,如果晶振频率3MHz,则最大定时时间为 32768us 。 12、单片机响应中断后,产生长调用指令LCALL,执行该指令的过程是:首先把 PC 的内容压入堆栈,以进行断点保护,然后把长调用指令的16 位地址送 PC ,使程序执行转向程序存储中的 中断地址区。 13、假定(A)=85H,(R0)=20H,(20H)=0AFH。执行

单片机大作业题目1-30

须知: 1. 大作业的所有题目都应在PROTEUS 7.5(注意:只能使用7.5版本)仿真环境下运行通过。 2. 要求: (1)在keil IDE(μvision3)中完成应用程序设计、并编译; (2)在PROTEUS 7.5下的ISIS Professional中完成电路设计、调试与仿真通过。 题目1 智能电子钟(LCD显示) 设计要求: 以AT89C51单片机为核心,制作一个LCD显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。 (2) 闰年自动判别。 (3) 时间、月、日交替显示。 (4) 自定任意时刻自动开/关屏。 (5) 计时精度:误差≤1秒/月(具有微调设置)。 题目2 电子时钟(LCD显示) 设计要求 以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: ●使用字符型LCD显示器显示当前时间。 ●显示格式为“时时:分分:秒秒”。 ●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。 功能键K1~K4功能如下。 ●K1—进入设置现在的时间。 ●K2—设置小时。 ●K3—设置分钟。 ●K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然

后开始计时。 题目3 秒表 设计要求 应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。设计一个“复位”键,按下“复位”键后,秒表从0开始计时。 题目4 定时闹钟 设计要求 使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟。 定时闹钟的基本功能如下: ●显示格式为“时时:分分”。 ●由LED闪动来做秒计数表示。 ●一旦时间到则发出声响,同时继电器启动,可以扩充控制家电的开启和关闭。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下: (1) K1—设置现在的时间。 (2) K2—显示闹钟设置的时间。 (3) K3—设置闹铃的时间。 (4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。 设置当前时间或闹铃时间如下。 (1) K1—时调整。 (2) K2—分调整。 (3) K3—设置完成。 (4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。 本题目的难点在于4个按键每个都具有两个功能。 题目5 音乐倒数计数器 设计要求 利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方

单片机实验考试题目.

题目一:根据电路图所示的IO接线、编程,应用反转法进行按键识别,并对按键编码显示0-F,无按键的时候显示全灭,并绘制程序流程图。 ORG 0000H AJMP MAIN ORG 0030H ;41H:键值 ;42H:被按键的数量 ;43H:待转换键列值 ;44H:待转换键行值 MAIN:MOV SP,#60H READKEY: MOV 41H,#10H MOV 42H,#00H ACALL KEY_ON ;调用判断是否有键按下程序 JZ TO_DISPLAY ;累加器为零,没有键按下,直接显示全灭; ACALL DELAY ;调用延时程序 ACALL KEY_P ;调用反转法按键处理程序 ACALL KEY_CODE ;调用按键键值处理程序 TO_DISPLAY: ACALL DISPLAY ;调用显示程序 AJMP READKEY ;返回读键状态

KEY_P: ;返回43H:待转换键列值;反转法按键处理程序;返回44H:待转换键行值 MOV P3,#0FH ;低四位输入,高四位输出 MOV A,P3 ;读按键接口 ANL A,#0FH ;保留低四位 MOV 43H,A ;保存到键列值 MOV P3,#0F0H ;高四位输入,低四位输出 MOV A,P3 ;读按键接口 ANL A,#0F0H ;保留高四位 SWAP A ;高低四位互换 MOV 44H,A ;保存到转换键行值 RET DISPLAY: ;显示程序 MOV A,41H ;取键值 MOV DPTR,#DBB ;DPTR指向段码区 MOVC A,@A+DPTR ;查找段码 MOV P2,A ;送显示接口 RET KEY_CODE:;返回值41H:键值;按键键值处理程序 MOV R2,43H ;取待转换键列值 ACALL VALUE_C ;调用按键译码程序 MOV 43H,R4 ;保留转换结果 MOV R2,44H ;取待转换键行值 ACALL VALUE_C ;调用按键译码程序 MOV 44H,R4 ;保留转换结果 MOV A,43H ;查看转换结果 JZ RETURN1 ;如果为零,没有键按下或多个键按下DEC A ;如果有键按下列值减一 MOV B,#04H ; MUL AB ;列×4 MOV 43H,A ;保存数据 MOV A,44H ;取待转换键行值 JZ RETURN1 ;如果为零,没有键按下或多个键按下DEC A ;如果有键按下行值减一 ADD A,43H ;计算键值 MOV R2,A MOV A,#0FH ;16减键值 SUBB A,R2 MOV 41H,A ;真实键值保存 RET RETURN1:MOV 41H,#10H ;没有按键显示全灭 RET DELAY: MOV R7,#0FH ;外层循环

单片机实用技术题库带答案测试题模拟题练习题复习题

1-1、AT89C51单片机内部包含哪些主要逻辑功能部件? 答:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O口、串行通信口、定时器/计数器及中断系统。1-2、程序状态字寄存器PSW的作用是什么?其中状态标志有哪几位?它们的含义是什么? 答:PSW是保存数据操作的结果标志,其中状态标志有CY(PSW.7):进位标志,AC(PSW.6):辅助进位标志,又称半进位标志,F0、F1(PSW.5、PSW.1):用户标志;OV(PSW.2):溢出标志;P(PSW.0):奇偶标志。 1-3、开机复位后,CPU使用的是哪组工作寄存器? 它们的地址如何? CPU如何指定和改变当前工作寄存器组? 答:开机复位后使用的是0组工作寄存器,它们的地址是00H~07H,对程序状态字PSW中的RS1和RS0两位进行编程设置,可指定和改变当前工作寄存器组。RS1、RS0=00H时,当前工作寄存器被指定为0组;RS1、RS0=01H时,当前工作寄存器被指定为1组;RS1、RS0=10H时,当前工作寄存器被指定为2组;RS1、RS0=11H时,当前工作寄存器被指定为3组。 1-4、AT89C51的时钟周期、机器周期、指令周期是如何定义的?当振荡频率为12MHz时,一个机器周期为多少微秒? 答:①时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。 ②CPU取出一条指令至该指令执行完所需的时间称为指令周期,因不同的指令执行所需的时间可能不同,故不同的指令可能有不同的指令周期。 ③机器周期是用来衡量指令或程序执行速度的最小单位。它的确定原则是以最小指令周期为基准的,即一个最小指令周期为一个机器周期。 ④当振荡频率为12MHz时,一个机器周期1微秒 1-5、AT89C51的4个I/O口作用是什么? 8051的片外三总线是如何分配的? 答:AT89C51单片机有4个8位并行I/O端口,分别记作P0、P1、P2、P3口。 ①在访问片外扩展存储器时,P0口分时传送低8位地址和数据,P2口传送高8位地址。P1口通常作为通用I/O口供用户使用。P3口具有第二功能,

单片机原理实训题目

单片机原理实训题目 符号说明:★越多表示题目难度越大*表示扩展要求任务@表示创新设计加分任务 一、题目汇总: 1.彩灯控制器的设计★ 2.电子时钟的设计★ 3.现代交通灯的设计★★ 4.多路抢答器的设计★★ 5.波形发生器的设计★★ 6.点阵广告牌的设计★★★ 7.篮球记分器的设计★★ 8.数字式温度计的设计★★★ 9.步进电机的控制★★ 10.电子音乐盒的设计★★ 11.电风扇模拟控制系统设计★★ 12.洗衣机人机界面的设计★ 13.秒表系统的设计★★ 14.多机串行通信的设计★★★ 15.电子密码锁的设计★★★ 16.4位数加法计算器的设计★★★ 二、选题说明:2~3名同学组成一个团队,团队内部队员进行分工合作,共同致力将设计基本任务完成(即,不带*和@符号的任务),任务后括号内的数字表示分值,要求每名同学在设计完成后都能明白硬件原理及程序的含义。 三、设计时间安排:16、17、18三周 上午8:30~11:30 下午3:00~5:30 有问题需要提问的团队请咨询老师,没有的团队也可以在期间到实验室进行设计,也可以在宿舍进行仿真、编程设计。 四、设计作品提交: (1)课程设计说明书(每个团队提交一份), (2)Proteus仿真或实物, (3)单片机源程序文件。 五、设计考核评定: 最后一周最后两天进行答辩,答辩以团队为单位进行,顺序自由排列,先完成的团队先答辩,后完成的团队后答辩。

题目一:彩灯控制器的设计★ 设计任务:1. 用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭;(30) 2. 可以用输入按钮在几种灯光效果间切换;(20) 3. 可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后 继续之前的效果。(15) 4* 增加自动在几种效果间切换的功能,并设置一个按钮可以在自动模式和手动模式间切换。(10) 5* 使用定时中断延时(5) 6@ 实现其他除1~5中提到的功能(创新部分)(20) 设计提示: 1.LED可以采用共阳极或共阴极接法直接接在并行口,也可以用8255扩展更 多的小灯。 2.多种效果可以放在不同的子程序空间中,主程序通过散转来访问不同的子程 序段。 3.暂停效果可用中断,或定时扫描实现。 参考电路

单片机实验例题及答案

单片机实验考试题 1、用Proteus打开“简易电子琴.DSN',按图编写程序,设计一个简易电子琴。按数字键1〜7,分 别发“斗”、“来”、“米”……音(频率见实验指导书),按键抬起则发音停止,不考虑高八度和低八度音,按下1〜7以外的其它键不发音。 2、用Proteus打开文件“计数器.DSN',当按下键盘上的0〜F十六个键时,能将键值以十六进制形式在四 个数码管上滚动显示。在LED上显示字符A〜F的形式分别为:代 3、用Proteus打开文件“频率计.DSN',图中,在单片机的外部中断0脚接有一个脉冲信号源, 编写程序实现一个频率计的功能,能够测定该脉冲信号源的频率。程序调试时可以修改信号源的频率,比较测量值与设定值的差距,仿真时一般误差在10%内就算正常。修改信号源频率的方法是,右击信号源图标后再左击,打开信号源的属性对话框,修改其中的频率(frequ ncy),不要改变其它属性值,频率可以在1Hz到10000Hz之间设定。 (提示:可以设置一个外部中断0的中断服务程序,每次中断时给某个变量加一;再设置一个定时器中断服务程序,用于计时。每秒钟读一次脉冲数,并将其清零,然后将脉冲数显示在数码管上,每秒钟内的脉冲数就是频率。) 4、用Proteus打开文件“电子秒表.DSN',开机时显示00.00,单位是秒,精确到10毫秒,按“SW1 键启动 或暂停,按“ SW2键时间清零。 提示:关于点亮小数点,每5mS刷新LED时,判断当刷新到第2个LED时将笔划代码中与小数点对应的位(bit7)清零。 5、用Proteus打开文件“播放音乐.DSN',按图设计一个开机就能播放<康定情歌〉的程序,并将其简谱 在数码管上同步滚动显示。此程序也可以下载到实验板上运行。 6用Proteus打开文件“流水灯.DSN',可以看到在单片机89C52的P2 口接有8个发光二极管。编写流水灯的程序,使8个发光二极管每隔约0.5秒依次点亮(每次亮一个),要求开始时从左往右点亮,每按一次按钮SW1后,改变流水的方向。 7、用Proteus打开文件“计数器.DSN',当按下键盘上的0〜9十个数字键时,能将键值在四个数码管上滚 动显示。若按了A〜F六个字母键,则在数码管上显示■- (Over)。 8、用Proteus打开文件“电子秒表.DSN',开机时显示00.00,单位是分、秒,按“ SW1键启动/ 暂停计时, 在暂停状态按“ SW2键分秒清零。在计时状态分和秒之间的小数点闪烁(每秒钟亮半秒,熄半秒),暂停状态常亮。 提示:关于小数点闪烁,每5mS刷新LED时,判断当刷新到第2个LED并且时间是前半秒时将笔划代码中与小数点对应的位清零。 9. 用Proteus打开文件“定时关灯控制器.DSN',按图编写程序设计一个定时关灯控制器。从键盘输入时间 (单位:秒,最大9999秒,最小1秒),按一下A键灯亮,时间每秒减1,减到0时停止, 灯熄灭。可以再次输入时间并启动定时过程。

单片机实验练习题

1.利用8255A可以扩展个并行口,用区分往控制寄存器中写的数据是置位/复位控制字 还是方式控制字。 2.执行MOVX A,@DPTR指令时, MCS—51产生的控制信号是。 3.当单片机复位时PSW= H,这时当前的工作寄存器区是区,R6所对应的存储单元地 址为 H。 4.MCS—51单片机的复位信号是有效。 5.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节 指令后,(PC)= ,(61H)= ,(62H)= 。 6.MCS-51访问片外存储器时,利用信号锁存来自发出的低8位地址信号。 7.MCS-51单片机有级优先级中断。 8.串行口方式2接收到的第9位数据送寄存器的位中保存。 9. 已知1只共阴极LED显示器,其中a笔段为字形代码的最低位,若需显示数字1,则它的 字形代码应为。 10.堆栈的特性是,8051的堆栈一般开辟在,其堆栈指针是。 11.定时器/计数器的工作方式3是指得将___ __拆成两个独立的8位计数器。而另一个定时器/ 计数器此时通常只可作为___ __使用。 12.51系统单片机的EA引脚保持高电平,当地址号小于4K时,CPU访问的是程序存储器, 当地址号大于4K时,CPU访问的是程序存储器,当EA引脚保持低电平,CPU只访问 程序存储器,对于8031来说,它的EA引脚必须接。 13.51系列单片机上电复位后,堆栈区的最大允许范围是个单元。 14.在多机通信中,若字符传送率为100B/s,则波特率等于。 15.在多机通信中,主机发送从机地址呼叫从机时,其TB8位为;各从机此前必须将其 SCON 中的REN位和位设置为1。 16.若由程序设定RS1、RS0=10,则工作寄存器R0~R7的直接地址为___ ____。 17.若累加器A中的数据为01110010B,则PSW中的P=__ ___。 18.在中断服务程序中现场保护和现场恢复期间,中断系统应处在_ ___。 19.8031单片机有并行口,它们不是一般的双向口,而是。因此CPU在执行输 入操作时,应先把口内的置成,才能完成此操作。 20.在8031中,设SP的当前值为50H,若在2000H存入指令HERE:SJMP HERE,当有外部中断 0(首地址为0003H),由此处跳出转向执行中断服务程序,此时SP= (SP)/(SP-1)= PC= 。 21.在MCS-51中,需要外加电路实现中断撤除的。 22.在多机通信中,主机发送从机地址呼叫从机时,其TB8位为1;各从机此前必须将其SCON中 的REN位和位设置为1。 23.具有8位分辨率的A/D转换器,当输入0V-5V电压时,其最大量化误差是。 24.若MCS-51单片机的晶振频率为6.144MHz,ADC0809的CLOCK引脚与单片机的ALE信号相连, 则ADC0809的时钟信号频率为。 25.若MCS-51单片机采用12MHz的晶振,其复位高电平脉冲时间应该超过。 26.MCS-51系统中,若要使PSEN信号有效,应采用的指令操作码为,该信号有效表示CPU 要从存储器读取信息。 27.用串口扩展并口时,串行接口工作方式应选。

单片机试题和答案解析

2013A卷 一、填空题(每空1分,共20分) 1、+1000001的反码是。十进制数-4的8位二进制补码是。 2、计算机所能执行的指令的集合称为。指令的编码规则称为,一般由和操作数两部分组成。 3、CPU一次可以处理的二进制数的位数称为CPU的。 4、当EA为电平时,CPU总是从外部存储器中去指令。 5、89C52单片机有6个中断源,其中内部中断源有个,外部中断源有个。 6、汇编指令中,对程序存储器的访问用指令来访问,外部RAM用指令来访问。 7、C51的数据类型sfr占个字节,C51中整型变量占个字节。 8、指令MOV 20H,#20H中,源操作数的寻址方式是,目的操作数的寻址方式是。 9、定时器T1方式2的8位常数重装初值存放于寄存器中。定时器T0方式0,寄存器用于存放计数初值的低5位。 10、多机通信中,主机的SM2= 。 11、EPROM存储器27C256内部容量是32K字节,若不考虑片选信号,则对其内部全部存储单元进行寻址共需根地址线。 12、波特率倍增位位于特殊功能寄存器中。 13、8155A内部具有1个位减法定时器/计数器。 二、单项选择题(共20题,每题1分,共20分) 1、单片机的应用程序一般存放于()中 A、RAM B、ROM C、寄存器 D、CPU 2、定时器0工作于计数方式,外加计数脉冲信号应接到()引脚。 A、P3.2 B、P3.3 C、P3.4 D、P3.5 3、MCS51单片机在同一优先级的中断源同时申请中断时,CPU首先响应()。 A、外部中断0 B、外部中断1 C、定时器0 D、定时器1

4、ADC0809是()AD的转换器件 A、4通道8位 B、8通道8位 C、4通道12位 D、8通道12位 5、执行中断返回指令后,从堆栈弹出地址送给() A、A B、Ri C、PC D、DPTR 6、串行通信中,发送和接收寄存器是() A、TMOD B、SBUF C、SCON D、DPTR 7、要使MCS-51能响应外部中断1和定时器T0中断,则中断允许寄存器IE的内容应该是() A、98H B、86H C、22H D、A2H 8、要将P1口高4位清0,低4位不变,应使用指令() A、ORL P1,#0FH B、ORL P1,#F0H C、ANL P1,#F0H D、ANL P1,#0FH 9、当选中第1工作寄存器区时,工作寄存器R1的地址是。 A、00H B、01H C、08H D、09H 10、控制串行口工作方式的寄存器是() A、TMOD B、PCON C、SCON D、TCON 11、MCS-51 单片机的晶振频率为12MHz,则MUL AB指令的时间为()μs。 A、1 B、2 C、4 D、8 12、定时器T2的中断服务程序入口地址为()。 A、000BH B、0000H C、001BH D、002BH 13、MCS51单片机复位后,P1口锁存器的值为()。 A、00H B、0FFH C、7FH D、80H 14、POP PSW指令是() A、将PSW的值压入堆栈顶部 B、堆栈顶部一个单元内容弹入PSW C、将PSW的值压入堆栈底部 D、堆栈底部一个单元内容弹入PSW 15、下列运算符不是关系运算符的是() A、> B、< C、= D、!= 16、设a=0x7f,b=a<<2,则b的值为()

相关文档
相关文档 最新文档