单片机led编程
摘要 给LED编个数组,控制IO口,或者直接控制IO口,不过要看显示的28要多大,会占用比较多的IO口,道理和矩阵键盘差不多。
㈡ 单片机C语言编程点亮LED灯
可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。 具体实现方法可以参考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循环点亮LED for(i=0; i<7; i++) { P1=_crol_(P1,1); // 左移一位,点亮下一位LED delay(55); } // 向右循环点亮LED for(i=0; i/ 右移一位,,点亮上一位LED delay(55); } }}// 延时函数,延时a毫秒void delay(uint a){ uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}
㈢ 用c语言单片机led灯显示数字“28”,如何编程
给LED编个数组,控制IO口,或者直接控制IO口,不过要看显示的28要多大,会占用比较多的IO口,道理和矩阵键盘差不多。
例程:
#include<reg52.h>//单片机头文件
voiddelay1ms(unsignedintms);//延时ms函数声明(可根据实际情况更改)
unsignedcharcodeled0[]={};//字码表,你自己把你要显示的字码放进去就可以了
voidmain()
{
unsignedcharw,i;
while(1)
{
//显示0
w=0x01;//行变量为第一行
for(i=0;i<8;i++)
{
P1=w;//行数据送P1口
P0=led0[i];
delayms(1);//列数据送P0口
w<<=1;//向下移动一行
}
}
}
voiddelay1ms(unsignedintms)
{
unsignedinti,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++)
}
㈣ 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!
C语言实现LED灯闪烁控制配套51单片机开发板。
#include //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void) //两个void意思分别为无需返回值,没有参数传递。
{
unsigned int i; //定义无符号整数,最大取值范围65535。
for(i=0;i<20000;i++) //做20000次空循环。
; //什么也不做,等待一个机器周期。
}
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)。
********************************************************/
void main(void)
{
while(1) //无限循环。
{
P0=0xfe; //P1=1111 1110B, P0.0输出低电平。
delay(); //延时一段时间。
P0=0xff; //P1=1111 1111B, P0.0输出高电平。
delay(); //延时一段时间。
}
}
单片机驱动LED灯的源程序:
#include<reg52.h> //头文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定义。
void delay_ms(uint);//mS级带参数延时函数。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(4)单片机led编程扩展阅读:
单片机应用分类:
通用型:
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型:
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。
另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型:
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。
通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
参考资料来源:网络-单片机
㈤ 单片机编程:LED动态显示
不知道你要怎能么动?我就给个数字显示也动,数码馆也流水显示的
#include
#include
//包含流水灯的头文件
#define
uint
unsigned
int
#define
uchar
unsigned
char
uint
temp,aa,num,numwe;
sbit
an=P3^3;
//段控制端定义
sbit
wei=P3^4;
//位控制端定义
uchar
code
tablewe[]={0x01,0x02,0x04,0x08,0x10,0x20};
//6个数码管位码
uchar
code
table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E,};
//数码管段码(共阳)
void
main()
{
//以下为初值:
aa=0;
num=0;
//段码要显示的个数,初始为0
numwe=0;
//位码要移动的位数,初始为0
temp=0x01;
//显示状态为单灯暗涌移动,若改成0xfe则单灯点亮移动
P2=temp;
//LED显示在第一位
an=1;
//选通段
P0=0xC0;
//送段码、从0开始显示
an=0;
//关闭段
wei=1;
//选通位
P0=0x01;
//送位码、从第一位数码管开始显示
wei=0;
//关闭位
TMOD=0x01;
//TO工作方式1,也直接写TMOD=0
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
//赋定时初值50MS
EA=1;
ET0=1;
//开定时器0中断
TR0=1;
//启动定时器0
//以下为循环:
while(1)
{
if(aa==100)
//变化延时
{
aa=0;
temp=_crol_(temp,1);
//单灯左移值
P2=temp;
//显示
num++;
//段加1
if(num==16)//0~F共16个,最多到显示”F"
num=0;
an=1;
//开段
P0=table[num];
//显示
an=0;
numwe++;
//位加1
if(numwe==6)//最多移6位
numwe=0;
wei=1;
//开位
P0=tablewe[numwe];
//显示
wei=0;
}
}
}
void
exter0()
interrupt
1
using
1
//using选通用工作寄存器R0-R7,默认为0组
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
aa++;
}
㈥ 51单片机汇编语言的led亮灯编程题求解,必采纳
LED1 BIT P3.7 ; 程序没有改动,为了配合仿真图只改了端口。
KEY1 BIT P3.2
LJMP MAIN
ORG 0030H
MOV R1,#1 ; 亮灯个数
MAIN: MOV P1,#0FFH
CHECK: JB KEY1,CHECK
MOV P1,#11111111B
MOV R2,#8
LOOP: INC R1 ; 每次亮灯个数r1+1
MOV A,P1
CLR C
RRC A
MOV P1,A ; 亮灯
LCALL DL ; 跳到延迟程序 每次亮间延迟一会
DJNZ R2,LOOP ; 到r2(8次)循环结束
LJMP CHECK
ORG 0100H
DL: MOV R7,#100 ; 延迟程序
L1: MOV R6,#100
L2: MOV R5,#60
L3: NOP
NOP
DJNZ R5,L3
DJNZ R6,L2
DJNZ R7,L1
RET
END
㈦ 单片机编程,从0到9的数字在LED上显示
#include<reg51.h>
#define uchar unsigned char
uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳级数码管码表0-9
uchar time,dat;
bit flag=1;
sbit la=; //段和位控制位需要你自己填写。
sbit wela=;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time>=20)
{
dat++;
dat%=10;
flag=1;
}
}
main()
{
TMOD0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(flag)
{
flag=0;
la=1;
P0=0xff;
la=0;
wela=1;
P0=0x01;
wela=0;
la=1;
P0=ledtab[dat];
la=0;
}
}
}
㈧ 单片机 8个LED灯随机闪烁怎么做
1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。
㈨ 单片机C语言LED控制的编程
int i,j;
unsigned char data[]={0xff,0x55,0x80,0x1};
for(i=0;i<4;i++)
{
if(i==0 && i==2)
{
for(j=0;j<5;j++)
{
P1=data[i];
data[i]=~data[i];
delay(500);
}
}
else
{
for(j=0;j<8;j++)
{
P1=data[i];
if(i==2)data[i]>>=1;
else data[i]<<=1;
delay(500);
}
P1=0xff;
delay(500);
}
}