单片机(C51)实验报告
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语言等高级语言所无法比拟的。也正是这种精准的控制,要求代码的编写者自身能够非常清楚的知道单片机的原理及各个接口的用法,总之,我认为这是一种对单片机学习非常有帮助的语言。