单片机(C51)实验报告

合集下载

c51实训总结200字

c51实训总结200字

C51单片机实训总结
在这次C51单片机实训中,我深入了解了单片机的内部结构和工作原理,掌握了单片机的基本编程方法和应用技巧。

通过实践操作,我不仅提高了自己的编程能力,还对单片机的实际应用有了更深刻的认识。

实训过程中,我首先学习了单片机的内部结构和工作原理,包括中央处理器、存储器、定时器/计数器、串行通信等模块。

通过老师的讲解和自己的阅读,我逐渐掌握了单片机的引脚功能、工作方式和指令系统等方面的知识。

在编程方面,我学习了Keil C51软件的使用方法,通过编写程序实现了LED 灯的闪烁、按键检测、数码管显示等功能。

在实践中,我遇到了很多问题,比如程序错误、硬件连接问题等。

通过不断地调试和修改,我逐渐找到了解决问题的方法,提高了自己的编程能力。

此外,我还了解了单片机的实际应用,比如在智能家居、工业控制等领域中的应用。

通过这些应用案例的学习,我深刻认识到单片机在现代科技领域中的重要地位和作用。

总的来说,这次C51单片机实训让我收获颇丰。

我不仅掌握了单片机的相关知识,还提高了自己的编程能力。

在未来的学习和工作中,我将继续深入学习单片机的应用和开发技巧,为未来的科技发展做出自己的贡献。

51单片机实验报告

51单片机实验报告

实验一:开发环境的搭建一、(1)、keil的安装与破解点击Keil安装包,一键傻瓜式操作,安装完成后以管理员身份打开Keil,在File里选择license management 把CID复制到注册机里的CID栏,注册机里的Target选择C51,然后点击Generate,将生成的激活码复制到license management里的LIC栏,并点击Add LIC,即完成破解。

(2)、CH340驱动安装(3)、普中烧录软件的使用波特率选择9600,速度选择低速,文件路径选择HEX文件的路径(4)、keil的使用新建工程并保存,在CPU 里面选择STC90C52RC ,再新建C 文件,注意保存时手动加上.c 后缀,再在Source Group 1 右击选择 Add Files to Group'Source Group 1'找到刚才新建的C 文件,然后找到图标并点击,再Target 里将晶振频率改为12MHz,将Output 里生成HEX 文件的勾打上即可生成HEX 文件。

(5)、protues的安装与破解双击安装包开始安装,等进入到Labcenter Licence Manager1.6,也就是许可证管理页面,点击Browse For Key File,找到下载解压软件包中的LICENCE.lxk文件,并打开,再点击install,再点击“是”,继续傻瓜式操作。

破解时以管理员身份运行破解软件,目标文件里找到安装的路径,再点击升级,即可完成破解。

(6)、protues的使用双击蓝色ISIS图标即可打开Proteus,File里新建并保存,然后点击“P”即可选择自己所需元器件,输入AT89C52单片机,确定后在图纸中点击即可,双击单片机将对话框中的Program File 选择Keil生成的HEX文件,电路及程序都完成后,点击左下角即可开始仿真,点击停止仿真。

二、实验结论在实验一里学会了开发环境的搭建,学会并熟练了Keil u Vision4 和Proteus 7.8以及普中烧录软件的使用,基本实现了用Keil编写程序并且生成HEX文件,能够用Proteus 画基本仿真图并且成功实现仿真,在仿真过程中出现了win10电脑不能正常实现仿真的问题,在经过百度等多方面查找之后找到了如下解决办法:1、路径上不能有中文2、仿真时出现cannot open'C:User\?\AppData\Local\Temp\LISA5476.SDF'的错误时:右击我的电脑-属性-高级系统设置-环境变量,在“用户变量”栏里找到TEMP与TMP,分别双击,将变量值都改为%SystemRoot%\TEMP如果还不行将下面的“系统变量”栏里的TEMP与TMP同样修改方法,如果没有新建就行。

C51单片机课程设计报告

C51单片机课程设计报告

内容提要单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

所以说对于单片机课程的学习对于我们电子信息工程专业的学生来说至关重要,然而学习单片机课程设计是其一个极为重要的实践环节,无论是硬件扩展、接口应用还是编程方法、程序调试,都离不开该环节。

单片机课程设计过程中,学生通过查阅资料、接口设计、程序设计、安装调试等环节,完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用。

单片机C51程序设计实验报告书(word文档良心出品)

单片机C51程序设计实验报告书(word文档良心出品)

实验一并行输入输出口的使用一、实验目的:学会设计proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用Keil uVision 3编程实现发光二极管的流水点亮。

二、实验原理:P1口为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。

P1口作为输出,接8个发光二极管D1~D8经限流电阻分别接至8个引脚。

本实验仿真电路图、流程图如下:三、实验代码:#include<reg51.h>#include<intrins.h> //移位库函数包含于此头文件中void delay(unsigned int d) //定义延时子函数{ while(--d>0);}void main(){ unsigned char i,sel;while(1){ sel=0xfe;for(i=0;i<=8;i++){ P1=sel; //显示变量赋给P1口delay(50000); //延时sel=_crol_(sel,1); //改变显示变量}}}四、实验结论:用while语句实现发光二极管循环流水点亮,从上到下一次点亮。

实验二C51分支程序设计一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。

二、实验原理:do while 循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。

本实验仿真电路图、流程图如下:(仿真电路图)(流程图)三、实验代码:#include <reg51.h>void main(){ char a;do{ P1=0xff;a=P1;a=a&0x03;switch(a){ case 0:P2=0x0e;break;case 1:P2=0x0d;break;case 2:P2=0x0b;break;case 3:P2=0x07;break;}}while(1);}四、实验结论:多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。

51单片机实验报告(共五则)

51单片机实验报告(共五则)

51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。

实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。

循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。

接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。

实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。

单片机实验报告总结

单片机实验报告总结

单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。

在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。

这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。

将所学知识运用到实践中,在实践中发现问题,强化理论知识。

现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。

第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。

第一次实验体现了一个人对新事物的接受能力和敏感度。

虽然之前做过许多种实验。

但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。

所以第一次试验相对失败。

鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。

在做实验中,第二个问题应该是准备不充分吧。

一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。

后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。

于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。

这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。

发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。

三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。

于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。

但是编程是一件很严肃的事情,容不得半点错误。

于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。

C51单片机实验报告

tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};
tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};
tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
TL1=0x67;
a++;
if(a==1000)
{
b++;
a=0;
tab3[0]=b%10;
tab3[1]=b/10%10;
tab3[2]=b/100%10;
tab3[3]=b/1000%10;
}
show();
}
void main()
{
uchar m,k;
uint n=1;
P1M1=0x00;
P1M0=0xff;
case 2:P0=tab2[j];j++;P1=tab1[tab3[2]];break;
case 3:P0=tab2[j];j=0;P1=tab1[tab3[3]];break;
default:break;
}
}
void interrupt_timer1() interrupt 3
{
TH1=0xfc;
ki2=1;
ki3=1;
if(!ki1)
{
Delay5ms();
if(!ki1)
a=4;
while(!ki1);
}
if(!ki2)
{
Delay5ms();

C51单片机实验报告

C51单片机实验报告
一、实验内容
本次实验的目的是实现用C51单片机实现简易的闹钟功能:即用户可以设置闹钟时间,当到达闹钟的设定时间的时候,单片机会控制LED灯或者蜂鸣器发出报警信号来提醒用户。

二、实验任务
本次实验任务如下:
1.使用C51单片机读取外部时钟的时间。

2.实现从按键输入闹钟设定的时间。

3.使用定时器实现任务调度,即在每个时刻检查一次外部时钟的时间是否到达闹钟的设定时间,如果到达设定时间,则控制LED灯或者蜂鸣器发出报警信号。

三、实验过程
1.硬件部分:本实验使用的硬件是硬件C51单片机,它具有单片机主频11.059MHz,外部内存2K和内部RAM 128字节。

本次实验采用的C51单片机核心是AT89C51,它具有4K字节的Flash存储器,它有128个8位I/O口和3个定时器/计数器。

本次实验使用到的外设有:LCD1602显示模块、4个4*4的数字键盘、AT24C02的IIC从机存储器、LED灯和蜂鸣器。

2.软件部分:本次实验使用的软件工具是Keil C51编译器,使用它来编写C51单片机程序。

c51单片机实验报告

c51单片机实验报告C51单片机实验报告引言C51单片机作为一种常见的微控制器,广泛应用于各种电子设备中。

本实验报告旨在介绍C51单片机的基本原理、实验过程和结果分析,以及对其在实际应用中的潜力进行探讨。

一、C51单片机的基本原理C51单片机是一种高度集成的微处理器,由中央处理器、存储器、输入输出接口和时钟电路等组成。

其核心是Intel公司开发的8051系列单片机,具有高性能、低功耗和易于编程等优点。

C51单片机采用汇编语言进行编程,可以实现各种功能,如数据处理、控制和通信等。

二、实验过程本次实验选取了LED灯的控制作为示例,通过C51单片机控制LED灯的亮灭来展示其基本功能。

1. 实验材料准备准备工作包括C51单片机开发板、连接线、电源和LED灯等。

确保所有材料齐全并连接正确。

2. 编写程序使用汇编语言编写程序,通过控制特定的IO口来控制LED灯的亮灭。

程序需考虑到时序和逻辑关系,确保正确的控制信号发送到LED灯。

3. 烧录程序将编写好的程序通过烧录器烧录到C51单片机中,确保程序能够正确运行。

4. 运行实验将电源接入开发板,开启电源。

通过按下相应的按键或其他输入方式,触发C51单片机发送控制信号,从而控制LED灯的亮灭。

三、实验结果分析经过实验,我们成功地实现了通过C51单片机控制LED灯的亮灭。

通过改变程序中的控制信号,我们可以实现不同的灯光效果,如闪烁、流水灯等。

这说明C51单片机具有良好的可编程性和控制能力。

此外,我们还发现C51单片机具有较高的稳定性和可靠性。

在实验过程中,单片机能够稳定地工作,并根据程序的要求正确地控制LED灯的状态。

这为其在实际应用中提供了良好的基础。

四、C51单片机在实际应用中的潜力C51单片机作为一种常见的微控制器,广泛应用于各种电子设备中。

其可编程性和控制能力使得它在工业自动化、家电控制、通信设备和电子产品等领域有着广阔的应用前景。

例如,在工业自动化领域,C51单片机可以用于控制机器人、自动化生产线和仪器设备等。

51单片机实验报告

51单片机实验报告
根据所提供的信息,我可以为您提供一个基本的51单片机实验报告的样例。

以下是一个可能的实验报告结构:
实验名称:51单片机的基本使用
实验目的:掌握51单片机的基本使用方法和功能。

实验器材:51单片机开发板、USB接口线、计算机、电源。

实验步骤:
1. 连接电源,将开发板与计算机连接。

2. 打开软件IDE,新建一个工程。

3. 在工程中编写代码,实现将LED灯进行亮灭交替的功能。

4. 将编写好的代码下载到51单片机开发板中。

5. 检查电路连接是否正确,确保没有问题。

6. 启动51单片机开发板,观察LED灯的亮灭情况。

7. 记录实验结果。

8. 关闭开发板和计算机。

实验结果:
通过编写的代码,成功地实现了LED灯的亮灭交替功能。

LED灯每隔一段时间亮起,然后又灭掉,不断循环。

实验分析:
实验结果表明,51单片机因其高性价比和广泛应用领域,可以使用简单的代码实现一些基本功能。

在这个实验中,我们使
用了51单片机的GPIO口控制LED灯的亮灭,通过不断循环的方式实现了交替闪烁的效果。

实验总结:
通过这次实验,我了解了51单片机的基本使用方法,学会了如何编写简单的代码来控制外部设备。

这对于我以后的学习和应用起到了很好的基础作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
32.打印机接口
33.单片机核心板(EAT598_31)
34.带USB接口的51MINI仿真器
三、实验内容
1.熟悉整个实验箱的硬件资源。
2.使用51MINI仿真器连接电脑,在电脑的设备管理器中可找到下图所示的COM口。
实验
一、实验目的
1.掌握开发环境Keil的安装方法。
2.掌握开发环境Keil的使用和仿真环境参量配置方法。
4.对工程进行编译连接
选择“Build target”进行编译,根据产生的错误提示,纠正程序中的错误直至编译成功。
5.Keil仿真调试
通过选择“Start/Stop DebugSession”进入软件调试阶段或是使用USB线连接实验箱进行硬件调试;可在Registers页面查看寄存器状态,在memory窗口馋=查看系统内存中的值,字母C、D、I、X分别表示代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM空间。
实验
一、实验目的
1.学习外部中断技术的基本使用方法。
2.使用Keil建立工程
双击打开Keil软件;新建工程;选择目标单片机;选择不使用开始代码;建立并保存汇编文件;将文件加入工程中;输入并保存文件内容。
3.对工程进行设置
通过“Options for target ‘Target1’…”打开工程设置选项;在Target标签页选择晶振频率值,设置RAM和ROM的使用情况;在Output标签页设置是否需要生产HEX File(用于烧写单片机或硬件调试实验);在Debug标签页设置软件仿真和硬件调试。
经过设计,可以改变LED点亮的花样,例如每次2个一起点亮、3个一起点亮、相隔的LED点亮……我的实验代码如下:
2.延时子程序的延时计算问题
51单片机延时采用的方法是借助DJNZ指令循环执行一定的次数,每个DJNZ指令需要两个机器周期,时钟频率为12MHz时每个机器周期1us,使用两层循环时最多可延时256*256*1us = 65.6ms。不过这种计算方法不太精确,因为还有MOV指令占有的时间以及函数调用和返回的时间。我们可以借助一个小工具完成这个繁琐的计算过程,如下图所示:
2.学习控制模拟交通灯的方法。
3.学习双色灯的使用
二、实验内容
1.交通灯规则
因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东南西本走向。初始状态0为东西红灯,南北红灯。然后状态1南北绿灯通车,东西红灯。过一段时间转入状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转入状态3,东西绿灯通车,南北红灯。过一段时间后转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1.
2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正。
3)低位修正结果使高位大于9时,高位进行加6修正。
3.单字节无符号数BCD码的减法
在AT89C51指令系统中,只有加法有十进制调整指令,如果进行BCD码减法,可以通过求减数的“BCD码补码”,再作减数的“BCD码补码”和被减数的BCD加法,并将进位标志位C取反,得到BCD码减法结果。
(2)P2口作为高八位地址线
P2口作为高八位地址线(A8-A15),P2口输出经过地址锁存器74LS373锁存,与P0锁存器输出,形成了系统的16位地址总线。有些系统P2口不经过地址锁存器直接输出高八位地址线。
(3)控制信号线
RD和WR和作为外部数据存储器பைடு நூலகம்I/O接口寄存器的读/写选通控制信号。
ALE作为P0口发出的低8位地址的锁存控制信号。
BCD码中1~9可以用四位二进制数0000-1001表示,而1010-1111这6个数为无效数。两个4位二进制数相加所得的结果超过1001,则将所得数加0110,来跳过6个无效数,并产生一个进位。修正规则为:
1)如果任何两个对应位的BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则不需修正;若得到的结果大于9且小于16时,改位进行加6修正。
EA作为片内、片外程序存储器的选择控制信号。
PSEN作为外部程序存储器的读选通控制信号。
三、实验内容
1.编制简单程序,对实验板上提供的外部存贮器(62256),作为数据空间0000~7FFFH,,对其进行读写操作。
逐个对外部存贮器中32K地址单元进行读写操作,并比较读写结果是否一致。不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。实验代码如下:
“BCD码补码”可按如下方法计算:
X的“BCD码补码”=100D-X=#9AH-X
其中100D是十进制数100。
4.多字节无符号数BCD码加法
多字节加法运算一般是按从低字节到高字节的顺序进行的,但当最低字节相加后,必须使用“DA A”进行十进制调整。调整后产生进位,除最低字节外,其他字节相加必须考虑低字节的进位情况,要使用ADDC指令。
1.步进电机
2.直流电机
3.温度控制(DS18B20、热敏电阻B3470)
4.模数转换(ADC0809)
5.串行实验区(EEPROM X25045、AT24C08、时钟芯片HT1380、数模转换TLC5615、
模数转换TLC1543)
6.RAM(HM62256)
7.ROM(M27C512)
8.地址译码(74LS138)
Table1BCD码的编码表
十进制数
BCD码
十六进制表达式
十进制数
BCD码
十六进制表达式
0
0000
00H
5
0101
05H
1
0001
01H
6
0110
06H
2
0010
02H
7
0111
07H
3
0011
03H
8
1000
08H
4
0100
04H
9
1001
09H
2.单字节无符号数BCD码的加法
进行单字节BCD码加法的方法是,先用加法指令ADD或带进位加法ADDC计算,(避免用加1指令INC),必须经过十进制调整指令DA A,才能得到正确的结果。
实验一 熟悉ADEK单片机教学实验系统
一、实验目的
1.熟悉ADEK单片机教学实验系统和仿真器的结构和功能。
2.了解如何安装51MINI仿真器驱动程序。
二、ADEK单片机教学实验系统组成
图1-1AEDK单片机教学实验系统外观图
如图1-1所示,ADEK-EAT598单片机教学实验系统遵循了模块化的设计思路,有丰富的接口,并且具有良好的扩展性,以下为组成模块和使用的主要芯片。
2.单字节无符号数BCD码的减法
上述三图表示被减数为11,减数为12,最后结果为99,产生借位
3.多字节无符号数BCD码加法
上左图第一行为被加数,第二行为加数,
上右图为相加结果
右图为进位标志符Cy
即78563412+66552211=145115623(产生了进位)
4.多字节无符号数BCD码减法
左图:第一行数字为被减数
三、实验结果
上述两张图片中,软件已经安装完成,能够成功调试,上图方框内查看内存中的内容。
实验
一、实验目的
1.学习单字节无符号数BCD码加减编程
2.学习多字节无符号数BCD码加减编程
3.学习BCD码的拆分
4.进一步熟悉汇编指令和Keil软件调试过程
二、实验内容
1.BCD码的概念
BCD码(Binary-Code Decimal)是用4位二进制数来表示一个十进制的0~9的一种数值编码。BCD码有很多种,常见的有8421BCD码、2421BCD码、余三码、格雷码等,本实验使用的是8421BCD码。下表为BCD码的编码表
3.学习调试汇编程序
4.学习调试C程序
二、实验内容
1.Keil简介
Keil公司成立于1986年,主要开发、制造和销售嵌入式8051、C166和C251系列微控制器软件开发工具,2005年,Keil公司被ARM公司收购,产品线开始支持各类ARM的内核。
Keil集成开发环境是业界广泛使用的微控制器开发平台,目前支持Windows的各种操作系统,支持汇编语言、C和C++语言的开发,主要包括C/C++编译器、RTX实时操作系统内核库、μVision IDE开发环境及器件数据库、μVision调试器及分析工具和器件仿真调试器,提供针对不同MCU(Micro Controller Unit,微控制器或单片机)器件的开发例子和模板。汇编语言代码冗余小,执行效率高;C语言和C++语言具有工程的开发效率、文件的可读性高和系统的维护性强的优点。Keil集成开发环境的软件调试和硬件调试提供了各种调试技巧和功能,大大加速了嵌入式软件的开发进程。要求安装的计算机提供500M的硬盘空间、至少1GB的内存,屏幕分辨率至少为1024×768像素。
最高两字节相加后也应考虑是否有进位。若有进位,和数将比加数或被加数多出一个字节。应向好的最高位字节地址写入01H。
5.多字节无符号数BCD码减法
多字节无符号数BCD码的减法,在单字节无符号数BCD码的减法基础上进行。
三、实验结果
1.单字节无符号数BCD码的加法
上左图为参加运算的加数和被加数,右图为最终存放在R1寄存器中的结果
第二行数字为减数
从左向右依次进行多字节减法
左图为多字节减法结果
最右位的FF表示有借位
即178563412-84334411=94229001
三、实验总结
本次实验是我第一次通过汇编语言进行单片机编程,说实话,汇编很烦,一般C语言一句代码,在汇编中会被转化为多句代码,但是汇编的优点也在实验中体现出来,汇编对单片机的控制更加精准,编写汇编语言时,我能够非常清楚每一个数据在存储空间中的位置以及大小,这一优势是C语言等高级语言所无法比拟的。也正是这种精准的控制,要求代码的编写者自身能够非常清楚的知道单片机的原理及各个接口的用法,总之,我认为这是一种对单片机学习非常有帮助的语言。
相关文档
最新文档