当前位置:文档之家› 单片机原理及应用实验教程

单片机原理及应用实验教程

单片机原理及应用实验教程
单片机原理及应用实验教程

实验一矩阵键盘检测 (1)

实验二数模转换DAC0832 的应用 (4)

实验三交通灯实验(综合实验) (6)

实验四风扇控制器模拟(综合实验) (8)

实验一矩阵键盘检测

一、实验目的

学会矩阵键盘的检测,掌握数码管静态显示原理

二、实验内容

依次按下4*4 矩阵键盘上从第1到第20个键,同时在六位数码管上依次显示0、

1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

开发板上数码管为共阴极。静态数码管显示原理: ,一位数码管内一共有8

个发光二极管,对共阴极来说其8个发光二极管的阴极在数码管内部全部接在一

起,也就是“共阴”说法的来源,阳极是独立的,设计电路时一般把阴极接地,

当从外部给任一个阳极加一个高电平时这个发光二极管就亮了,如果想要出一个8

字,并且把右下角的小数点也点亮的话,那可以给8个阳极全送高电平,想让数码

管显示几就给相对应的发光二极管送高电平,因此在显示数字的时候首先做的就

是给0-9 十个数字编好码,在要它亮什么数字的时候直接把这个编码送到它的阳

极就行了。一般的数码管每一段亮至少需要10个毫安的电流,而单片机的IO 口

送不出如此大的电流,所以需要加数码管的驱动电路,可以用上拉电阻的方法,

也可以使用专门的驱动芯片,本开发板使用的74HC573,其输出电流较大,足够

点亮数码管。

本开发板上的六位数码管中每个相同段号(段指a,b,c,d,e,f,g,h)全部是接在

一起的,其中每一个位(阴极)是独立的,所以在做静态显示的时候所有的数码

管只能显示相同的数字,当然可以控制哪几位显示,如果让它们显示不同的数字

那就得给每一个数码管加一套驱动电路。

下面给出本开发板共阴极数码管数字编码:

矩阵键盘的四行分别与P3.0-P3.3 连接,四列分别与P3.4-P3.7 连接。

三、实验电路:

四、实验程序

//4*4键盘检测程序,按下键后相应的代码显示在数码管上

#include

sbit beep=P2^3; //蜂鸣器接口

sbit dula=P2^6; //控制数码管段选的锁存器锁存端

sbit wela=P2^7; //控制数码管位选的锁存器锁存端

unsigned char i=100;

unsigned char j,k,temp,key;

void delay(unsigned char i) //可自定义延时长短的延时函数

{ //当i=10 时大约为10 毫秒

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

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

}

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

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

// 0-F 编码

display(unsigned char num) // 显示子函数

{

P0=table[num]; //将第num 个显示编码送P0 口

dula=1; //一个下降沿将数据锁存

dula=0;

P0=0xc0; //位选通全部的数码管

wela=1; //一个下降沿将数据锁存

wela=0;

}

void main()

{

dula=0; //先关闭两个锁存器

wela=0;

while(1) //进入检测总循环

{

P3=0xfe; //给P3.0 送低电平,其余为高电平

temp=P3; //把P3 口数据读回来

temp=temp&0xf0; //把P3 口与11110000 相与

if(temp!=0xf0) //如果有键按下刚一定不相等,于是进入//下一

步检测

{

delay(10); //延时去抖动

if(temp!=0xf0) //再次判断是否有键按下

{

temp=P3; //判断为有,再次读P3 口数据

switch(temp) //因为刚才是将第一行置的低

{ //在这里再判断是第几列

case 0xee: //如果temp=0xee 则为第一行和第一列key=0; //的交叉点,由此知道是矩阵键盘break; //上的第一个键被按下,给key=0

case 0xde: //以后依此类推key=1; break;

case 0xbe: key=2; break;

case 0x7e: key=3; break;

}

while(temp!=0xf0) //这段程序是检测按键是否被释放

{

temp=P3; //如果没有释放就一直等待并且

temp=temp&0xf0;

beep=0; //蜂鸣器一直响

}

beep=1; //释放后关闭蜂鸣器

display(key); //显示按下相应键值的数据P1=0xfe; //将第一个发光二极管点亮

} //程序测试用)

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(10);

if(temp!=0xf0)

{ temp=P3;

switch(temp)

{

case 0xed: key=4; break;

case 0xdd: key=5; break;

case 0xbd: key=6; break;

case 0x7d: key=7; break;

}

while(temp!=0xf0)

{ temp=P3;

temp=temp&0xf0;

beep=0;

}

beep=1;

display(key);

} }

P3=0xfb;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(10);

if(temp!=0xf0)

{ temp=P3;

switch(temp)

{

case 0xeb: key=8; break;

case 0xdb: key=9; break;

case 0xbb: key=10; break;

case 0x7b: key=11; break;

}

while(temp!=0xf0)

{ temp=P3;

temp=temp&0xf0;

beep=0;

}

beep=1;

display(key); } }

P3=0xf7;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{ delay(10);

if(temp!=0xf0)

{ temp=P3;

switch(temp)

{

case 0xe7: key=12; break;

case 0xd7: key=13; break;

case 0xb7: key=14; break;

case 0x77: key=15; break;

}

while(temp!=0xf0)

{ temp=P3;

temp=temp&0xf0;

beep=0;

}

beep=1;

display(key);

}

} } }

五、实验仪器设备

1.单片机实验系统

2.计算机

六、思考题

按下键盘矩阵后,在六个数码管上依次显示所按下的键所代表的数字。按复位键可以清空显示为0

实验二数模转换DAC0832 的应用

一、实验目的

学会用单片机控制数模转换芯片DAC0832

二、实验内容

通过用单片机控制DAC0832 输出锯齿波,让开发板上发光二极管D12 由暗

到亮变化,循环下去。

DAC0832:DAC0832 是8 位全MOS 中速D/A 转换器,采用R—2RT 形电阻解码网络,转换结果为一对差动电流输出,转换时间大约为1us。使用单电源+5V―+15V 供电。参考电压为-10V-+10V。在此直接选择+5V 作为参考电压。DAC0832 有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此选择直通的工作方式,

将XFER、WR2、CS 管脚全部接数字地。管脚8 接参考电压,在此接的参考电压是+5V。在控制P0 口输出数据有规律的变化将可以产生三角波,锯齿波,梯型波等

波形了。

三、实验电路

四、实验程序

//测试程序下载后可观察到D12 发光二极管由暗变亮再熄灭过程,

#include

sbit wela=P2^7; //数码管位选

sbit dula=P2^6; //段选

sbit dawr=P3^6; //DA 写数据

sbit csda=P3^2; //DA 片选

unsigned char a,j,k;

void delay(unsigned char i) //延时

{ for(j=i;j>0;j--)

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

}

void main()

{ wela=0; dula=0; csda=0; a=0; dawr=0;

while(1)

{ P0=a; //给a 不断的加一,然后送给DA

delay(50); // 延时50ms 左右,再加一,再送DA。

a++;

} }

注意:随着给DA送的数字量的不断增加,其转换成模拟量的电流也不断的增

大,所以我们观察发光二极管D12 就会从暗变亮,熄灭。。。

五、实验仪器设备

1.单片机实验系统

2.计算机

六、思考题

实现简易方波发生器。可观察到发光二极管再亮和灭两种状态之间闪烁。用

示波器观察IOUT引脚电平,可看到方波波形。

实验三交通灯实验(综合实验)

一、实验目的

学习模拟交通控制方法

二、实验内容

模拟交通灯显示。其中,红灯与绿灯显示时间均为50s,中间的黄灯显示时

间为15s。绿灯用八位发光二极管流动闪烁作代表;红灯用八位发光二极管全亮作代表;黄灯用八位发光二极管全亮全灭闪烁作代表。刚开始显示的为绿灯。

显示顺序:绿--黄--红--黄--绿--黄--红--………………

三、实验电路

四、实验程序

#include

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit beep=P2^3;

unsigned int pp;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

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

uchar j,k,l=255;

uchar a1,a0;

uchar shijian,deng=2;

void delay(unsigned int i)

{

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

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

}

void display(unsigned char sh_c,unsigned char g_c)

{ dula=0;

P0=table[sh_c];

dula=1;

dula=0;

wela=0;

P0=0xfe;

wela=1;

wela=0;

delay(5);

P0=table[g_c];

dula=1;

dula=0;

P0=0xfd;

wela=1;

wela=0;

delay(5);

}

void main()

{

TMOD=0x01;

TR0=1;

TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。

TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12

ET0=1;

EA=1;

while(1)

{

if(shijian==0)

{

switch(deng)

{

case 0: shijian=50; //红灯deng=1; break;

case 1: shijian=15; //黄灯deng=2; break;

case 2: shijian=50; //绿灯deng=3; break;

case 3: shijian=15; //黄灯deng=0; break;

} }

if(pp==20)

{ pp=0; shijian--;

}

a0=shijian%10;

a1=shijian/10;

display(a1,a0);

switch(deng)

{

case 1: P1=0X00; //红灯break;

case 2: //黄灯if(shijian%2==0) P1=0x00; if(shijian%2==1) P1=0xff; break; case 3: //绿灯if(shijian%2==0) P1=0x55; if(shijian%2==1) P1=0xaa; break; case 0: if(shijian%2==0) //黄灯P1=0x00; if(shijian%2==1) P1=0xff; break; } } }

void time0() interrupt 1

{ TH0=(65536-46080)/256;

TL0=(65536-46080)%256;

pp++;

}

五、实验仪器设备

1.单片机实验系统

2.计算机

实验四风扇控制器模拟(综合实验)

一、实验目的

1. 掌握PROTEUS ISIS软件仿真单片机原理的方法

2. 温度传感器DS18B20、PWM实验方法等的综合运用,控制电机转速

二、实验内容

基于单片机的温控风扇系统,采用单片机作为控制器,利用温度传感器

DS18B20作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803驱动风扇电机。根据检测到的温度与系统设定的温度的比较实现风扇电机的自动启动和停止,并能根温度的变化自动改变风扇电机的转速,同时用LED 八段数码管显示检测到的温度与设定的温度。

三、实验电路

打开Proteus ISIS编辑环境,按表16.1所列元件清单添加元件。

表16.1元件清单

元件清单

所属类

所属子类

AT89C52

Microprocessor ICs

8051 Family

ULN2803

Analog

Miscellaneous

DS18B20

Data Converters

Temperature Sensors

MOTOR-DC

Electromechanical

7SEG-MPX6-CC

Optoelectronics

7-Segment Displays

CAP

Capacitors

Generic

CAP.ELEC

Capacitors

Generic

CRYSTAL

Miscellaneous

.....

RES

Resistors

Generic

BUTTON

Switches&Relays

Switches

RESPACK-8

Resistors

Resistor Packs

元件全部添加完后,在Proteus ISIS编辑环境中按图16.1所示连接硬件原理图。

四、实验程序

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P1^7;

sbit key1=P1^3;

sbit key2=P1^4;

sbit dianji=P3^1;

float ff;

uint y3;

uchar shi,ge,xiaoshu,sheding=20,gaonum,dinum;

uchar code dispcode[]={ //段码

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar code table[]={ //带小数点的段码

0xbf,0x86,0xdb,0xcf,

0xe6,0xed,0xfd,0x87,0xff,0xef};

uchar dispbitcode[]={ //位选

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar dispbuf[8]={0,0,0,0,0,0,0,0};

void Delay (uint num)// 延时函数

{

while (--num);

}

void digitalshow(uchar a4,uchar a3,uchar a2,uchar a1,uchar a0) {

dispbuf[0]=a0;

dispbuf[1]=a1;

dispbuf[2]=a2;

dispbuf[3]=a3;

dispbuf[4]=a4;

P2=0xff;

P0=dispcode[dispbuf[0]];

P2=dispbitcode[5];

Delay(1);

P2=0xff;

P0=dispcode[dispbuf[1]];

P2=dispbitcode[4];

Delay(1);

P2=0xff;

P0=dispcode[dispbuf[2]];

P2=dispbitcode[2];

Delay(1);

P2=0xff;

P0=table[dispbuf[3]];

P2=dispbitcode[1];

Delay(1);

P2=0xff;

P0=dispcode[dispbuf[4]];

P2=dispbitcode[0];

Delay(1);

}

void dmsec(uint count)

{

uint i; //1ms延时

while(count--)

{

for(i=0;i<125;i++){}

} }

void tmreset(void)

{

DQ=0;

Delay(90); //精确延时大于480us

DQ=1;

Delay(4); //90,4 可以小范围变化}

void tmpre(void)

{

while(DQ);

while(~DQ);

Delay(4);

}

bit tmrbit(void)

{

uint i;

bit dat;

DQ=0;

i++; //i++;大概1us

DQ=1;

i++;

i++;

dat=DQ;

Delay(8);

return(dat); }

uchar tmrbyte(void) //读一个比特{

uchar i,j,dat;

dat=0;

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

{

j=tmrbit();

dat=(j<<7|dat>>1);

}

return(dat);

}

void tmwbyte(uchar dat) //写一个比特{

uint i;

uchar j;

bit testb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1; //从低位开始

if(testb) //Write 1

{

DQ=0; //先拉低

i++;

i++; //>1us

DQ=1;

Delay(4);

}

else //Write 0

{

DQ=0;

Delay(4);

DQ=1;

i++;

i++; //再拉高

} } }

void tmstart(void) //DS18B20开始转换{ dmsec(1);

tmreset();

tmpre();

dmsec(1);

tmwbyte(0xcc); //skip rom

tmwbyte(0x44); //转换}

uchar tmrtemp(void) //读取温度

{ uchar a,b;

tmreset();

tmpre();

dmsec(1);

tmwbyte(0xcc); //skip rom

tmwbyte(0xbe); //转换

a=tmrbyte(); //MSB高8位

b=tmrbyte();

y3=b;

y3=y3|a;

ff=y3*0.0625;

y3=ff*10+0.5;

return(y3); }

void keyscan(void)

{ if(key1==0)

{

dmsec(5);

if(key1==0)

{ sheding++; if(sheding==100)

} while(!key1);

} else if(key2==0)

{ dmsec(5);

if(key2==0) {

sheding--;

if(sheding==0)

sheding=20; }

while(!key2);

} }

void deal(uint tmp) //温度处理{

if(tmp<=sheding)

{

gaonum=0;

dinum=4;

}

else if((tmp>sheding)&&(tmp<=(sheding+5)))

{

gaonum=1;

dinum=3;

}

else if((tmp>(sheding+5))&&(tmp<=(sheding+10))) {gaonum=2;

dinum=2;

}

else if((tmp>(sheding+10))&&(tmp<=(sheding+15))) { gaonum=3;

dinum=1;

} else

{ gaonum=4;

dinum=0;

} }

void dianjik() //电机控制

{

uchar q,i;

for(q=0;q

dianji=0;

digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10); for(i=255;i>0;i--)

{ digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10); } }

for(q=0;q

digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);

for(i=255;i>0;i--)

{ digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);

} } }

void main(void)

{ uint last;

dianji=0;

tmstart();

dmsec(450); //初始化DS18B20

while(1)

{ tmstart();//DS18B20开始转换

dmsec(2);

last=tmrtemp()+160; //读取温度

shi=last/100;

ge=(last%100)/10;

xiaoshu=(last%100)%10;

keyscan();

dmsec(2);

deal(last/10);

dianjik();

} }

五、实验要求

利用Proteus和Keil对系统设计调试,调试与仿真设定温度与环境温度的各种情况设计结果。

单片机教程详细图解-新华龙单片机学习教程

新华龙单片机学习入门教程基于本人学习单片机的痛苦经历,特编写本教程,以此献给广大的单片机初学者,希望您能从中受益。 单片机老鸟寄语:本教程乃最通俗易懂之单片机教材也,如果您还是看不懂,请千万不要涉足此行,以免误入歧途,耽误您的前程*_* 拿到这本教程您首先就会想,什么是 IAP 教学法?是不是一种什么全新的教学方法?当然不是,我可没有那么大的本事,其实这只是我杜撰的一个新名词,意思就是In Applications Program(在应用中编程),当然这只是针对单片机教学,说法是否正确,还得您说了算。 至于为什么要提这种说法,那我倒想说几句。大家都知道,学习电子技术是一件非常无聊和枯燥的事情,为什么会有这种想法,就是因为我们传统的教学方法只重理论而忽略了实践,要一个人记住那些空洞而有无聊的理论知识实在不是一件容易的事,好在我们总算熬过来了,不管如何,也多多少少的学习了一些电子基础知识。 接下来我们应该进一步掌握些什么知识呢,凡涉足此行的朋友都知道,那就是单片机。不过这可不是一件容易的事,倒不是因为单片机很难学,而实在是我们身边很难找到一本专为单片机入门者而编写的教材。翻一下传统的单片机教材,都好象是为已经懂单片机的人而写的,一般总是以单片机的结构为主线,先讲硬件原理,然后是指令,接着讲软件编程,再是系统扩展和外围器件,最后举一些实例(随便说一点:很多书中的实例都是有错误的),很少涉及单片机的基础知识,如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。孰不知,单片机不象模拟电路和数字电路那样,只要搞懂了电路原理,再按照产品要求设计好相应的电路就可以了。它是一种以简单的硬件结构,复杂而有灵活的软件系统来完成设计的通用性产品,不同的设计者只会使用其不同的功能,几乎没有人会把它的全部指令都使用起来,所以学习使用单片机只能靠循序渐进的积累,而不可能先把它全部掌握了再去做产品开发(当然天才就例外了*_*)。 基于以上原因,本人想尝试一种全新的单片机教学方法,打破传统的循序渐进式的教学方法,以单片机的应用为蓝本,结合基本的工业控制系统和实践工作中的具体应用,不分先后顺序,将各条指令贯串于一个又一个的实验中,通过所见即所得的实验来讲解各种指令的编程方法,顺便讲解相关的基本概念,使您尽快地熟悉单片机应用的基本步骤,掌握软件编程的基本方法。 如果您学完了就能成为单片机的入门者,完全可以进行一般产品的开发;下册部分是单片机应用的提高部分,主要学习单片机的系统扩展(比如:ROM 和RAM 存储器的扩展,并行口的扩展,串行口的扩展,A/D 和D/A 与单片机的接口)以及相关开发工具和软件的使用(包括KELL C51 的应用与调试技巧,硬件仿真器的使用)等等,如果您学完了下册部分,那就得恭喜您成为了单片机开发的高手了,不过单片机的技术是在不断的发展和提高的,您也不要太骄傲哦! 为了尽量把最新的单片机知识和应用成果收录进我们的教程,希望您能不吝赐教,共同来努力把我们的教程不断的改进和完善。还是那句题外话,技术是靠不断的积累和交流才会进步的,固封自守只会更加落后。 由于时间和精力的限制,我还是希望在您学习本教程之前,自己先熟悉一点相关的电子技术知识,特别是数字电路基础,这对您学习中碰到的相关概念会有很大的帮助。

单片机原理及应用实验指导书

单片机原理及应用实验指导书 湖南人文科技学院 二00一年三月

实验一I /O口输出实验—LED流水灯实验 一、实验目的 1、掌握单片机最小系统的构成; 2、掌握I/O口的使用及驱动能力的概念; 3、熟悉移位指令和软件延时程序。 二、实验设备与器件 1、计算机1台 2、PROTEUS单片机教学实验箱FB-EDU-P51A 三、实验原理 如下图所示,用单片机控制LED的亮与灭,在实验图中将MCU的P1口与LED的阴极相连,当P1口给低电平时,LED发亮,当P1口给高电平时,

四、实验内容 1、利用51单片机及8个发光二级管等器件,构成一个流水灯单片机系统。 2、用Keil C51软件创建程序 3、对程序进行编译与链接,建立实验程序并编译,加载hex文件,仿真; 4、实验板验证 (1)用ISP下载hex程序到CPU (2)按连接表连接电路 (3)检查验证结果 五、实验报告 在预习报告的基础上写出详细实验过程;画出实验原理图,写出单片机控制程序,写出调试步骤与仿真方法,观察实验现象,得出实验结果,并分析实验结果的正确性。 六、预习要求 1、单片机最小系统的构成 2、单片机I/O口的使用以及软件延时程序的编写。 七、实验参考程序 ORG 00H START: MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A ;循环左移 DJNZ R2,LOOP ;判断移动是否超过8 位, 未超过继续循环 LJMP START DELAY: MOV R5,#20 ;延时程序,延时0.2s D1: MOV R6,#20

单片机原理及其接口技术实验报告

单片机原理及其接口技术实验指导书 实验1 Keil C51的使用(汇编语言) 一.实验目的: 初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。 二.实验设备: ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。 三.实验原理及环境: 在计算机上已安装Keil C51软件。这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。 四:实验内容: 1.掌握软件的开发过程: 1)建立一个工程项目选择芯片确定选项。 2)加入C 源文件或汇编源文件。 3)用项目管理器生成各种应用文件。 4)检查并修改源文件中的错误。 5)编译连接通过后进行软件模拟仿真。 6)编译连接通过后进行硬件仿真。 2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。 3.在2的基础上,实现同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波。 五:程序清单: ORG 0000H AGAIN:CPL P1.0 MOV R0,#10 ;延时0.5秒 LOOP1:MOV R1,#100 LOOP2:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP2 DJNZ R0,LOOP1 SJMP AGAIN END 六:实验步骤: 1.建立一个工程项目选择芯片确定选项 如图1-1所示:①Project→②New Project→③输入工程名test→④保存工程文件(鼠标点击保存按钮)

《单片机原理及应用》实验指导

《单片机原理及应用》实验指导 控制技术实验室

实验一 熟悉 Keil c51 集成开发环境及常用指令实验 (2 课时,验证型) 一、实验目的 1) 了解 8051 典型应用系统的开发过程,熟悉 Keil C51集成开发环境。 2) 掌握单步执行程序,查看专用寄存器和单片机 RAM 的执行结果。 3) 掌握 8051 的寻址方式及常用指令的使用方法。 二、实验内容 1) 基本指令练习。 2) 数据传送(循环方式) 。 3) 位操作指令。 4) 8051 内部 RAM 的 40H~4FH 置初值 A0H~AFH,然后将 40H~4FH 的内容 传送到外部 RAM 中的 C000H~C00FH 单元,再把外部数据 RAM 中的 C000H~C00FH 单元的内容传送到 8051 内部 RAM 中的 50H~5FH 单元。 5) 调试下列程序,熟悉程序调试手段,观测程序运行结果。 ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV SP,#6FH MOV R0,#40H MOV R1,#30H MOV 30H,#40H MOV A,#40H MOV @R0,A ?哪一个存储单元的内容与 A 中内容相等 INC A MOV A,@R1 ?A 中的内容?哪一个存储单元的内容传给 A PUSH ACC POP 32H ?SP 指针的变化?32H 中的内容 MOV A,#5FH SWAP A ?A 中的内容 ?上面程序为顺序执行的程序 XUNHUAN1: MOV R0,#30H MOV R7,#10H CLR A ?这 3 条指令的作用 LOOP1: MOV @R0,A INC A INC R0 DJNZ R7,LOOP1 ?R7 的作用 ?循环程序执行完之后,指出 32H,37H,3BH, 3FH 存储单元中的值,为什么? XUNHUAN2: MOV R0,#30H MOV R1,#40H

单片机原理实验指导书(2012.10)

《单片机原理》实验指导书 计算机科学与技术系2012年8月

目录 第一部分单片机仿真实验 (1) 实验一:流水灯实验 (1) 实验二:中断实验 (4) 实验三:定时器中断实验 (6) 实验四:串行口实验 (9) 实验五:矩阵式键盘输入识别 (13) 实验六:LCD循环显示设计 (19) 第二部分单片机硬件实验............................错误!未定义书签。第一章试验箱系统概述 ...................................错误!未定义书签。 一、系统地址分配........................................... 错误!未定义书签。 二、系统接口定义........................................... 错误!未定义书签。 三、通用电路简介........................................... 错误!未定义书签。第二章实验指导...............................................错误!未定义书签。实验七P1口亮灯和P1口加法器实验........... 错误!未定义书签。实验八简单I/O口扩展(选作).................. 错误!未定义书签。实验九8255控制交通灯................................ 错误!未定义书签。实验十128*64LCD液晶显示 .......................... 错误!未定义书签。

第一部分单片机仿真实验 实验一:流水灯实验 一、实验目的: 通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。 二、实验原理图 实验参考电路图如下: 三、参考实验程序 //流水灯实验 #include //包含单片机寄存器的头文件 sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的

《单片机原理及应用》实验指导书.

单片机原理及应用实验指导书 罗钧付丽编 重庆大学光电工程学院 2010年5月 目录 实验规则 (2 实验一单片机监控程序实验(4学时 (3 附1.1:LAB2000P实验仪 (9 附1.2:验证实验程序 (10 附1.3:K EIL的使用步骤参考 (17 实验二 A/D转换实验 (3学时 (21 附2.1:验证实验程序 (24 实验三 D/A转换实验 (2学时 (25

附3.1:DA转换实验程序 (27 实验四单片机系统综合实验( 3学时 (28 附4.1:实验仪中的温度传感器电路 (30 附4.2:直流电机和步进电机控制接口电路 (31 实验规则 为了维护正常的实验教学次序,提高实验课的教学质量,顺利的完成各项实验任务,确保人身、设备安全,特制定如下实验规则: 一、实验前必须充分预习,完成指定的预习内容,预习要求如下: 1.认真阅读本实验指导书,分析掌握本次实验的基本原理; 2.完成各实验预习要求中指定的内容; 3.明确实验任务。 二、实验时,认真、仔细的写出源程序,进行调试,有问题向指导老师举手提问; 三、实验时注意观察,如发现有异常现象(电脑故障或实验箱故障,必须及时报告指导老师,严禁私自乱动。 四、实验过程中应仔细观察实验现象,认真记录实验数据、波形、逻辑关系及其它现象,记录的原始结果必须经指导教师审阅签字后,方可离开。 五、自觉保持实验室的肃静、整洁;实验结束后,必须清理实验桌,将实验设备、工具、导线按规定放好,并填写仪器设备使用记录。 六、凡有下列情况之一者,不准做实验: 1.实验开始后迟到10 分钟以上者;

2.实验中不遵守实验室有关规定,不爱护仪器,表现不好而又不服从教育者; 七、实验后,必须认真作好实验报告,在规定时间里必须交给实验指导老师,没交实验报告者,视为缺做一次实验。实验报告要求必须包括: 1.写出设计实验程序; 2.总结实验步骤和实验结果; 八、一次未做实验,本实验课成绩视为不及格。 以上实验规则,请同学们自觉遵守,并互相监督。 实验一单片机监控程序实验(4学时 实验预习要求: 1.按照附3学习使用Keil软件。 2.熟悉键盘和显示器接口及工作原理。 3.根据实验原理,读懂验证实验程序,并写出设计性实验源程序。 4.思考题: (1从附1.2监控程序可以看出:六位数码管显示的数据存放在单片机哪个位置? (2参考图1.1A与监控程序,键盘上若数字键7被按下,单片机怎样判断该键被按下? 一、实验目的 1.掌握8031系统中,键盘和显示器的接口方法。 2.掌握键盘扫描和LED八段码显示器的工作原理。

单片机原理及应用实验报告

单片机原理实验报告 专业:计算机科学与技术 学号: :

实验1 计数显示器 【实验目的】 熟悉Proteus仿真软件,掌握单片机原理图的绘图方法 【实验容】 (1)熟悉Proteus仿真软件,了解软件的结构组成与功能 (2)学习ISIS模块的使用方法,学会设置图纸、选元件、画导线、修改属性等基本操作 (3)学会可执行文件加载及程序仿真运行方法 (4)理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制【实验步骤】 (1)观察Proteus软件的菜单、工具栏、对话框等基本结构 (2)在Proteus中绘制电路原理图,按照表A.1将元件添加到编辑环境中(3)在Proteus中加载程序,观察仿真结果,检测电路图绘制的正确性 表A.1

Switches&Relays BUT BUTTON 【实验原理图】 【实验源程序】 #include sbit P3_7=P3^7; unsigned char x1=0;x2=0 ; unsigned char count=0; unsigned char idata buf[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(int time) { int k,j;

for(;time<0;time--) for(k=200;k>0;k--) for(j=500;j<0;j--); } void init() { P0=buf[x1]; delay(10); P2=buf[x2]; delay(10); } void main() { init(); while(1) { x1=count/10; x2=count%10; P0=buf[x1]; delay(10);

单片机原理实验指导书

实验一LED 流水灯 一、实验目的 1. 学习单片机并口的使用方法。 2. 学习延时子程序的编写和使用。 3. 学习集成开发环境MedWin的安装与使用。 4. 学习STC单片机在线下载软件STC-ISP的使用。 二、实验内容 所谓流水灯就是4 个发光二极管(LED)轮流点亮,周而复始。实验板上以P3口作输出口,接有四只发光二极管,当单片机的引脚输出为低电平时发光二极管点亮,为高电平时息灭。编写程序,使4 个发光二极管循环点亮,时间间隔约0.5 秒。 三、实验电路连线 实验板上与本实验有关的硬件如下图所示。4 个LED上串联4 个限流电阻,以防止其电 流过大而烧坏。单片机的主时钟为11.0592MHz。 四、实验说明 1、P3 口是准双向口,它作为输出口时与一般的双向口使用 方法相同。由准双向口结构可知当P1 口用作输入口时必须先对它 置“1”。若不先对它置“1”,读入的数据是不正确的。输出时需 要接上拉电阻,P3 口内部有弱上拉,若将外围电路设计为低有效, 高无效,则无需再外接上拉电阻。 2、为使每次点亮一个LED,应使P3.4~P3.7 4 个端口中有 一个为低,其余均为高,延时一段时间后再点亮另一个LED。 3、编写for 循环构成的软件延时子程序,在MedWin 下模拟 执行,根据MedWin 显示的执行时间,调整循环变量的终值,使延时时间约0.5秒,在晶振频率为11.0592MHz情况下,循环终值约27000。程序如下: void delay(void) { unsigned int i,j,k,l; for(i=0;i<=27000;i++) {j++; k++;l++;}; } #include void main (void) { unsigned char i,c[4] = {0xef,0xdf,0xbf,0x7f};// 从左往右流水 i = 0; while(1) { P3 = c[i & 3]; i++; 11 delay(); } } 五、思考 1、如何使点亮的LED 从右往左移动? 2、如何使点亮的LED 从两边往中间移动?

单片机原理及应用教程第3版习题课后答案

《单片机原理及应用程序》(第三版)习题参考答案 第一章 1. 为什么计算机要采用二进制数?学习十六进制数的目的是什么? 在计算机中,由于所采用的电子逻辑器件仅能存储和识别两种状态的特点,计算机部一切信息存储、处理和传送均采用二进制数的形式。可以说,二进制数是计算机硬件能直接识别并进行处理的惟一形式。十六进制数可以简化表示二进制数。 2. (1) 01111001 79H (2) 0.11 0.CH (3) 01111001.11 79.CH (4) 11101010.101 0EA.AH (5)01100001 61H (6) 00110001 31H 3. (1) 0B3H (2)80H (3) 17.AH (4) 0C.CH 4. (1)01000001B 65 (2) 110101111B 431 5. (1) 00100100 00100100 00100100 (2) 10100100 11011011 11011100 (5) 10000001 11111110 11111111 6. 00100101B 00110111BCD 25H 7. 137 119 89 8.什么是总线?总线主要有哪几部分组成?各部分的作用是什么? 总线是连接计算机各部件之间的一组公共的信号线。一般情况下,可分为系统总线和外总线。 系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB) 地址总线(AB):CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信

息由地址总线输出,然后经地址译码单元处理。地址总线为16位时,可寻址围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的围。在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。 控制总线(CB):由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。 数据总线(DB):CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设9.什么是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线? CPU通过接口电路与外部输入、输出设备交换信息, 一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。 10. 存储器的作用是什么?只读存储器和随机存储器有什么不同? 存储器具有记忆功能,用来存放数据和程序。计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。只读存储器一般用来存放程序,计算机掉电时信息不会丢失。 11.某存储器的存储容量为64KB,它表示多少个存储单元?64×1024 12. 简述微型计算机硬件系统组成。

单片机原理与接口技术实验指导书

《单片机原理与接口技术》实验指导书 主编李鹏、张杰 西南科技大学制造科学与工程学院 2013年3月

制造科学与工程学院 目录 实验一I/O接口实验 (3) 实验二中断系统实验 (5) 实验三定时器/计数器实验 (8) 实验四串行通信实验 (10) 2

西南科技大学实验指导书 3 实验一 I/O 接口实验 一、 实验目的 了解单片机片内4个8位I/O 端口的使用,掌握I/O 端口的应用及C51的编程方法。 二、 实验仪器和设备 1. 单片机实验板 一台 2. 计算机 一台 三、 实验简介 1. 实验内容 上下来回循环点亮八个发光二极管。 2. 实验线路及其连接 图1-1 发光二极管与P1口的连接电路 3. 实验程序参考流程图

制造科学与工程学院 图1-4程序流程图 四、实验步骤 1. 检查实验板连线是否正确 2. 用USB线连接单片机实验板和PC,利用USB接口对实验板供电 3. 用keil软件编写并调试程序,在程序无误的时候编译成hex文件,使用串口线与电脑的串口相连,运行串口下载工具STC-ISP,下载程序到单片机中。 4.观察发光二极管的闪烁状态,是否与实验要求相符。若不符,请修改程序,直到达到实验需求。 五、实验报告 实验类型为验证型实验,要求学生在实验过程中掌握单片机的输入输出接口技术、单片机的编程方法,为后续实验打下坚实的基础。 本次实验报告的内容主要是: 1. 实验目的:本次实验主要达到的要求及目的 2. 实验设备:本次实验的主要设备 3. 实验内容:本次实验的硬件原理图(要求用Protel或Proteus画出原理图)及原理图的说明、程序流程图及详细说明、实验程序等 4. 实验具体步骤:连接线路、输入程序、调试程序、观察结果、修改程序 5. 实验程序上机验证:写出运行后得到的结果,并分析与预习中的结果是否相同 6. 心得体会:本次实验中遇到的问题、解决方法及收获 六、预习要求 1. 复习单片机输入输出接口技术相关内容。 2. 预习本次实验内容,画出流程图、编写程序 4

西南科技大学单片机原理实实验四及代码

2.1实验四中断实验 一、实验目的 加深对MCS-51单片机中断系统基础知识的理解。 二、实验设备 Keil C单片机程序开发软件。 Proteus仿真软件 DP51-PROC单片机综合实验仪。 三、实验容和步骤 容: 利用外部中断输入引脚(以中断方式)控制步进电机的转动。要求:每产生1次中断,步进电机只能步进1步。 实验程序: 使用INT0的中断服务程序控制步进电机正向步进;使用INT1中断服务程序控制步进电机反向步进。 设计思路: ①主程序在完成对INT0和INT1的设置后,可进入死循环(等待中断请求)。 ②为便于实验观察和操作,设INT0和INT1中断触发方式为边沿。 ③步进电机的转动控制由外部中断的服务程序来实现。 ④当前步进电机的相位通电状态信息可以使用片RAM中的一个字节单元来存储。 设计参考: ①主程序需要设置的中断控制位如下: IT0和IT1 外部中断触发方式控制0=电平1=边沿(下降沿) EX0和EX1 外部中断允许控制0=屏蔽1=允许 PX0和PX1 中断优先级级别控制0=低级1=高级 在同级别(PX0=PX1)时INT0的优先级高于INT1 EA 中断允许总控制0=屏蔽1=允许 ②外部中断服务程序的入口地址: 0003H 外部中断0 0013H 外部中断1 预习: 1)编写好实验程序。 2)根据编写的程序和实验步骤的要求制定调试仿真的操作方案。 实验单元电路:

1) 步进电机驱动电路。 步进电机共有4相,当以A →B →C →D →A →B …的顺序依次通电时,电机就会正转,若按相反的顺序依次通电,电机就会反转。每顺序切换一相(1步),电机旋转18°,切换的频率决定电机的转速(切换的频率不能超过电机的最大响应频率)。根据图2.4中的电路,当BA (插孔)输入为高时,对应的A 相通电。 2) SW 电路 开关SW X 拨在下方时,输出端SWX 输出低电平,开关SW X 拨在上方时,输出端SWX 输出高电平。其中SW1和SW3具备消除抖动电路,这样,SW1或SW3每上下拨动一次,输出端产生单一的正脉冲(上升沿在前,下降沿在后)。 3) LED 和KEY 电路 步骤: 1) 在S : \ STUDY \ Keil 文件夹中新建Ex04文件夹(该文件夹用于保存本次实验的所 有容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S : \ STUDY \ Keil \ Ex04文件夹中。 2) 在Keil C 中创建一个新工程,新工程保存为S : \ STUDY \ Keil \ Ex04\Ex04.uv2, 然后选择单片机型号为Generic 中的8051。 3) 设置工程选项,将工程选项设置如下: 图2.5 单脉冲电路原理图 +5V +5V 图2.4 步进电机驱动电路原理图 LED1 LED8 +5V 图2.6 LED 和KEY 电路 +5V

2012单片机原理及应用实验指导书

《单片机原理与应用》 实验指导书 青岛科技大学信息学院

实验一简单程序设计 一、实验目的 1.熟悉实验环境 2.掌握基本指令的使用方法 3.掌握RAM的操作方法 二、预习知识 1. MCS-51存储器组织 2. 简单指令 3. QTH单片机实验仪和模拟调试器集成开发环境 三、实验设备与环境 1.硬件:QTH单片机实验仪 2.软件:QTH模拟调试器集成开发环境 四、实验内容 1. 设从片内30H和32H开始分别存放两个16位无符号二进制数(低8位在低地址,高8位在高地址),完成两个数相加的程序,并将结果放入34H开始的单元。将1122H和3344H分别送入RAM单元,观察结果和CY标志;再分别将8899H和AABBH放入RAM单元,再观察结果和CY标志。 2.将30H单元内的2个BCD数相乘,乘积为BCD数,并把乘积送入31H单元。 3.实现将无符号数扩大6倍,设扩大6倍后的值不超过255。 4.内部RAM从30H开始的连续10个单元存放着10个无符号数,写一段程序将此十个数按增序列排序 5. 以上编写的程序,进行单步执行,观察相应专用寄存器、RAM空间(包括工作寄存器区、位寻址区、用户RAM区)数据的变化情况以及程序存储器的指令代码。 6. 验证堆栈操作的步骤: PUSH direct:①(SP)←(SP)+1, ②direct地址单元的内容压入SP指向的单元。 POP direct:①SP指向的单元内容弹出到以direct为地址的单元, ②(SP)←(SP)-1。 7. 调试上课所讲的例题。 五、实验要求 掌握程序的设计、调试并保证其正确运行;认真完成实验报告。 六、实验报告1、实验目的2、实验内容3、实验采用的器件和连线4、实验结果和现象5、实验过程分析6、实验总结

单片机原理和应用实验指导书

《单片机及使用系统设计》实验指导书 12 / 13 年第一学期 姓名:_____________ 学号:_____________ 班级:_____________ 指导教师:_____________ 计算机信息工程学院 计算机科学和工程系 2009年8月修订

目录 实验一P1口输入输出实验 (1) 实验二定时器实验 (3) 实验三外部中断实验 (5) 实验四串行口实验 (7) 实验五键盘显示实验 (9)

实验一P1口输入输出实验 一、实验目的 掌握单片机I/O口的使用,掌握数据输入输出程序编制的方法。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容和要求 P1口循环点亮8个发光二极管 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程和结果 #include #include unsigned char x=0xfe; void delay(long time) { while(time>0) time--; } void main() {while(1) { P1=x; delay(37620); x=_crol_(x,1); }} 六、实验小结和体会 通过本实验,懂得如何安装kell软件以及实验仿真板,懂得KEIL C51单片机仿真软件的调试,初步了解并熟悉实验板上单片机I/O口和LED灯的电路结构,能通过软件修改程序实现仿真板上不同灯的亮灭情况,并希望通过多次试验对

它有更多的了解。 实验二定时器实验 一、实验目的 掌握单片机定时器使用及其编程方法。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容和要求 P1口循环点亮8个发光二极管,循环间隔为2S。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。五、实验过程和结果 #include #include #define uchar unsigned char uchar x=0xfe; uchar count=0; void sysinit() { TMOD=0x01; TH0=0x4C;TL0=0x00; TR0=1;ET0=1; EA=1; } void Timer0() interrupt 1 { count++;

单片机原理实验报告 (格式)

成都工业学院实验报告 评定成绩:评定教师: 课程名称:单片机原理与应用实验类型:验证性 实验项目名称:实验二:基本的输入输出 学生姓名:薛佳伟专业:电子信息工程学号:1603013135 同组学生姓名:谢志宏指导老师:曾一江,袁曦 实验地点:2209 实验日期:2018 年11 月1 日 一、实验目的和要求 进一步熟悉Keil软件的单步和断点的调试方法,熟悉proteus软件的仿真环境,掌握用proteus软件绘制原理图,加载程序进行仿真的基本方法;熟悉片内I/O查询方式输入输出的仿真输出编程方法及无条件指令LJMP与SJMP的应用,完成片内I/O口查询方式输入输出的仿真调试。 二、实验内容和原理 采用查询方式判断SU1开关是否闭合,如果开关闭合,采用循环程序控制方式控制4个灯

轮流点亮,延时方式采用软件延时。 三、主要仪器设备 计算机一台,KEIL仿真软件,Proteus仿真软件,单片机开发板一个。 四、实验步骤 (一)建立设置工程,保存文件 使用keil软件工程建立,输入程序并保存工程SY3.Uv2及SY3.ASM的文件,并对工程进行设置 (二)编译,链接 编译,链接程序,修改编译错误,并生成SY3.HEX文件用于Protues仿真 (三)调用延时程序 将断点设在RET处,设置PC=0100H点击运行,看程序从0100H是否能执行到断点RET 处 (四)调试主程序 1.调试前段程序 调试时,先将“断点”设在LOOP1处,然后按复位按钮使单片机”复位“,程序从0000H 开始执行,看开关为“0”时程序是否停在LOOP1处,若不是,则用单步方式细调。 在调试P0~P3端口时,可选择打开P0~P3口的监视窗口。 2.调试后一段程序 第一步先检查调用指令是否正常。检查调用指令时,将“断点”设在标号DL Y即0100H

《单片机原理》实验指导书proteus

《单片机原理及接口》 实验指导书 莆田学院信息工程学院 2016年2月

目录 实验一仿真系统搭建 (1) 实验二实验系统编程应用 (7) 实验三流水灯实验 (9) 实验四 LED数码管显示实验 (11) 实验五键盘实验 (13) 实验六中断系统实验 (15) 实验七 51定时器实验 (17)

实验一仿真系统搭建 一、实验目的 了解实验设备的软硬件组成,包括keil单片机仿真软件的安装、设置与使用,单片机仿真调试软件的安装、设置与使用,单片机仿真器的功能、结构与使用,51单片机实验板的电路结构、工作原理与使用。 熟悉使用keil单片机仿真软件、仿真调试软件和实验板进行协调工作的方法。熟悉使用至少两种单片机仿真系统建立、设置、调试工作项目的方法。 二、实验原理 整个实验系统由仿真调试软件(keil单片机仿真软件、伟福仿真调试软件)、单片机仿真头(伟福仿真器)和单片机最小板(51单片机实验板)组成或使用Proteus 仿真系统进行硬件仿真。仿真软件进行项目的管理设置,仿真器进行软件的下载与单片机的仿真(IAP),实验板搭载建立各种外围电路。 主要掌握的软件有KEIL编程软件、Proteus硬件仿真软件和其他一些差用软件及硬件构造。 整个实验系统使用时,若使用硬件仿真,第一步安装KEIL软件,第二步安装星研系列仿真调试软件,第三步将仿真器的数据口和电源口连接微机及实验板,进行仿真器驱动安装。第四步将仿真头插入实验板插座(注意仿真头三角箭头标注引脚为第一脚),开机调试。若使用软件仿真,第一步安装KEIL软件,第二步安装Proteus硬件仿真软件,然后用Proteus硬件仿真软件进行电路构建,最后进行程序调试。 1、Keil软件的安装设置:

单片机原理实验报告(详细)

湖南城市学院 实验报告 2018-2019 学年上学期 姓名:*** 班级学号:****** 实验课程:单片机原理及应用 实验室名称:电子工程实验室 湖南城市学院信息与电子工程学院实验中心印制

实验项目名称:实验一指示灯和开关控制器实验 一、实验目的及要求 1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法; 2、熟悉proteus软件,了解软件的结构组成与功能; 3、学会在ISIS模块中进行汇编程序录入、编译和调试; 4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。 二、实验原理 实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还包括时钟电路、复位电路和片选电路。 图1 实验原理图

在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。软件编程原理为:(1)8只发光二极管整体闪烁3次 亮灯:向P2口送入数值0; 灭灯:向P2口送入数值0FFH; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 (2)根据开关状态控制灯亮或灯灭 开关控制灯:将P3口(即开关状态)内容送入P2口; 无限持续:无条件循环。 程序流程图如图2所示。 图2 实验程序流程图

三、实验仪器设备及装置 (1)硬件:电脑一台; (2)仿真软件:Proteus; (3)编程软件Keil uVision4。 其中,仿真软件ISIS元件清单如表1所示。 表1 仿真软件ISIS元件清单 四、实验内容和步骤 (一)实验内容: (1)熟悉ISIS模块的汇编程序编辑、编译与调试过程; (2)完成实验的汇编语言的设计与编译; (3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。 (二)实验步骤: (1)提前阅读与实验相关的阅读材料; (2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制; (3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序; (4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误; (5)观察仿真结果,检验与电路的正确性。

单片机原理与应用实验指导书(学生部分)(2009.4修订)

单片机原理与应用实验指导书 2009年5月

第一章实验箱系统概述一、系统地址分配 (1),存贮器地址分配 (2),I/O地址分配 二、系统接口定义 (1),CZ11:用户实验通讯接口; (2),CZ4:打印接口;

(3),JX0,JX17为系统提供的数据总线接口 (4),CZ7:系统提供的扩展接口; (5),JX12、JX14:液晶显示接口 三、通用电路简介 (1)LED发光二极管指示电路:实验台上包括16只发光二极管及相应驱动电路。见图1-1,Ll—L16为相应发光二极管驱动信号输入端, 该输入端为低电平 “0”时发光二极管亮

图1-6 (2)逻辑电平开关电路:见图1-2。实验台上有8只开关Kl-K8, 与之相对应的K1-K8个引线孔为逻辑电平输出端。开关向上拨相应插孔输出高电平“l”, 向下拨相应插孔输出低电平“0”。 图1-7 (3)单脉冲电路:实验台上单脉冲产生电路如图1-3,标有“”和“”的两个引线插孔为正负单脉冲输出端。附近按钮AN为单脉冲产生按钮,每按一次产生一个单脉冲。 图1-8

(4)分频电路:该电路由一片74LS393组成,见图1-4。T0—T7为分频输出插孔。 该计数器在加电时由RESET信号清零。当脉冲输入为8.0MHZ时,T0—T7输出脉 冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ。 图1-9 (5)脉冲发生电路:实验台上提供一8MHZ的脉冲源,见图1-5,实验台上标有8MHZ 的插孔,即为脉冲的输出端。 图1-10 (6)485接口电路: 图1-11

(完整word版)单片机原理及应用教程第3版习题课后答案

(完整word版)单片机原理及应用教程第3版习题课后答案 亲爱的读者: 本文内容由我和我的同事精心收集整理后编辑发布到文 库,发布之前我们对文中内容进行详细的校对,但难免会 有错误的地方,如果有错误的地方请您评论区留言,我们 予以纠正,如果本文档对您有帮助,请您下载收藏以便随 时调用。下面是本文详细内容。 最后最您生活愉快 ~O(∩_∩)O ~ 1

《单片机原理及应用程序》(第三版)习题参考答案 第一章 1. 为什么计算机要采用二进制数?学习十六进制数的目的是什么? 在计算机中,由于所采用的电子逻辑器件仅能存储和识别两种状态的特点,计算机内部一切信息存储、处理和传送均采用二进制数的形式。可以说,二进制数是计算机硬件能直接识别并进行处理的惟一形式。十六进制数可以简化表示二进制数。 2. (1) 01111001 79H (2) 0.11 0.CH (3) 01111001.11 79.CH (4) 11101010.101 0EA.AH (5)01100001 61H (6) 00110001 31H 3. (1) 0B3H (2)80H (3) 17.AH (4) 0C.CH 4. (1)01000001B 65 (2) 110101111B 431 5. (1) 00100100 00100100 00100100 (2) 10100100 11011011 11011100 (5) 10000001 11111110 11111111 6. 00100101B 00110111BCD 25H 7. 137 119 89 8.什么是总线?总线主要有哪几部分组成?各部分的作用是什么? 总线是连接计算机各部件之间的一组公共的信号线。一般情况下,可分为系统总线和外总线。 系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB) 1

单片机原理实验指导书及其程序

实验一伟福编程软件、编程器、实验箱的使用 一、实验目的 1.掌握仿真软件、编程器、实验箱的安装、使用方法 2.学习P1口的使用方法 3.学习延时子程序的编写和使用 二、实验说明 使用伟福仿真软件Wave6000、编程器、实验箱。 实验时间:3学时。 三、实验内容及步骤 1.启动计算机,按照软件安装说明安装伟福仿真软件,进入开发环境。 2.参照开发环境说明,掌握软件的使用。 3.P1.0 P1.1接发光二极管,参照如下结构,使用软件延时方式,编写程序,控制P1.0以4Hz、P1.0以2Hz的频率闪烁。 4.使用编程器、单片机开发实验箱,调试程序,观察发光二极管的闪烁。 5.写实验报告,内容包括电路原理图,汇编程序,延时的计算,心得体会等 四、程序示例 ;P1.0输出以某频率方波,P1.1以其1/2频率输出方波 ORG 00H SJMP MAIN ;跳转到主程序 ORG 30H MAIN: MOV R0,#02H FP10: CALL DELAY CPL P1.0 DJNZ R0, FP10 CPL P1.1 MOV R0,#02H SJMP FP10 DELAY: MOV R1,#100 DEL1: MOV R2,#50 DJNZ R2,$ NOP NOP DJNZ R1,DEL1 RET END ;思考:在此例中,P1.0、P1.1输出方波的频率究竟是多少?

实验二程序设计实验 一、实验目的: ⑴熟练掌握80C51汇编语言程序设计方法。 ⑵熟练掌握80C51汇编语言程序的调试方法。 二、实验说明 实验时间:2学时。 三、实验内容: 完成从内部数据存储区20H开始的8个单字节数累加、计算平均程序的设计与调试。累加结果存放在29H(高字节)、2AH(低字节),平均数存放在2BH。 四、实验设备: PC机 五、思考: 如何使用软件Wave6000调试所编写的计算程序? 六、实验报告要求 1. 整理好执行正确的程序和数据; 2. 写实验报告,内容包括实验项目、内容,汇编程序及其相应的注释说明,实 验完成情况,心得体会。

《单片机原理及应用》实验指导书

机电工程学院 《单片机原理及应用》实验指导书 学院 班级 姓名 学号 温州大学机电工程学院制

目录 前言 (2) 第一章MCS-51单片机实验系统 1.1 Keil uV2软件的使用 (3) 1.2 MCS51U单片机实验板 (11) 第二章实验项目 2.1 实验一系统基本操作及I/O口实验 (15) 2.2 实验二定时/计数器实验 (17) 2.3 实验三中断实验 (18) 2.4 实验四单片机控制蜂鸣器实验 (19) 2.5 实验五交通灯控制实验 (22)

前言 单片机具有体积小、集成度高、控制功能强、性能价格比高等独特的优点,在工业控制、智能化仪器仪表、数控机床、数据采集、通信以及家用电器等各领域中得到了广泛的应用。 《单片机原理及应用》是一门实践性和实用性都很强的课程,对机械工程及自动化专业是一门必修课程,为了更好地配合教学环节,让学生立足于实践应用,全面、深入地了解和掌握单片机,锻炼、提高学生的动手能力和操作能力,结合实验室所购置的单片机实验设备,我们编写了这本实验指导书。 在单片机的教学上,我们逐步加大了实验环节在教学计划中的比重,在满足基本技能培训要求的基础上,减少了演示性、验证性的实验,而增加了设计性、综合性实验,以达到真正提高学生的实践能力和解决问题的能力。本指导书由浅入深,合理地安排了基础和应用、软件和硬件实验项目,以满足实践教学环节的需求。 在编写过程中我们得到了院领导、实验室、教研室各位老师的大力支持,在此一并表示衷心的感谢。鉴于水平有限,难免存在错误,恳请读者批评指正。 编者 2008.10

第一章MCS-51单片机实验系统 1.1 Keil uV2软件使用简介 1.1.1先打开一个工程文件,如果没有工程文件,应先建立一个工程文件。具体建立步骤如下:用鼠标点击菜单的Project->New Project.。如图1。 图1 1.1.2点击New Project之后,可根据需要重新选择工程文件放置的位置,放置工程文件并为工程文件命名,点击“保存”按钮对工程文件进行保存,操作如下图。 图2 保存完工程文件出现如下界面。

相关主题
文本预览
相关文档 最新文档