1 单片机技术及实训第2版 课件全套 杨志辉 项目0-8 绪论、LED广告灯的制作微信小程序控制作业环境显示屏的制作_第1页
1 单片机技术及实训第2版 课件全套 杨志辉 项目0-8 绪论、LED广告灯的制作微信小程序控制作业环境显示屏的制作_第2页
1 单片机技术及实训第2版 课件全套 杨志辉 项目0-8 绪论、LED广告灯的制作微信小程序控制作业环境显示屏的制作_第3页
1 单片机技术及实训第2版 课件全套 杨志辉 项目0-8 绪论、LED广告灯的制作微信小程序控制作业环境显示屏的制作_第4页
1 单片机技术及实训第2版 课件全套 杨志辉 项目0-8 绪论、LED广告灯的制作微信小程序控制作业环境显示屏的制作_第5页
已阅读5页,还剩331页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《单片机技术及实训第2版》

绪论

单片机最小系统《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统1.什么是单片机

单片机是单片微型计算机简称,是一种典型的嵌入式微控制器(MicrocontrollerUnit),

英文字母为MCU。它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

较早的单片机学习板比如Z80学习板,是将Z80单片机、键盘、数码管显示器、只读存储器ROM、随机存器器RAM等各部分安装在一块电路板上,称为单板机,如今随着大规模集成电路的发展和应用,将单板机中的运算器,控制器,存储器,输入输出设备等再次集成到了一个芯片上,一块芯片就构成了一台计算机,所以称为单片机。

根据发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。图0-1各种单片机实物图《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统2.单片机的引脚MCS-51系列单片机都采用40引脚的双列直插封装方式,图0-2为引脚排列图,40条引脚说明如下:(1)电源引脚

Vcc(40脚):电源正.一般为+5VVss(20加脚):电源地。(2)时钟电路引脚XTALl(19脚)和XTAL2(18脚)为单片机内部高增益的反向放大器的输入端和输出端。

(3)并行I/0接口引脚MCS-51单片机共有4个并行I/O接口,每个接口为8位,分别为P0、Pl、P2、P3,其中P0口的第1位表示为P0.0,第2位表示为P0.1,以此类推,每个口线可独立控制。《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统P3口(10脚--17脚):8位准双向并行I/O口,内部带有上拉电阻。作为第一功能使用时为普通8位并行I/O口。在系统中,这8个引脚又具有各自的第二功能。如表0-1所示。《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统(4)编程控制引脚RST/Vpd(9脚):RST为复位信号输入端。当RST端保持两个机器周期以上的高电平时,单片机完成复位操作。Vpd为内部RAM的备用电源输入端。当电源Vcc一旦断电或者电压降到一定值时,可以通过Vpd为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,且上电后能够继续正常运行。PSEN(31脚):

外部程序存储器的读选通信号,与芯片的OE相连。当访问外部ROM时,PSEN产生负脉冲作为外部ROM的选通信号。

ALE/PROG(30脚):ALE为地址锁存信号。访问外部存储器时,ALE作为低8位地址锁存信号:PROG为单片机内部EPROM编程时的编程脉冲输入端。

EA/Vpp(31脚):EA为内外程序存储器的选择信号。当EA接低电平时,单片机上电后直接访问外部程序存储器;当EA接高电平时,单片机上电后访问从内部程序存储器,当访问地址超出单片机内部程序存储器容量后,可以自动延至外部程序存储器。

Vpp为单片机内部EPROM编程的编程电源输入端。《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统3.单片机最小工作系统

对于内部有程序存储器的MCS-51型单片机,若所需的工作电源、复位电路和晶体振荡电路齐全,即可构成完整的单片机最小系统;若再连接上外部设备,就可以对其进行控制了。

这种维持单片机运行的最简单的配置系统,称为单片机最小系统。《单片机技术及实训第2版》

绪论

一、搭建单片机最小系统

4.单片机实训板简介

如图所示,实训板中使用的单片机型号为STC12C5A60S2。

实训板集成了LED发光二极管、四位数码管、串行口、BT136、AT24C02、DS18B20等元器件,同时将INT0、T0等口线引出,从简单的点动控制到高级应用“I2C”、“一线制”等,可满足不同层次使用者的需求。

设计上采用电源模块和USB取电两种方式,体积小巧,学生上课时只需一台电脑即可,不需添加其他设备。《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目

单片机编程过程中主要使用的语言有三种:机器语言、汇编语言和高级语言。无论是高级语言还是汇编语言写的源程序都必须转换成目标程序(单片机所能执行的二进制文件),单片机才能执行。目前很多公司都将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成了软件包,称为集成开发环境,如KeiluVision、SiliconLaboratoriesIDE等。1.keil软件的安装1)打开keil软件安装程序文件夹,双击c51v900.exe图标,启动安装界面。如图0-5所示。图0-5

Keil软件的安装界面《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目2)单击“next”按钮,阅读软件安装说明,并将“Iagreetoall….”前复选框选中。如图0-6所示。图0-6

Keil软件安装说明《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目3)单击“next”按钮,设置软件安装路径,默认为“C:/keil”,如图0-7

所示。图0-7

Keil软件安装路径《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目4)单击“next”按钮,进入软件使用者注册信息界面,填写用户姓名,联系方式乖信息,如图0-8

所示。图0-8

Keil软件注册信息《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目5)填写完注册信息后,单击“next”按钮,开始复制文件过程,如图0-9

所示。图0-9程序文件复制《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目6)keil软件安装完成,在[开始]—[程序]菜单中即可找到“keiluVision4”按钮,单击此按钮,启动keil软件,如图0-10

所示。图0-10

启动Keil软件《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目2.单片机“led_shanshuo”项目的建立和编译1)启动keil软件,进入keil软件初始界面。如图0-11

所示。图0-11

Keil软件工作界面《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目2)选择project—newproject命令,弹出“CreateNewProject”对话框,在“文件名”文体框中输入工程名称“led_shanshuo”,并选择合适的路径,然后单击“保存”按钮。如图0-12所示。图0-12保存工程文件《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目3)单击“保存”按钮后,弹出下图所示对话框,在该对话框中选择单片机的厂家及型号,如图0-13

所示。图0-13选择目标CPU对话框《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目

4)选择完器件后,单击“确定”按钮,弹出下图所示对话框,单击“是”按钮,将启动代码添加到项目中,建立工程完毕,如图0-14

所示。图0-14添加启动代码到项目中对话框《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目5)选择file—new命令,或单击工具栏中的new按钮,新建一个空白文本文件,如图0-15

所示。图0-15新建空白文档《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目6)选择file—save命令,或单击工具栏中的save按钮,弹出保存文件对话框,设置保存文件存放路径,本项目保存在“F:\单片机教材\教材资料\工程项目\led_shanshuo\src”中,如图0-16

所示。图0-16新建源程序文件夹对话框《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目7)在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时必须键入正确的扩展名,如图0-17

所示。扩展名不分大小写;如果用C语言编写程序,则扩展名为(.C);如果用汇编语言编写程序,则扩展名必须为(.ASM),然后,单击“保存”按钮。图0-17保存文档对话框《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目8)右击“工程管理窗口”中的SourceGroup1文件夹,在弹出的快捷菜单中选择“AddFiletoGroup‘SourceGroup1’”命令,弹出如图0-18所示对话框。选择led_shanshuo.c文件,单击Add按钮。然后单击Close按钮可能看到led_shanshuo.c文件已经被添加到SourceGroup1文件夹中。图0-18添加源文件到项目中《单片机技术及实训第2版》

绪论

二、在KeiluVision软件中建立单片机项目9)接下来就可以在文本编辑框中编写程序了,源程序内容如图0-19

所示。图0-19编写源程序《单片机技术及实训第2版》

绪论

三、单片机常用开发工具的使用1.仿真器

所谓仿真,就是采用可控的手段来模仿单片机应用系统中的ROM、RAM和I/O端口等,可以是软件仿真,也可以是硬件仿真。

硬件仿真就是将仿真器的端连接到计算机上、代替了单片机的功能,另一端通过仿真头连接单片机应用系统的单片机插座上,其应用如图0-20

所示。通过仿真器用户可能对程序的运行进行控制。如单步、设置断点、全速运行等。软件仿真主要是通过计算机软件来模拟运行、用户不需要拱建硬件电路就可以对程序进行调试验证。如后面项目六中所讲到的Proteus软件。《单片机技术及实训第2版》

绪论

三、单片机常用开发工具的使用硬件仿真器仿真具有直观性、实时性和调试效率高等优点。常见的仿真器如图0-21

所示。图0-21常见的仿真器《单片机技术及实训第2版》

绪论

三、单片机常用开发工具的使用2.编程器

单片机所要执行的程序,是放在单片机内部的程序存储器中的,把目标程序放到存储器的过程称为程序“写入”或程序“烧录”,而所用的设备称为编程器(俗称烧写器)。

常见的编程器如图0-22所示。由于芯片生产厂家多,型号也多,所以通用编程器应支持多种芯片程序的读写操作。好的编程器支持的芯片型号很多。

目前市场上的编程器的价格从几百元到几千元不等。图0-22常见的编程器《单片机技术及实训第2版》

绪论

三、单片机常用开发工具的使用3.ISP下载线ISP(In-Systemproggramming)意为“在系统可编程”,是指将程序烧写到单片机的程序存储器时,不需要将单片机从目标板上拔出,而是通过专用的ISP下载线对单片机程序进行烧写,也就是将计算机上编译好的HEX文件直接下载到单片机的程序存储器中运行。常见的ISP下载线如图0-23所示。图0-23常见的下载线

使用ISP下载线烧写程序,要求单片机必须支持ISP功能,并且目标电路板上留出与上位机接口(ISP插座),就可以通过ISP下载线实现对单片机内部存储器的改写。《单片机技术及实训第2版》

绪论

四、下载单片机应用程序利用STC单片机的在线写入功能(ISP),通过计算机的串行通信口和专用的烧录软件来下载单片机应用程序。1.ISP工作原理STC12C5A60S2系列单片机具有在系统可编程(ISP)特性,单片机在用户系统上即可下载/烧录用户程序。ISP的好处是:省去购买通用编程器,无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小了新产品由于软件缺陷带来的风险。由于可以在用户的目标系统上将程序直接下载进单片机看运行结果对错,故无须仿真器。图0-24

STC系列单片机ISP原理图《单片机技术及实训第2版》

绪论

四、下载单片机应用程序2.编程软件下载教材中使用的软件为深圳国芯人工智能有限公司的在线编程软件,版本为AIapp-ISP-v6.95Y,可从广州宏晶科技有限公司网站(/gjrj)免费下载,下载页面如图0-25

所示。图0-25

stc-isp软件下载界面《单片机技术及实训第2版》

绪论

四、下载单片机应用程序2.编程软件下载教材中使用的软件为深圳国芯人工智能有限公司的在线编程软件,版本为AIapp-ISP-v6.95Y,可从广州宏晶科技有限公司网站(/gjrj)免费下载,下载页面如图0-25

所示。图0-25

stc-isp软件下载界面《单片机技术及实训第2版》

绪论

四、下载单片机应用程序3.下载单片机应用程序的操作过程(1)选择单片机型号教材中单片机实训板中使用的单片机型号为STC12C5A60S2series系列中的STC12C5A60S2,芯片选择如图0-26所示。图0-26选择单片机型号《单片机技术及实训第2版》

绪论

四、下载单片机应用程序(2)选择目标文件所谓目标文件,是指单片机能执行的二进制文件,其由专门的编译软件生成(如KeilC等)。在本节中我们直接给出。单击软件操作界面中的“打开程序文件”按钮,出现“打开文件”对话框,找到目标文件的存储路径,选中目标文件(exam1.hex),单击“打开”按钮,将目标程序装载到烧录软件中,如图0-27

所示。图0-27选择目标文件《单片机技术及实训第2版》

绪论

四、下载单片机应用程序(3)选择串行口

STC系列单片机程序烧录功能是通过计算机的串行口进行的。

对于台式计算机,一般主板引出的串口为COM1,所以可直接选用COM1为下载程序端口。

而对于笔记本等便携式电脑,将串口引出的不多,这时可通过USB转串口设备进行,先安装完驱动程序,再根据电脑硬件信息选择设置(具体可参考相关资料)。

烧录软件选择串行口如图0-28

所示。图0-28选择通信端口《单片机技术及实训第2版》

绪论

四、下载单片机应用程序(4)设置功能选项STC12C5A60S2单片机的时钟源、振荡器放大增益等参数均可以在烧录软件中进行设置或调整,如图0-29所示。一般情况下选择默认值即可。图0-29设置相关选项《单片机技术及实训第2版》

绪论

四、下载单片机应用程序(5)下载程序用串口线将计算机串口与实验板串口连接起来,按照软件提示,先点击“下载/编程”按钮,然后接通实验板电源,下载软件即启动与单片机的通信过程,自动将目标程序烧录到单片机中,如0-30所示。图0-30下载程序完成《单片机技术及实训第2版》

绪论

小结

1.单片机及单片机系统的概念。单片机是把CPU、RAM、ROM、定时器/计数器和多种功能的I/O接口等部件集成在一块芯片上所构成的微型计算机。

单片机应用系统则是指在各类电子产品中,利用单片机实施控制的系统。

2.MCS-51单片机的基本结构及引脚功能。MCS-51的40个引脚按其功能类别分为以下四类:电源引脚、时钟引脚、编程控制引脚、I/O接口引脚。

4个8位并行输入/输出接口分别为:P0口、Pl口、P2口和P3口,共计32根输入\输出线,每1位均能独立使用。其中Pl口只能构成输入\输出接口;P0口除了可作为通用I/O口使用之外,又构成系统的数据总线和地址总线的低八位;P2除了可作为通用I/'O口使用外,又构成系统的地址总线的高八位;P3口即可作为通用I/O口使用,它的每一根口线又都兼有第二功能。

3.单片机正常工作的3个基本条件是:电源、时钟、复位电路。

单片机最小系统是指用最少的元件组成的单片机应用系统。

4.单片机开发系统的常用工具包括仿真器、编程器、ISP下载线。

5.Keil开发软件具有方便易用的集成环境、强大的软件仿真调试工具,熟练掌握此软件的使用方法是利用单片机进行产品开发的关键之一。《单片机技术及实训第2版》

项目一LED广告灯的制作《单片机技术及实训第2版》

项目一LED广告灯的制作LED又名发光二极管,是仪器、仪表常用指示元件。在本项目中,主要讲解单片机I/O的基本使用方法,通过编程控制LED的亮灭顺序和时间,以实现不同的显示效果。

任务一

实现LED闪烁效果在日常生活中,有各种各样的闪烁灯,有起警示作用的,如汽车转向灯、十字路口交通信号灯,也有有起装饰或娱乐作用的,如宾馆、商店门口的装饰灯、儿童玩具等,图1-1所示为生活中的各种闪烁灯。图1-1各种闪烁灯《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1一、任务描述利用单片机的P0口作为输出口,完成LED驱动电路的设计,同时编写程序,实现LED闪烁效果。二、相关知识1.LED发光二极管LED发光二极管是几乎所有的单片机系统都要用到的显示器件,常见的LED发光二极管主要有红色、绿色、蓝色等单色发光二极管,另外还有能发红色和绿色光的双色二极管,能发红、绿、蓝三种光的三基色真彩二极管,常见的发光二极管如图1-2所示,其中左图绿色发光二极管,右图为双色发光二极管。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果12.单片机P0口结构MCS-51单片机P0口的内部结构如图1-3所示,主要由一个数据输出锁存器、两个三态缓冲器,一个多路转换开关MUX,一个输出驱动电路(两个场效应晶体管FET)组成。(1)作为输出口当P0用作输出口时,因输出级处于开漏状态,必须外接上拉电阻,当“写锁存器”信号加在锁存器的时钟端CLK上,此时D触发器将“内部总线”上的信号反相后输出到/Q端,若D端信号为0,/Q=1,T2导通,P0.X引脚输出“0”;若D端信号为1,/Q=0,T2截止,虽然T1截止,因P0.X引脚已外接上拉电阻,P0.X引脚输出“1”。(2)作为输入口当P0用作输入时,必须保证T2截止。因为若T2导通,则从P0口引脚上输入的信号被T2短路。为使T2截止,必须先向该端口锁存器写入“1”,/Q=0,T2截止。输入信号从P0.X引脚输入后,先进入输入缓冲器。CPU执行端口输入指令后,“读引脚”信号使缓冲器开通,输入信号进入内部数据总线。图1-3

P0口内部结构《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果13.电阻排

在单片机实训板中,我们使用了电阻排。在图1-8中一共有8个发光二极管,每个管子上串连一个电阻,然后电阻的另一端接电源,因为8个管子的接法相同,所以我们把8个电阻的另一端全部连接在一起,这样一来,便共有9个引脚,其中一个称为公共端,如图2-4所示。

电阻排在公共端附近会有一个白色的圆点做为标记,同时在排阻上都标有阻值号,比如681表示其阻值大小为68*101Ω,即680Ω,102表示其阻值大小为10*102Ω,即1KΩ。有时也会看到标号为1002,1001等,1002表示100*102Ω,即10

KΩ,1001表示100*101Ω,即1KΩ。标号位数不同,其电阻的精度也不同,一般地,3位数表示5%精度,4位数表示1%精度。图1-4直插式电阻排《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果14.单片机C语言编程知识C语言是美国贝尔实验室于20世纪70年代初研制出来的,后来又被多次改进,并出现多种版本,如MicrosoftC、TurboC、BorlandC等。人们在进行单片机开发时,为了提高编程效率也开始使用针对单片机的C语言,一般称为C51语言。(1)文件包含及头文件的作用

1)文件包含

文件包含是指一个源文件将另外一个源文件的全部内容包含进来。常用于函数的声明、宏定义、全局变量的定义、外部变量的声明等。如图1-5所示。

文件包含有两种形式:#include<>和#include“”

#include<>是指调用的文件在系统目录中,即编译软件的安装目录中。#include“”是指调用的文件在自己编写的源文件目录中,如果这个地方没有,则再从系统目录中去寻找。#include“”可以完全取代#include<>,反之则不行。但是为了编译速度最快,通常使用#include<>,也使读者一目了然头文件的来源。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果12)头文件

在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。

要想打开头文件reg51.h查看其内容,可以在Keil软件的安装路径/C51/INC目录下找到并以记事本打开,也可以在将鼠标移到#include<reg51.h>上,单击右健,选择“Opendocument<reg51.h>”。reg51.h文件的部分内容如下:从reg51.h文件可以看到,该头文件中定义了51系列单片机内部所有的功能寄存器用到了两个关键字:sfr和sbit。sfr:特殊功能寄存器的声明,声明一个8位的寄存器。Sbit:位声明声明一个可寻址位。

“sfrP0=0x80”语句的意义是,把单片机内部地址0x80这个寄存器重新起名叫P0,以后我们在程序中可直接使用名字P0来操作地址0x80这个寄存器。sbit和sfr功能基本相同,只不过sbit声明的是位名称。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1(2)主程序main函数int表示main函数的返回值是int(即整数)型,int可以省略。如果在main函数中不加返回语句的话,默认返回0。

小括号中的内容表示函数的参数,void表示无参数,无参数表示该函数不带任何参数,也可以只写“()”。

main函数后面的花括号中的内容就是这个函数的所有代码。每条独立语句的末尾都要加上分号,一行可以写多条语句。

任何一个单片机C程序有且只有一个main函数,它是整个程序开始执行的入口,不论main放在程序中的哪个位置,总是先被执行。main函数可以调用别的功能函数,但其他功能函数不允许调用main函数。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果15.流程图

对于简单的程序,可以直接编写源程序,而对于复杂的程序,往往不能直接完成源程序的编写,为了把复杂的工作变得条理化、直观化,通常在编写程序之前先设计流程图。

所谓流程图,就是用带箭头的线把矩形框、菱形框和圆角矩形框等连接起来,以表示实现这些步骤或过程的顺序。

流程图中常用的符号如图1-6所示。图1-6

流程图常用符号《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1三、任务实施1.LED驱动电路设计要使LED二极管能够正常发光,必须满足两个条件:(1)二极管应正向偏置,即正极接高电位,负极接低电位。(2)二是二极管要流过足够大的工作电流。不同的LED二极管工作电流是不一样的,普通二极管工作电流10mA,超亮二极管工作电流20mA左右,不同颜色的发光二极管压降也不一样,比如红色:2.0V-2.2V、黄色:1.8V-2.0V、白色:3.0V-4V、蓝色:3.0V-4V、绿色:2.0V-2.2V等。限流电阻的计算公式为:

限流电阻阻值=(电源电压-二极管压降)/二极管工作电流LED驱动分为低电平点亮和高电平点亮两种。由于MCS-51单片机中Pl--P3口内部上拉电阻较大,引脚输出高电平电流IOH很小(为30—60uA)。而输出低电平时,端口内部下拉MOS管导通,可吸收1.6--15mA的灌电流,负载能力较强。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1

在图2-7所示的电路中,对led3、led4的高电平驱动是错误的,因为单片机提供不了点亮LED的输出电流。

正确的高电平驱动电路如图1-7中led5所示。

因为高电平驱动时需要另加一NPN型三极管,所以在实际电路设计中,一般采用低电平驱动方式。图1-7

LED驱动电路《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1在本项目中,我们使用单片机实训板来实现LED广告灯的效果,电路原理图如图2-8

所示。其中RP1为9脚电阻排,阻值为1K。图1-8

实训板LED原理图《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果12.程序设计(1)编程思路

要实现LED闪烁的效果,其实就是控制LED的亮灭。

在前面我们讲到,要使LED发光二极管发光,要满足两个条件,一是LED发光二极管两端加合适的电压,二是流过足够的电流。

在单片机实训板中,限流电阻已经是计算好的,已保证电流足够,因此,要使LED发光二极管发光,只需在其两端加上合适的电压即可,即对应的引脚输出低电平。开始P0.0输出低电平延时P0.0输出高电平延时图1-9

LED闪烁效果流程图《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1(2)

参考程序在本任务中,参考程序如下所示。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1(3)闪烁效果调试参考绪论中所讲的内容,在Keil软件中建立“led_shanshuo”项目,输入参考程序并添加程序文件到项目中。完成后,进行Keil软件的编译参数设置。1)编译参数设置在"Target1"上单击右键选择OptionsforTarget'Target1'或选择菜单命令[Project]--

[OptionsforTarget'Target1],弹出“OptionsforTarget‘Target1’”对话框。如图1-10

所示。图1-10打开“OptionsforTarget'Target1”'对话框《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1使用OptionsforTarget'Target1'对话框设定目标的硬件环境。如图1-11所示。图1-11“OptionsforTarget'Target1”'对话框《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1OptionsforTarget“Target

1”对话框有多个选项页,一般情况下按缺省设置,下面介绍几个需用户自己设置的选项。设置在编译、连接程序时自动生成机器代码文件(.HEX),因为默认是不输出HEX代码的,所以需用户设置。单击“Output”中选项,在弹出的“Output对话框”中勾选“CreateHEXFile”选项(如下图所示),使程序编译后产生HEX代码文件(默认文件名为项目文件名,也可以在“NameofExecutable”信息框中输入HEX文件的文件名),点击“确定”按钮。为便于文件管理,可选择“SelectFolderforObjects”设置输出文件的存放路径,本项目存放路径为“E:\单片机教材\教材资料\工程项目\led_shanshuo\outfile\”,单击“OK”按钮,结束设置。如图1-12

所示。图1-12输出代码路径设置《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果12)生成目标程序文件在设置好工程,输入程序后,即可进行编译、连接。选择菜单[project]--[buildtarget],对当前工程进行连接,如果当的文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择“RebuildAlltargetfiles”将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,

编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,可对源程序修改。编译成功后会自动生成名为led_shanshuo.hex的文件,如图1-13

所示。图1-13

程序编译《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果13)下载调试程序运行“STC-ISP.exe”软件,将编译好的程序通过串行口下载到单片机实训板中,观查LED闪烁效果。改变delay()延时函数的参数值,即可改变LED闪烁的快慢。《单片机技术及实训第2版》

项目一LED广告灯的制作任务一实现LED闪烁效果1任务二实现LED流水效果当夜幕降临时,在许多城市的道路上,到处都是光彩夺目、变幻无穷的霓虹灯,产生着各种各样的效果,非常好看,如图1-14所示。其中有一种效果,灯管一个一个地轮流点亮,到头后全部熄灭;然后再从第一个重新显示,这称之为流水灯。在本任务中,我们将单片机实训板中实现流水灯的效果。图1-14变幻无穷的霓虹灯《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2一、任务描述在本任务中单片机的P0作输出口,接8个LED发光二极管,通过向P0口不停的赋值、延时来实现流水的效果。

二、相关知识1.while循环语句

while循环语句是常用的条件循环语句,可用来做固定次数的循环程序和不定次数的循环程序,其常见语法格式如下:其执行过程是:先判断循环条件是否满足,如果满足则执行循环体的内容,执行完之后自动返回继续判断循环条件,如果满足则继续执行。如果条件不满足,则跳出while语句,执行后面的语句。在主程序序中使用while(1){语句1},是让while(1)所包含的花括号中语句永远循环执行称为死循环。单片机程序的主程序都是一个死循环程序,以便能不停地输出控制信号、接收输入信号和更新一些变量的值,保证程序的正常运行。《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果22.“=”运算符

控制单片机I/O口输出,在C语言中非常简单,只需要使用“=”运算符就可以了。

“=”运算符是赋值运算符,它的作用是把“=”右边的值赋给“=”左边的变量。

例如,如果想让单片机的P0口的P0.0口线输出高电平,另外七个口线输出低电平,写做:P0=0x01;但是如果只想让P0.0口线输出低电平,而另外七个口线不受影响,可以使用位操作:P0^0=0;。

C语言中,关键字和变量在书写时是要区分大小写的,由于在reg51.h头文件中,定义P0的语句sfrP0=0x80;其中字母P是大写,书写P0时的字母P一定要大写,否则,编译器将无法识别而出现错误。

《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果23.注释

为了增加程序的可读性,往往给程序添加必要的文字说明,这就是注释。注释是方便人们读程序而写的,是给人看的,对编译和运行不起作用。注释可以在程序的任何位置。C语言中,注释分为行注释和段注释两方式:1)行注释以“//”符号开始,符号之后的语句都被视为注释,直到有回车换行。2)段注释是指在“/*”和“*/”符号之内的为注释。例如:《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果24.移位运算符和循环移位函数(1)移位运算符移位运算符能够对变量中的数进行移位运算,包括左移位运算符“<<”和右移位运算符“>>”,其格式如下:a=a>>1;

//将变量a中的数右移l位后赋给aa=a<<2;

//将变量a中的数左移2位后赋给a

移位运算示意图如图1-15所示(注意移位后末位补“0”)。

a)左移位运算

b)右移位运算

图1-15移位运算示意图《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2

(2)循环移位函数

循环移位函数能够对变量中的数进行循环移位,属于MCS-51单片机内部函数,需要包含头文件“INTRINS.H”。下面以字符型变量的循环移位函数为例来说明循环移位函数的使用,其格式如下:a=_crol_(a,1);//将变量a中的数循环左移1位后赋给aa=_crar_(a,2);//将变量a中的数循环右移2位后赋给a循环移位函数执行过程示意图如图1-16所示。

(a)循环左移运算

(b)循环右移运算

图1-16循环移位运算示意图《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果23.子函数

在程序设计过程中,有多个地方用到同一段程序,需要重复书写。为了减少书写以把该段程序设置成子函数,在需要该段程序时,只要调用子函数就可以了。有时虽然某段程序只使用一次,但为了使程序结构简单、清晰和具有易读性,也会把该段程序写成子函数的形式。

(1)子函数的声明子函数可以先声明,也可以不预先声明。如果子函数的位置在调用语句之前,则不需要专门声明;如果子函数的位置在调用语句之后,则需要对这个子函数进行声明。声明的方法如下:void

delay(void);//声明一个无返回值、无参数的延时子函数。(2)子函数的编写子函数的编写和主函数的编写差不多,只是函数名称不同。如下是延时子函数的编写:voiddelay(void){/*函数体*/}

(3)子函数的调用子函数的调用就是指一个函数体中引用另一个已定义的函数来实现所需要的功能,这个时候函数体称为主调用函数,函数体中历引用的函数称为被调用函数。一个函数体中能调用数个其他的函数,这些被调用的函数同样也能调用其他函数,即嵌套调用。调用的方法是在函数中写上子函数的名称,后面跟上括号和“;”号。如延时子函数的调用:delay();//调用延时子函数《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2三、任务实施(一)电路设计实现LED流水效果的硬件电路如图1-8所示。(二)程序设计方式一:按字节操作方式实现LED流水效果(1)编程思路只要将发光二极管ledl~led8轮流点亮和熄灭,8只LED便会一亮一暗地形成流水灯的效果了。使P0口的8个LED实现流水灯的功能,其程序流程图如图1-17

所示。图1-17流水灯程序流程图《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2

(2)参考程序根据流程图,按字节操作的程序如下:《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2方式二:用移位运算符实现LED流水效果(1)编程思路

使用左移运算符“<<”实现流水灯效果的程序要比按字节操作方式编写的程序简短、高效。左移运算符的结果是左移1位,末位自动补“0”,程序中需要指令使末位补“1”。左移8次之后P0口的赋值就会全变为“1”,即0xff,这时需要重新赋初值0xfe。使用左移运算符实现流水灯的程序流程图如图1-18所示。图1-18使用左移运算符实现流水灯的程序流程图《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2(2)参考程序根据流程图,编写程序如下:《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2方式三:用移位函数实现LED流水效果(1)编程思路

使用循环左移函数进行移位时,相当于所有的二进制数首尾相连成一个闭环,其中“0”和“1”的个数保持不变,给P0口赋值的初值也可以是:0xfe、0xf8,这样就可以有2个或3个LED灯在流动。

使用循环左移位函数实现流水灯的程序流程图如图1-19所示。图1-19使用循环左移位函数实现流水灯的程序流程图《单片机技术及实训第2版》

项目一LED广告灯的制作任务二实现LED流水效果2(2)参考程序根据流程图,编写程序如下:《单片机技术及实训第2版》

项目一LED广告灯的制作任务三

实现LED随机显示效果LED随机显示效果是指LED发光二极管的变化比较比较复杂没有规律可循,可以按自己的想法每次点亮发光二极管中的一个或几个。一、任务描述在本任务中单片机的P0作输出口,接8个LED发光二极管,通过通过向P0口不停的赋值、延时来实现随机显示效果。

二、相关知识

1.if条件语句和for循环语句(1)if条件语句就如学习语文中的条件语句一样,C语言也一样是“如果××就××”或是“如果××就××否则××”。也就是当条件符合时就执行语句。条件语句又被称为分支语句,其关键字是由if构成的。C语言提供了3种形式的条件语句:1)当条件表达式的结果为真时,就执行语句,否则就跳过,语法如下:《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果31)当条件表达式的结果为真时,就执行语句,否则就跳过,语法如下:if(条件表达式){

语句;}2)当条件表达式成立时,就执行语句1,否则就执行语句2,语法如下:if(条件表达式){

语句1;}else{语句2;}《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果33)由if、else组成的多分支条件语句,语法如下:if(条件表达式1){语句1;}elseif(条件表达式2){语句2;}elseif(条件表达式m){语句m;}else{语句n;}《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果3(2)

for循环语句在明确循环次数的情况下,for循环语句比前面学的while循环语句要方便简单。它的语法如下:For([初值设定表达式];[循环条件表达式];[条件更新表达式])

中括号中的表达式是可选的,这样for语句的变化就会很多样了。for语句的执行:先代入初值,再判断条件是否为真,条件满足时执行循环体并更新条件,再判断条件是否为真.......,直到条件为假时,退出循环。用for循环语句实现的延时子函数如下:delay(){unsignedinti;for(i=0;i<30000;i++);}《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果32.数组

数组是同类型数据的一个有序集合。数组用一个名字来标记,称为数组名。数组中各元素的顺序用下标来表示.下标为n的元素可以表示为:数组名[n],方括号[]中的数为下标,改变[]中的下标就可以访问数组中所有的元素。

定义数组的一般格式如下:数据类型数组名[元素个数];

//元素个数可以不写在定义数组时,可以给数组赋初值。例如:unsignedchara[5]={1,2,3,4,5};上面定义的数组a共有5个元素,并给全部元素赋值,a[0]=1,a[1]=2,a[2]=3,a[4]=4,a[5]=5;《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果3三、任务实施1.电路设计实现LED随机显示效果的硬件电路如图1-8所示。2.程序设计(1)编程思路

在流水灯的例子中,不管是左移还是右移,都是有规律的,我们利用左、右移运算符或者左、右移函数便可轻松实现。但如果要实现复杂的、没有规律的变换,该怎么做呢?我们有两种方案可以选择,一种是采用最笨的方法,即依次给P0口赋值,但程序会很长;第二种就是将所有的数据存入一个数组中,在循环程序中不断改变数组的下标,使赋值给P0的值不断变化,实现随机显示的效果。《单片机技术及实训第2版》

项目一LED广告灯的制作任务三实现LED随机显示效果3(2)参考程序实现LED随机显示效果参考程序如下所示。《单片机技术及实训第2版》

项目一LED广告灯的制作项目小结4

1.在单片机控制系统中,通过I/O口进行开关量的控制占用较大比重,如LED发光二极管的亮灭、电动机的起停等控制都属于单片机的开关量输出控制:制作单片机输出控制电路是学习单片机的重要一步,掌握其制作将对今后学习单片具有重要意义:

2.LED发光二极管是几乎所有的单片机系统都要用到的显示器件,在使用MCS-51系列单片机驱动LED发光二极管或数码管时,要特别注意其驱动电流。一般来讲,由于Pl—P3口内部上拉电阻较大(为20—40k),属于“弱上拉”,因此Pl—P3口引脚输出高电平电流IOH很小(为30-60mA),不足以点亮发光二极管,需要增加驱动电路。而输出低电平时,下拉MOS管导通,可吸收1.6一15mA的灌电流,负载能力较强,可以直接点亮发光二极管,而不需要额外增加驱动电路。

3.实现LED广告灯效果是单片机入门的基本例程,在完成广告灯制作的基础上,应更关注、总结C语言程序的基本结构、格式和调试方法等。

项目二

电子温度计的制作项目二

电子温度计的制作温度的测量和显示,在我们的日常生活中随处可见,如空调、冰箱、万年历等。本项目中,通过DS18B20采集当前温度,并以数字量的形式送给单片机,单片机对该数字量处理后在电路板上由三位数码管进行显示。任务一温度检测电路的搭建一、任务描述根据数字温度传感器DS18B20的特性,设计其与单片机的接口电路。二、相关知识DALIAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。用户可轻松地组建传感器网络,提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。支持3~5.5V的电压范围,使系统设计更灵活、方便。DS18B20的引脚及功能如表2-1所示。图2-1

DS18B20引脚及底视图项目二

电子温度计的制作任务一温度检测电路搭建1DS18B20的性能特点如下:1)只要求l根口线即可实现通信。2)在DS18B20中的每个器件上都有独一无二的序列号。3)实际应用中不需要外部任何元器件即可实现测温。4)测量温度范围在-55~+125℃之间。5)数字温度计的分辨率,用户可以从9—l2位选择。项目二

电子温度计的制作任务一温度检测电路搭建1

1.64位光刻ROM

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看做是该DS18B20的地址序列码。6位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的唯一序列号,最后8位是前面56位的循环冗余校验码(CRC)。

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20内部结构如图2-2所示,主要由五部分组成:64位光刻ROM、高速缓存、温度存储器、非易失性的温度报警触发器TH和TL、配置寄存器。项目二

电子温度计的制作任务一温度检测电路搭建12.高速暂存存储器高速暂存存储器包含了9个连续字节,其字节定义如表2-2所示。前两个字节存放测得的温度值,第1个字节的内容是温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是TH、TL的易失性复制,第5个字节是结构寄存器的易失性复制,这三个字节的内容在每一次上电复位时被刷新,第6,7,8个字节用于内部计算。第9个字节是冗余检验字节,是前面所有8个字节的CRC码,可用来保证通信正确。项目二

电子温度计的制作任务一温度检测电路搭建1

而配置寄存器为高速暂存器中的第5个字节,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定位如下:TMR1R011111

低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式在DS18B20出厂时该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即设置分辨率,温度转换精度位数及时间表如表2-3所示(DS18B20出厂时被设置为12位)。表2-3

温度转换精度位数及时间表R1R0分辨率温度最大转换时间/ms009位93.750110位187.51011位2751112位750

由表可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。项目二

电子温度计的制作任务一温度检测电路搭建13.温度存储器

DS18B20中的温度存储器存放着温度的测量的结果,以12位转化为例:用16位符号扩展的二进制补码形式提供,以0.0625。C/LSB形式表达,其中S为符号位,如表2-4所示。

这是12位转化后得到的12位数据,存储在高速RAM的前两个字节中,二进制位中的前面5位是符号位,如果测得的温度大于O,这5位为O,只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于0,这5位为l,测到的数值需要取反加l再乘以0.0625即可得到实际温度。

项目二

电子温度计的制作任务一温度检测电路搭建1

4.CRC的产生

在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。由于DS18B20内部集成有温度传感器及模/数转换电路,因此DS18B20制作电子温度计电路特别简单,但其采用单总线传输协议,编程难度较大。

项目二

电子温度计的制作任务一温度检测电路搭建1三、任务实施DS18B20与单片机的典型接口电路如图2-3

温度传感器与单片机的接口电路所示,DS18B20的正电源3脚接+5v,l脚接地,2脚接I/O口,3脚和2脚之间接一个4.7k的上拉电阻。图2-3

温度传感器与单片机的典型接口电路项目二

电子温度计的制作任务二

数字显示电路的设计

数码管是由若干个发光二极管构成,按外形分常用的有8段管,米字管等,按发光颜色分有红色、黄色等。生活中空调、冰箱的温度显示,十字路口交通信号灯时间显示等,都是数码管的典型应用。

数码管的应用实例如图2-4所示。图2-4数码管的应用实例项目二

电子温度计的制作任务二数字式显示电路设计2一、任务描述本任务中主要讲解数码管的静态显示、动态显示等电路构成及编程方法,以单片机P2口作输出口,接1个四位一体的LED数码管,实现以下效果:1.数码管显示一位数字。2.数码管循环显示数字“0—

9”3.数码管同时显示数字“1—

4”二、相关知识

1.LED数码管

(1)八段LED数码管结构

在单片机系统中,通常用LED数码管显示器来显示各种数字或符号。常用的LED数码显示器有七段LED显示器(数码管)和十六段LED显示器(米字管)等,如图2-5所示。数码管主要用于显示数码;米字管不但可以显示数码,也可显示丰富的字符和符号。项目二

电子温度计的制作任务二数字显示电路的设计2七段LED显示器由8个发光二极管组成,其中7个长条形的发光管排列成“8”字形(对应a、b、c、d、e、f、g七个笔段),另一个圆点形的发光二极管在显示器的右下角作为显示小敷点(对应dp).通过点亮相应段可用来显示数字0-9,字符。a-f、h、l、p、r、u、y,符号“一”及小数点“.”等。

七段LED数码管的结构原理图如图2-6所示。根据内部发光二极管的连接方式,七段LED数码管可分为共阴极型和共阳极型两种。8个发光二极管的阴极连在一起构成公共端COM。称为共阴极型;8个发光二极管的阳极连在一起构成公共端COM,称为共阳极型。图2-6七段LED数码管结构原理图项目二

电子温度计的制作任务二数字显示电路的设计2(2)LED数码管引脚排列检测

在电路连接前,先要检测出LED数码管的引脚排列,以便于接线,同时,也是硬件使用前用的必要检测环节。

数码管的引脚排列一般使用万用表完成。对于数字万用表来说,红色表笔接表内部电池正极,黑色表笔连接表内部电池负极。当把数字万用表置于二极管档时,其两表笔间开路电压约为1.5V,把两表笔正确加在发光二极管两端时,可以点亮发光二极管。具体测量方法如下:

将数字万用表置于二极管档,红表笔接在1脚,然后用黑表笔去接触其他知引脚,假设只有当接触到9脚时,数码管的

a段发光,而接触其余引脚时则不发光。由此可知,被检测数码管为共阴极结构类型,9脚是公共阴极,1脚则是数码管的a段。接下来再检测各引段引脚,即使用数字万用表二极管档,将黑表笔固定接在9脚,用红表笔依次接触2—10引脚时,数码管的其他段先后分别发光,据此便可绘出该数码管的内部结构和引脚排列图。

检测中,若被测数码管为共阳极类型,则需将红、黑表笔对调才能测出上述结果。项目二

电子温度计的制作任务二数字显示电路的设计22.数码管字形段码

共阴型和共阳型的LED数码管各笔画段名和安排位置是相同的,分别用a、b、c、d、e、f、g和dp表示,如图2-6

(a)所示。

将单片机的一个8位并行I/O接口与七段LED数码管的引脚a—g端及dp端对应相连,并输出不同的8位二进制数,即可显示LED的数字或字符。控制8个发光二极管的8位二进制数称为段码。

例如,对于共阳极型LED数码管,当公共阳极接高电平,单片机并行口输出二进制数11000000(对应十六进制数C0)时,显示数字"0",则数字“0”的段码是0xC0。依此类推可求得数码管段码表如表2-5所示。表2-5七段LED数码管段码表项目二

电子温度计的制作任务二数字显示电路的设计23.C51基本数据类型在程序设计中,离不开对数据的处理,KeilC51编译器所支持的基本数据类型如表2-6所示。表2-6

C51中的基本数据类型项目二

电子温度计的制作任务二数字显示电路的设计2

(1)位类型bit

bit型是C51编译器的一种扩充数据类型,利用它可定义一个位变量,但不能定义位指针,也不能定义位数组。它的值是一个1位二进制数,取值0或1。

(2)字符型数据char

char类型的长度是一个字节(8位),通常用于定义处理字符数据的变量或常量。分无符号字符类型unsignedchar和有符号字符类型signedchar,默认值为signedchar类型。unsignedchar类型用字节中所有的位来表示数值,所以可表达的数值范围是0~255。signedchar类型用字节中最高位表示数据符号,“0”表示正数,“1”表示负数,负数用补码表示,所能表示的数值范围是-128--+127。unsignedchar常用于处理ASCII字符或用于处理小于或等于255的整数。

如果定义了一个char型变量,而赋给该变量一个大于255的数值,如467,对应的的二进制数是111010011,编译器并不会提示出错,而是自动截去高于8位的部分,只保留低8位,即211(二进制为11010011),程序可能会出现一些无法预知的错误,使用时要注意。项目二

电子温度计的制作任务二数字显示电路的设计2(3)整型数据int

int型长度为两个字节(16位),用于存放一个双字节数据。分有符号整型数signedint和无符号整型数unsignedint,默认值为signedint类型。signedint表示的数值范围是-32768-+32767.字节中最高位表示数据的符号,“0”表示正数,“l”表示负数。unsignedint表示的数值范围是0—65535。(4)长整型数据long

long型长度为四个字节(32位),用于存放一个四字节数据。分有符号长整型signedlong和无符号长整型unsignedlong,默认值为signedlong类型。signedint表示的数值范围是-2147483648-+2147483647,字节中最高位表示数据的符号,“0”表示正数,“1”表示负数unsignedlong表示的数值范围是0--4294967295。项目二

电子温度计的制作任务二数字显示电路的设计2(5)浮点型数据float

float型在十迸制中具有7位有效数字,是符合IEEE-754标准的单精度浮点型数据,占用四个字节:因浮点数的结构较复杂不再做详细的讨论。(6)指针型*

指针型本身就是一个变量,在这个变量中存放指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为1-3个字节。

指针变量也具有类型,具体内容在后续内容中做详细说述。项目二

电子温度计的制作任务二数字显示电路的设计2三、任务实施(一)电路设计

单片机实训板LED数码管电路原理如图2-7所示。图2-7

LED数码管原理图项目二

电子温度计的制作任务二数字显示电路的设计2(二)程序设计LED数码管显示的方式有静态显示方式和动态扫描显示方式两种。方法一:数码管静态显示一位数字(1)编程思路

数码管的静态显示是指数码管显示某一数字或字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个笔段分别与一个8位I/O口相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码,其示意图如图2-8所示。

图2-8数码管静态显示方式示意图项目二

电子温度计的制作任务二数字显示电路的设计2(2)

参考程序

打开Keil软件,建立LED数码管一位静态显示项目并保存。参考下列的源程序输入源文件。#include<reg51.h>unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,,0x92,0x82,0xf8,0x80,0x90};//0—9十个数字段码sbitLED1=P3^7; //位定义int

main(void) //主程序main函数{While(1) //在主程序中设置死循环,保证程序周而复始的运行{LED1=0; //选择第一位数码管P0=tab[5]; //P0口输出5的段码}}注意:1)采用静态显示方式占用CPU时间少、编程简单、便于控制,但是每一个数码管要占用一个并行I/O口,所以只适合于显示位数较少的场合。2)因MCS-51系列单片机P0口内部没有上拉电阻,所以在实际使用中,P0口还要接10KΩ左右的外接上拉电阻,才可有效的输出数据。项目二

电子温度计的制作任务二数字显示电路的设计2方法二:数码管第一位循环显示数字0—9(1)编程思路

数码管的循环显示数字0—9与数码管单独显示一位数字方法类似,只是在显示过程中不断变化显示段码,并在数字显示之间加上适当的延时。(2)参考程序

打开Keil软件,建立LED数码管第一位循环显示数字0—9项目并保存。参考下列的源程序输入源文件。#include<reg51.h>unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,,0x92,0x82,0xf8,0x80,0x90};//0—9十个数字段码sbitLED1=P3^7; //位定义

int

main(void)//主程序main函数{While(1) //在主程序中设置死循环,保证程序周而复始的运行{unsignedchari;unsignedintj;LED1=0; //选择第一位数码管位选,使第一位数码显示for(i=0;i<=9;i++){P0=tab[i]; //P0口依次输出0—9的段码for(j=0;j<30000;j++)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论