单片机论文之流水灯及数码管控制
单片机跑马灯(流水灯)控制实验报告
单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。
实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。
2.编写程序:按照题目要求编写所需程序。
3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。
程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。
2. 在程序中,我们通过P2口控制LED灯的亮灭状态。
例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。
同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。
3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。
4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。
通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。
5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。
单片机流水灯实验范文
实验二单片机并口简单应用(流水灯)实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、流水灯硬件电路如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。
发光二极管连接成共阳极结构。
发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。
因此,通过程序控制74LS164的Q0端。
Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。
图4-1 流水灯电路图2、单片机流水灯程序设计由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。
(1)控制三极管导通程序控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。
第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。
为1,三极管截止。
两种方法的程序流程如图4-2所示。
图4-2 流水灯位选信号控制(2)产生流水灯效果程序三极管导通后,就可以从P0口输出数据控制发光二极管。
P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。
程序流程图如图4-3所示。
图4-3 流水灯程序流程图实验内容/*********************************功能:流水灯(间隔200ms)**********************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LEDDIN=P2^3; //位声明sbit LEDCLK=P3^4;void delay_1ms(uchar z);//函数声明void delay_50ms(uchar t);void mian(){uchar i;for(i=0;i<7;i++)//关闭数码管{LEDDIN=1;LEDCLK=0;LEDCLK=1;}LEDDIN=0;LEDCLK=0;LEDCLK=1; //产生一个脉冲,使三极管导通P0=0xfe;delay_50ms(4); //延时200mswhile(1){P0=_crol_(P0,1);delay_50ms(4);}}void delay_1ms(uchar z)//延时1ms{uint x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}void delay_50ms(uchar t)//延时50ms{uint j;for(;t>0;t--)for(j=6245;j>0;j--);}实验思考题1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。
51单片机流水灯与数码管显示实验设计
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4; //这个key没用到,具体功能可以完善函数uint temp,shu=432;uchar aa,bb,cc,bai,shi,ge,flag,flag1,t0,t1,count;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x38,0x3f,0};void init();void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); void delayms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){init();while(1){if(flag!=1)//减数还未到指定值{temp=_crol_(temp,1);//流水灯P1=temp;//赋值给P1口delayms(10);//流水延时10msdisplay(7,6,5,bai,shi,ge);}// if(t0%4==0) t0这个变量是T0溢出时间的倍数值,每次到指定的倍数值都会被清零,所以这个判断语句错误// if(t0==60) t0每次到10都会被清零,所以这个判断语句错误else if(count!=100) //没有到指定的时间3s,但这里设置的是5s,因为led闪烁的时间是50ms,这样闪烁的次数就多一点,便于看清效果{temp=0xff;P1=temp;delayms(50);//闪烁延时temp=0x00;P1=temp;}else{display(16,14,17,17,18,19);temp=0xff;//关闭ledP1=temp;//这里我们可以看出在位带操作的时候P1是已定义变量,不需要中间变量过度}}}void init(){TMOD=0x11;TH0=(65535-5000)/256;TL0=(65535-5000)%256;TH1=(65535-5000)/256;TL1=(65535-5000)%256;EA=1;ET0=1;ET1=1;TR0=1;temp=0xfe;P1=temp;}void timer0()interrupt 1{TH0=(65535-5000)/256;TL0=(65535-5000)%256;t0++;if(t0==10)t0=0;//闪烁间隔时间10*50msif(flag==1){count++;//计数3sif(count==100){EA=0;//关闭总中断,也可以写TR0=0,因为在数码管停止减数的时候已经关闭了TR1}}}void timer1()interrupt 3{TH1=(65535-5000)/256;TL1=(65535-5000)%256;t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==398){TR1=0;//关闭定时器1,数码管显示的内容不变TR0=0;//这里也可以不关闭TR0直接清零TH0=(65535-5000)/256;TL0=(65535-5000)%256;TR0=1;//这里的定时器0计数值的清零初始是为了3s的算时(函数里设置了5s)flag=1;}}void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) {dula=1;P0=table[aa];dula=0;wela=1;P0=0xfe;wela=0;delayms(1);dula=1;P0=table[bb];dula=0;wela=1;P0=0xfd;wela=0;delayms(1);dula=1;P0=table[cc];dula=0;wela=1;P0=0xfb;wela=0;delayms(1);dula=1;P0=table[bai];dula=0;wela=1;P0=0xf7;wela=0;delayms(1);dula=1;P0=table[shi];dula=0;wela=1;P0=0xef;wela=0;delayms(1);dula=1;P0=table[ge];dula=0;wela=1;P0=0xdf;wela=0;delayms(1);}(注:可编辑下载,若有不当之处,请指正,谢谢!)。
单片机控制的LED流水灯毕业论文
单片机控制的LED流水灯毕业论文目录绪论 (1)1.相关元件及电路设计 (2)1.1AT89C51芯片功能特性及应用 (2)1.2MCS-51 单片机 (2)1.2.1 内部结构 (2)1.2.2引脚定义 (3)1.2.3 外部总线构成 (3)1.3单片机时钟电路及时钟时序单位 (4)1.4单片机的复位 (5)1.4.1复位状态 (5)1.4.2复位电路 (5)2.流水灯电路及程序设计 (6)2.1 电路原理图 (6)2.2电路PCB图 (6)3. 装配与调试 (7)3.1 装配 (7)自制电路板步骤..................3.1.13.1.2 印制电路板的组装4总结 (9)5心得体会 (9)6参考文献及程序 (10)1相关元件及电路设计1.1A T89C51芯片功能特性及应用单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS GPS ESP TPMS医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。
有资料表明:2007年全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。
可以说单片机已经渗透到了我们生活的各个领域。
1.2MCS-51单片机1.2.1内部结构MCS-51系列单片机内部采用模块式结构,其结构组成框图如图 1.2.1所示。
图1.2.1 MCS-51系列单片机组成框图由图1.2.1可见,MCS-51系列单片机主要由以下部件通过片内总线连接而成:中央处理器(CP)数据存储器(RAM、程序存储器(ROM、并行输入/输出口(P0 口~P3 口)、串行口、定时器/计数器、中断控制、总线控制及时钟电路1.2.2引脚定义引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。
(毕业论文)单片机流水灯设计报告
(毕业论文)单片机流水灯设计报告
单片机流水灯设计报告
本设计报告用于详细说明如何使用单片机进行流水灯的设计。
具体可分为以下几个步骤:
一、设计原理及电路分析:
单片机的控制原理是通过编写一段程序,使得单片机的输出端控制管子的上电通断,
从而实现灯珠的轮流闪烁。
为了实现该功能,我们需要把整个电路分为两个部分:单片机部分和灯珠部分。
2、灯珠部分:将多极管接入到单片机的输出端,将灯珠和接地连接组成一个环路,
当单片机的输出端给管子提供上电的时候,灯珠就可以亮,当断电的时候,灯珠就会熄灭。
二、硬件设计:
准备一块51单片机、多极管、电阻、灯珠等硬件。
具体连接方式为:将多极管接入
到单片机的输出端,将灯珠和接地连接组成一个环路,在灯珠之间接入电阻,防止过大的
电流对灯珠造成损坏。
三、程序设计:
利用51单片机编写一段程序,向管子输出不断变化的电平,这样就可以使灯珠的级
联闪烁。
具体步骤如下:
1、定义单片机的输出管子的端口号以及输出端的电平值;
2、定义循环变量以及相应的输出端的电平值;
3、清除累加的寄存器,将循环变量累加1;
4、将累加值赋给相应的输出端口,从而实现灯珠的轮流闪烁。
四、测试:
按照电路图完成硬件连接,将程序烧写到51单片机中,上电后即可看到,灯珠可以
轮流闪烁。
以上就是关于单片机流水灯的设计,原理及电路的报告,希望能给您一些帮助。
谢谢!。
用单片机实现流水灯的控制
用单片机实现流水灯的控制毕业设计(论文)2015 年 4月摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
正文首先介绍本课题的背景、研究意义及完成的任务功能;接着简单描述设计过程中所用的一些主要元器件、方案的论证,以及介绍了系统硬件工作原理,并且附以系统硬件设计框图;其次阐述了PCB板的画质、制作、实物的完成、程序的编写和调试;最后对本设计进行了总结。
本次毕业设计根据设计要求,基本达到预期的目的。
即通过ATmega16单片机来控制16x8的贴片发光二极管矩阵显示,以中、明字符为例,分别可以实现‘全亮’到字模‘中’再到字模‘明’到‘全暗’的循环显示。
用户可以按照自己的喜好选择不同的字模、显示方式。
关键词:单片机 ATmega16 发光二极管霓虹灯AbstractIn recent years, with the rapid development of science and technology, SCM applications are continually deepening, while the traditional control test drive rapid updates. In real-time detection and control of the microcomputer application system, the microcontroller is often used as a core component, Jin Zhi Shi MCU side is not enough, Haiyinggenju specific hardware structure and application specific characteristics of the software Duixiang Jie He, to be perfect.The text introduces the subject of this issue background, significance, and complete functionality. A brief description of the design process used in some of the major components of the demonstration program, and introduced the principle of the system hardware, and attached to the system hardware design block diagram; second section describes the PCB board of the definition, production, physical completion of the preparation process and debugging; Finally, a summary of the design.The graduation project according to set requirements, achieves the desired purpose. ATmega16 microcontroller to control through the SMD LEDs 16x8 matrix display to the Ming character, for example, were able to achieve 'full light' to the font 'in' then font 'out' to 'all dark' cycle of ers can follow their own preferences to select a different font, displayKeywords: microcontroller ATmega16 LBD Neon目录第一章绪论 (1)1.1课程研究背景 (1)1.2 课程研究的意义 (1)1.3 课程研究的任务 (2)第二章本设计所用的主要电子器件简介 (3)2.1 AVR ATmega16 单片机简介 (3)2.2 锁存器 MC74HC373简介 (5)2.3 8x16贴片发光二极管矩阵简介 (6)2.4 稳压器ams117 简介 (6)第三章基本原理 (7)3.1 总体设计思路 (7)3.2方案论证与比较 (8)3.2.1 显示部分方案论证与选择 (8)3.2.2 驱动部分设计方案论证与选择 (8)3.3 电源模块的选择 (9)第四章设计过程 (10)4.1 单元电路设计 (10)4.1.1 控制部分电路 (10)4.1.2显示部分电路 (11)4.1.3 ams117稳压电路 (11)4.2 软件设计 (13)4.3 制版做实物 (13)4.3.1 PROTEL DXP 简介 (14)4.3.2实物制作 (17)第五章遇到的问题及调试 (18)5.1遇到的问题及解决方法 (18)5.1.1 硬件方面 (18)5.1.2 程序的调试 (18)5.2各点电压及波形测试 (19)5.3结果分析 (20)5.4材料清单 (20)结束语 (22)致谢词 (23)参考文献 (24)附录: (25)第一章绪论§1.1 课程研究背景电子计算机的发展经历了电子管、晶体管、集成电路到大(超大)规模集成电路弓四个阶段,既通常所说的第一代、第二代、第三代和第四代计算机。
51单片机流水灯毕业设计论文【大学毕业论文】
摘要单片机的应用已经广泛的渗透到国民经济的各个领域,随着社会对单片机应用人才的需要,它已成为工科大学生的必修课程之一。
单片机技术包含有硬、软两个方面的技术。
硬件是以单片机为核心,再加以其他各元器件组成的电子电路的一个实体。
它既有单片机的技术,又有电子类专业所必须掌握的模拟、数字、高频等电子电路的综合运用。
单片机的种类繁多,目前单片机应用系统开发工具也有不少,但同一系列单片机的开发工具或实验系列基本相同。
51系列单片机是国内目前应用最广泛的一种8位单片机之一。
经过20多年的推广与发展,51系列单片机形成了一个规模庞大,功能齐全,资源丰富的产品群。
随着嵌入式系统,片上系统等概念的提出和普遍接受及应用,51单片机的发展进入了一个新的阶段。
许多专用功能芯片的内核集成了51单片机,与51系列单片机兼容的微控制器以IP核的方式不断地出现在FPGA的片上系统中。
通过本次毕业课题的设计、制作、调试,其目的是让电子信息工程专业的毕业生通过自己完全动手制作一些实际电子产品,掌握一定的电子产品设计、制作技能和调试技术,巩固电子技术的理论知识,锻炼和提高学生的动手能力和综合运用知识解决实际问题的能力及实践动手能力。
让学生完全体验电子产品开发的全过程,把学生培养成为电子信息领域内的高级应用型技术人才。
【关键词】单片机:STC89C51; LED数码管显示器; keil C51;矩阵电路; 蜂鸣电路目录前言 (3)第一章概述 (4)1.1 目的与要求 (4)1.2 单片机的定义 (4)1.3单片机的发展 (4)1.4 单片机硬件概述 (5)1.5 单片机硬件结构 (6)第二章硬件电路设计 (7)2.1 电源电路 (7)2.2 复位电路 (7)2.3 晶振电路 (8)2.4 键盘电路 (9)2.4.1 矩阵键盘的结构与工作原理 (9)2.4.2 矩阵式键盘的按键识别方法 (10)2.5 流水灯电路 (11)2.6 蜂鸣器电路 (12)2.7 数码管显示 (13)2.7.1 LED数码管显示器概述 (13)2.7.2 数码管参数 (14)第三章软件设计 (16)3.1 KEILC软件介绍 (16)3.2 单片机应用系统的软件设计 (16)3.3 单片机流水灯程序设计 (17)第四章 PCB板的制作 (20)4.1 PROTEL 99 se 概述 (20)4.2 电路原理图设计 (20)4.3 印制电路板设置 (21)4.3.1 Protel99印制电路板设计工具的应用 (21)4.3.2 PCB布局布线规则 (22)4.3.3 印制电路板设计注意事项 (22)4.4 电路板的制作及其注意事项 (23)第五章元器件的安装........................... .. (25)5.1 元器件的安装 (25)结论 (28)致谢 (29)附录一设计元件清单表 (30)附录二电路原理图 (31)附录三电路板底层布线图 (32)前言单片机技术飞速发展,单片机的应用已经渗透到了国民经济的各个领域,处处影响着人们的生活,它的出现给现代工业测控领域带来了一次新的技术革命。
单片机跑马灯(流水灯)控制实验报告
单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。
三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。
单片机设计(流水灯、矩阵键盘、数码管倒计时)
单片机结业作业1.电路图2.程序:#include <reg51.h>sbit P1_6=P1^6;sbit P1_7=P1^7;unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char clock[2]={59,59}; //60秒倒计时缓冲数组unsigned char *dis_p;unsigned char keytest(); //键盘检测函数unsigned char search(); //查键值函数void display(unsigned char *p); //显示函数void main(){unsigned char i,a,c;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;dis_p=clock;while(1){P0=0x80;c=P0;for(i=0;i<8;i++){c>>=1;P0=c;a=keytest();if(a==0x0f) display(dis_p);else{display(dis_p);a=keytest();if(a!=0x0f){P3=0x00;a=search();switch(a){case 0x00:P2=0x3f;break;case 0x01:P2=0x06;break;case 0x02:P2=0x5b;break;case 0x03:P2=0x4f;break;case 0x04:P2=0x66;break;case 0x05:P2=0x6d;break;case 0x06:P2=0x7d;break;case 0x07:P2=0x07;break;case 0x08:P2=0x7f;break;case 0x09:P2=0x6f;break;case 0x0a:P2=0x77;break;case 0x0b:P2=0x7c;break;case 0x0c:P2=0x39;break;case 0x0d:P2=0x5e;break;case 0x0e:P2=0x79;break;case 0x0f:P2=0x71;break;default:break;}while((a=keytest())!=0x0f);}}}}}//**********************************主函数完void display(unsigned char *p){unsigned char buffer[]={0,0,0,0};unsigned char k,i,j,m,temp;buffer[0]=p[0]%10;buffer[1]=p[0]/10;buffer[2]=p[1]%10;buffer[3]=p[1]/10;for(k=0;k<3;k++){temp=0x10;for(i=0;i<4;i++){P3=~temp;j=buffer[i];P2=led[j];temp<<=1;for(m=0;m<200;m++);}}}//*******************************显示函数完unsigned char keytest(){unsigned char c;P1=0x0f;c=P1;c=c&0x0f;return(c);}//*******************键盘检测函数完unsigned char search(){unsigned char a,b,c,d,e;c=0xfe;a=0;while(1){P1=c;d=P1;d=d&0xf0;if(d==0x70){b=0;break;}else if(d==0xb0){b=1;break;}else if(d==0xd0){b=2;break;}else if(d==0xe0){b=3;break;}a++;c<<=1;}e=a*4+b;return(e);}//*****************查键值函数完void daojishi() interrupt 1{unsigned char a;EA=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;if(a==20){a=0;if(clock[0]==0){clock[0]=59;clock[1]=59;}else{clock[0]--;clock[1]--;}}EA=1;}。
单片机综合应用实习论文——用STC89C52实现流水灯
广西科技大学(筹)课程论文题目:单片机最小系统设计课程:单片机应用综合实习学期:2011-2012-2班级:测控092姓名:黄慧先学号: 200900304065教师:潘盛辉日期:2012.6.29目录1摘要———————————————————1 2任务描述及设计方案————————————2 3硬件设计方案———————————————2 4软件设计方案———————————————7 5系统调试及结果分析————————————7 6结论———————————————————9 7附录———————————————————9 8参考文献—————————————————111.摘要:近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。
而STC89C52就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
关键字:单片机、流水灯需求分析:随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态恰能给人一种视觉冲击,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用电子电路去设计,我们主要可以用装套控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机STC89C52来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面程序也不复杂,因此制作的远离简单,但功能作用并不低于电子电路设计的,由于它的小巧方便、通俗易懂,所以我们往往采用单片机来做流水灯。
2.任务描述及设计方案2.1任务描述设计流水灯控制电路,使连接在该电路上的8个发光二极管按顺序以次闪烁。
电子信息工程专业毕业论文--基于AT89C51单片机的音乐流水灯设计
摘要随着科技和经济的快速发展,人们对生活质量和生活环境的要求不断的提高,多彩多样的彩灯成了现今装饰和美化的时尚和潮流。
千姿万态的流水灯能给人一种视觉冲击。
拟采用单片机AT89C51去实现这种千变万化的流水灯。
单片机技术是一种传统和典型的技术,具有智能化、体积小、集成度高和价格低廉等许多独特的优点。
而且单片机明显优越于其他电子电路,其硬件电路和软件方面都不是特别复杂。
本设计将所学的单片机的理论和动手实践结合起来,主要利用AT89C51单片机设计并制作一个音乐流水灯。
首先设计一个稳定的直流电源电路,然后设计一个复位电路,为单片机的正常工作提供条件,然后再设计时钟电路和声音驱动电路,可以使单片机能够更好的控制与编译音乐部分,另外还设计一个通信电路以方便单片机和PC机的连接与通信,最后还需要设计按键电路用来控制音乐流水灯。
为了使蜂鸣器能够正常的发生还需设计一个音频电路。
硬件电路设计后要将各模块连接起来进行仿真和调试。
软件设计部分则需要将各电路模块进行编译,并设计音乐频率程序、流水灯程序和按键程序,同时将其进行仿真调试和组合调试。
以实现在播放音乐时LED灯有千变万化的效果,以满足对视觉上的享受。
关键词:单片机;音乐;流水灯;仿真;ABSTRACTWith the science and technology and the economy the rapid development, people pairs quality of life and living environment the requirements of continuously improve, colorful and diverse of the lantern became a nowadays decorative and beautify's fashion and trend. Zi million-state of flowing water lamp can give a person one kinds visual impact. Intends to adopt AT89C51 microcontroller to go achieve such kaleidoscopic of flowing water lights. MCU technology is a kind of tradition and typical technical, with intelligent, the volume is small, high integration and price inexpensive and so on many unique advantages. Moreover single-chip obviously superior to other electronic circuit, its hardware circuits and software aspects of are not particularly complicated.The single-chip design will combine theory and practice, the main use AT89C51 single-chip design of a musical water lights. First, design a stable DC power supply circuit, and then design a reset circuit for the microcontroller to provide normal working conditions, and then design a clock circuit and sound driver circuit, will enable MCU to better control and compile music part, in addition to design a to facilitate communication circuit chip and PC connectivity and communication, and finally also need to design the circuit to control the music keys light water. In order to make the buzzer to normal design an audio circuit needs to happen. After the hardware circuit design to connect the modules for simulation and debugging. Software design will need to be compiled each circuit module, and the design frequency of the music program, water lights and key procedures, and its combination of simulation debugging and debugging. When playing music in order to achieve a kaleidoscopic effect LED lights to meet the visual enjoyment.Key words:MCU; Music; Light water;Simulation目录摘要 (I)ABSTRACT (II)目录 (1)1. 绪论 (1)1.1 单片机的概念 (1)1.2 单片的历史、发展和应用 (4)2. 总体设计 (6)2.1 设计要求 (6)2.2 设计方案选择 (6)2.3 整体设计思路 (6)3. 系统硬件设计与部分电路说明 (8)3.1 硬件设计框图 (8)3.2 部分电路说明 (8)3.2.1 电源及启动电路 (8)3.2.2 复位电路 (9)3.2.3 时钟电路 (10)3.2.4 通信电路 (10)3.2.5 键盘电路 (11)3.2.6 流水灯电路 (11)3.2.7 音频电路 (12)3.3 电路原理图及说明 (12)4. 系统软件电路设计与分析 (13)4.1 音乐程序设计 (13)4.1.1 音乐程序流程图 (14)4.2 流水灯设计 (16)4.2.1 流水灯程序流程图 (16)4.2.2 流水灯程序 (16)4.3 音乐流水灯程序 (16)4.3.1 音乐流水灯程序流程图 (16)4.3.2 音乐流水灯程序 (17)5. 系统调试与仿真 (19)5.1 硬件调试 (19)5.2 软件调试 (19)5.3 软件仿真 (19)总结 (22)致谢 .................................................................................................... 错误!未定义书签。
单片机论文之流水灯及数码管控制解析
单片机论文之流水灯及数码管控制解析用单片机控制流水灯及数码管目录课程设计目录 (1)课程设计摘要 (2)正文 (3)课程设计涉及的知识及所需平台 (3)元件介绍 (9)电路设计及分析 (12)程序设计 (14)调试运行 (21)设计心得 (23)参考文献 (24)一:课程设计摘要设计摘要设计要求:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减至765398并保持显示此数,与此同时利用定时器0以500MS的速度进行流水灯从上到下的移动,当数码管上的数减到停止时,流水灯也停止然后全部闪烁,3秒后(用T0定时)流水灯全部关闭,数码管上显示“HELLO”,到此保持住。
设计说明:数码管的动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端有效”,并送出相应的字型显示编码。
此时其他位的数码管因位选端无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。
通过定时器可以控制单片机上的数码管以及流水灯的显示时间,从而达到设计的要求。
关键词:单片机,数码管,动态显示,流水灯,定时器设计目的以AT89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。
巩固加深对AT89C52单片机的认识,学会用AT89C52设计最小系统,并由此拓展运用单片机实现其他功能的设计。
设计引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
按键控制数码管和流水灯设计报告实验报告
按键控制数码管和流水灯设计报告实验报告摘要单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。
本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。
通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。
用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。
在硬件电路的基础上加上软件程序的控制来实现本设计。
其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。
关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system键盘控制流水灯和数码管实验报告目录一设计的目的 (2)二任务描述及方案设计 (3)1. 任务描述 (3)2. 方案设计 (3)三硬件设计方案 (3)1. Msp430f149单片机的功能说明 (3)2. 显示器功能 (4)3. 复位电路 (4)4. 按键的部分 (4)5. 74HC573的特点 (4)6. 流水灯和数码管电路原理图 (4)7. 元器件清单 (4)四程序设计方案 (5)1. 用IAR Embedded Workbench软件编程序 (5)2. 仿真电路图 (6)五实物实验 (7)1. 实物图 (7)2. 测试结果与分析 (7)六结论 (11)八参考文献 (16)一、设计目的1、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;2、培养学生实践动手能力及独立分析和解决工程实践问题能力;3、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。
单片机并口简单应用(流水灯、数码管)实验报告6-1
实验一单片机并口简单应用(流水灯、数码管)实验目的1、了解简单单片机应用系统的设计方法。
2、了解单片机汇编语言程序的基本结构3、了解单片机汇编语言程序的设计和调试方法4、掌握应用PROTEUS仿真软件的操作方法。
5、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。
6、培养良好的实验习惯。
实验内容1、AT89S51为主控芯片,用PROTEUS仿真设计简单单片机应用系统。
2、编程实现8个发光LED“流水”的现象,用一个按键控制灯的上、下、开花三种状态,先用查询。
3、用四个数码管开始现实185,做二个按键,加5,减4,最多加到210,最多减到150。
发辉部分:修改程序,用中断完成以上功能,用六位数码管显示学号后六位。
实验原理1、流水灯(1)实验原理图(可打印)(2)实验程序(必须手写)流水灯中断ORG 0000HAJMP MAINORG 0003HAJMP KEYMAIN:CALL INITLOOP:CALL MOVECALL DELAYAJMP LOOPINIT:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HSETB IT0SETB EX0SETB EARETMOVE:CJNE R0,#00H,MOV2 MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3 MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LEND MOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOP LEND: RETKEY: PUSH PSWPUSH ACCMOV A,R0INC ACJNE A,#03H,HU1MOV A,#00HHU1: MOV R0,APOP ACCPOP PSWRETIDELAY:MOV R2,#150DE1: MOV R5,#200DJNZ R5,$DJNZ R2,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK查询ORG 0000HAJMP STARTSTART:MOV R3,#0FEHMOV R4,#0MOV P2,#0FFHMOV R0,#00HMAIN:CALL DETCALL MOVEAJMP MAINDET:JB P3.2,DENDJNB P3.2,$MOV A,R0INC AMOV R0,ACJNE A,#03H,DENDMOV R0,#00HDEND:RETMOVE:CJNE R0,#00H,MOV2MOV A,R3RL AMOV R3,AMOV P2,R3MOV2:CJNE R0,#01H,MOV3MOV A,R3RR AMOV R3,AMOV P2,R3MOV3:CJNE R0,#02H,LENDMOV DPTR,#TABMOV R7,#0MOV R6,#4LOP: MOV A,R7MOVC A,@A+DPTRMOV P2,ALCALL DELAYINC R7DJNZ R6,LOPLEND: RETDELAY: MOV R4,#250DE1: MOV R5,#200DJNZ R5,$DJNZ R4,DE1RETTAB: DB 0e7H,0dbH,0bdH,07eH END;OK2、数码管显示(1)实验原理图(可打印)(2)实验程序(可打印)(3)数码管查询(4) ORG 0000H(5) AJMP MAIN(6)(7) MAIN:(8)MOV R2,#000(9)MOV R3,#185(10)(11)MANAGE:(12)LCALL COMPUTING(13)LCALL BCD(14)LCALL DISPLAY(15)AJMP MANAGE(16)(17)(18)COMPUTING:(19)JB P3.1,SU(20)JNB P3.1,$(21)INC R3(22)INC R3(23)INC R3(24)INC R3(25)INC R3(26)CJNE R3,#210,PD1(27)PD1: JC LEND(28)MOV R3,#210(29)SU: JB P3.2,LEND(30)JNB P3.2,$(31)DEC R3(32)DEC R3(33)DEC R3(34)DEC R3(35)CJNE R3,#150,PD2 (36)PD2: JNC LEND (37)MOV R3,#150 (38)LEND:RET(39)(40)(41)BCD:(42)MOV A,R2(43)MOV B,#100 (44)DIV AB(45)MOV 30H,A(46)MOV A,B(47)MOV B,#10(48)DIV AB(49)MOV 31H,A(50)MOV 32H,B(51)(52)MOV A,R3(53)MOV B,#100 (54)DIV AB(55)MOV 33H,A(56)MOV A,B(57)MOV B,#10(58)DIV AB(59)MOV 34H,A(60)MOV 35H,B(61)(62)DISPLAY:(63)MOV R7,#7(64)MOV R0,#30H (65)MOV DPTR,#TAB (66)MOV R6,#0FEH (67)LOOP:(68)MOV A,@R0(69)MOVC A,@A+DPTR (70)MOV P1,R6(71)MOV P2,A(72)LCALL DELAY (73)MOV A,R6(74)RR A(75)MOV R6,A(76)LCALL DELAY(77)INC R0(78)DJNZ R7,LOOP(79)RET(80)(81)DELAY:(82)MOV R5,#50(83)DE1:MOV R4,#10(84)DJNZ R4,$(85)DJNZ R5,DE1(86)RET(87)(88)(89)TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (90)(91)END(92)(93);OK(94)(95)中断(96) ORG 0000H(97) AJMP MAIN(98) ORG 0003H(99) AJMP KEY(100) ORG 0013H(101) AJMP KEY2(102)(103)MAIN:(104)LCALL INIT(105)MOV R2,#000(106)MOV R3,#185(107)(108)MANAGE:(109)LCALL BCD(110)LCALL DISPLAY(111)AJMP MANAGE(112)(113)INIT:(114) SETB IT0(115) SETB IT1(116) SETB EX0(117) SETB EX1(118) SETB EA(119) RET(120)(121)KEY: MOV A,R3 (122)ADD A,#5 (123)MOV R3,A (124)CJNE R3,#210,M1 (125)M1: JC KEND(126)MOV R3,#210 (127)AJMP KEND (128)KEY2: MOV A,R3 (129)SUBB A,#4 (130)MOV R3,A (131)CJNE R3,#150,M2 (132)M2: JNC KEND (133)MOV R3,#150 (134)KEND: RETI(135)(136)(137)BCD:(138)MOV A,R2(139)MOV B,#100(140)DIV AB(141)MOV 30H,A(142)MOV A,B(143)MOV B,#10(144)DIV AB(145)MOV 31H,A(146)MOV 32H,B(147)(148)MOV A,R3(149)MOV B,#100(150)DIV AB(151)MOV 33H,A(152)MOV A,B(153)MOV B,#10(154)DIV AB(155)MOV 34H,A(156)MOV 35H,B(157)(158)DISPLAY:(159)MOV R7,#7(160)MOV R0,#30H (161)MOV DPTR,#TAB (162)MOV R6,#0FEH (163)LOOP:(164)MOV A,@R0(165)MOVC A,@A+DPTR(166)MOV P1,R6(167)MOV P2,A(168)LCALL DELAY(169)MOV A,R6(170)RR A(171)MOV R6,A(172)LCALL DELAY(173)INC R0(174)DJNZ R7,LOOP(175)RET(176)(177)DELAY:(178)MOV R5,#50(179)DE1:MOV R4,#10(180)DJNZ R4,$(181)DJNZ R5,DE1(182)RET(183)(184)(185)TAB: DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H (186)(187)END(188)(189);OK3、显示学号后六位(1)实验原理图(可打印)(2)实验程序(可打印)学号ORG 0000HAJMP MAINMAIN:MOV R2,#071MOV R3,#082MANAGE:LCALL BCDLCALL DISPLAYAJMP MANAGEBCD:MOV A,R2MOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV 32H,BMOV A,R3MOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BDISPLAY:MOV R7,#7MOV R0,#30HMOV DPTR,#TABMOV R6,#0FEHLOOP:MOV A,@R0MOVC A,@A+DPTRMOV P1,R6MOV P2,ALCALL DELAYMOV A,R6RR AMOV R6,ALCALL DELAYINC R0DJNZ R7,LOOPRETDELAY:MOV R5,#50DE1:MOV R4,#10DJNZ R4,$DJNZ R5,DE1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END实验总结1、实验中出现的问题,如何解决2、心得体会。
数码管加流水灯
实验报告班级学号姓名实验日期实验名称:数码管及流水灯显示一、实验目的了解数码管动态显示原理,学会LPC2103通用I/O口的使用。
二、实验内容1.用LPC2103控制8个LED闪烁形成的流水灯效果;2.用LPC2103控制数码管循环显示的效果三、实验原理1.本实验中共接入了8个共阳八段数码管(数码管阳极连在一起),演示数码管中的某一段点亮只需在对应的位置写入“0”即可。
在这里74HC595实现了数据串并转换的功能,试验中用到的两片74HC595分别用于控制八个数码管的位选和其中每个数码管的段选。
本实验循环显示了十六进制数码“0—9”。
2.为了最大程度的利用芯片的I/O口资源,在硬件设计时显示模块和数入模块都采用了芯片74HC59,74HC59是一种串行输入转并行输出的芯片,与I/O口连接的共有三个引脚:引脚SH_CP为移位暂存器的输入,上升沿时移位暂存器中的数据依次移动一位,下降沿移位寄存器的数据不变;引脚ST_CP为寄存器的时序输入,上升沿时移位暂存器的数据进入存储寄存器,下降沿时存储寄存器的数据保持不变,使用时通常将ST_CP置为低电平,移位结束后再在ST_CP端产生一个正脉冲更新数据,还有一个引脚为数据输入端DS.四、实验步骤1.用protues设计流水灯控制电路;2.在Keilc51中编写流水灯控制程序,编译通过后,与protues联合调试;3.按动k1键,观察是否达到演示效果;4.用中断方式编写程序,功能实现后再改为查询方式,比较二者的区别。
五、实验流程图六、实验源程序#include "config.h"#define SPI_CS 1<<8//P0.8定义为hc595的片选信号线,用于数码管显示数据的输出#define SPI_CS1 1<<11//P0.11定义为hc595的片选信号线,用于数码管的位选#define SPI_DATA 1<<6//P0.6输出数码管要显示的数#define SPI_DATA1 1<<7//P0.7控制那一位数码管亮#define SPI_CLK 1<<4//P0.4时钟控制信号线void DelayNS(uint32 dly){uint32 i;for(;dly>0;dly--)for(i=0;i<5000;i++);}void HC595_SendDat(uint8 dat)//待显示数据的输出{uint8 i;IOCLR = SPI_CS;//SPI_CS=0,选中芯片 for(i=0;i<8;i++)//发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0,产生输出时钟if((dat&0x80)!=0) IOSET = SPI_DATA;//发送1else IOCLR = SPI_DATA;//发送0dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1,产生输出时钟}IOSET = SPI_CS; //SPI_CS=1,输出显示数据主程序流程图 数码管显示子程序流程图}void HC595_SendDat1(uint8 dat)//要显示数据位的控制{uint8 i;IOCLR = SPI_CS1; //SPI_CS=0for(i=0;i<8;i++) //发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0if((dat&0x80)!=0) IOSET = SPI_DATA1;else IOCLR = SPI_DATA1;dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1}IOSET = SPI_CS1; //SPI_CS=1,输出显示数据}int Num_show(){const uint8 DISP_TAB[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码显示段码表 0 1 2 3 4 5 6 7 8 9 a b c d e fconst uint8 DISP_TAB1[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码显示位码表第1位 (8)uint8 i;for(i=0;i<8;i++){HC595_SendDat(DISP_TAB[i]);//与下面一条语句共同控制在第i位显示i(i<8)HC595_SendDat1(DISP_TAB1[i]);DelayNS(100);HC595_SendDat(0xff);//与下面一条语句共同控制关闭第i位数码显示HC595_SendDat1(DISP_TAB1[i]);}for(i=0;i<8;i++){HC595_SendDat(DISP_TAB[i+8]);//与下面一条语句共同控制在第i位显示i(7<i<=f)HC595_SendDat1(DISP_TAB1[i]);DelayNS(100);HC595_SendDat(0xff);//与下面一条语句共同控制关闭第i位数码显示HC595_SendDat1(DISP_TAB1[i]);}return(0);}extern void DelayNS(uint32 dly);extern void HC595_SendDat(uint8 dat);extern void HC595_SendDat1(uint8 dat);#include "config.h"#include "Num show.h"#define SPI_IOCON 0x000009d0//SPI接口的IO设置字int main(){PINSEL0=0x00000000;//设置所有引脚连接GPIOPINSEL1=0x00000000;IODIR=SPI_IOCON; //定义连接595的引脚为输出while(1){Num_show();}return(0);}#define IN_TARGET#include "config.h"void __irq IRQ_Exception(void){while(1); // 这一句替换为自己的代码}void FIQ_Exception(void){ while(1); // 这一句替换为自己的代码}void TargetInit(void){ }void TargetResetInit(void){ /* 设置系统各部分时钟 *//* PLLCON = 1;#if ((Fcclk / 4) / Fpclk) == 1VPBDIV = 0;#endif#if ((Fcclk / 4) / Fpclk) == 2VPBDIV = 2;#endif#if ((Fcclk / 4) / Fpclk) == 4VPBDIV = 1;#endif#if (Fcco / Fcclk) == 2PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);#endif#if (Fcco / Fcclk) == 4PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);#endif#if (Fcco / Fcclk) == 8PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);#endif#if (Fcco / Fcclk) == 16PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);#endifPLLFEED = 0xaa;PLLFEED = 0x55;while((PLLSTAT & (1 << 10)) == 0);PLLCON = 3;PLLFEED = 0xaa;PLLFEED = 0x55;*/ /* 设置存储器加速模块 */MAMCR = 2; //MAMCR 8u2 00-MAM 功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能/* MAMTIM 8u3000=0-保留001=1-一段时间内只有 1 个处理器时钟(cclk)用于 MAM 取指。
基于AT89S52的流水灯状态控制与数码管显示系统
Southwest university of science and technology《电子设计基础》课程设计设计题目:基于AT89S52的流水灯状态控制与数码管显示系统学院名称:学生姓名:学生学号:专业班级:2015年7月12日基于AT89S52的流水灯状态控制与数码管显示系统摘要单片机[1](Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
本次设计是基于AT89S52芯片所设计的5种LED流水灯电路,通过对AT89S52单片机写入C语言程序实现了对8个发光二极管流水灯的控制功能,并通过AT89S52的外部中断功能实现对流水灯状态和闪烁频率的切换,同时于4位数码管上显示流水灯状态信息。
在进行课题设计的过程中,学习并掌握了AT89S52单片机的功能原理以及对其的C语言编程方法,了解了生活中霓虹灯的大致由来。
关键词:AT89S52芯片;流水灯;定时器中断;数码管;Running light control and digital display systembased on AT89S52AbstractMCU [1] (Microcontrollers) is a kind of integrated circuit chip, is the use of ultra large scale integrated circuit technology to a data processing capability of the central processing unit (CPU), random access memory ram, ROM and variety of I / O port and interrupt system, timer / counter and function (possibly also comprises a display drive circuit, pulse width modulation circuit, analog multiplexer, a / D converter circuit) integrated into a piece of silicon constitute a small and to improve the micro computer system, is widely used in industrial control. From the last century 80's, from the 4, 8 bit microcontroller, to the present 300M of the high-speed microcontroller.The design is based on AT89S52 chip machine design of five LED water lamp circuit through of AT89S52 write C language program to achieve the eight light-emitting diode light water control function and by AT89S52 external interrupt function realizes the switching of light water state and flicker frequency, also with four digital tube display light water state information. In the process of the design of the subject, learning and mastering the functional principle of AT89S52 microcontroller and its C language programming method, understand the life of neon lights.Key words:AT89S52 chip;Running light;Time interrupt;Digital tube;目录第1章引言 (1)1.151单片机简介 (1)1.2AT89S52单片机简介 (1)1.3论文主要内容 (1)第2章流水灯状态控制与显示系统设计过程 (2)2.1设计思路说明 (2)2.2流水灯状态控制与数码管显示系统设计过程 (2)2.2.1 编写头文件及定义整型及字符 (2)2.2.2 用16进制表示流水形式 (3)2.2.3 编写4位数码管程序 (3)2.2.4 编写延时函数 (4)2.2.5 编写定时器外部中断程序 (4)2.2.6 编写主函数 (6)2.2.7 编写流水灯程序 (6)2.3 基于源程序设计的AutoFlowchart流程图 (11)2.3.1 延时函数 (11)2.3.2 流水灯延时控制 (11)2.3.3 主函数 (12)2.3.4 4位数码管状态显示功能 (13)2.3.5花样流水灯状态控制流程 (14)2.4电路原理proteus仿真图 (15)2.5流水灯状态控制与显示系统程序源代码 (15)第3章对设计过程的总结与分析 (24)3.1设计过程中的问题及解决思路 (24)3.2 设计总结 (24)致谢 (25)参考文献 (25)第1章引言1.1 51单片机简介51单片机是对所有兼容Intel 8031指令系统的单片机的统称。
51单片机控制流水灯和数码管【精选】
流水灯的操作
2013.03.22
• 点亮第一个灯; • 让第一个灯闪烁; • 从第一个灯依次点亮至最后一个灯;Fra bibliotek动态显示
动态显示的特点是将所有位数码管的段选线并 联在一起,由位选线控制是哪一位数码管有效。选 亮数码管采用动态扫描显示。所谓动态扫描显示即 轮流向各位数码管送出字形码和相应的位选,利用 发光管的余辉和人眼视觉暂留作用,使人的感觉好 像各位数码管同时都在显示。动态显示的亮度比静 态显示要差一些,所以在选择限流电阻时应略小于 静态显示电路中的。
C语言中的<<和>>
• 每执行一次<<操作,被操作数高位数丢失, 低位补零;
C语言中的<<和>>
• 每执行一次<<操作,被操作数低位数丢失, 高位补零;
任务
• 第一次一个管亮流动一次,第二次两个管 亮流动,依次到8个管亮,然后重复整个过 程。
• 先奇数亮再偶数亮,循环三次;一个灯上 下循环三次;两个分别从两边往中间流动 三次;再从中间往两边流动三次;8个全部 闪烁3次;关闭发光管,程序停止。
• 用8个发光管演示出8位二进制数累加过程。
呼吸灯的操作
• 灯光在微电脑控制之下完成由亮到暗的逐 渐变化,感觉像是在呼吸。
• 实现灯不同亮度的两种方法: 1 调节灯的保护电阻, 2 使用PWM。
数码管的操作
• 数码管的介绍 • 数码管的操作
g f GNDa b a
a
b
按键控制数码管和流水灯设计报告实验报告
按键控制数码管和流水灯设计报告实验报告实验名称:按键控制数码管和流水灯设计报告一、实验目的本实验旨在通过使用按键来控制数码管和流水灯的显示,加深对数码管和流水灯工作原理的理解,并掌握按键的基本输入输出原理。
二、实验器材1. Arduino开发板2.数码管模块3.面包板4.面包板连接线5.按键模块6.跳线三、实验原理数码管是一种将数字和一些常用符号通过数码电路显示在特定位置的显示器件,由多个LED组成,可显示0-9及一些小于9的字母和符号。
流水灯是一种LED灯的组合,通过不同的时序控制,实现灯光依次点亮或熄灭的效果。
本实验通过使用按键控制器将数码管和流水灯的状态控制与显示,按下不同的按键可以使数码管切换显示不同的数字,同时控制流水灯的点亮或熄灭。
四、实验步骤1. 将数码管模块连接到Arduino开发板的数字I/O口,连接方式可参考数码管模块的接口定义和Arduino开发板的编号。
2. 将按键模块连接到Arduino开发板的数字I/O口,连接方式可参考按键模块的接口定义和Arduino开发板的编号。
3. 按键模块和数码管模块都需要使用面包板连接线和跳线连接到Arduino开发板的相应引脚上。
4.根据按键的读取状态,通过编程控制数码管显示相应的数字,利用流水灯实现通过按键的控制点亮或熄灭。
五、实验结果经过编程和调试,实验中数码管能够正确显示按键输入的数字,同时根据按键输入状态控制流水灯的点亮或熄灭。
按不同的按键可以切换数码管的数字显示,实现了按键对数码管和流水灯的控制。
六、实验总结本实验通过按键来控制数码管和流水灯的显示,加深了对数码管和流水灯的工作原理的理解。
同时,掌握了按键的基本输入输出原理,并通过编程控制实现了按键对数码管和流水灯的控制。
本实验还有一些可以改进的地方,例如可以增加多个按键,实现更多的控制功能;还可以通过增加延时函数控制流水灯的点亮或熄灭速度。
通过不断改进和练习,可以提高对Arduino开发板的理解和掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用单片机控制流水灯及数码管目录课程设计目录 (1)课程设计摘要 (2)正文 (3)课程设计涉及的知识及所需平台 (3)元件介绍 (9)电路设计及分析 (12)程序设计 (14)调试运行 (21)设计心得 (23)参考文献 (24)一:课程设计摘要设计摘要设计要求:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减至765398并保持显示此数,与此同时利用定时器0以500MS的速度进行流水灯从上到下的移动,当数码管上的数减到停止时,流水灯也停止然后全部闪烁,3秒后(用T0定时)流水灯全部关闭,数码管上显示“HELLO”,到此保持住。
设计说明:数码管的动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端有效”,并送出相应的字型显示编码。
此时其他位的数码管因位选端无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。
通过定时器可以控制单片机上的数码管以及流水灯的显示时间,从而达到设计的要求。
关键词:单片机,数码管,动态显示,流水灯,定时器设计目的以AT89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。
巩固加深对AT89C52单片机的认识,学会用AT89C52设计最小系统,并由此拓展运用单片机实现其他功能的设计。
设计引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片其它功能。
89C52有PDIP(40pin) PLCC(44pin)两种封装形式。
二:正文1.课程设计涉及的知识(1)单片机工作原理:单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。
存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC (包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC之中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
(2)电路原理基础:用导线将电源、开关(电键)、用电器、电流表、电压表等连接起来组成电路,再按照统一的符号将它们表示出来,这样绘制出的就叫做电路图。
电子电路图又称作电路图或电路原理图,它是一种反映电子产品和电子设备中各元器件的电气连接情况的图纸。
它是一种工程语言,可帮助人们尽快熟悉电子设备的电路结构及工作原理。
因此看懂电路图是学习电子技术的一项重要内容,是进行电子制作或修理的前提,也是电子技术爱好者必须掌撑的基本技能。
电子电路图是人们为了研究和工程的需要,用约定的符号绘制的一种表示电路结构的图形。
通过电路图可以知道实际电路的情况。
这样,我们在分析电路时,就不必把实物翻来覆去地琢磨,而只要拿着一张图纸就可以了;在设计电路时,也可以从容地在纸上或电脑上进行,确认完善后再进行实际安装,通过调试、改进,直至成功;而现在,我们更可以应用先进的计算机软件来进行电路的辅助设计,甚至进行虚拟的电路实验,大大提高了工作效率。
2. 课程设计所需平台(1)windows XP系统PC机一台。
(2)Keil C51软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍Keil C51开发系统各部分功能和使用。
C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
Keil软件的优点:<1>Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
<2>与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
(3)Protues软件介绍Protues软件是英国Labcenter electronics公司出版的EDA 工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译。
Protues功能特点Protues软件具有其它EDA工具软件的功能。
<1>原理布图<2>PCB自动或人工布线<3>SPICE电路仿真革命性的特点:<1>互动的电路仿真。
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
<2>仿真处理器及其外围电路。
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。
<3>支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。
<4>提供丰富的外围接口器件及其仿真。
RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
这样很接近实际。
在训练学生时,可以选择不同的方案,这样更利于培养学生。
3.元件介绍(1)AT98C52单片机,摘要里面已详细叙述,这里不做多说。
(2)数码管在单片机系统中,经常采用LED 数码管来显示单片机系统的工作状态、运算结果等各种信息,LED 数码管是单片机人机对话的一种重要输出设备。
LED 数码管由八个发光二级管组构成,通过不同的发光字段组合可用来显示数字0-9、字符A-F 、H 、L 、P 、R 、U 、Y 、符号“-”及小数点“.”等。
数码管分为共阴极和共阳极,8个发光二极管的阳极连接在一起,作为公共控制端,接高电平。
阴极作为“段”控制端,当某段控制端为低电平时,该段对应的发光二极管导通并点亮。
通过点亮不同的段,显示出不同的字符;8个发光二极管的阴极连接在一起,作为公共控制端接低电平,阴极作为“段”控制端,当某段控制端为高电平时,该段对应的发光二极管导通并点亮。