K1K4控制LED移位课程设计.docx
《K1K4控制LED移位课程设计.docx》由会员分享,可在线阅读,更多相关《K1K4控制LED移位课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
![K1K4控制LED移位课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/30/12830941-9fa7-42fc-aa18-158dec66cfb4/12830941-9fa7-42fc-aa18-158dec66cfb41.gif)
K1K4控制LED移位课程设计
第1章绪论
单片微型计算机简称单片机,是典型的嵌入式微控制器单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由仅有CPU的专用处理器芯片发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。
其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。
因为简单可靠而性能不错获得了很大的好评。
尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。
在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。
事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。
汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!
单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。
其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
广大工程技术人员通过学习有关单片机的知识后,也能依靠自己的力量来开发所希望的单片机系统,并可获得较高的经济效益。
正因为如此,在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、家用电器等各个方面。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字。
汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。
科技的进步需要技术不断的提升。
单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围部件和软件,能实现一种或多种功能的实用系统。
硬件是应用系统的基础,软件则在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
第2章系统结构及主要元器件
K1-K4控制LED移位是由一个单片机的最小系统,四个键位,16个LED二极管和16个220欧电阻组成。
其中,K1控制P0口的发光二级管向下移动一位,K2控制的发光二级管向上移动一位,K3控制的P2发光二级管向下移动一位,K4控制的P2口的发光二级管向上移动一位。
2.1AT89C51单片机
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
AT89C51单片机引脚图如图2-1所示:
图2-1AT89C51单片机引脚图
2.2发光二级管LED
它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。
发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。
在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。
PN结加反向电压,少数载流子难以注入,故不发光。
这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。
当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
发光二极管与小白炽灯泡和氖灯相比,发光二极管的特点是:
工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。
由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。
把它的管心做成条状,用7条条状的发光管组成7段式半导体数码管,每个数码管可显示0~9十个数目。
发光二极管(英语:
Light-EmittingDiode,简称LED)是一种能发光的半导体电子元件。
这种电子元件早在1962年出现,早期只能发出低光度的红光,之后发展出其他单色光的版本,时至今日能发出的光已遍及可见光、红外线及紫外线,光度也提高到相当的光度。
而用途也由初时作为指示灯、显示板等;随着技术的不断进步,发光二极管已被广泛的应用于显示器、电视机采光装饰和照明。
LED只能往一个方向导通(通电),叫作正向偏置(正向偏压),当电流流过时,电子与空穴在其内复合而发出单色光,这叫电致发光效应,而光线的波长、颜色跟其所采用的半导体材料种类与掺入的元素杂质有关。
具有效率高、寿命长、不易破损、开关速度高、高可靠性等传统光源不及的优点。
白光LED的发光效率,在近几年来已经有明显的提升,同时,在每千流明的购入价格上,也因为投入市场的厂商相互竞争的影响,而明显下降。
虽然越来越多人使用LED照明作办公室、家具、装饰、招牌甚至路灯用途,但在技术上,LED在光电转换效率(有效照度对用电量的比值)上仍然低于新型的荧光灯,是国家以后发展民用的去向!
它是半导体二极管的一种,可以把电能转化成光能。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子和空穴所处的能量状态不同。
当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的是发红光、绿光或黄光的二极管。
2.3P0口外接上拉电阻
51单片机的P0端口为开漏输出,内部无上拉电阻(见图2-2)。
所以在当做普通I/O输出数据时,由于V2截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。
图2-2P0端口的1位结构
另外,避免输入时读取数据出错,也需外接上拉电阻。
在这里简要的说下其原因:
在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。
例如,当从内部总线输出低电平后,锁存器Q=0,Q=1,场效应管V1开通,端口线呈低电平状态。
此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。
又如,当从内部总线输出高电平后,锁存器Q=1,Q=0,场效应管V1截止。
如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。
所以当P0口作为通用I/O接口输入使用时,在输入数据前,应先向P0口写“1”,此时锁存器的Q端为“0”,使输出级的两个场效应管V1、V2均截止,引脚处于悬浮状态,才可作高阻输入。
总结来说:
为了能使P0口在输出时能驱动NMOS电路和避免输入时读取数据出错,需外接上拉电阻。
在本实验套件中采用的是外加一个10K排阻。
此外,51单片机在对端口P0—P3的输入操作上,为避免读错,应先向电路中的锁存器写入“1”,使场效应管截止,以避免锁存器为“0”状态时对引脚读入的干扰。
2.4系统结构图
K1-K4控制LED移位系统结果图如图2-3所示:
图2-3K1-K2控制LED移位系统结构图
第3章硬件设计
3.1总体方案
AT89C51单片机有20个引脚,其中0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
设计思路:
由于AT89C51单片机的引脚具有以上性质,因此我们用P1口作为输入端,P2口作为输出端,通过控制输入端的电平高低从而控制输出引脚的电平高低,点亮对应的LED。
通过P1口读入程序进,通过延时和循环控制使P2口引脚输出高低不同的电压并且依次循环,从而控制对应引脚接口的点亮与熄灭,实现移位循环。
3.2单片机最小系统
普遍来说,单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/计数器和多种功能的I/O(输入/输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。
在这里,我们没必要去找到明确的概念来解析什么是单片机,特别在使用C语言编写程序的时,不用太多的去了解单片机的内部结构以及运行原理等。
从应用的角度来说,通过从简单的程序入手,慢慢的熟悉然后逐步深入精通单片机。
在简单了解了什么是单片机之后,然后我们来构建单片机的最小系统,单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、时钟电路、复位电路、输入/输出设备。
依据上文的内容,设计51系列单片机最小系统见图3-1。
图3-151系列单片机最小系统
下面就图3-1所示的单片机最小系统各部分电路进行详细说明。
3.3时钟电路
在设计时钟电路之前,让我们先了解下51单片机上的时钟管脚:
XTAL1(19脚):
芯片内部振荡电路输入端。
XTAL2(18脚):
芯片内部振荡电路输出端。
XTAL1和XTAL2是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。
图2中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。
一般来说晶振可以在1.2~12MHz之间任选,甚至可以达到24MHz或者更高,但是频率越高功耗也就越大。
在本实验套件中采用的11.0592M的石英晶振。
和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。
当采用石英晶振时,电容可以在20~40pF之间选择(本实验套件使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30~50pF之间。
通常选取33pF的陶瓷电容就可以了。
另外值得一提的是如果读者自己在设计单片机系统的印刷电路板(PCB)时,晶体和电容应尽可能与单片机芯片靠近,以减少引线的寄生电容,保证振荡器可靠工作。
检测晶振是否起振的方法可以用示波器可以观察到XTAL2输出的十分漂亮的正弦波,也可以使用万用表测量(把挡位打到直流挡,这个时候测得的是有效值)XTAL2和地之间的电压时,可以看到2V左右一点的电压。
3.4复位电路
在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。
MCS-5l系列单片机的复位引脚RST(9管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
复位操作通常有两种基本形式:
上电自动复位和开关复位。
图2中所示的复位电路就包括了这两种复位方式。
上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。
随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。
并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。
一般来说,只要RST管脚上保持10ms以上的高电平,就能使单片机有效的复位。
图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。
3.5LED驱动电路
首先我们要知道LED的发光工作条件,不同的LED其额定电压和额定电流不同,一般而言,红或绿颜色的LED的工作电压为1.7V~2.4V,蓝或白颜色的LED工作电压为2.7~4.2V,直径为3mmLED的工作电流2mA~10mA。
在这里采用红色的3mm的LED。
其次,51单片机(如本实验板中所使用STC89C52单片机)的I/O口作为输出口时,拉电流(向外输出电流)的能力是μA级别,是不足以点亮一个发光二极管的。
而灌电流(往内输入电流)的方式可高20mA,故采用灌电流的方式驱动发光二极管。
当然,现今的一些增强型单片机,是采用拉电流输出(接法2)的,只要单片机的输出电流能力足够强即可。
另外,图4中的电阻为1K阻值,是为了限制电流,让发光二极管的工作电流限定在2mA~10mA。
图3-2LED的接法
3.6按键部分
按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
最终画出硬件电路图如图3-3所示。
图3-3系统电路图
第4章软件设计
4.1程序框图
软件设计规范的目的就是编写高质量的软件,降低编码阶段的错误率。
设计一个高质量的软件有以下几点要求:
1)软件设计模块化,具有好的可重用性和可移植性。
2)程序代码干净整洁,具有好的可维护性。
3)不使用晦涩的语句,简洁易懂,具有好的易懂性。
4)代码设计简明扼要,提高程序的运行效率以及程序所占用的内存空间。
5)使用充足的程序说明,程序具有好的可读性。
综上所述:
可重用性、可移植性、可维护性、易懂性、高效率性以及可读性。
用C语言编程的思想来完成K1-K4控制LED移位的程序编写。
程序框图见图4-1。
图4-1K1-K4控制LED移位程序框图
4.2程序编写
程序如下:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelayMS(uintx)
{
uchari;
while(x--)
for(i=0;i<120;i++);
}
voidMove_LED()
{
if((P1&0x10)==0)P0=_cror_(P0,1);
elseif((P1&0x20)==0)P0=_crol_(P0,1);
elseif((P1&0x40)==0)P2=_cror_(P2,1);
elseif((P1&0x80)==0)P2=_crol_(P2,1);
}
voidmain()
{
ucharRecent_Key;
P0=0xfe;
P2=0xfe;
P1=0xff;
Recent_Key=0xff;
while
(1)
{
if(Recent_Key!
=P1)
{Recent_Key=P1;Move_LED();DelayMS(10);}}}
第5章系统仿真及调试
5.1仿真软件
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
5.2Proteus使用注意事项
(1)因为Proteus中自带的汇编编译器都是使用命令行命令进行编译。
在菜单Source->Definecodegenerationtools打开的对话框中,有一项参数是CommandLine,对于代码生存工具ASEM51来说,默认的命令行参数可能类似于%1/INCLUDES:
C:
\ProgramFiles\LabcenterElectronics\Proteus7Professional\TOOLS\ASEM51,其中%1代表的是源代码,/INCLUDES:
后面跟着的是包含路径,该路径下的*.mcu文件即是通常的SFR定义文件。
其实这一参数并不需要设置,通常我们的CommandLine参数设置为%1即可。
(2)另外,这个/INCLUDES:
的路径参数设置也是有问题的。
因为它的中间包含了空格,ASEM51汇编器会把它认为是几个参数,因而会出现toomanyparameters的错误。
(3)同样的道理,如果你的汇编程序存储的路径或文件名中包含了空格或一些其它有可能使用命令行出现错误