C51单片机控制LED灯设计方案
课程设计 基于AT89C51单片机的LED彩灯控制器设计

目录第1节引言 (1)1.1LED彩灯概述 (1)1.2 系统主要功能 (1)第2节新型 LED 彩灯硬件设计 (3)2.1 系统的硬件构成及功能 (3)2.1.1 主控模块电路设计 (3)2.1.2 管内 LED 板模块设计 (3)2.2 AT89C2051单片机及其引脚说明 (4)2.3LED显示数码管 (4)第3节系统的软件设计 (6)3.1 软件设计 (6)第4节结语 (8)参考文献 (9)附录 (10)第1节引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
1.1LED彩灯概述该LED彩灯控制器是一种基于 AT89C51 单片机的彩灯控制器,实现对 LED 彩灯的控制。
本方案以 AT89C51 单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。
在主控模块上设有 8 个按键和 5 位七段码 LED 显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器 T0 实现一个基本单位时间为 5 ms 的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。
该新型 LED 彩灯与普通 LED 彩灯相比,具有体积小、价格低、低能耗等优点。
1.2 系统主要功能新型 LED 彩灯分为 2 部分,即彩灯控制器(主控模块)和管内 LED 板模块(受控模块)。
KeilC51学习2点亮LED灯

KeilC51学习2点亮LED灯P0⼝联接8个LED灯,P1^0~P1^7;#include<reg52.h>sbit LED=P1^0;void main(){LED=0;while(1);}//此⽅法使⽤1个字节对单个端⼝赋值P1 = 0xFF; //P1⼝全部为⾼电平,对应的LED灯全灭掉,//ff换算成⼆进制是 1111 1111P1 = 0xfe; //P1⼝的最低位点亮,可以更改数值是其他的灯点亮//0xfe是16进制,0x开头表⽰16进制数,//fe换算成⼆进制是 1111 1110全部取反,主函数中的代码修改为LED=~LED;#include<reg52.h>unsigned int i,j;void main(){while(1){P1=~(1<<j++);if(j==8){j=0;}for(i=0;i<50000;i++);}}1void main (void)2 {3while (1) //主循环4 { //主循环中添加其他需要⼀直⼯作的程序5 LED=~LED;6//将P1.0⼝赋值 0,对外输出低电平7 delay(100);//执⾏100次8 }9 }10void delay(int time)//延时函数11 {12int i=0;13while(time--)14 {15 i=4000;16while(i--);17 }18 }延时闪烁1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {12while (1) //主循环13 { //主循环中添加其他需要⼀直⼯作的程序1415 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25516//P1=0xfe; //赋初始值17for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次18 {19 P1<<=1;20 delay(100);//执⾏100次21 }22 }23 }延时左移1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {1213 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25514 delay(100);15 P1=0xfe; //赋初始值16while (1) //主循环17 {18for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次19 {20 delay(100);21 P1<<=1;22 P1=P1|0x01; //左移后,最右端⾃动赋值0,所以需要该语句赋值123 }24 P1=0xfe; //重新赋初始值25//主循环中添加其他需要⼀直⼯作的程序26 }27 }循环左移1 sbit LED0=P1^0;2void delay(int i)//延时函数3 {4while(i--);5 }6void main (void)7 {89 unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值10while (1) //主循环11 {12 LED0=1;13 delay(60000); //特意加延时,可以看到熄灭的过程14for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表⽰低15//电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次1617 LED0=0; //点亮LED18 delay(PWM_LOW);//延时长度,600次循环中从1加⾄59919 LED0=1; //熄灭LED20 delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减⾄12122 }23 LED0=0;24for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //与逐渐变亮相反的过程2526 LED0=0;27 delay(PWM_LOW);28 LED0=1;29 delay(CYCLE-PWM_LOW);30 }31//主循环中添加其他需要⼀直⼯作的程序32 }33 }呼吸灯流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2//头⽂件包含特殊功能寄存器的定义34void delay100ms(unsigned char num);5/*------------------------------------------------6流⽔灯7------------------------------------------------*/8void main (void)9 {10 unsigned char led=0xff,mask=0x1,flag=0;11//unsigned char tflag=0,time=100;12while(1)13 {14 P1=led^mask; //mask为0 全灭15 delay100ms(5); //延时500ms16if(0x80==mask)17 flag=0;// 让mask向右位移18if(0x1==mask)19 flag=1;//让mask向左位移20 flag?(mask<<=1):(mask>>=1);21 }22 }2324void delay100ms(unsigned char num)25 {26 unsigned char n,m;27for(;num;num--)28 {29for(n=200;n;n--)30 {31for(m=250;m;m--);32 }33 }34 }流⽔灯函数实现流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2 #include<intrins.h>3#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义 4void delay100ms(unsigned char num);5/*------------------------------------------------6利⽤_crol_、_cror_实现流⽔灯7_crol_ 将char型变量循环左移8_cror_ 将char型变量循环右移9------------------------------------------------*/10void main (void)11 {12 uchar x=0x3;13 bit flag=0;14while(1)15 {16 P1=x;17 delay100ms(10);18if(0x3==x)19 flag=0;20else if(0xc0==x)21 flag=1;22 flag?(x=_cror_(x,2)):(x=_crol_(x,2));23 }24 }25//延时函数26void delay100ms(unsigned char num)27 {28 unsigned char n,m;29for(;num;num--)30 {31for(n=200;n;n--)32 {33for(m=250;m;m--);34 }35 }36 }流⽔灯2指针实现流⽔灯#include <reg52.h>void delay(unsigned int);//指针实现流⽔灯代码unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void main(){unsigned char i,*p;//定义⼀个⽆符号字符型变量i各⼀个指向⽆符号字符型变量的指针变量P while(1){p=&dis[0];//把数组中第⼀个成员数据(0xFE)所占的内存地址赋给指针变量P for(i=0;i<8;i++){P1=*p;//取指针指向的数组元素,并拷贝给单⽚机的P0⼝p++; //指针加1,指向数组的下⼀个元素delay(10);}}}void delay(unsigned int i){unsigned int j;for(;i!=0;i--){for(j=3000;j!=0;j--);}}指针实现流⽔灯花样流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义3 uchar code tab[]={40x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80, //正向流⽔灯50x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0, //反向流⽔灯60x55,0xaa,0x55,0xaa,0x55,0xaa,0x0, //隔灯闪烁70x0f,0xf0,0x0f,0xf0,0x0, //⾼四盏底四盏闪烁80xcc,0x33,0xcc,0x33,0xcc,0x33,0x0//隔两盏灯闪烁9 };10void delay100ms(unsigned char num);11/*------------------------------------------------12花样流⽔灯13------------------------------------------------*/14void main (void)15 {16 uchar x;17while(1)18 {19for(x=0;x<35;x++)20 {21 P1=tab[x];22 delay100ms(10);23 }24 }25 }2627void delay100ms(unsigned char num)28 {29 unsigned char n,m;30for(;num;num--)31 {32for(n=200;n;n--)33 {34for(m=250;m;m--);35 }36 }37 }花样流⽔灯指针,⼆维数组花样流⽔灯#include <reg52.h>void delay(unsigned int ); //延时函数的声明//*******定义⼀个⼆维数组,存储40个彩灯数据。
C51单片机控制LED灯设计方案详解

C51单片机控制LED灯设计方案详解下面,我将详细介绍C51单片机控制LED灯的设计方案:1.硬件设计:a.选择合适的LED灯模块:根据实际需求选择合适的LED灯模块,包括LED灯的尺寸、亮度、颜色等参数。
b.连接电源和单片机:将LED灯模块与C51单片机进行连接,通常使用一个适当的电阻将LED灯连接到单片机的GPIO引脚,用于限流。
c.设计电源电路:根据LED灯模块的工作电压和电流需求设计合适的电源电路,确保LED灯能够正常工作。
2.软件设计:a.确定控制方式:根据具体需求,确定LED灯的控制方式,例如手动控制、定时控制、网络控制等。
b.编写控制程序:使用C语言或汇编语言编写控制程序,实现LED灯的开关、亮度调节、颜色变换等功能。
C51单片机具有丰富的GPIO引脚和定时器等功能模块,能够轻松实现这些功能。
c.设计电源管理功能:为了提高LED灯的使用寿命和节能性能,可以设计电源管理功能,例如自动关闭LED灯、调节LED灯亮度等。
3.调试与测试:a.硬件调试:利用示波器等设备对硬件电路进行测试和调试,确保LED灯正常工作。
b.软件调试:通过单片机仿真器或调试器对软件程序进行调试,检查程序的逻辑和功能是否正常。
c.系统整体测试:在完成硬件和软件调试后,进行整体系统测试,验证LED灯的各项功能和性能。
4.优化与改进:a.优化程序性能:根据实际需求,对程序进行优化,提高LED灯控制的响应速度和稳定性。
b.改进硬件设计:根据实际测试结果和用户反馈,对硬件电路进行改进,提高LED灯的亮度、稳定性和可靠性。
c.安全性设计:为了保证LED灯的安全性,可以设计过压、过流和过热保护电路,防止LED灯损坏或引发安全事故。
总结起来,C51单片机控制LED灯的设计方案主要包括硬件设计、软件设计、调试与测试以及优化与改进。
通过合理的硬件设计和高效的软件程序,能够实现LED灯的各种控制功能,提高LED灯的亮度、稳定性和可靠性,满足不同应用场景的需求。
51单片机控制LED七彩渐变灯

自己设计的51单片机控制LED七彩渐变灯MCU:89C51,89S51,89C2051等晶振:12MHz电路驱动(LED连接):P1.0连接蓝色LEDP1.1连接红色LEDP1.2连接绿色LED (必须使用纯绿色高亮LED,不可使用普通草绿管)全为低电平驱动(低电平点亮),可以加三极管驱动,红、蓝、绿LED也可以交换位置控制方式:PWM频率:约300-700Hz(我没有计算或测量过,只是试验显示效果足够好)调节级数:共600级,相当平滑编译后的HEX文件:687241197859316.rarHEX代码::0D009300E4FEEEC39F50060000000E80F555:0100A000223D:06005F00A9078D828C83CD:10006500E4FDE96008C292FF120093D292E5824551:10007500836009C291AF82120093D291EB4A600965:0D008500C290AF03120093D2900DBD0AD5BA:010********B:100003007508C8E4F509F50AE5086008E50A70040F:1000130015080509E5096008E50870041509050ACE:10002300E50A6008E5097004150A0508E5082509CD:10003300FFE433FE7C00EF250AFFEC3EFEEF64C8CD:100043004E60087508C8E4F509F50AE509FD7C006A:0C005300E50AFB7A00AF0812005F80ACE9:030000000200A15A:0C00A100787FE4F6D8FD75810A020003A8:00000001FFC语言源程序:/*******************************程序名称:七彩LED渐变程序编写者:ZH YUMCU:51/2051晶振:12MHz*********************************/ #include#includesbit gl=P1^2; //绿色sbit rl=P1^1; //红sbit bl=P1^0; //兰timer(unsigned char t){unsigned char b;for(b=0;b{_nop_();_nop_();_nop_();}}LEDout(unsigned char g,r,b){unsigned char a;for(a=0;a<10;a++){if(g!=0){gl=0;timer(g);gl=1;}if(r!=0){rl=0;timer(r);rl=1;}if(b!=0){bl=0;timer(b);bl=1;}}}main(){ unsigned char g,r,b;g=200;r=0;b=0;while(1){if(g!=0&&b==0){g--;r++;}if(r!=0&&g==0){r--;b++;}if(b!=0&&r==0){b--;g++;}if(g+r+b!=200){g=200;r=0;b=0;}LEDout(g,r,b);}}入无法下载HEX,大家可以用KEIL自己编译,或者使用记事本保存HEX代码(重命名为.HEX 文件)都可以再把.hex文件写入单片机,接好电路即可工作自己做的LED渐变灯(使用三极管8550驱动)及部分效果图:。
基于C51单片机的LED点阵显示屏的设计

[摘要]当今社会,广告宣传已经成了人们生活中随处可见并重要的一部分。
广告的媒介除了我们常见的报纸、书刊、电台和网络之外,更常见的就是LED点阵广告屏。
这种屏幕具有经济实惠、对环境要求小、节省能源、亮度高、直观等特点,成为了现在常见的一道风景。
不管是大公司的外景宣传,还是小门店的产品介绍,LED点阵屏随处可见。
彩色点阵屏已经渐渐取代了露天的大荧幕,成为常见的广告宣传手段。
与此同时,巨大的信息量和美观性也为丰富人们的日常生活、点缀城市起到了至关重要的作用。
本设计便为基于C52单片机的简单LED点阵显示屏,通过C52控制行列芯片进行动态扫描,显示规定的汉字或者图形。
也可以通过对C52内部烧录改变所需显示的内容。
该设计具有可扩展性,可以扩充LED点阵屏幕的数量来同时显示更多的汉字。
[关键词] 单片机;LED点阵屏;信息显示;广告Abstract: Nowaday's society, advertising has became ubiquitous in people's lives and the important part. In addition to our common advertising media newspapers, books, radio and online, the more common is the LED dot matrix screen advertising. This screen has an economic benefit, environmental requirements of small, energy saving, high brightness, visual characteristics, a common landscape now. Regardless of the location of large companies is publicity, or small stores Products, LED dot matrix display everywhere. Color dot matrix display has gradually replaced the open-air big screen, a common means of advertising. At the same time, we can add more LED dot matrixes to display more informations.Key words:SCM;LED dot matrix display;Information display;Advertisement目录1 绪论 (1)1.1 本课题的研究意义及必要性 (1)1.2 LED的现状和发展趋势 (1)2 硬件总体设计 (3)2.1 主要设计框图及思路 (3)2.2 所需要芯片及各芯片功能介绍 (3)2.2.1各主要芯片简单介绍 (3)2.3 各模块电路图设计及原理 (7)2.4 系统的软件设计 (8)2.4.1 Keil.uVERSION、protues介绍 (8)2.4.2 动态扫描及取字库原理 (8)图2.12 程序流程图 (9)3 详细设计 (10)3.1 电路详细设计 (10)4 程序实现 (14)4.1 主要显示程序原理及实现 (14)4.1.1动态行扫描程序框图 (14)4.1.2实现显示内容的左滚动原理 (15)4.1.3单片机延时子程序 (18)5 设计结果测试 (20)5.1 Proteus和Keil仿真结果 (20)结束语 (21)致谢 (22)参考文献 (23)附录A 部分代码 (24)附录B 总电路图 (29)1 绪论1.1 本课题的研究意义及必要性单片机是一种集成微处理芯片,高密度集成了普通计算机的微型处理器,具有8kB的ROM和P0、P1、P2、P3输入输出接口,且集成了定时器等电路。
基于C51单片机的智能台灯的设计与实现精选全文完整版

可编辑修改精选全文完整版基于C51单片机的智能台灯的设计与实现摘要:本文简要论述了本次课题智能台灯的背景意义及台灯的发展历程,着重论述了以一款STC12为控制核心,选用ESP8266wifi模块为无线传输方式,设计并制作的一款新型只能台灯。
该款智能台灯系统独特的设计了两种不同的工作方式。
模式一:本地模式,通过红外感应是否有人靠近,光线感应模块感应环境光亮度,当有人靠近时打开台灯,并根据环境光调节亮度;模式二:远程控制模式,通过ESP8266作为wifi信号传输工具,在利用手机上的上位机实现台灯的远程操作,包括打开关闭台灯以及亮度控制,其亮度利用单片机的PWM输出进行调节实现。
通过测试可知,这款新型智能台灯能够实现预定功能。
具有响应速度快,便携、节能等优点,在智能家居领域具有很大的应用价值。
关键词:台灯;STC12;亮度;红外;wifi;Title:Design of intelligent desk lamp based on 51 single chipmicrocomputerAbstract: This paper briefly discusses the background meaning of the smart table lamp and the development history of the table lamp, focusing on the STC12 as the control core.the selection of ESP8266wifi module as the wireless transmission mode, the design and production of a new only table lamp.The smart desk lamp system is uniquely designed to work in two different ways.Mode 1: in the local mode, the light sensor module can sense the ambient brightness by infrared sensing whether someone is near, turn on the lamp when someone is near, and adjust the brightness according to the ambient light;Mode 2: remote control mode, ESP8266 as a wifi signal transmission tool, the use of mobile phone on the upper computer to achieve the remote operation of the table lamp, including turning on and off the table lamp and brightness control, the brightness of the use ofMCU PWM output to adjust the realization.Tests show that this new smart desk lamp can perform the intended function.With the advantages of quick response, portability and energy saving, it has great application value in the field of smart home.Keywords: Desk lamp;STC12;Brightness;Infrared;Wifi;目录摘要 (1)ABSTRACT (1)1 绪论 (2)1.1课题研究背景 (3)1.2智能台灯的优势 (3)1.3课题研究目标及本文主要内容 (4)2 系统总体设计方案 (4)2.1总体设计方案 (5)2.2模块选型 (5)2.2.1 单片机主控 (5)2.2.2 ESP8266 WIFI模块 (8)2.2.3 人体红外感应模块HC-SR501 (9)2.3软件开发平台 (10)3硬件电路实现 (11)3.1单片机最小系统 (11)3.1.1复位电路 (11)3.1.2时钟振荡电路 (11)3.2WIFI模块及电源电路 (12)3.3HC-SR501人体红外感应电路 (12)3.4环境光检测模块 (13)3.5LED驱动电路 (13)4 程序设计 (14)4.1主程序流程图 (14)4.2本地操作模式 (14)4.3远程操作模式 (15)4.4PWM输出 (16)5 实物调试 (18)6 结语 (19)附录1 (19)1 绪论1.1 课题研究背景在如今高速发展的科技生活及社会中,各式各样的产品都普遍科技化、很多越来越智能化的家具及电器进入人们生活,这样的高科技发展的前提下人们的工作效率得到非常大的提高、人们的生活也被改善,智能化的生活是人类追求的理想生活,所以这也是科技社会发展的一个趋势。
单片机控制LED灯的设计教学课件PPT

h
18
②限流电阻
二极管串联电阻的目的是为了防止发光二极管和P1.7引脚流过的电流 过大,烧毁二极管或单片机,所以该电阻也称为“限流电阻”。
限流电阻的选择: 假设电源电压为VCC,发光二极管的导通压降为VDD,导通时流过 二极管的电流为I,则限流电阻R为:
R = (VCC-VDD)/I 例如,若二极管的导通压降为2.2V,导通时流过的电流为5mA,则
限流电阻为560Ω。
h
19
③器件清单
器件名称 AT89C52 12MHz晶体 22pF瓷片电容 22uF电解电容 10kΩ电阻 560Ω电阻 发光二极管LED
数量(只) 1 1 2 1 1 1 1
h
20
(2)硬件原理图设计
h
再次强调:图中的单 片机元件没有“VCC” 和“GND”引脚,这是 因为Proteus软件中, 元件模型中的“电源” 和“地”已经进行了 连接,“VCC”接到了 “+5V”电源,“GND” 接到了“地”,所以 隐藏了这两个引脚。
排阻,就是若干个参数完全相同的电阻,它们的一个引脚都连到一起 ,作为公共引脚,其余引脚正常引出。如果一个排阻是由n个电阻构 成的,那么它就有n+1个引脚,一般来说最左边的那个是公共引脚。 它在排阻上一般用一个色点标出来。
直插式排阻
贴片式排阻
☆排阻一般用在数字电路上,比如作为某个并行口的上拉或者下拉电
需要特别指出的是,由于对片外地址的操作是连续不断的,只要进 行了外部系统扩展,此时P0口和P2口就不能再用作I/ O端口了。
h
14
4. P3口
h
15
• P3口用作通用I/O口时,其工作原理同P1口类似。 •此外,它的每一根线还具有第二种功能。
基于51单片机的流水灯设计

基于51单⽚机的流⽔灯设计基于51单⽚机的流⽔灯设计⼀.基本功能利⽤AT89c51作为主控器组成⼀个LED流⽔灯系统,实现8个LED 灯的左、右循环显⽰。
⼆.硬件设计图1.总设计图1.单⽚机最⼩系统1.1选⽤AT89C51的引脚功能图2. AT89C51XTAL1:单芯⽚系统时钟的反向放⼤器输⼊端。
XTAL2:系统时钟的反向放⼤器输出端,⼀般在设计上只要在XTAL1和XTAL2上接上⼀只⽯英震荡晶体系统就可以⼯作了,此外可以在两引脚与地之间加⼊20PF的⼩电容,可以使系统更稳定,避免噪⾳⼲扰⽽死机。
RESET:重置引脚,⾼电平动作,当要对晶体重置时,只要对此引脚电平提升⾄⾼电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。
P3:端⼝3是具有内部提升电路的双向I/O端⼝,通过控制各个端⼝的⾼低电平了实现LED流⽔灯的控制。
1.2复位电路如图所⽰,当按下按键时,就能完成整个系统的复位,使得程序从新运⾏。
图3.复位电路1.3时钟电路时钟电路⽤于产⽣单⽚机⼯作所需要的时钟信号,单⽚机本⾝就是⼀个复杂的同步时序电路,为了保证同步⼯作⽅式的实现,电路应在唯⼀的时钟信号控制下严格地按时序进⾏⼯作。
在AT89C51芯⽚内部有⼀个⾼增益反相放⼤器,其输⼊端为芯⽚引脚X1,输出端为引脚X2,在芯⽚的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了⼀个稳定的⾃激振荡器。
此电路采⽤12MHz的⽯英晶体。
图4.时钟电路2.流⽔灯部分图5.流⽔灯电路三.软件设计3.1编程语⾔及编程软件的选择本设计选择C语⾔作为编程语⾔。
C语⾔虽然执⾏效率没有汇编语⾔⾼,但语⾔简洁,使⽤⽅便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计⾃由度⼤,有很好的可重⽤性,可移植性等特点。
⽽汇编语⾔使⽤起来并没有这么⽅便。
本设计选⽤了Keil作为编程软件,.Keil C51⽣成的⽬标代码效率⾮常之⾼,多数语句⽣成的汇编代码很紧凑,容易理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、任务目标 掌握单片机的内部结构及单片机的外部引脚 及其功能,并且了解单片机的发展概况及单片机 的常见类型等相关知识。
2
子情境一 单片机结构 任务一 单片机组成
二、任务分析 51系列单片机包括许多类型,它们的内部 结构基本相同。89C51/89C52是目前应用比较广 泛的51系列兼容单片机中的代表产品,因此本 任务主要以89C51为目标机型,介绍单片机的内 部结构、各组成部分的功能及外部引脚。在后 续章节中将通过具体的设计实例进一步介绍。
26
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
图1-32 保存源程序文件
27
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
单击Target 1前面的+号,然后在Source Group 1 上单击鼠标右键,弹出快捷菜单,如图1-33所示。
图1-33 添加文件到项目中
29
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
图1-34 选择源程序文件
30
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
4.输入源程序:此时就可以输入源程序了,如图135所示。
图1-35 输入源程序
31
第2节 单片机开发设计常用工具软件 任务二 keil C51仿真软件
20
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
三、任务实施 1.启动Vision Vision2是一个标准的Windows应用程序,双 击Keil Vision2图标即可启动,也可以选择“开 始”→“程序”Keil Vision2”命令来启动运行。其 主界面如图1-28所示。
37
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
以上操作也可以通过工具栏中的图标直接进行。 如图1-39所示,从左到右的图标分别是:编译、编译 连接、全部重建、停止编译和对工程进行设置。
图1-39 工具栏中的编译工具
38
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
一、任务目标 掌握单片机的并行I/O端口的结构及其应用。 二、任务分析 51系列单片机有4个8位的并行输入/输出端口, 即P0,P1口,P2口和P3口。各个端口的功能有所 不同,其结构也略有差异。在本任务中,将分别学 习各个端口的结构、功能及其应用。
13
子情境一 单片机结构 任务三 单片机输入/输出端口
三、相关知识 1.P0口
图1-8 P0口的位结构图
14
子情境一 单片机结构 任务三 单片机输入/输出端口
2.P1口
图1-9 P1口的位结构图
15
子情境一 单片机结构 任务三 单片机输入/输出端口
3.P2口
图1-10 P2口的位结构图
16
子情境一 单片机结构 任务三 单片机输入/输出端口
4.P3口
39
子情境二 单片机开发设计常用工具软件
5.设置目标硬件的工具选项 程序编写完成后,还要对项目进行进一步的设 置,以满足要求。 “Target”选项卡 如图1-36所示,其中“Xtal”后面的 数值是晶 振频率值,默认值是所选目标CPU的最高可用频率 值,该值与最终产生的目标代码无关,仅用于软件 模拟调试时显示程序执行时间。
32
第2节 单片机开发设计常用工具软件 任务二 keil C51仿真软件
情境一 单片机控制led灯点亮
子情境一 单片机结构 任务一 单片机组成 任务二 单片机工作条件 任务三 单片机输入/输出端口 子情境二 单片机开发设计常用工具软件 任务一 keil C51仿真软件 任务二 仿真软件Proteus 子情境三 单片机开发设计流程 子情境四 点亮一盏led
1
子情境一 单片机结构 任务一 单片机组成
图1-3 内部时钟电路
图1-4 外部时钟电路
10
子情境一 单片机结构 任务二 单片机工作条件
2.复位电路
图1-5 51系列单片机上电复位电路
图1-6 51系列单片机外部按键复位电路
11
子情境一 单片机结构 任务二 单片机工作条件
四、任务实施
图1-7 51系列单片机基本工作条件接线图
12
子情境一 单片机结构 任务三 单片机输入/输出端口
图1-36 “Target”选项卡
33
第2节 单片机开发设计常用工具软件 任务二 keil C51仿真软件
“Output”选项卡 如图1-37所示,其中有多个选项,此处选择 “Create HEX File”复选框用于生成可执行代码文件, 该文件可以用编程器写入单片机芯片,文件的扩展 名为.HEX,默认情况下该项未被选中,如果要写芯 片做硬件实验,就必须选中该项。其余选项均取默 认值,不做任何修改。
图1-29 “Project”菜单
23
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
图1-30 建立项目文件
24
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
随后会弹出一个对话框,要求选择单片机的型号,如 图1-31所示。在该对话框中显示了Vision2的器件数据库, 从中可以根据使用的单片机来选择。
图1-38 “Debug”选项卡
36
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
6.编译项目并创建HEX文件 设置好项目参数后,即可进行编译、连接。选 择“Project”(项目)→“Build target”(连接工程) 命令,对当前工程进行连接。如果当前文件已修改 ,将先对该文件进行编译,然后再连接以产生目标 代码;如果选择“Rebuild All target files”(重新编译 所有文件后再连接)将会对当前工程中的所有文件 重新进行编译然后再连接,确保最终生产的目标代 码是最新的,而选择“Translate…”(编译)命令则 仅对当前文件进行编译,不进行连接。
二、任务分析 单片机的电源部分,只要将51系列单片机的第40脚接 +5V电源,第20脚接地即可。注意电压过高或过低都会 引起单片机CPU不能正常工作。 时钟电路分为内部方式和外部方式两种电路,复位电 路又可以分为上电复位和外部按键复位两种方式。
9
子情境一 单片机结构 任务二 单片机工作条件
三、相关知识 1.时钟电路 ① 内部方式时钟电路 ② 外部时钟方式
5
子情境一 单片机结构 任务一 单片机组成
图1-2 AT89C51单片机引脚图
2.单片机的引脚 (1)电源:40号引脚VCC是芯片电源,接+5V。20号引 脚VSS为电源接地端。 (2)时钟引脚:XTAL2(18号脚)采用内部时钟电路时, 外接晶体振荡器;采用外部时钟电路时,此引脚接地。 XTAL1(19号脚)采用内部时钟电路时,外接晶体振 荡器;采用外部时钟电路时,此引脚接外部时钟源。 (3)控制引脚 ALE/为地址锁存允许信号,用来把低8位地址锁存到外 部地址锁存器。ALE引脚以不变的1/6振荡频率周期性 地发出正脉冲信号,可用做对外输出的时钟信号。 (4)I/O口线 P0口(32~39号脚)为双向输入/输出端口。 P1口(1~8号脚)为准双向输入/输出端口。 P2口(21~28号脚)为准双向输入/输出端口。 P3口(10~17号脚)为准双向输入/输出端口。
21
子情境二 单片机开发设计常用工具软件
任务n2初次启动后的界面
22
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
2.创建一个项目并选择单片机 选择“Project”(项目)→“New Project”(新 建项目)命令,如图1-29所示,将弹出“Greate New Project”(新建项目)对话框,如图1-30所示
对源程序修改之后再次编译,最终要得到如图1-40所示 的结果,提示0个错误,0个警告,该文件即可被编程器读入 并写到AT89C51芯片中。同时还可看到,该程序的内部RAM 的使用量(data=8.0),外部RAM的使用量(xdata=0), 代码量(code=13)等一些信息。
图1-40 编译成功后的输出信息
6
子情境一 单片机结构 任务一 单片机组成
3.单片机发展概况 单片机的发展历史不长,自1976年9月, Intel公司推出MCS-48八位单片机后,已有上百家 生产厂商加入单片机的生产和研发行列,生产出 几百个系列上万个品种的单片机。除51系列单片 机(MCS-51及其兼容机)以外,其他一些公司如 ROKWELL公司、NEC公司、Motorola公司以及德 州仪器公司等都推出一些各具特色的单片机。51 系列单片机曾在世界单片机市场占有50%以上的 份额,多年来国内也一直以51系列单片机作为教 学的主要机型,因此本书以51系列单片机作为目 标机型学习单片机原理及应用。
子情境二 单片机开发设计常用工具软件 任务一 keil C51仿真软件
图1-31 选择单片机型号
25
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
3.创建一个新的源程序文件,并把这个源文件添加 到项目中 单击工具栏中的新建文件图标(或选择“File” (文件)→“New”(新建)命令),文件操作窗口 即可出现新建文件。保存该空白文件,单击工具栏 中的保存图标(或选择“File”(文件)→“Save” (保存)命令),弹出如图1-32所示的“Save as” (保存为)对话框,在“文件名”文本框中输入欲 保存的文件名,保存时注意加上正确的后缀名。
19
子情境二 单片机开发设计常用工具软件
任务一 keil C51仿真软件
一、任务目标 掌握Keil软件在单片机仿真中的应用,为开发、 调试单片机应用系统做准备。 二、任务分析 Keil C51软件集成了文件编辑处理、编译连接、 项目管理、窗口、工具引用和软件仿真调试等多种 功能,是非常强大的C51开发工具,在Keil C51的 仿真功能中,提供了两种仿真模式:软件模拟仿真 和目标板调试。下面将通过一个实际项目的创建、 编译及调试来学习Keil软件的使用。