6个LED灯依次点亮程序
6×6LED点阵显示屏电路及程序
ORG 0000HAJMP STORG 0003HAJMP KUAIORG 0013HAJMP MANORG 0030HST: MOV P0,#00H ;开始MOV P2,#00HMOV IE,#05HMOV IP,#01HMOV TCON,#05HSETB EAMOV R0,#90HMOV @R0,#180MAIN: JNB P3.0,K1K1: LCALL D1MSJNB P3.0,BEGINAJMP MAINBEGIN: JNB P3.1,K2K2: LCALL D1MSJNB P3.1,K22SJMP NEXTK22: LJMP MAINNEXT: MOV DPTR,#TAB ;主程序MOV R1,#00HMOV R4,#255 ;16*字数CM: MOV R5,#7MOV R3,#16C1: MOV R2,#0C16: MOV P0,#00HMOV P2,#00HMOV A,R2MOVC A,@A+DPTRMOV P0,AINC R2MOV A,R2MOVC A,@A+DPTRMOV P2,AINC R2MOV P1,R1INC R1ACALL D1MSDJNZ R3,C16MOV R3,#16DJNZ R5,C1INC DPTRINC DPTRDJNZ R4,CMAJMP BEGIND1MS: MOV A,@R0MOV R6,#3MOV R7,ADJNZ R7,$DJNZ R6,$-4RETKUAI: MOV @R0,#120RETIMAN: MOV @R0,#255RETITAB:zero:DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H ;0 ZHONG:DB 000H,000H,0F8H,003H,008H,001H,008H,001H DB 008H,001H,008H,001H,008H,001H,0FFH,0FFH DB 008H,001H,008H,001H,008H,001H,008H,001H DB 008H,001H,0FCH,003H,008H,000H,000H,000HGUO:DB 000H,000H,0FEH,0FFH,002H,040H,00AH,050H DB 08AH,050H,08AH,050H,08AH,050H,0FAH,05FH DB 08AH,050H,0CAH,052H,08EH,054H,00AH,050H DB 002H,040H,0FFH,0FFH,002H,000H,000H,000H KUANG:DB 004H,002H,004H,001H,0E4H,03FH,09CH,010H DB 084H,090H,0C6H,05FH,084H,020H,0F8H,01FH DB 008H,000H,009H,000H,00EH,000H,008H,000H DB 008H,000H,00CH,000H,008H,000H,000H,000H YE:DB 000H,040H,010H,040H,060H,040H,080H,047H DB 000H,040H,0FFH,07FH,000H,040H,000H,040H DB 000H,040H,0FFH,07FH,000H,044H,000H,043H DB 0C0H,040H,030H,060H,000H,040H,000H,000H DA1:DB 020H,000H,020H,040H,020H,040H,020H,020H DB 020H,010H,020H,00CH,0A0H,003H,07FH,000H DB 0A0H,001H,020H,006H,020H,008H,020H,010H DB 020H,020H,030H,060H,020H,020H,000H,000H XUE:DB 040H,004H,030H,004H,011H,004H,096H,004H DB 090H,004H,090H,044H,091H,084H,096H,07EH DB 090H,006H,090H,005H,098H,004H,014H,004H DB 013H,004H,050H,006H,030H,004H,000H,000H XIN:DB 080H,000H,040H,000H,020H,000H,0F8H,0FFH DB 007H,000H,024H,001H,024H,0FDH,024H,045H DB 025H,045H,026H,045H,024H,045H,024H,045H DB 0B4H,0FDH,026H,001H,004H,000H,000H,000H XI:DB 000H,040H,000H,030H,000H,000H,0FCH,077H DB 0A4H,084H,0A6H,084H,0A5H,08CH,0A4H,094H DB 0A4H,0B4H,0A4H,084H,0A4H,084H,0FEH,0E7H DB 004H,000H,000H,010H,000H,060H,000H,000H YU:DB 000H,008H,000H,008H,000H,008H,0FFH,008H DB 088H,008H,088H,008H,088H,008H,088H,008H DB 088H,008H,088H,04CH,088H,088H,088H,040H DB 0CCH,03FH,088H,000H,000H,000H,000H,000H DIAN:DB 000H,000H,0F8H,007H,048H,002H,048H,002H DB 048H,002H,048H,002H,0FFH,03FH,048H,042H DB 048H,042H,048H,042H,048H,042H,0FCH,047HDB 008H,040H,000H,070H,000H,000H,000H,000H QI:DB 040H,000H,020H,000H,058H,000H,047H,000H DB 054H,000H,054H,000H,054H,000H,054H,000H DB 054H,000H,054H,000H,0D4H,01FH,014H,020H DB 006H,040H,004H,080H,000H,070H,000H,000H GONG:DB 000H,020H,004H,020H,004H,020H,004H,020H DB 004H,020H,004H,020H,004H,020H,0FCH,03FH DB 004H,020H,004H,020H,004H,020H,004H,020H DB 004H,020H,004H,020H,000H,020H,000H,000H CHENG:DB 024H,008H,024H,006H,0A4H,001H,0FEH,0FFH DB 0A3H,000H,022H,041H,020H,041H,07EH,049H DB 042H,049H,042H,049H,042H,07FH,042H,049H DB 042H,049H,07EH,069H,000H,041H,000H,000H XUE1:DB 040H,004H,030H,004H,011H,004H,096H,004H DB 090H,004H,090H,044H,091H,084H,096H,07EH DB 090H,006H,090H,005H,098H,004H,014H,004H DB 013H,004H,050H,006H,030H,004H,000H,000H YUAN:DB 000H,000H,0FEH,0FFH,022H,004H,05AH,008H DB 096H,087H,00CH,081H,024H,041H,024H,031H DB 025H,00FH,026H,001H,024H,03FH,034H,041H DB 0A4H,041H,014H,041H,00CH,070H,000H,000HEND#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit s4=P3^3;sbit s5=P3^4;bit d=1;uchar code tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x0,0x0,0x0,0x0,0x20,0x30,0x70,0x38,0x78,0x38,0x8,0x3C,0x8,0x34,0x8,0x36,0x8,0x 32,0x8,0x33,0x88,0x31,0xD8,0x31,0xF8,0x30,0x70,0x38,0x0,0x0,0x0,0x0,//20x0,0x0,0x0,0x1,0xE0,0xF,0xF0,0x1F,0xF0,0x1F,0x18,0x30,0x8,0x20,0x8,0x20,0x8,0x 20,0x8,0x20,0x8,0x30,0x38,0x38,0xF0,0x1F,0xE0,0xF,0xC0,0x7,0x0,0x0,//00x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x10,0x20,0x18,0x20,0xF8,0x3F,0xF8,0x 3F,0xF8,0x3F,0x0,0x20,0x0,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,//10x0,0x0,0x0,0x0,0xC0,0xF,0xE0,0x1F,0xF0,0x1F,0x98,0x31,0x88,0x20,0x88,0x20,0x88 ,0x20,0x88,0x20,0x88,0x20,0x98,0x31,0x98,0x1F,0x10,0x1F,0x0,0xE,0x0,0x0,//60x0,0x0,0x0,0x0,0x0,0x0,0x0,0x46,0x0,0x2F,0x0,0x1F,0x0,0x6,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,//,0x20,0x0,0x24,0x8,0x24,0x48,0x24,0x84,0xFE,0x7F,0x23,0x2,0x22,0x21,0x20,0x10,0x FF,0x9,0x20,0x6,0x22,0x1A,0xAC,0x61,0x20,0x80,0x30,0xE0,0x20,0x0,0x0,0x0,//我0x0,0x2,0x2,0x2,0x7A,0x82,0x4A,0x82,0x4A,0x8A,0x7E,0x56,0xCA,0x53,0x4A,0x22,0x4 A,0x22,0x7E,0x52,0x4A,0x4E,0x4A,0x82,0x7B,0x2,0x2,0x3,0x0,0x2,0x0,0x0,//要0x20,0x10,0x24,0x8,0x24,0x6,0xA4,0x1,0xFC,0xFF,0x22,0x1,0x33,0x6,0x22,0x0,0xF0, 0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0x3F,0x10,0x0,0x0,0x0,//和0x40,0x0,0x20,0x0,0xF8,0xFF,0x7,0x0,0x40,0x0,0x20,0x8,0x18,0x4,0xF,0x43,0x8,0x8 0,0xC8,0x7F,0x8,0x0,0x8,0x1,0x28,0x6,0x18,0xC,0x0,0x0,0x0,0x0,//你0x8,0x8,0x8,0x4,0x8,0x2,0x8,0xFF,0xC8,0x0,0x38,0x40,0xF,0x41,0x8,0x41,0x8,0x41, 0xE8,0x7F,0x8,0x41,0x88,0x41,0x8,0x41,0xC,0x60,0x8,0x40,0x0,0x0,//在0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x 0,0x80,0x0,0x80,0x0,0x80,0x0,0x80,0x0,0xC0,0x0,0x80,0x0,0x0,0x0,//一0x40,0x40,0x48,0x20,0x48,0x1F,0x48,0x20,0xFF,0x7F,0x48,0x42,0x48,0x42,0x0,0x40, 0xC4,0x47,0x44,0x48,0x44,0x48,0x44,0x48,0xFE,0x48,0x4,0x6E,0x0,0x20,0x0,0x0,//起0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //N个字,32*(N+1)};void delay(uint z){uint x;for(;z>0;z--)for(x=100;x>0;x--);}void show1(uchar dat1){P0=0;P0=dat1;}void show2(uchar dat2){P2=0;P2=dat2;}int main(){uint i,j,a,b,k=4;loop:P0=0;P2=0;while(1){if(s1==0){delay(5);if(s1==0){while(1){P0=0;P2=0;a=0;loop2:if(d==1){while(1){for(;b<416;b+=2){a+=b;for(j=0;j<k;j++) //快慢{if(s2==0){delay(5);if(s2==0){P0=0;P2=0;a=0;b=0;k=4;goto loop;}if(s3==0){delay(5);if(s3==0)k=2;}if(s4==0){delay(5);if(s4==0)k=7;}if(s5==0){delay(5);if(s5==0){d=~d;a-=b;delay(300);goto loop2;}}for(i=0;i<16;i++) {P1=i;show1(tab[a]); show2(tab[a+1]); delay(3);a+=2;}a-=32;}a=0;}b=0;}}else{while(1)for(;b>2;b-=2){a+=b;for(j=0;j<k;j++) //快慢{if(s2==0){delay(5);if(s2==0){P0=0;P2=0;a=0;b=0;k=4;d=~d;goto loop;}}if(s3==0){delay(5);if(s3==0)k=2;}if(s4==0){delay(5);if(s4==0)k=7;}if(s5==0){delay(5);if(s5==0){d=~d;a-=b;delay(300);goto loop2;}}for(i=0;i<16;i++){P1=i;show1(tab[a]);show2(tab[a+1]);delay(3);a+=2;}a-=32;}a=0;}a=0;b=416;}}}}}}return 0; }。
6位LED显示单片机控制电子钟.doc
6位LED显示单片机控制电子钟/计数器这是我们设计的单片机电子钟/计时器学习板,它采用6位LED数码管显示时、分、秒,以24小时计时方式。
可以通过按键实现时分调整、秒表/时钟功能转换、省电(关闭显示)等功能。
我们能提供的完整的汇编语言源程序清单及电路原理设计图有助于学习者进行分析和进行实验验证6位LED显示单片机控制电子钟/计数器成品板成品每套84元51单片机做的电子钟在很多地方都有介绍,对于单片机学习者来说这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。
常见的电子钟程序由显示部分、计算部分、时钟调整部分构成,本产品硬件上完全支持倒计时器,客户只要自己修改程序就能实现倒计时功能。
为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,接口复杂一些。
考虑时钟显示只有六位,且系统没有其它复杂的处理任务,所以决定采用动态扫描法实现LED的显示。
单片机采用易购的AT89S51系列,这样单片机可具有足够的空余硬件资源实现其它的扩充功能,硬件系统的总体构成如下图所示:该板采用AT89S51单片机,最小化应用设计,采用共阳七段LED显示器,P0口输出段码数据,P2.0~P2.5做列扫描输出,P1.0,P1.1,P1.2,接三个按键开关,用以调时及功能设置。
为了提高共阳数码管的驱动电压,用9012做电源驱动输出。
采用12M晶振,有利于提高秒计时的精度。
本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。
其主程序执行流程图见下左图:数码管显示的数据存放在内存单元70H~75H中。
其中70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据,每一地址单元内均为十进制BCD码。
由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出70H~~75H某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
六路彩灯循环显示控制器数电课程设计
一.设计目的及要求1.1 课程设计的目的1、巩固和加强《数字电子技术》课程的理论知识。
2、掌握电子电路的一般设计方法,了解电子产品研制开发过程。
3、掌握电子电路安装和调试的方法及其故障排除方法,学会用ewb 软件或multisim软件对电路仿真。
4、通过查阅手册和文献资料,培养独立分析问题和解决问题的能力。
5、培养创新能力和创新思维。
1.2 要求用中规模集成电路实现6路彩灯控制电路,主要用计数器、译码器、移位寄存器等芯片集成,实现以下5种演示花型:花型1: 6路彩灯同时亮;花型2: 6路彩灯同时灭;花型3:6路彩灯从左至右逐路点亮;花型4:6路彩灯左侧三个全亮,同时右侧三个全灭;花型5; 6路彩灯右侧三个全亮,同时左侧三个全灭;要求彩灯亮、灭一次的时间可调,花型转换的顺序为:花型1、花型2、花型3、花型4,花型5、花型1······且电路有复位控制,复位按钮闭合时彩灯循环输出,按钮断开彩灯熄灭。
二、设计方案的选择和电路框图2.1 题目分析我们设计的流水灯实际上是主要使用一个555定时器、一个74LS160,一个74LS42和两个74HC194,这四个芯片对,6个彩灯进行控制,产生循环控制的效果。
2.2题目设计花型1,111111;花型2,000000;花型3,100000——010000——001000——000100——000010——000001;花型4,111000;花型5,000111。
用74HC194移位寄存器来实现。
用74LS42译码器来实现对194的控制,实现194的清零,并行输入,以及右移。
用74LS160十进制计数器控制42译码器的输出,555定时器根据滑动电阻的调节来实现输出时钟脉冲周期的不同从而控制160计数的快慢,也就实现了彩灯闪烁时间的可调。
2.3 结构框图如图1.。
三、各单元电路的设计、计算和说明3.1 555时序电路在这次课程设计中,555定时器用来产生脉冲信号。
6位LED时钟设计的源程序清单
6源程序清单(1)参考汇编程序;************************************;;课程设计程序:单片机时钟;;*************************************;;***************************设计说明**********************;;以下程序能用于24小时计时,能作为秒表使用,能定时闹铃1min(也可关),;能整点报时,能倒计时定时。
使用方法:开机后在00:00:00 起开始计时,;(1)长按P1.0进入调分状态:分单元闪烁,按P1.0加l,按P1.1减1。
;再长按P1.0进入时调整状态,时单元闪烁,加减调整同调分,长按P1.0退出调整状态。
;(2)按下P1.1进入秒表状态:按P1.2暂停,再按P1.2秒表清零,再按P1. 2秒表;又启动,按P1.1退出秒表回到时钟状态。
;(3)按P1.3进入设定闹时状态:00:00:--,;可进行分设定,按P1.2分加l,再按P1.3为时调整.00:00:--,按P1.2时加1,;按P1.1闹铃有效,显示为00:00:--,再按P1.1闹铃无效(显示00:00:--,),;按P1. 3调闹钟结束。
在闹铃时可按P1.3停闹,不按闹铃响1分钟。
按P1.4进入倒计时;定时模式.按P1.5进行分十位调整(加1),按P1.6进行分个位加l,按Pl.4倒计时;开始,当对间为0时停止倒计时,并发声提醒,倒计时过程中按P1.4可退回到;正常时钟状态,定时器T0、T1溢出周期为50ms,T0为秒计数用,T1为调整时闪烁;及秒表定时用。
P1.0、P1.1、P1.2、P1.3为调整按钮,P0口为字符输出口,;P2为扫描口.P3. 7为小喇叭口.采用共阳显示管。
50H~55H为闹钟定时单元,;60H-- 65H为秒表计时单元.70H~75H为显示时间单元,76H~79H为分时计时单元。
;03H标志=0时钟状态,03H= ls;05H=0,不闹铃,05H=1要闹铃;;07H每秒改变一次,用作间隔呜叫。
单片机控制LED灯点亮(C语言)
将0xfe赋给P1口,然后使用移位函数来改变P1口的值,达到流水灯的效果 移位函数: _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回 。 _crol_,_cror_: c51中的intrins.h库函数
程序如下:
随后会弹出一个对话框,要求选择单片机的型号。在该对话框中显示了Vision2的器件数据库,从中可以根据使用的单片机来选择。
PART ONE
AT89S52
8051 based Full Static CMOS controller with Three-Level Program Memory Lock, 32 I/O lines, 3 Timers/Counters, 8 Interrupts Sources, Watchdog Timer, 2 DPTRs(DATA POINTER REGISTERS ), 8K Flash Memory, 256 Bytes On-chip RAM 基于8051全静态CMOS控制器、 三级加密程序存储器 、 32个I/O口 、三个定时器/计数器 、八个中断源 、看门狗定时器、2 个数据指针 寄存器、8k字节Flash,256字节片内RAM
十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) 以下各数不是合法的十六进制整常数: 5A (无前缀0X) 0X3H (含有非十六进制数码)
各种进位制的对应关系
十进制
二进制
十六进制
十进制
二进制
十六进制
0
0
0
9
1001
arduino学习笔记4–利用数组使6个led闪烁
arduino学习笔记4–利用数组使6个led闪烁通过上一节学习,知道了怎样使用循环对6个led进行控制,我们发现LED灯的端口是连续的,是有规律的,若端口号是杂乱无章的,如2、3、6、11能不能使用循环来实现了?一、实验现象用控制板来实现6个端口号没有规律的LED闪烁,展示让无序的LED一个接一个按顺序亮起的方法。
灯会按照顺序先从数组头的亮到数组尾,然后反过来由尾到头。
和从前例子不同的是,本例的LED不是必须连续的。
你可以任意改变LED连接的引脚和顺序。
只要在数组中定义即可。
二、实验器材:控制板、LED6个、电阻6个、面包板和杜邦线。
三、实验所用函数及语句Array 数组1.数组是一种可访问的变量的集合。
2.创建(声明)一个数组类型数组名[ 数组长度 ] ;例如:int a[2];整数数组a的长度为2Int a[2]={3,11};或Int a[ ]={3,11};整数数组a的长度为2,其值分别为3和113.访问数组①.数组从0位开始索引(最大索引数等于声明数组大小-1)。
②.从数组中访问一个值: x = myarray1 [ 4 ];③数组和循环:数组往往在for循环中进行操作,循环计数器可用于访问每个数组元素。
for (int i=0; i<5 ;i++) {pinMode(a[i],OUTPUT );}四、实验电路五、编写程序int timer = 100; // 数字越大间隔时间越长,整个程序都能用,叫全局变量int led[] = {2, 7, 4, 6, 5, 3}; // LED引脚编号数组int js = 6; // 引脚个数(应和LED引脚编号数组相同)void setup() {for (int i = 0; i < js; i++) {//用for循环初始化引脚:pinMode(led[i], OUTPUT); // 数组元素取出时应该是从0开始到js - 1结束。
51单片机_LED指示灯控制
{
delay_ms(300);//亮300毫秒
P1=_crol_(P1,1);//左移位使次低位为低电平点亮,依次循环
}
}
//2、实现LED指示灯从高到低、从弟到高、以及从两边向中间、从中间向两边逐个点亮#include<reg52.h>
#include<intrins.h>
voiddelay_ms(intn)//延时n毫秒
点亮
}
for(i=0; i<7; i++)
{
p1=_crol_(p1,1);
p0=_cror_(p0,1);
Hale Waihona Puke p=p1&p0;delay_ms(100);
P1=p;
P0=p;
}
}
}//让P1口对应的第一排灯从低到高逐个点亮//让P1口对应的第一排灯从高到低逐个点亮//第一排灯从低到高,第二排从高到低//让P1口对应的第一排灯从低到高逐个点亮//同时,让P0口对应的第二排灯从高到低逐个//让LED灯从两边向中间点亮
左移位使次低位为低电平点亮依次循环实现led指示灯从高到低从弟到高以及从两边向中间从中间向两边逐个点亮includereg52hincludeintrinshvoiddelaymsint延时n毫秒voidmainunsignedcharp10xfe
《
此程序使用单片机89SC52
//1、实现LED指示灯逐个点亮
{
inti,j;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
}
voidmain()
{
inti;
六灯闪烁实验
arduino学习笔记3 - 六灯闪烁实验2013-10-19 08:59 [小大] 来源: 未知转发至:通过上一节学习,知道了怎样让一个led进行闪烁,下面的实验会对六个led进行控制,先看硬件连接图。
按照上面的硬件连接方法接好后,咱们来测试两段程序,看看其中的差别。
通过这两段程序介绍一下arduino的语言轮廓。
1//设置控制Led的数字IO脚2int Led1 = 1;3int Led2 = 2;4int Led3 = 3;5int Led4 = 4;6int Led5 = 5;7int Led6 = 6;8//led灯花样显示样式1子程序9void style_1(void)10{11 unsigned char j;12 for(j=1;j<=6;j++)13 {14 digitalWrite(j,HIGH);15 delay(200);16 }17 for(j=6;j>=1;j--)18 {19 digitalWrite(j,LOW);20 delay(200);21 }22}23void setup()24{25 unsigned char i;26 for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式27 pinMode(i,OUTPUT);//设置第i个引脚为输出模式28}29void loop()30{31 style_1();//样式13233}上面代码的效果视频如下:/player.php/sid/XMjgzOTA0Mjk2/v.swf34//设置控制Led的数字IO脚35int Led1 = 1;36int Led2 = 2;37int Led3 = 3;38int Led4 = 4;39int Led5 = 5;40int Led6 = 6;41//led灯花样显示样式1子程序42void style_1(void)43{44 unsigned char j;45 for(j=1;j<=6;j++)46 digitalWrite(j,HIGH);47 delay(200);4849 for(j=6;j>=1;j--)50 {51 digitalWrite(j,LOW);52 delay(200);53 }54}55void setup()56{57 unsigned char i;58 for(i=1;i<=6;i++)//依次设置1~6个数字引脚为输出模式59 pinMode(i,OUTPUT);//设置第i个引脚为输出模式60}61void loop()62{63 style_1();//样式16465}上面代码的效果视频如下:/player.php/sid/XMjg0MDU5NjQ0/v.swf通过下载测试,发现第一段程序是led 1-6逐个点亮,然后从6-1再逐个熄灭如此循环。
实测通过6位数码管显示程序
0.1~10累加控制数码管低2位显示从0.1到9.9累加,步进为0.1实验源程序://***************************************************************************** ******//主函数//***************************************************************************** ******void main() //主函数{num=0; //初始化段码为0while(1) //进入while死循环{scan(); //数码管扫描函数}}//***************************************************************************** ******//动态扫描函数//***************************************************************************** ******scan(){uchar i;for(i=0;i<10;i++){//显示个位P1=0xbf; //0xbf=1011 1111,即选通个位LE1=1; //锁存位LE1=0; //断开锁存,位选573的Q7~Q0仍保持wei=num*10;P1=dis[wei/10] | 0x80; //dis[wei/10]为0~9的编码,0x80为小数点LE2=1; //锁存段码LE2=0; //断开锁存,段选573的Q7~Q0仍保持delay(100); //延时保持一下,延时过大会闪动,延时过小会有重影P1=0x00;LE2=1;LE2=0; //清除P1口数据,以免造重影//显示十分位P1=0x7f; //0xbf=0111 1111,即选通十分位LE1=1; //锁存位LE1=0; //断开锁存,位选573的Q7~Q0仍保持wei=num*10;P1=dis[wei%10]; //0~9的编码LE2=1; //锁存段码LE2=0; //断开锁存,段选573的Q7~Q0仍保持delay(100); //延时保持一下,延时过大会闪动,延时过小会有重影P1=0x00;LE2=1;LE2=0; //清除P1口数据,以免造重影}if(num==9.9)num=0; //扫描到显示9.9时,重新开始扫描num+=0.1; //num加0.1}/****************************************************************************** *****以下各个程序是实测通过的6位共阳数码管显示程序(c51) 2014.08.20.实测通过仿TX-3C 实验板晶振为 11.0592M******************************************************************************* *****//****************************************************************************** *****共阴led数码管码表:(20140820)/*code uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管段选码(0-f)*/******************************************************************************* *****//***********************************************************************************高位(7) ---- 低位(0)位 0 0 0 0 0 0 0 0 共阳数码管段选码(0-f) 笔画 h g f e d c b a (小数点不亮码):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 cd e f//共阳数码管段选码(0-f) (高位减8即可,在段码中加上'&0x7f'即:P0=table[ge]&0x7f;) (带小数点亮码)://P0=table[ge]&0x7f; 或 P0=table[ge]&0x80; 该位小数点也亮。
闪烁LED灯的程序
闪烁L E D灯软件描述:/*文件描述:使用的是P1.0口,可以用其他的端口,如果用其他的端口只需把程序里的P1.0改成相应的端口,程序实现的功能是单片机通过对端口高低电平的控制实现led灯的亮和灭。
赋值1就是高电平,0是低电平,具体赋什么值才亮要结合硬件部分,看led灯的接法。
这里是赋0就会亮。
*/#include<reg52.h>sbit LED=P1^0;// 用sbit 关键字定义 LED到P1.0端口,//LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); //函数声明 c语言有void main (void){while(1){ LED =1; //P1.0口置1 led灯灭Delay(50000); //延时50ms 更改数可以更改延时时间LED=0;// P1.0口置0 led灯亮Delay(50000); //延时50ms 更改数可以更改延时时间}}void Delay(unsigned int t)//延时程序 t的值代表几us{while(--t);}程序编译过程:下面就建立一个工程:点击project菜单下的new project按钮,出现下图然后键入文件名(自己起名字)比如流水灯。
点击保存按钮。
选择单片机型号一般选择ATMEL下面的AT89C52.点击确定就好了。
之后就需要在工程里面添加文件了(就是写程序代码的地方)。
点击file菜单下的new按钮就建立了新文件;键入程序点击保存按钮。
键入文件名但必须以 .c为后缀,因为你写的是c语言文件。
如果是汇编就是.asm了。
一般用c语言写,这里我就用test1.了,点击保存。
然后就是设置了。
右击target1,选择第一项的options for target “target1”。
选择output在create HEX前勾上对号。
点击确定。
之后就是添加文件了,就是把c语言文件添加到工程里面去。
依次逐个亮灯并且每次只能亮一个灯的跑马灯程序
依次逐个亮灯并且每次只能亮⼀个灯的跑马灯程序#include "REG52.H"#define const_time_level_01_08 200 //第1个⾄第8个LED跑马灯的速度延时时间void initial_myself();void initial_peripheral();void delay_short(unsigned int uiDelayShort);void delay_long(unsigned int uiDelayLong);void led_flicker_01_08(); //第1个⾄第8个LED跑马灯程序,逐个亮且每次只能亮⼀个void hc595_drive(unsigned char ucLedStatusTemp08_01);void led_updata(); //LED更新函数void T0_time(); //定时中断函数sbit hc595_sh_dr=P3^6; //上升沿时,数据寄存器数据移位sbit hc595_st_dr=P3^5; //上升沿时移位寄存器的数据进⼊数据寄存器,下降沿时数据不变。
当移位结束后,会产⽣⼀个正脉冲,⽤于更新显⽰数据。
sbit hc595_ds_dr=P3^4; //串⾏数据输⼊端,级联的话接上⼀级的Q7unsigned char ucLed_dr1=0; //代表8个灯的亮灭状态,0灭,1亮unsigned char ucLed_dr2=0;unsigned char ucLed_dr3=0;unsigned char ucLed_dr4=0;unsigned char ucLed_dr5=0;unsigned char ucLed_dr6=0;unsigned char ucLed_dr7=0;unsigned char ucLed_dr8=0;unsigned char ucLed_updata=0; //刷新变量。
史上最全的LED点灯程序,你都掌握了吗?
史上最全的LED点灯程序,你都掌握了吗?⼲货福利,第⼀时间送达!摘要:你点亮过多少板⼦的LED灯呢?有很多⼩伙伴留⾔说讲⼀下STM32、FPGA、Liunx他们之间有什么不同。
不同点很多,⼝说⽆凭,今天就来点亮⼀下STM32、FPGA和Liunx板⼦的LED灯,⼤家⼤致看⼀下点灯流程和点灯环境以及点灯流程,就能⼤概的了解⼀下三者的区别,可以有选择的去学习!⼀、使⽤STM32点亮LED灯STM32从字⾯上来理解ST是意法半导体,M是Microelectronics的缩写,32 表⽰32位,合起来理解,STM32就是指ST公司开发的32位微控制器。
在如今的32 位控制器当中,STM32可以说是最璀璨的新星,它受宠若娇,⼤受⼯程师和市场的青睐,⽆芯能出其右。
⾸先使⽤STM32电亮⼀个led灯,⼤家现在回过头来看是不是⾮常的简单。
STM32初始化流程1、使能指定GPIO的时钟。
2、初始化GPIO,⽐如输出功能、上拉、速度等等。
3、STM32有的IO可以作为其它外设引脚,也就是IO复⽤,如果要将IO作为其它外设引脚使⽤的话就需要设置 IO 的复⽤功能。
4、最后设置GPIO输出⾼电平或者低电平。
1、新建⼯程2、代码编写//LED IO初始化void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟//GPIOF9,F10初始化设置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO⼝GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOGPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10设置⾼,灯灭}3、编译代码4、配置下载器烧录代码⼆、使⽤FPGA点亮LED灯FPGA(Field Programmable Gate Array,简称 FPGA),译⽂:现场可编程门阵列,⼀种主要以数字电路为主的集成芯⽚,于1985年由Xilinx创始⼈之⼀ Ross Freeman发明,属于可编程逻辑器件PLD(Programmable Logic Device)的⼀种。
6小灯点动及连续照明控制程序
教师姓名周昊授课班级11机电(1)授课形式新授授课日期授课时数 6授课章节名称任务六小灯点动及连续照明控制程序学习目标能懂得输入继电器、输出继电器、辅助继电器的使用。
能懂得基本指令LD、OUT、E ND、LDI、AND、ANI、OR、OR I的使用。
能理解程序的流程图设计法。
教学重难点学会画出程序的流程图。
根据流程图编辑小灯点动及连续照明控制程序。
教学媒体选择作业布置1、按下按钮SB1、SB2或SB3,小灯L1都长亮,按下按钮SB4或SB5,小灯L1都熄灭。
2、按下按钮SB1,小灯L1长亮,按下按钮SB2,小灯L2长亮,按下按钮SB3,小灯L1、L2都熄灭3,按下SB1,灯L1常亮,按下SB2,L1灭,L2常亮,按下SB3,L2灭。
教学后记一、PLC软元件1、输入继电器PLC的输入端子是从外部开关接受信号的窗口,PLC 内部与输入端子连接的输入继电器X 是用光电隔离的电子继电器,它们的编号与接线端子编号一致(按八进制输入),线圈的吸合或释放只取决于PLC外部触点的状态。
内部有常开/常闭两种触点供编程时随时使用,且使用次数不限。
各基本单元都是八进制输入的地址,如输入为X000 ~ X007,X010 ~X017。
2、输出继电器PLC的输出端子是向外部负载输出信号的窗口。
输出继电器的线圈由程序控制,输出继电器的外部输出主触点接到PLC的输出端子上供外部负载使用,其余常开/常闭触点供内部程序使用。
输出继电器的电子常开/常闭触点使用次数不限。
输出电路的时间常数是固定的。
各基本单元都是八进制输出,如输出为Y000 ~Y007,Y010~Y017 。
3、辅助继电器PLC内有很多的辅助继电器,其线圈与输出继电器一样,由PLC内各软元件的触点驱动。
辅助继电器也称中间继电器,它没有向外的任何联系,只供内部编程使用。
它的电子常开/常闭触点使用次数不受限制。
但是,这些触点不能直接驱动外部负载,外部负载的驱动必须通过输出继电器来实现。
LED灯闪烁程序
的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,
即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0
端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5.程序框图
如图4.1.2所示
movr72482224849820djnzr7个机器周期?2248498djnzr6d1个机器周期?2204010002?因此上面的延时?程序时间为?10002ms?r610r7248时延时5msr620r7248延时10ms以此为基本?的计时单位?
1.闪烁灯程序
MOV R6,#20 2个机器周期2
}
void main(void)
{
while(1)
{
L1=0;
delay02s();
4
L1=1;
delay02s();
}
}
D1: MOV R7,#248 2个机器周期2 2+2×248=498 20×
DJNZ R7,$ 2个机器周期2×248 498
DJNZ R6,D1 2个机器周期10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,
延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,
10ms×R5=200ms,则R5=20,延时子程序如下:
DELAY: MOV R5,#20
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
(2).输出控制