流水灯制作(汇编语言版)

流水灯制作(汇编语言版)
流水灯制作(汇编语言版)

程序设计步骤(设计过程参考汇编源程序):

1.第一个灯的点亮;

2.灯循环编写;

3.延时函数的编写(延时子函数编写参照:

https://www.360docs.net/doc/9712089030.html,/view/7ef9ad61caaedd3383c4d386.html?re=view); 实验原理proteus电路图如图1:

图1

实验效果图:

点亮第一个灯(图2):

图2灯循环(图3):

图3流水灯汇编源程序:

ORG 0000H;程序的开始地址

LJMP MAIN;跳到程序的主函数位置

ORG 0030H;跳过堆栈段

MAIN:MOV A,#1B;给第一个亮灯赋初值

SHIFN:LCALL FLASH;调用亮灯子函数

RL A;(灯循环)

SJMP SHIFN;

FLASH:MOV R2,#01H;灯亮子函数(可调灯亮次数)FLASH1:MOV P1,A;

LCALL DELAY;调用延时子程序

DJNZ R2,FLASH1;

RET;

DELAY:MOV R5,#1H;延时子函数

K1:MOV R6,#0FFH;

K2:MOV R7,#81H;

K3:NOP;

DJNZ R7,K3;

DJNZ R6,K2;

DJNZ R5,K1;

RET;

END;

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。 2. 8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。 3. 8 个发光管来回流动,第个管亮100ms 。 4. 用8 个发光管演示出8 位二进制数累加过程。 5. 8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。重复此过程。 6. 间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。 7. 间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。 1 #include #define uint unsigned int sbit led 仁P"0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() {

uint x,y; for(x=200;x>0;x--) for(y=100;y>0;y--); } #include #include #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a; void delay(); void main() { a=0xfe; P1=a; while(1) { a=_crol_(a,1); delay(); P1=a; delay(); } } void delay() { uint b; for(b=55000;b>0;b--); } 3 #include #include #define uint unsigned int #define uchar unsigned char void delay() { uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--); } void main() { uchar a,i; while(1) a=0xfe; for(i=0;i<8;i++) { P1=a; delay(100); a=_crol_(a,1); } a=0x7f; for(i=0;i<8;i++) { P1=a; delay(100); a=_cror_(a,1);

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________ 院(部)____________________________ 专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (3) 一、课程设计目的 (3) 二、课程设计要求 (4) 三、实验内容 (4) 1、设计任务与要求 (4) 2、系统分析 (4) 1).硬件电路设计(画出原理图、接线图) (5) 2)软件框图 (7) 3、用keil建项目流程 (8) 4、程序清单 (9) 4、系统调试 (11) 四、设计总结(结论) (12)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3

C51单片机实行流水灯程序

#include #define LEDPort P1 unsigned char LED01_[9]= {0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,}; //方式0,方式1灯开关数组。unsigned char LED23_[5]= {0xFF,0x7E,0xBD,0xDB,0xE7}; // 方式2,方式3灯开关数组。 unsigned char LED4_[16]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1 f,0X3f,0X7f}; //方式4 unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC}; unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF}; unsigned char TAB[9]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//定义断码表。 unsigned char i=0,j=9; //数据选择计数。 unsigned char Mode=0; //模式选择,默认为模式0。 unsigned char Count=1; //定时器中断计数。 unsigned char Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。 //灯延迟时间=uc_Dalay*定时器溢出时间。 void main() { P2=0X3F; TMOD=0x01; //定时器0模式一。 TH0=0x3C; TL0=0xB0; //溢出时间:50ms。 TR0=1; //定时器0开启。 IT0=1; //外部中断0下降沿触发。 IT1=1; //外部中断1下降沿触发。

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:彭玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致谢 (8) 参考文献 (8)

1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述 2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却

定时器控制流水灯

成绩 信息与通信工程学院实验报告 (操作性实验) 课程名称:微机原理与微控制器应用 实验题目:c51单片机的定时器实验指导教师: 班级: 学号:学生姓名: 一、实验目的和任务 1.掌握定时器中断的编程方法。 2.掌握keil C51集成开发环境在硬件仿真条件下各参数的设置。 二、实验仪器及器件 硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干 软件:keil uVision4 三、实验内容及电路图 利用实验板上的八个LED灯作显示,利用定时器中断编写中断一次为50ms的定时程序,控制单片机定时器进行定时,总定时时间为0.75ms。

四、流程图与程序 #include "SST89x5x4.h" #include int temp=0x01,num=0; void T0Int() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num++; if(num==15) { num=0; P1=_crol_(temp,1);

temp=P1; } } void main() { EA=1; ET0=1; TMOD=0X01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; TR0=1; while(1); } 五、实验结果 八个LED灯由左往右依次亮起,并且每个LED灯点亮时间大约为0.75m。

六、实验数据分析及处理 从实验现象来看,LED灯从左到右依次点亮,符合实验要求,说明实验操作正确,实验结果正确。 七、实验结论与感悟(或讨论)

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

心形LED流水灯制作方法

LED心形流水灯加程序 1.原件清单:一个万能板,一个底座,一个STC89C52芯片,32个LED 灯,32个贴片电阻,两个30uf电容,一个晶振。 2.原理图: 注:电源处的复位可以不用;就是上面红框里的内容 3.正面图

背面图: 亮灯图: 4. 程序代码: #include #include #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0

/***********************************************************/ void delay(uint t); //延时 void zg(uint t,uchar a);//两边逐个亮 void qs(uint t,uchar a);//全部闪烁 void zgxh(uint t,uchar a); // 逆时针逐个点亮 //void zgxh1(uint t,uchar a); // 顺时针逐个点亮 void djs(uint t,uchar a); //对角闪 void lbzgm(uint t,uchar a);//两边逐个灭 //void sszgm(uint t,uchar a); // 顺时针逐个灭 void nszgm(uint t,uchar a); // 逆时针逐个灭 void sztl(uint t,uchar a);//顺时逐个同步亮 void nztl(uint t,uchar a);//逆时逐个同步亮 void sztm(uint t,uchar a);//顺时逐个同步灭 void nztm(uint t,uchar a);//逆时逐个同步灭 void hwzjl(uint t,uchar a); //横往中间亮 void hwzjm(uint t,uchar a); //横往中间灭 //void swzjl(uint t,uchar a); //竖往中间亮 //void swzjm(uint t,uchar a); //竖往中间灭 void nzdl(uint t,uchar a); //逆时逐段亮 void nzdgl(uint t,uchar a); //逆时逐段一个点亮 void jgs(uint t,uchar a); //间隔闪 /**********************************************************/ void zg(uint t,uchar a)//两边逐个亮 { uchar i,j; for(j=0;j

哈工大数电自主实验 数字流水灯

Harbin Institute of Technology 数字电路自主设计实验 院系:航天学院 班级: 姓名: 学号: 指导教师: 哈尔滨工业大学

一、实验目的 1.进一步掌握数字电路课程所学的理论知识。 2.熟悉几种常用集成数字芯片的功能和应用,并掌握其工作原理,进一步学会使用其进行电路设计。 3.了解数字系统设计的基本思想和方法,学会科学分析和解决问题。 4.培养认真严谨的工作作风和实事求是的工作态度。 5.数电课程实验为我们提供了动手实践的机会,增强动手实践的能力。 二、实验要求 设计流水灯,即一排灯按一定的顺序逐次点亮,且可调频、暂停、步进。 三、实验步骤 1.设计电路实现题目要求,电路在功能相当的情况下设计越简单越好; 2. 画出电路原理图(或仿真电路图); 3.元器件及参数选择; 4.电路仿真与调试; 5.到实验时进行电路的连接与功能验证,注意布线,要直角连接,选最短路径,不要相互交叉,注意用电安全,所加电压不能太高,以免烧坏芯片; 6.找指导教师进行实验的检查与验收; 7.编写设计报告:写出设计与制作的全过程,附上有关资料和图纸,心得体会。 四、实验原理 设计流水灯的方法有很多种,我的设计思路是: 利用555定时器产生秒脉冲信号,74LS161组成8进制计数器,74LS138进行译码,点亮电平指示灯。并通过调节555的电阻,实现频率可调。通过两与非门,实现暂停、步进功能。

1.秒信号发生器 (1)555定时器结构(2)555定时器引脚图 (3)555定时器功能表 (4)555定时器仿真图

2. 74LS161实现8进制加计数 74LS161是常用的四位二进制可预置的同步加法计数器,它可以灵活地运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。 (1)74LS161同步加法器引脚图 管脚图介绍: 始终CP和四个数据输入端 P0-P3 清零CLR 使能EP,ET 置数PE 数据输出端Q0-Q3 进位输出TC (2)74LS161功能表 (5)74LS161仿真图 对74LS161进行八进制计数改组,需要一个与非门,即芯片74LS00,也就是将74LS161的输出端通过与非门,当输出为8时将输出为高电平的端口与非后接到74LS161的清零段。即计数到8是异步清零,所以74LS161变为八进制计数。

单片机流水灯C语言源程序

单片机流水灯C语言源程序 标题:51单片机流水灯C语言源程序2008-12-06 08:43:05 ************************************************************** 文件名称:flash_led.c 文件说明:流水灯C程序 编写日期:2006年10月5日 程序说明:MCU采用AT89S51,外接12M晶振,P1口输出 *************************************************************/ #include //51系列单片机定义文件 #define uchar unsigned char //定义无符号字符 #define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void) { uint i; uchar temp; while(1) { temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp; delay(100); //调用延时函数 temp<<=1; } temp=0x80; for(i=0;i<8;i++) //8个流水灯反向逐个闪动 { P1=~temp; delay(100); //调用延时函数 temp>>=1; } temp=0xFE; for(i=0;i<8;i++) //8个流水灯依次全部点亮 { P1=temp; delay(100); //调用延时函数 temp<<=1; }

单片机实验指导

(内部教材) 单片机实验指导书 周小波编 阜阳师范学院物理与电子科学学院电子信息科学与技术教研室

第一章系统概述 一、系统简介 MCS-51单片机实验板是物理与电子科学学院自主研发设计的单片机实验系统。板载一片51内核STC89C52单片机,整个实验系统由17个独立模块组成,各模块相互独立,给学生提供了更大的发挥空间。利用目前流行的Keil c51软件,进行软、硬件仿真开发调试。 二、各模块电路 (1)单片机最小系统模块 最小系统电路主要由STC89C52单片机、时钟电路、复位电路等构成,所有的IO口均引出。 (2)串口电平转换模块

串口电平转换电路主要由MAX232芯片以及相关外围电路构成,可以用来下载程序,以及作串口通信实验。 (3)数码管驱动模块 8位共阳极数码管采用8550(PNP)三极管驱动,模块预留位选端口和段选端口两排插针,根据需要可自行连接。 (4)LED发光二极管模块 板载8个发光二极管,J1为接线端口,可根据需要自行连接到单片机的IO 口或者其他外设上,PZ2为排阻,起限流作用。 (5)键盘模块 键盘电路由4各独立按键和4*4矩阵键盘构成,Pk2接口为独立键盘的接线端子,Pk1端口为矩阵键盘的接线端子。

(6)DA转换模块 DA转换电路采用8位DA芯片DAC0832,PDA端口为8位数据的输入端,11 脚为DAC0832输出端,发光二极管用于指示DA转换的结果。 (7)AD转换模块 AD转换电路由8位AD转换芯片ADC0804构成,通过调节VR1电位器可以改 变AD输入端的模拟电压。

(8)电机驱动模块 采用L298N模块作为电机驱动,可以驱动2个直流电机或1个步进电机, J5为信号输入端,输出端J6接直流电机或者步进电机。 (9)总线扩展模块 采用82C55芯片作为总线的扩展,采用一片锁存器74HC573,使P0口可以作 为地址和数据总线的复用端口。J9为82C55的控制总线接线端子,J10为82C55 的地址和数据接线端子,PA、PB、PC为82C55的输出端口,可以外接其他外设完 成相应的实验。

1单片机并口简单应用(流水灯)

试验1 单片机并口简单应用(流水灯) 实验目的 1、了解单片机C语言程序的基本结构 2、了解单片机C语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程 4、熟悉51单片机的端口使用 实验仪器 单片机开发试验仪、稳压电源、计算机 实验原理 1、硬件电路 如图1所示,流水灯硬件电路由发光二极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,二极管公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。 图1 流水灯电路图 2、程序流程图如下。

实验内容:1、开发板接线图 延时 P0口初态循环右移1位 P0口状重新赋值0XFE 开始 P0口输出0XFE P0是否等于0X00 Y N

2、开发环境设置 打开keil软件,版本μ Vision2 ,μvision3,μvision4 都一样,在这里用μvision4版本演示,打开之后如下图,有的时候会默认打开上次使用的工程,单击Project 菜单,选择 Close Project 关闭了默认打开的工程,显示下图界面: 我们要建立新的工程,选择Project→ newμ vision projiect… 选择工程要保存的路径,输入工程文件名,如图

点击保存后会弹出一个对话框,要求用户选择单片机型号,可以根据用户使用的单片机来选择,我们使用的STC90单片机是兼容51内核的,Keil C51 几乎支持所有的51内核单片机,51内核具有通用型,如果程序用的资源不是太复杂,我们可以选择任意一款51单片机内核就行。例程以添加Atmel 的AT89C51来说明。如图,然后,单击确定(OK)。 功能描述 如果出现下面的界面:单击是就可以,意思是将单片机的启动代码添加到工程,我们不用修改。 到目前我们还没建立一个完整的工程,只是有工程的名字,框架,工程中还没有任何文件代码,(除了启动代码,有的keil 版本不显示启动代码),接下来我们添加文件及代码。 单击菜单File→New 选项,或者单击界面上的快捷图标,新建文件串口如下。

51单片机 流水灯 ~ 花样灯 程序

单片机为89c52 晶振为11.0592, /***此程序为流水灯*** / #include #include #define uchar unsigned char //宏定义 #define uint unsigned int uchar led; void delay(uint z) //延时子函数体 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { led=0xfe; //赋初值 while(1) { P1=led; //点亮第一个小灯 delay(100); //延时100毫秒 led=_crol_(led,1); 将led的变量左移给下一位} }

/*8个发光管间隔200ms由上至下,返回再由上至下,一个个往下亮,后全亮由下至上,返回再由下至上,一个个往下亮,后全亮 再重复2次, 然后全部熄灭再以500ms间隔 全部闪烁3次。重复此过程*/ #include #include #define uchar unsigned char #define uint unsigned int uchar led; uint i,j; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { for(j=0;j<2;j++) { led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led=_crol_(led,1); //将led变量循环左移给下一位 } led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led<<=1; //左移给下一位 } led=0x7f; //赋初值

51单片机爱心流水灯原理及制作

电路原理图:

原件清单: 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。~ 效果展示:

作品程序: #include<> #define uchar unsigned char ; uchar flag=200; /////////////////////////////////////////////////////////////////////// uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff}; //////////////////////////////////////////////////////////////////// uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; ; uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff}; uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};

单片机实训,流水灯,霹雳灯

单片机实训 --霹雳灯 学生姓名:陈文锋 学院:信息工程学院 班级: 12应用电子技术 学号: 2012011846 指导教师:王颖 日期: 2014 年 5 月

目录 第一章、任务书.........................................................................................第二章、总体方案设计及选择................................................................. (1) 实验原理......................................................................................... 第三章、电路设计..................................................................................... (1) 硬件设计........................................................................................ (2) 软件设计......................................................................................... (3) 电路板制作及联机调试..................................................................第四章、程序清单................................................................................... 第五章、设计心得.................................................................................... 第六章、参考资料....................................................................................第七章、附件(实物图)........................................................................

单片机流水灯多种程序方法

一、傻瓜式编程 #include<> #define uint unsigned int #define uchar unsigned char void delay(uint z); //延时子函数的声明main () { P0=0xfe;//第一个灯亮 delay(500); P0=0xfd;//第二个灯亮 delay(500); P0=0xfb; delay(500); P0=0xf7; delay(500); P0=0xef; delay(500); P0=0xdf; delay(500); P0=0xbf; delay(500); P0=0x7f; delay(500); } void delay(uint z) //延时子函数 { uint x,y; for(x=0;x

二、用移位符号“<<”或“>>” void main() //主函数 { a=0xfe; //给a赋值 while(1) { P0=a; //给P0口赋值,第一个等亮 a为1111 1110 a=~a; //求反 a为0000 0001 a=a<<1;//移位 a为0000 0010 a=~a; //求反还原a。第二个灯亮 a为1111 1101 delay(500); if(a==0x7f) { P0=0x7f;//第八个灯亮一次 delay(500); a=0xfe;//让第一个灯亮,然后无限循环 } } } 三、用移位函数_crol_( )和_cror_( ) main() { a=0xfe; while(1) { P0=a; delay(500); a=_crol_(a,1); //a每次左移一位 } } 四、使用数组 uchar code table[ ]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf,0x7f}; main() { whlie(1) { for(a=0;a<8;a++) { P0=table[a]; delay(500); } } }

流水灯课程设计

基于单片机的流水灯设计 学院: 专业: 指导老师: 姓名: 班级: 学号: 年月日

摘要:当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 This age is a new technology emerge in endlessly era, in the electronic field especially automation intelligent control field, the traditional schism components or digital logic circuit, is composed of control system with unprecedented speed was replaced by microcontroller intelligent control system. SCM has small, strong function, low cost, etc, it can be said that wide application, intelligent control and automatic control core is the microcontroller. 关键词:LED 单片机控制系统流水灯 目录 1.前言 1.1 设计概述 (2) 1.2 设计主要功能 (2) 2. 硬件组成 2.1 80C51单片计算机的组成原理 (3) 2.组成框图及内部总体结构 (3) 2.寄存器和存储器………………………………………………………

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 流水灯汇编程序 8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms PUSH PSW ;现场保护指令(有时可以不加) MOV R4,#2 L3: MOV R2 ,#00H L1: MOV R3 ,#00H L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END

51单片机汇编程序集(二) 2008年12月12日星期五 10:27 辛普生积分程序 内部RAM数据排序程序(升序) 外部RAM数据排序程序(升序) 外部RAM浮点数排序程序(升序) BCD小数转换为二进制小数(2位) BCD小数转换为二进制小数(N位) BCD整数转换为二进制整数(1位) BCD整数转换为二进制整数(2位) BCD整数转换为二进制整数(3位) BCD整数转换为二进制整数(N位) 二进制小数(2位)转换为十进制小数(分离BCD码) 二进制小数(M位)转换为十进制小数(分离BCD码) 二进制整数(2位)转换为十进制整数(分离BCD码) 二进制整数(2位)转换为十进制整数(组合BCD码) 二进制整数(3位)转换为十进制整数(分离BCD码) 二进制整数(3位)转换为十进制整数(组合BCD码) 二进制整数(M位)转换为十进制整数(组合BCD码) 三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7 ;二进制整数(2位)转换为十进制整数(分离BCD码) ;入口: R3,R4 ;占用资源: ACC,R2,NDIV31 ;堆栈需求: 5字节 ;出口: R0,NCNT IBTD21 : MOV NCNT,#00H MOV R2,#00H IBD211 : MOV R7,#0AH LCALL NDIV31 MOV A,R7 MOV @R0,A INC R0 INC NCNT MOV A,R3 ORL A,R4 JNZ IBD211 MOV A,R0 CLR C SUBB A,NCNT MOV R0,A RET ;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4 ;占用资源: ACC,B,R7 ;堆栈需求: 3字节 ;出口: R0

相关文档
最新文档