51系列单片机实验教程

  (实验平台为SMCU-P8单片机一板通)

   作者:www.onestudy.net原创

实验设计原则:

1、从简到繁 从易到难  循序渐进  符合人们的认知规律。

2、贴近实际应用  提高学习兴趣、热情和成就感。

3、实验所涉及的知识范围涵盖单片机技术的主要知识点、频繁使用的重要指令及单片机的典型应用(其中很多实验是我们的实际工程项目)。初学者如果真正理解了这些实验程序,并且能举一反三,那他(她)就不但单片机已经入门,而且具有相当的单片机实际应用水平了

说明:

1、实验教程分“基础实验”和“扩展实验”两部分,各具特色。

2、实验平台为SMCU-P8单片机一板通,数码管编号从左到右为18

3、每个实验的源程序都经过实际验证。

特别提示:因为51单片机上电或复位后所有I/O口均为1,这对“SMCU-P8单片机一板通”而言,8个数码管的每笔段都将同时被点亮,蜂鸣器一直响,这是不希望的,也是不允许的,所以,每个实验程序的开头都应清零P0P2(关闭数码管与蜂鸣器)。

致谢:此实验教程在策划与编写过程中得到中国科学院自动化研究所、北京大学信息学院、解放军66347部队等单位的博士、硕士和工程师们的大力支持和亲身参与,在此表示真诚的谢意!

 

 

一、基础实验

利用“SMCU-P8单片机一板通”主板上基本资源区现成的硬件电路(见系统原理图),单片机旁边4组跳线器全部下跳(下载程序时J30J31上跳)。基础实验体现了单片机的主要知识点和频繁使用的重要指令,是初学者入门的好向导。每个基础实验都安排了新知识点的学习(实验目的)和新指令的学习,最后,以“微波炉加热时间设定及加热过程控制实验”作为综合应用的例子。需要说明的是,“实验目的”和“指令学习”两项中所列的只是通过该实验可以学到的新的知识点和新的指令,而不是该实验需要用到的全部知识点和全部指令,实际上,前面实验中学到的知识点和指令会在后面的实验中被反复运用而被强化,这对初学者来说是非常有利的。

基础实验的程序全部用汇编语言编写并加以注释,有利于初学者对单片机结构的理解和快速入门

实验1:以闪灯实验为例熟悉开发工具

功能描述:上电或复位后,接在P1.0LED灯闪烁(亮0.5秒灭0.5秒,反复循环)。

实验目的:

1、了解实现一个单片机应用的具体步骤。

2、学习开发工具(KEIL编译软件、ISP程序下载软件)的使用方法。

3、该实验的源程序为什么这样编写,初学者可暂不深究,以后自然会明白。

认识第一条指令——CPL(取反)

源程序:见配套光盘  

相关知识:

1、实现一个单片机应用的具体步骤:见配套光盘

2、KEIL编译软件的安装、设置与使用:见配套光盘

3、ISP程序下载软件的使用:见配套光盘

实验2:流水灯实验一(轮流点亮,用移位法实现)

功能描述:上电或复位后,从LED0LED7,各灯轮流点亮,每灯亮0.5秒,反复循环。

实验目的:

1、认识汇编语言程序的格式。

2、体会如何用指令来表达一个实际问题。

3、学习对I/O口的操作(用作输出,写锁存器)。

4、学习“延时子程序”的设计及调用。

指令学习:

数据传送类MOV

逻辑运算类RR

程序转移类DJNZAJMPRETACALL

伪指令END

源程序:见配套光盘

实验3:流水灯实验二(逐渐亮灭,用查表法实现)

功能描述:AN4键开始,从LED0LED7,逐渐点亮各灯(间隔0.5秒),8个灯全部点亮后再从LED0LED7逐渐熄灭各灯(间隔0.5秒),反复循环。

实验目的:学习 “查表程序”的设计。

指令学习:

程序存储器查表指令MOVC

位条件转移类JB

1指令INC

伪指令DB

源程序:见配套光盘

实验4:数码管静态显示实验

功能描述:AN4键开始,8号数码管按顺序显示0123…….CDE,每个字符显示1秒,最后停留在“F”的显示上。

实验目的:

1、了解数码管结构及数码显示的原理。

2、学习数码管静态显示的程序编制。

指令学习:AJMP  $

源程序:见配套光盘

相关知识:数码管结构及数码显示原理

七段数码管的每笔段实际上是一个LED发光二极管,所谓共阴数码管就是将七笔段对应的七个发光二极管的阴极连在一起(称为公共极)。让公共极处于低电平,如果某一笔段发光管的阳极处于高电平,则该笔段将被点亮,而阳极处于低电平的笔段不能被点亮,所以,控制各笔段阳极的电平就可以控制各笔段是否被点亮,从而显示出不同的数字或字符。

同理,把七笔段的阳极连在一起就是共阳数码管,让公共极处于高电平,阴极为低电平的笔段将被点亮。

特别提示:8号数码管可用作动态扫描显示,也可用作静态显示。当用作静态显示时,需先将跳线器J6跳到下端以接入限流电阻R01,否则,流过该数码管的电流过大,长期处于这种工作状态时可能会缩短其正常使用期;结束静态显示实验时应将J6跳回上端以短路限流电阻R01,否则,在动态扫描显示时流过该数码管的电流不足造成亮度不够。

实验5:数码管动态扫描显示原理实验

功能描述:AN4键开始,数码管动态扫描显示01236789,共8位。

实验目的:

1、理解动态扫描显示原理,学习数码管动态扫描显示的设计方法。

2、学习定时器的使用(在定时器0中断程序中刷新扫描字与显示数据)。

指令学习:

位操作类SETB

伪指令ORG

中断返回指令RETI

源程序:见配套光盘

相关知识:动态扫描显示是基于人的视觉惰性。断续出现的图像以一定的频率重现,当频率高于50HZ时,人的感觉则是一幅连续、稳定的图像。

实验6:信号检测实验

功能描述:上电或复位后,P3口的状态被自动检测并将检测结果同时以二进制格式显示在P1口,以十六进制格式显示在6号数码管~8号数码管。其中:

按键AN1AN4 “按下”为0,“未按下”为1 

指拨开关K1K4“下”为1,“上” 0

4位按键加4位指拨开关的状态信号组成8位数据,AN1为最低位,K4为最高位;

P1LED灯“亮”表示0,“不亮”表示1LED0为最低位,LED7为最高位;

6号、7号数码管显示十六进制值,8号数码管显示“H”;

用户可以任意操作按键和指拨开关,验证状态和显示是否相符。                                                                                                                          

实验目的:

1、学习I/O口用作输入端时的程序编制(读端口)。

2、学习对数据的变换与处理技巧。

3、进一步学习数码管动态扫描显示的设计方法。

指令学习:

逻辑运算类ANL

数据交换指令SWAP

栈操作指令PUSHPOP

源程序:见配套光盘

实验7:加法计数实验

功能描述:AN3键,每按一次,数码管显示加17号数码管显示十位,8号数码管显示个位),并且蜂鸣器响0.5秒。

实验目的:

1、学习外中断的使用(在外中断0服务程序中对数据进行加1处理)。

2、学习外中断和定时器中断同时使用的程序设计,T0用于数码显示控制。

3、学习BCD码的加法运算与显示程序设计。

指令学习:

算术运算类ADD、十进制调整指令DA

位操作类CLR

源程序:见配套光盘

实验8:交通红绿灯实验

功能描述:AN4开始,红灯(LED0)亮,1号、2号数码管从30秒开始倒计时显示,计至5秒时黄灯(LED1)开始闪烁,计至0秒时黄灯停止闪烁、红灯灭绿灯(LED2)亮,重新从30秒开始倒计时,计至5秒时黄灯开始闪烁,计至0秒时黄灯停止闪烁、绿灯灭红灯亮,如此反复循环。

实验目的:

1、学习两个定时器同时使用的程序设计(T0用于数码显示控制,T1用于倒计时时间控制)。

2、学习BCD码的减法运算与显示程序设计。

3、学习“倒计时”程序的设计。

指令学习:程序转移类CJNE

源程序:见配套光盘

实验9:电子音乐实验

功能描述:上电或复位后,播放电子音乐“春江花月夜”

实验目的:

1、学习电子音乐原理及程序编制方法

2、学习在8位单片机上实现对16位数据(双字节,字)的操作

3、掌握伪定义指令EQU的用法,给程序的编制与修改带来方便

指令学习:

程序转移类JZJNZ

减1指令DEC

×2指令RL

伪指令EQUDW

源程序:见配套光盘

相关知识:音乐简谱中的每一音符都具有两个最基本的要素:音高和音长。音高,即声

音振动频率的高低,也就是我们平常唱的“多来米化索拉西”,可通过定时器中断向单片机

某一I/O口输出某一频率的交替高、低电平控制扬声器的通断来实现;音长,即某一音符持

续时间的长短,也就是我们平常说的“几分之几拍”,可通过定时器或由指令DJNZ构成的

延时程序来控制。

编制程序时,每个音符的简谱码(音高、音长信息)用一个字节表示:高4位表示音高,

低4位表示音长,简谱码字节表的排列顺序就是一首乐曲中的音符排列顺序。按顺序取出简

谱码并分解出音高和音长信息就可还原出简谱码所表示的音乐。T值字表中的数据为不同频

率下定时器初值,例如,中音“多(1)”的频率为523HZ,定时器初值为64580

与低音1~7对应的频率(HZ)分别为:262,294,330,349,392,440,494

与中音1~7对应的频率(HZ)分别为:523,587,659,698,784,880,988

与高音1~7对应的频率(HZ)分别为:1046,1175,1318,1397,1568,1760,1967

需要说明的是,电路板上的蜂鸣器发音效果不够理想,如果换成扬声器,则可以发出优

美的音乐声。

实验10、实验11为单片机与计算机通讯实验。将跳线器J30J31跳到上端;用通讯电缆将“SMCU-P8单片机一板通”与计算机连接起来;运行通讯测试软件ComTools,设置有关选项,串口设置为1200N81(波特率1200,无奇偶校验位,8数据位,1停止位)

实验10:串行通信实验一(单片机发送数据到计算机)

功能描述:AN3键开始自动发送:单片机每隔一秒向计算机发送一个数据(00H1FH32个),被发送的数据由68号数码管显示(8号数码管显示H),同时,计算机会将接收到的数据在软件ComTools界面的【接受文本框】中显示,两个显示应该保持一致,数据发送完毕时蜂鸣器提示(响1秒)。

实验目的:学习单片机与计算机串行通信的硬件连接与程序设计(串行口中断)之一

硬件连接:见配套光盘 / 系统原理图

源程序:见配套光盘

实验11:串行通信实验二(单片机接收计算机数据并将数据返回)

功能描述:先设置好软件ComTools【定时发送】对话框中的有关选项(为了便于观察,建议将发送数据设为连续的数据块,如40H4FH;将时间间隔设为1000毫秒;将格式设为HEX,AN3键后点击【定时发送】对话框中的Start  Send,即执行如下操作:计算机每隔一秒钟发送一个数据到单片机,被发送的数据显示在【发送文本框】;单片机接受到数据后一方面将该数据在68号数码管中显示(8号数码管显示H),另一方面将该数据发回到计算机,计算机接收到数据后又将其显示在【接受文本框】;【发送文本框】、【接受文本框】与电路板上68号数码管三者的显示应该保持一致,数据发送-接受完毕时蜂鸣器提示(响1秒)。

实验目的:学习单片机与计算机串行通信的硬件连接与程序设计(串行口中断)之二

硬件连接:见配套光盘 / 系统原理图

源程序:见配套光盘

实验12:微波炉加热时间设定及加热过程控制实验

功能描述:

加热时间设定:按AN3键,每按一次,加热时间延长1分钟,1号数码管显示设定值

AN4键,每按一次,加热时间缩短1分钟,1号数码管显示设定值

加热过程控制:按AN2LED0红灯亮,表示开始加热,同时,数码管从设定值开始倒计时显示(1号数码管显示分,3号数码管显示十秒、4号数码管显示秒),计至000秒时LED0红灯灭LED2绿灯亮,表示加热结束,同时,蜂鸣器叫3声(每声持续1秒、间隔1秒),向主人告示。

加热时间设定利用外中断0、外中断1;定时器0用于数码显示控制,定时器1用于加热过程时间控制。

实验目的:

1、学习多中断源同时存在时的程序设计。

2、对初学者来说,这是一个较为复杂的程序设计,可作为“基础实验”部分的的小结和综合运用实例。

3、这也是一个非常实用的设计,可以直接用于您的产品或其它实际应用中(如各种电器设备的工作时间设定与控制)。

源程序:见配套光盘

二、扩展实验

利用“SMCU-P8单片机一板通”基本资源区的最小系统和部分硬件资源,再在扩展资源区中插入某些扩展部件并用杜帮线进行连接,单片机旁边4组跳线器中的某些应上跳。扩展实验体现了单片机知识的综合运用和单片机典型的实际应用,可以直接用于产品设计。扩展实验的程序用C语言编写并加以注释,有利于用户对单片机高级语言的学习和提高。

需要特别说明的是, “扩展实验”部分的以下13个实验仅仅是“SMCU-P8单片机一板通”能够完成的扩展实验中的一小部分,抛砖引玉而已。除此之外,用户可以根据自己的兴趣爱好或新产品开发的需要完全自主地设计自己其它的单元实验(如:语音录放控制、波形发生器、打印机控制、中断源扩展、I/O口扩展、RAM扩展、继电器输出、直流电机PWM控制,等等,无穷无尽,无穷无尽)以及单元实验的组合。“SMCU-P8单片机一板通”能够完成的单元实验或组合实验,其数量是无限的,因为它有一个“I / O口彻底开放”、“可以随心所欲搭建实验电路”的硬件平台。

0c语言编写简介

11602字符型液晶显示实验

212864文字图形型液晶显示实验

3320240彩色液晶显示实验

48路模拟电压产生及其A/D转换并数字量显示实验

5STC12C2052ADD/A转换功能实验

6EEPROM存储器读写实验

7DS18B20温度采集与数字显示实验

8DS1302数字显示日历时钟实验

9、红外遥控发射-接收-控制 / 键盘扫描实验

10LED点阵显示 / 数据并-串-并转换实验

11、步进电机转速按键数字化控制实验

12、单片机双机通信实验

13、单片机多机通信网络实验

以上扩展实验的功能描述、硬件连接、 源程序及实验照片见配套光盘

 

附:学习板使用详细步骤:

单片机试验板最重要的是它的学习功能:即是不是容易学会?用户是不是能在零基础的情况下很快上手?

我们在配套光盘中除了详细介绍板卡的各种操作功能外,还特意编写了十分钟快速上手操作指南:

附:分钟快速上手操作指南 节选我们在安装光盘里提供了最为详细的说明文档,保证让作为初学者的您很快就能得心应手的进行操作此外我们的售后服务也定令您感到满意

“兴趣是最好的老师”,首先我们什么都不做,先试试这块板子可以跑什么基本程序。很简单,首先插上电源插座,按一下Reset复位开关,这时第一程序P0运行起来了(数码管显示P0)。如果要切换到其他程序,只要掰动红色的程序选取开关即可,即由四位DIP开关的不同组合来选择程序(上为1,下为零;左为低位,右为高位)。如第3个程序,则0011,(ON1,否则为0),再按RESET按键就可跑起来了!很简单,不是吗?

 

1、首先安装KEIL C51见光盘目录:keilc612installKEIL C51的快速使用方法见光盘目录:KEIL C51视频教程第一课《和UV2的第一次亲密接触》。实验板的源代码请见目录“源代码”,双击工程文件test1.Uv2即可(源代码汇编语言文件见Demo_51a.asm,建议初学用汇编而不是C,这样可掌握更底层的东西)。建议:把Demo_51a.asm打印出来看,总共16个演示的源码,为了便于大家初学,每个演示的代码都不超过20行,一目了然。

  KEIL C51界面

  设置工程参数选项菜单

  设置工程参数对话框

2、如何将C51编译好的hex目标文件下载到实验板中?首先将下载线插到实验板中,插接方向为带红线的一边接在ISP12插脚上,即使第一次插错了也不要紧,到时更正过来即可。然后安装ISP下载程序,这里我们采用了最新的ISP下载程序和ISP下载线,速度非常快,而且稳定可靠。见光盘目录:89s51load。运行setup.exe进行安装,安装完毕后运行程序,弹出下图所示界面。单击菜单中“Options”-“Select Device”命令。

3、弹出下图所示界面。选择AT89S51芯片,并选中Byte Mode模式,单击OK按钮。

4、弹出下图所示界面。首先我们单击菜单的Read Chip命令,看看单片机芯片上面目前有什么内容。

5、是不是和刚才空白的显示不同?说明单片机上目前已有内容。好了,下面我们把板子上原先写好的程序擦去,单击Erase Chip

6、擦除完毕后,我们下面要将自己写好的可执行程序代码写入到单片机中。

......(“十分钟快速上手操作指南”更多的内容请详见光盘使用指导说明

 

 

返回“一学网 www.onestudy.net ”首页