![基于Proteus和Keil的C51程序设计项目教程(第2版):理论、仿真、实践相融合](https://wfqqreader-1252317822.image.myqcloud.com/cover/785/36511785/b_36511785.jpg)
2.1 任务1:点亮一个灯
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_47_3.jpg?sign=1739058772-xPBCXBqZpke14cTTZ0u4N9vK6OXDSUpH-0-7eed149844ae0f10a10c25b39fd45556)
1.任务要求
用单片机的一个引脚控制一个LED亮起来,要求用位变量改变引脚高/低电平状态,从而使LED亮或灭。
2.任务目标
(1)掌握单片机与LED的接口电路原理,会计算限流电阻的阻值;
(2)理解并会定义引脚的位变量,会根据需要对位变量正确赋值。
3.任务分析
要点亮LED,必须要加合适的正向压降和电流。鉴于单片机的驱动能力,且输出低电平时的电流约是输出高电平时电流的20倍,故LED的阳极接固定5V电平,阴极由单片机控制,如图2-1(a)所示。分析出引脚高/低电平与LED亮/灭的逻辑关系,再由软件设置引脚高/低电平(见图2-1(b))即可控制LED的亮/灭。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_48_1.jpg?sign=1739058772-FhjzydVsrPkgAiI5btjPLqnL1ssJOFcD-0-412f74cc1fd5865733f6743eb04dab4a)
图2-1 LED控制电路原理图
2.1.1 一个引脚定义和应用
1.单片机引脚与二进制位
单片机与所能接收、发送的信息只能是数字信息。单片机的信息都是通过4组I/O口——P0、P1、P2、P3来传送的。每组I/O口都有8个引脚。
单片机的一个引脚只能传送一位二制数,为操作方便,就以引脚名代表引脚的位地址,对引脚赋值就是对引脚地址写数据,如“P1.0=0;”直接表现为引脚电平为0,即实现由软件命令控制硬件引脚的电平。一组I/O口的8个引脚就代表8位二进制数,即1字节数据,如图2-2所示。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_48_2.jpg?sign=1739058772-HTvKxWbb7yl4cq8RN3sWDAXxMFUEmA6A-0-a90039f809a4d41deb997374d051545b)
图2-2 单片机P1口引脚以及引脚与二进制数、十六进制数的关联关系
十六进制数、二进制数及十进制数的对应关系见表2-1。
表2-1 十六进制数、二进制数及十进制数的对应关系
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_48_3.jpg?sign=1739058772-n6ijMMNMHwajLuufY1aagnmedZIktbGx-0-b3e5aa764152735d652a91b8933d608d)
续表
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_49_1.jpg?sign=1739058772-kK8oY5E58nKFGaXbDKsqZzMLMqBaabcQ-0-e163a7965c6b06647415f75e3dc0db6a)
4位二进制数的简便识别方法是使用4位二进制数的权码(23 22 21 20),即8421码。
2.引脚的位定义:sbit
引脚位定义的目的:读取或设置单片机引脚的高/低电平。
位:一个二进制位,内存中最小存储单位,其值可以是“1”或“0”。
定义格式:sbit位名=特殊功能寄存器名^整型常数位编号;
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_49_2.jpg?sign=1739058772-fOrPUAAMjczrLIUWqH9s7svCX3VcSoGb-0-38461eb7953a56708c1a4993c43aa0af)
sbit也用来定义其他可寻址的特殊功能寄存器(其地址能被8整除)的位。对存储在bdata的普通变量的位也可用sbit操作。位编号的范围取决于该变量的类型。例如:
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_49_3.jpg?sign=1739058772-CL9RxKRvHBsf7fUSBOkQOFOAvuWT2Vt1-0-dbad6679d8c11c3b90d69054a9d7b96d)
sbit定义要求基址对象的存储类型为bdata,否则只有绝对的特殊位定义(sbit)是合法的。位置“^”操作符后的最大值依赖于指定的访问对象类型,对于char、uchar而言是0~7,对于int、uint而言是0~15。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_49_4.jpg?sign=1739058772-4VZqUHuP3TOt9iU7keXli0jjJf0zVFiO-0-467add080aaa5afa054c52172bc03669)
3.用户设置的位定义:bit位名
位类型可以用于变量声明、参数列表和函数返回值。位变量像其他C数据类型一样声明。例如:
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_49_5.jpg?sign=1739058772-nC2pGOGTGSNEyRGBjJf31fuxTEnp6aub-0-47a5468b74a0d9ecef8de7739ef3ef6e)
2.1.2 定义一组引脚,输入/输出1字节数据
sfr和sfr16是C51扩充的数据类型,用于访问MCS-51单片机中的特殊功能寄存器的数据。
sfr:字节型(8位二进制数)特殊功能寄存器类型,占1个内存单元,利用它可以访问MCS-51内部的所有特殊功能寄存器,如单片机的4组I/O口,即P0、P1、P2、P3。
sfr16:双字节型(16位二进制数)特殊功能寄存器类型,占用两个内存单元,利用它可以访问MCS-51内部的所有两个字节的特殊功能寄存器,如数据指针DPTR。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_50_1.jpg?sign=1739058772-6okYrPlAavAfCQAsgTBMOTfUhHNicZSQ-0-81179985a6d4ba632d2bf8a39b32537a)
2.1.3 亮灯逻辑
发光二极管(LED)采用砷化镓、镓铝砷和磷化镓等材料制成。其内部结构为一个PN结,具有单向导电性。LED在制作时,由于使用材料不同,因此可以发出不同颜色的光。LED的发光颜色有红、黄、绿、蓝等。
加在LED两端的电压差超出导通压降时,LED开始工作,导通压降一般为1.7~1.9V。此外,还须保证LED的工作电流。当满足电流和电压的要求时,LED就可以发光了。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_50_2.jpg?sign=1739058772-bAzHayI5pV0UQPVX48V0GKMa0U0X6J46-0-62050b0603b9f6c0d7cceb8efde1cdb3)
电压条件:必须给LED加载正向电压,正向电压为2~5V。
电流条件:达到LED的额定电流为10mA。
如图2-1(a)所示,如果用“1”表示高电平,“0”表示低电平,则当开关SW1接上高电平,即SW1=1时,D1不亮;当开关SW1接上低电平,即SW1=0时,D1亮。D1的亮与灭完全受开关SW1的控制。
如图2-1(b)所示,如果把开关SW1换成单片机的P1.0引脚,单片机引脚输出高、低电平(高电平一般为5V,低电平为0V)就可控制LED的亮/灭。单片机引脚输出高、低电平可通过编程实现。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_50_3.jpg?sign=1739058772-OF3fhf4gKXQkjFGfYyx57gXs27sH5Ugi-0-6f67e2000a236de68ec3b7045457beeb)
2.1.4 Proteus界面与元器件操作
在计算机中安装好Proteus后,单击“开始”→→
,启动ISIS,进入ISIS界面,如图2-3所示,主要有菜单栏、工具栏、对象选择器、预览窗口、编辑窗口、仿真运行按钮栏等。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_51_1.jpg?sign=1739058772-7wzcVzmWDVJKk6MwDMOEruK3pRSLnitd-0-ed31b8acef037acdb820f732b3dcf8c3)
图2-3 Proteus的ISIS界面
1.新建电路文件并保存为LED1.DSN
单击菜单“File”→“New Design”,弹出如图2-4所示的新建设计(Create New Design)对话框。单击“OK”按钮,以默认的DEFAULT模板建立一个新的图纸尺寸为A4的空白文件。若单击其他模板,再单击“OK”按钮,则会建立相应尺寸的空白文件。
单击工具按钮,选择路径,输入文件名后,再单击“保存”按钮,完成新建文件操作,文件格式为*.DSN,后缀DSN是系统自动加上的。
若文件已存在,则可单击工具栏中的打开按钮,在弹出的对话框中选择要打开的设计文件(如LED1.DSN)。
2.设置图纸大小
系统默认图纸大小为A4(长×宽为10in×7in)(in为英寸)。在电路设计过程中,若要改变图纸大小,则单击菜单“System”→“Set Sheet Size”,出现如图2-5所示的窗口。可以选择A0~A4其中之一,也可以选中底部“User(自定义)”复选框,再按需要更改右边的长和宽数据。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_51_4.jpg?sign=1739058772-s8QAJIxTt7TTd0f3stkmyz76YU4uqT9D-0-971fbb651a1264e0241f4d591f90b969)
图2-4 创建新设计文件
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_51_5.jpg?sign=1739058772-2ofL33rGZvzorDIIPO8bF1dAfc1q4ubd-0-42029ca9dc6c7225ee23301574f791ab)
图2-5 图纸大小设置窗口
3.ISIS电路设计与仿真界面简介
(1)菜单栏
菜单栏中,File、View、Edit、Tools、Design、Graph、Source、Debug、Library、Template、System、Help分别对应文件、视图、编辑、工具、设计、绘图、源程序、调试、库、模板、系统、帮助。当将鼠标移至它们时,都会弹出下级菜单。
本节重点介绍“File”(文件)、“View”(视图)菜单。
(2)编辑窗口
编辑窗口中的蓝色方框为图纸边界,可在编辑窗口中编辑设计电路(包括单片机系统电路),并能进行Proteus仿真与调试。
(3)对象选择器
对象选择器用来选择放置操作对象。在不同操作模式下,“对象”类型不同。
在元器件模式下,“对象”类型为从库中选取的元器件。
在终端模式下,“对象”类型为电源、地等。
在虚拟仪器模式下,“对象”类型为示波器、逻辑分析仪等。
对象选择器的上方带有一个条形标签,表明当前所处的模式及其下所列的对象类型。如图2-6(a)所示,因当前为元器件模式,所以对象选择器上方的标签为DEVICES。该条形标签的左角有
,其中“P”为对象选择按钮,“L”为库管理按钮。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_52_6.jpg?sign=1739058772-qu4sFjRfOrnrJBPo77UMAoSM4ExgrjNJ-0-27d4f3b90a15dbffce60ff8d3b9e6148)
图2-6 对象选择器预览窗口
(4)预览窗口
预览窗口配合对象选择器,可用来预览对象(例如元器件),也可查看编辑窗口的局部或全局。
① 预览元器件等对象。
当单击对象选择器框中的某个对象时,对象预览窗口就会显示该对象的符号,如图2-6(a)所示,预览窗口中显示出晶振的图符。
② 预览窗口跟随编辑窗口同步显示。
单击编辑窗口,预览窗口实时显示编辑窗口内容,会出现蓝色方框和绿色方框。蓝色方框内是编辑窗口的全貌。绿色方框内是当前编辑窗口中在屏幕上的可见部分。
③ 在预览窗口中调整编辑窗口可视内容。
在预览窗口单击后再移动鼠标,绿色方框会改变位置,编辑窗口中的可视区域也相应改变。如图2-6(b)所示,编辑窗口中的可视区域处于整个可编辑窗口的右半部分,即预览窗口中绿色方框的包围部分。若要中断移动,则单击鼠标即可。
(5)仿真运行按钮
仿真运行按钮一般在ISIS窗口左下方,从左至右依次是运行、单步、暂停、停止。
4.元器件的选取与编辑
(1)元器件的选取
元器件的选取如图2-7所示。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_53_2.jpg?sign=1739058772-vIOeCjYXHxlEEMhcj4GvmG5bpT1p2Qq0-0-aea257de3b2147405a946220cf4b3cc7)
图2-7 选取元器件
(2)元器件的编辑
① 放置。单击对象选择器中的元器件(出现蓝色背景条),将光标移至ISIS编辑窗口,单击则出现元器件桃红色高亮轮廓,将该轮廓移至期望位置再单击则完成放置。
② 选中与取消选中。单击编辑窗口中某元器件,则该元器件红色高亮显示,表示选中。若要取消选中,移动光标到编辑窗口中的空白处单击。
③ 移动。
● 单击选中元器件,再按住鼠标左键拖动至期望位置释放鼠标。
● 右击选中元器件,在弹出的对象快捷菜单(见图2-8)中单击“Drag Object”(移动对象),出现桃红色高亮元器件轮廓,移动至期望位置单击放置。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_53_3.jpg?sign=1739058772-sshw3HPgT2FhsHxg3UzLpWQWMOPAYbl0-0-6753e723107d47261c75f1735c7c5510)
图2-8 对象快捷菜单
● 单击选中元器件,再单击工具栏中工具,出现桃红色高亮元器件轮廓,移动至期望位置单击放置。
④ 转向。
● 对象选择器中的元器件转向:单击对象选择器中元器件,再单击工具栏中转向工具按钮中相应按钮,对象预览窗口显示的元器件相应转向。
● 编辑窗口中的元器件转向:右击元器件,从弹出的快捷菜单(见图2-8)中单击相应的转向按钮。
● 快捷方法:单击选中元器件,再按键盘上的“+”“-”键实现逆时钟转、顺时针旋转。
⑤ 复制。单击选中元器件,再单击工具栏中,出现桃红色高亮元器件轮廓,移至期望位置单击放置。
注意:对元器件进行块复制时会自动编号。用普通的COPY、PAST命令适合对非电气对象进行复制操作,用它们操作元器件,会导致元器件编号重复。
⑥ 删除。
右双击元器件或右击元器件再选择弹出快捷菜单(见图2-8)中的单击命令。
⑦ 块操作(多个元器件同时操作)。
通过按住鼠标左(或右)键拖出包围多个元器件的虚框后再释放,被完全包围的元器件红色高亮显示,表示被选中,再单击工具栏中相应工具按钮,依次实现块复制、块移动、块转向和块删除。
2.1.5 亮一个LED的电路、程序设计
1.电路设计
(1)选择元器件
① 在元器件模式下,选取AT89C51、LED-GREEN、RES、CAP、CAP-ELE、CRYSTAL。复位电阻用PULLDOWN,是为了较好地实现复位按钮的复位仿真效果。
② 在终端模式下,选取电源POWER
(默认为5V)、地GROUND
。
(2)线路连接
在两个点间进行连线,任一点可为起点或终点,在起点左击鼠标,移动到终点再单击。在移动途中无须按住鼠标左键。
用连线方式将POWER、地GROUND
接入合适的地方。
LED的限流电阻值约为300Ω。单片机控制LED电路所用元器件列表及原理图如图2-9所示,保存为LED8.DSN。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_54_11.jpg?sign=1739058772-h6cRXGH4s9DYz06XnhXmACEz8ZcE5B5G-0-39513088ecb5ac956fedba292cd0c9af)
图2-9 单片机控制LED电路所用元器件列表及原理图
2.程序设计
根据图2-9(b),LED呈共阳极的接法,阳极固定接高电平,阴极受单片机的引脚控制,故只要单片机引脚输出低电平,LED就能亮。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_55_1.jpg?sign=1739058772-1ykVHj37nt1Puo4N43hWB8uyaiipMTK7-0-e02214aaa33bb3e3d97d0263584e771a)
2.1.6 编译、代码下载、仿真、测判
按1.4.1节所述方法,先在Keil中新建工程led11.uv2,然后添加源程序、设置工程选项并编译。
1.加载目标代码文件*.hex,设置时钟频率
在ISIS编辑窗口中双击AT89C51单片机,弹出如图2-10所示的加载目标代码文件和设置时钟频率的对话框。单击在“Program File”栏右侧按钮,弹出文件列表,从中选择期望的目标代码文件(格式为*.hex),再单击“OK”按钮,完成加载。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_55_3.jpg?sign=1739058772-bpZTImwQy7QDfzvdmLjS5iJ1ANXrWugX-0-f998676e0c98a1f2c1c43fca15145322)
图2-10 加载目标代码文件和设置时钟频率
系统默认时钟频率为12MHz,若要改变时钟频率,则在图2-10所示对话框中的“Clock Frequency”(时钟频率)栏中填上时钟频率,再单击“OK”按钮,完成设置时钟频率的操作。
2.仿真调试
单击仿真工具按钮中的进行全速仿真,可看到与P1.0相连的LED亮了。
如要观察各引脚的电平状态,可在Proteus ISIS中,执行菜单命令“System”→“Set Animation Options”,再在弹出窗口中选中“Show Logic State of Pins”(显示引脚逻辑状态)。仿真时,在引脚上将出现红色或蓝色小方块:红色代表高电平,蓝色代表低电平。
实践记录:是否成功?__________。自评分:__________。
2.1.7 STC单片机代码下载
1.下载STC单片机的代码下载软件
从STC官网www.stcmcudata.com下载STC单片机的代码下载软件stc-isp-15xx-v6.86R-zip。
在压缩包中可看到4个文件,如图2-11所示。查看PDF格式的STC-USB驱动安装说明,根据实际的操作系统阅读相应的驱动说明。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_56_2.jpg?sign=1739058772-XzCZdhTC7Od95D93Va38tPRTlpnqOhDI-0-5d9911e5d4377a342137ce3beb95ea5d)
图2-11 STC单片机的代码下载软件压缩包
2.连接硬件
对于有串口的PC,可参考图2-12通过RS-232芯片进行电平转换匹配。大多数笔记本电脑未配置9针的串口,取而代之的是USB接口,故从PC下载程序代码时须将USB接口转为可与单片机电平兼容的串口。这类接口转换芯片有CH340G、CH341G或PL2003等,应用时须对接口转换芯片安装驱动程序。单片机通过USB接口转串口芯片与PC连接的下载电路原理图如图2-13所示。另外,也可购买成熟的下载模块。
注意,电源、地、两根串行线(RXD、TXD)的连接,通信的一方TXD连接另一方的RXD,RXD与另一方的TXD相连。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_57_1.jpg?sign=1739058772-zBCqzzpJredIlQA8x0p1GtS09hQWSwSA-0-05ab7c45deab0760958b3e24bd6a8618)
图2-12 单片机与有串口PC连接的下载电路原理图
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_58_1.jpg?sign=1739058772-OwAusznOkE8cnW270IRfE1S6qutPqlV3-0-03d1f28f3a2b47819efcb8229842bd50)
图2-13 单片机通过USB接口转串口芯片与PC连接的下载电路原理图
3.确认串口
连接硬件后,右击“我的电脑”,选择“管理”→“设备管理器”→“端口(COM和LPT)”→“通信端口”,应该可看到由USB接口转换而虚拟出的串口(COMx)。
4.运行下载软件
安装好驱动后,接入硬件,再运行下载软件,会自动识别串口。代码下载的一般步骤:选择单片机的型号→选择确认串口→打开格式为Bin或Hex的代码文件→下载→上电→等待下载完毕,如图2-14所示。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_59_2.jpg?sign=1739058772-CtlLJFDbSXzDtx9Ti6TP0gxmtCFFjOoX-0-3f4912c4d04c3077cde03186d3cd9e84)
图2-14 STC单片机代码下载软件操作示意图
5.下载软件的其他功能
STC代码下载软件的右上侧有许多选项卡,提供了丰富的功能。如图2-15所示,下载代码或EEPROM文件时在相应的选项卡可见代码数据,还有些工具软件,如串口助手、波特率计算器、软件延时计算器等。例如,在“官方网站资源”选项卡下还链接了STC官网及常用资源(见图2-16(a)),在“封装脚位”选项卡下可查看芯片脚位(见图2-16(b))。可见,在这个代码下载软件中可找到有关芯片的所有资源。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_59_3.jpg?sign=1739058772-azPjql04XpeHnPoLpqNkoR5j5XlInsv2-0-46356d4ec6b929fd534dd911531425fd)
图2-15 下载软件右上侧菜单中提供的工具及资源
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_60_1.jpg?sign=1739058772-VGOnNNEghUfbhuP0i5gdywKfiRs3fAq2-0-3ebba68c2d624311490835a8b5e04a0e)
图2-16 代码下载软件“官方网站资源”和“封装脚位”选项卡下的内容
2.1.8 实物制作与上电测试
参考电路原理图制作实物作品,将已编程的单片机安装好,给系统接入5V的电源,应该看到与P1.0引脚相接的LED亮起来了。若不成功,则检查硬件电路排除故障,再上电测试,直到成功。
2.1.9 进阶设计与思路点拨1:亮多个灯
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_60_2.jpg?sign=1739058772-8hIhfT1eTkBMPJ4bH0CCXTZVAwaz8aLQ-0-695f6f4df333cb37283e78376079e27d)
(1)控制P1.1上的LED亮,程序如何修改?
思路点拨:P1.1引脚按位操作时,先用sbit定义后再使用。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_60_3.jpg?sign=1739058772-x1rTmIqAgVQ8bu7LAp2wpUlCsdx4Tkkn-0-0c530df39e6ff9a5a38a2e280af99bb1)
(2)控制P1.2上的LED亮,程序如何修改?
(3)控制P1.3上的LED亮,程序如何修改?
(4)控制P1.4上的LED亮,程序如何修改?
(5)控制P1.0、P1.1、P1.7上的LED亮,程序如何修改?
思路点拨:多个引脚按位操作时,均要先用sbit定义。相应的LED要亮,对它们依次赋值为0即可,流程图如图2-17所示。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_60_4.jpg?sign=1739058772-ooxE8V82GJ2UsGx6ccz0CgBV5SmKGeVr-0-e5523b358cf65b6adeba91f55389a87b)
图2-17 亮多个灯的程序流程图
(6)控制P1.1~P1.6上的LED亮,程序如何修改?
(7)控制P1.7~P1.0上的LED亮,使其表示自己的学号,LED亮表示1,LED灭表示0,程序如何修改?
思路点拨:两位十进制数学号用8位二进制数表示,其十位占高4位,个位占低4位,具体数据分析见表2-2,对这8个控制位依次赋相应的值即可。
表2-2 用LED指示学号的分析表
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_61_1.jpg?sign=1739058772-W7Wk7Y192TYHvVe4f6K9o8nFrsPqtyz9-0-8054752125070974477a7c73ce94fd97)
进一步思考:本设计程序实现的思路如(5)、(6),流程参考图2-17,但这样对8个位依次去赋值,程序较长,书写有点麻烦,简捷的办法是,对8个位同时赋不同的值,即对P1口直接赋值:
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_61_2.jpg?sign=1739058772-EcTwALX0vPst5LqxOdb2tAqdPHd1HMIc-0-9ed0ff30b53fcc92652901f81e9145d6)
2.1.10 进阶设计与思路点拨2:用BCD数码管显示自己的学号
任务要求:用单片机的两组I/O口控制BCD数码管显示自己的两位学号,如P0控制数码管显示学号的十位,P2控制数码管显示学号的个位。
1.认识BCD数码管
本节使用的BCD数码管是带译码器的只有4个引脚的七段数码管,是个简便的显示器,名称为。如图2-18所示,给数码管送4位二进制数,便显示出对应的数字。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_61_4.jpg?sign=1739058772-5np1um0yDgzwCN7NMVxFxBUZ5fiCj0Sp-0-16b9d08962a8f6bb5461f9bddc4ffa53)
图2-18 单片机控制数码管电路原理图
根据图2-18将0~9这10个数对应的二进制数填写在表2-3中。此BCD数码管仿真模型是共阴极的。
表2-3 BCD数码管显示内容与二进制数对应关系
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_62_1.jpg?sign=1739058772-SYHaDw4VXw1LgNpXxZKCVChLmMc9sdUq-0-0f7817a019c814b513a6fbc3cb847f1d)
2.参考电路设计
用BCD数码管显示学号电路所用元器件列表及原理图如图2-19所示。
注意:数码管的引脚从左到右依次对应4位二进制数的高到低位,以及数码管引脚高/低位与单片机引脚高/低位对应连接。
![](https://epubservercos.yuewen.com/964F67/19391577901347306/epubprivate/OEBPS/Images/40331_62_2.jpg?sign=1739058772-vJgp7lQVgROknuNRb4MPwTlbh5i6wuTg-0-9d4494a7ae7d2d233b8c4b816176a547)
图2-19 用BCD数码管显示学号电路所用元器件列表及原理图
3.完成实践报告
参考附录A完成实践报告。