单片机报告.docx

上传人:b****5 文档编号:30007992 上传时间:2023-08-04 格式:DOCX 页数:23 大小:2.63MB
下载 相关 举报
单片机报告.docx_第1页
第1页 / 共23页
单片机报告.docx_第2页
第2页 / 共23页
单片机报告.docx_第3页
第3页 / 共23页
单片机报告.docx_第4页
第4页 / 共23页
单片机报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机报告.docx

《单片机报告.docx》由会员分享,可在线阅读,更多相关《单片机报告.docx(23页珍藏版)》请在冰豆网上搜索。

单片机报告.docx

单片机报告

实验一BCD码与ASCII码转换程序设计

1.实验目的

初步掌握KeilC51(汇编语言),工程的建立及软件模拟仿真的使用

2.实验设备

单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

3.实验内容

R2中放有组合BCD码,将其转换为对应ASCII码,高位放入R0,低位放入R1。

4.实验电路

本实验只需将单片机实验箱和PC机连好即可

5.实验代码

汇编代码:

ORG0000H

LJMPSTART

ORG0030H

START:

MOVR2,#19H

MOVA,R2

ANLA,#0FH

ADDA,#30H

MOVR1,A;存低位字节的ASCII码

MOVA,R2

ANLA,#0F0H

SWAPA

ADDA,#30H

MOVR0,A;存高位字节的ASCII码

SJMP$

END

C程序代码:

#include"REG51.H"

voidmain()

{

unsignedcharx,yh,yl;

x=0x26;

yl=x&0x0f;

yh=(x>>4)&0x0f;

while

(1)

{

;

}

}

 

6.实验步骤

(1)建立一个工程项目选择芯片确定选项。

Project→

NewProject→

输入工程名test→

保存工程文件

(2)加入C源文件或汇编源文件。

选CPU厂家(Atmel)→

选CPU型号(89C51),

选好后确定

(3)用项目管理器生成各种应用文件。

Project→

OptionsforTarget‘Target1’…→

在Target中→

更改CPU晶振频率为12MHz→⑤在Output中→⑥选择生成HEX格式其它采用缺省设置→⑦选好后确定。

(4)检查并修改源文件中的错误。

如果在源文件中存在错误在Output窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build观察错误提示信息。

(5)编译连接通过后进行软件模拟仿真。

Debug→Start/StopDebugSession进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。

7.实验结果

在软件仿真过程中,每执行程序一步,R2和R0寄存器的数值都有相应的改变

 

8.实验体会

通过本节实验,熟悉了KeilC51(汇编语言和C语言)开发过程的基本步骤,在进行软件仿真的过程对单片机汇编程序也有了更多的理解

 

实验二基本I/O口实验

1.实验目的

进一步掌握KeilC51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。

2.实验设备

单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

3.实验内容

P1口输入接8个按钮开关,74ls273做输出读取开关状态,在发光二极管显示。

4.实验电路

 

5.实验代码

汇编代码:

OUT_PORTEQU0CFA0H

ORG0000H

LJMPSTART

ORG0030H

START:

MOVP1,#0FFH

MOVA,P1

MOVDPTR,#OUT_PORT

MOVX@DPTR,A

LJMPSTART

END

C代码

#include"REG51.H"

#include"ABSACC.H"

unsignedintOUT_PORT=0xCFA0;

voidmain()

{

unsignedchari;

while

(1)

{

P1=0xFF;

i=P1;

XBYTE[OUT_PORT]=i;

}

}

6.实验步骤

(1)按照上一节实验一的步骤将工程建立起来还有将程序调试好

(2)在OptionsforTarget‘Target1’中的Debug选项中选择硬件调试,也即勾选UseKeilMoniters-51Driver这一项

 

(3)按照电路图将硬件电路连接好

 

(4)运行并观察

7.实验结果

在硬件的调试过程中,拨动不同的开关,相应的灯有亮灭的变化

 

8.实验体会

通过本节实验,熟悉了PC机和实验箱的连接调试过程,将程序下载到实验箱进行调试,试验中,遇到了无论开关按键如何灯都是亮的情况,后来知道原因是程序只是下载到了实验箱而没有执行。

 

实验三基本I/O口实验

1.实验目的

8255A应用、定时计数器应用、数码管应用

2.实验设备

单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

3.实验内容

用8255A作为单片机的扩展I/O口控制数码管动态显示,用单片机定时器设置数码管显示间隔

4.实验电路

 

5.实验代码

分析:

6MHz,12个时钟周期为2us,16位计数最大定时131ms,每次125ms产生溢出,8次为1s。

即(65536-x)*2=125000,则x=3036,即0xbdc;

汇编代码:

PA_PORTEQU0CFA0H;

PB_PORTEQU0CFA1H;

PC_PORTEQU0CFA2H;

PCTL_PORTEQU0CFA3H;

ORG0000H

LJMPSTART

ORG000BH

LJMPINT_T0_over

ORG0030H

START:

MOVSP,#68H

MOVR0,#0

MOVR1,#0

LCALLinit_t0

SETBTR0

SETBEA

MOVDPTR,#PCTL_PORT

MOVA,#80H

MOVX@DPTR,A;8255的PA、PB都工作在方式0,输出

LOOP:

MOVDPTR,#PB_PORT

MOVA,#0FFH

MOVX@DPTR,A;//数码管熄灭

MOVA,#0FDH

MOVX@DPTR,A

MOVA,R1

MOVB,#10

DIVAB

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#PA_PORT

MOVR2,#10

LOOPA:

MOVX@DPTR,A;//显示十位

DJNZR2,LOOPA

MOVDPTR,#PB_PORT

MOVA,#0FFH

MOVX@DPTR,A;//数码管熄灭

MOVA,#0FEH

MOVX@DPTR,A

MOVA,B

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#PA_PORT

MOVR2,#10

LOOPB:

MOVX@DPTR,A;//显示个位

DJNZR2,LOOPB

LJMPLOOP

init_t0:

CLRTR0;//T0禁止计数定时

MOVTMOD,#01H;//T0方式1(16位),定时

MOVTH0,#0bH;

MOVTL0,#0dcH;

SETBET0;//T0允许中断

RET

INT_T0_over:

;C/T0溢出中断服务函数

PUSHPSW

PUSHACC

MOVTH0,#0bH;

MOVTL0,#0dcH;

INCR0;

CJNER0,#8,LOOP1

LOOP1:

JCLOOP2

MOVR0,#0

INCR1

CJNER1,#60,LOOP3

LOOP3:

JCLOOP2

MOVR1,#0

LOOP2:

POPACC

POPPSW

RETI

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;//共阴数码管段码

END

C代码

#include"REG51.H"

#include"ABSACC.H"

unsignedintPA_PORT=0xCFA0;

unsignedintPB_PORT=0xCFA1;

unsignedintPC_PORT=0xCFA2;

unsignedintPCTL_PORT=0xCFA3;

unsignedchardata_seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管段码

unsignedchart1,t2;

voidinit_t0()

{

TR0=0;//T0禁止计数定时

TMOD=0x01;//T0方式1(16位),定时

TH0=0x0b;

TL0=0xdc;

ET0=1;//T0允许中断

}

voidInt0Demo(void)interrupt1//C/T0溢出中断服务函数

{

TH0=0x0b;

TL0=0xdc;

t1=t1+1;

if(t1>=8)

{

t1=0;

t2=t2+1;

if(t2>=60)

{

t2=0;

}

}

}

voidmain()

{

unsignedchari;

XBYTE[PCTL_PORT]=0x80;//8255的PA、PB都工作在方式0,输出

init_t0();

TR0=1;

EA=1;

while

(1)

{

XBYTE[PB_PORT]=0xff;//数码管熄灭

XBYTE[PB_PORT]=0xfe;

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

{

XBYTE[PA_PORT]=data_seg[t2%10];//显示个位

}

XBYTE[PB_PORT]=0xff;//数码管熄灭

XBYTE[PB_PORT]=0xfd;

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

{

XBYTE[PA_PORT]=data_seg[t2/10];//显示十位

}

}

}

6.实验步骤

(1)按照上一节实验一的步骤将工程建立起来还有将程序调试好

(2)在OptionsforTarget‘Target1’中的Debug选项中选择硬件调试,也即勾选UseKeilMoniters-51Driver这一项

 

(3)按照电路图将硬件电路连接好

 

(4)运行并观察实验现象,下面是实验运行情况。

 

7.实验结果

在硬件的调试过程中,数码管会从0开始显示显示到60,隔1s显示

 

8.实验体会

通过本节实验,熟悉了8255A的使用,数码管的动态显示的连接方法,掌握8段LED显示器的使用及显示程序的设计方法,同时对定时器的编程使用有了进一步的了解。

 

实验四AD转换

1.实验目的

ADC0809的应用

2.实验设备

单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

3.实验内容

用单片机处理A/D转换器采集回来的电平信息,并控制LED灯的明亮程度来反映出来

4.实验电路

 

5.实验代码

汇编代码:

;cs273与cs0连接,00~07与L1~L8连接

;cs0809与cs1连接,AN0与ADIN0连接,EOC与P1.0连接

CS273EQU0CFA0H;

CS0809EQU0CFA8H;

sbitEOC=P1.0

ORG0000H

LJMPSTART

ORG0030H

START:

MOVSP,#68H

MOV30H,#0;存放上次ad结果

LOOP:

SETBEOC;eoc设置为输入

MOVDPTR,#CS0809

MOVX@DPTR,A;启动adc0809,此时与所写的数据无关,注意AINI为cs0809+I

JNBEOC,$

MOVXA,@DPTR;读取adc0809转换结果

CJNEA,30H,LOOP1;比较连续2次结果是否相同

LJMPLOOP

LOOP1:

MOV30H,A

MOVDPTR,#CS273

MOVX@DPTR,A;led显示AD结果

LJMPLOOP

END

C程序代码:

//cs273与cs0连接,00~07与L1~L8连接

//cs0809与cs1连接,AN0与ADIN0连接,EOC与P1.0连接

#include"REG51.H"

#include"ABSACC.H"

unsignedintcs273=0xCFA0;

unsignedintcs0809=0xCFA8;

unsignedchart1,t2;

sbiteoc=P1^0;

voidmain()

{

unsignedchari,j;

while

(1)

{

eoc=1;//eoc设置为输入

XBYTE[cs0809]=0x80;//启动adc0809,此时与所写的数据无关,注意ADINI为cs0809+I

while(eoc==0)continue;

j=XBYTE[cs0809];//读取adc0809转换结果,注意ADINI为cs0809+I

if(j!

=i)//连续2次结果不同

{

XBYTE[cs273]=j;//led显示结果

}

}

}

6.实验步骤

(1)按照上一节实验一的步骤将工程建立起来还有将程序调试好

(2)在OptionsforTarget‘Target1’中的Debug选项中选择硬件调试,也即勾选UseKeilMoniters-51Driver这一项

(3)按照实验电路原理图连好电路

 

(4)当PC机和实验箱连接好后,会提示已连接到实验箱,下面是程序运行情况

 

7.实验结果

在调节A/D的旋钮,LED灯会有不同的亮灭情况

 

8.实验体会

通过本节实验,熟悉了A/D的编程方法,对A/D的使用有了进一步的了解,同时在调试实验箱的过程当中,连线出了一点问题,原因是没看好实验原理图,以后还得多加强实验动手方面的能力。

注:

报告最好有变化,老师做实验时交代说报告一样的就不用交了,大家辛苦一下吧,改改吧。

然后晚上各寝室长收一下,我晚上去拿

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

当前位置:首页 > 经管营销 > 经济市场

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

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