导航:首页 > 操作系统 > 单片机多功能

单片机多功能

发布时间:2022-03-07 11:19:06

1. STC51单片机多功能数字时钟设计

有LCD1602版本的,可以自行修改,
懂事电子设计 Vgz

2. 单片机怎样通过按键在程序实现多功能

如果你就是只有一个按键,可以这样做:设置一个寄存器Key_Times_Buf,然后记录第几次按键,通过这个值,处理相应的程序.
if(Key_Pin==0)
{
Key_Times_Buf++;
if(Key_Times_Buf>=3)
{
Key_Times_Buf=0;
}
}

switch(Key_Times_Buf)
{
case 0:
//程序0
break;

case 1:
//程序1
break;

case 2:
//程序2
break;
}

3. 基于单片机的多功能计算器

不会吧,这么有趣,我前几天做的课程设计就是这个啊!
刚刚花了一个星期做完了这个计算器,硬件,程序,论文都已经完成了。
我里面没用到74LS244或74LS240、与非门等器件,就是用到了51单片机和数码管来实现的
因为51里面的IO口多,没必要用这些东西,如果要用也可以,哈哈。
如果你急要,我发你吧!

4. 谁能给推荐个 多功能(51单片机+xilinx fpga) 开发板

我有一个周立功的ACTEL的开发板。如果你要的话,送你一个51板,还可以教你。

5. C51单片机 一键多功能

计数喽,当没按键时,计数为0,当按下按键时,计数自加即为1,然后进行判断当满足等于1时即P1.1闪烁并确保其他灯灭,当再次按下时,计数再自加即为2,然后进行判断当满足等于2时即P1.2闪烁并确保其他灯灭,以此类推。当到了P1.3时,即再次循环即可。

6. 单片机多功能I/O如何确定使用哪个功能

看资料,看你如何用输入输出口。

7. 51单片机 C语言按键多功能程序怎么写

长按或短按你可以用定时器来设定时间。时间一到就直接跳出来执行就可以了。想连续按1或2或3次的话你就直接用个变量来当计数器,按一下计数一次就可以了。

8. 基于单片机的多功能时间控制器的汇编语言

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,num1;tt;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
num=0;
tt=0;
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
// EA=1;//开总中断
ET0=1;//开定时器0中断
ET1=1;
TR0=1;//启动定时器0
TR1=1;
wela=1;//11101010
P0=0xea;
wela=0;
la=1;
P0=0x3f;
la=0;
while(1)
{
if(num1==25)
{
num1=0;
P1=~P1;
}
if(tt==100)
{
tt=0;
num++;
if(num==16)
num=0;
la=1;
P0=table[num];
la=0;
}
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;
}
void time1() interrupt 3
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
num1++;
}
这个是中断的一个简单的例子!工作方式和计算初值你应该会吧!在keil中可以把C语言转换成汇编语言!

9. 单片机多功能电子时钟

/*
1、按键可以调整当时时间
2、按键可以调节定时时间
3、定时时间到继电器吸合

*8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒

S1 用于小时 加1操作
S2 用于分钟 加1操作
S2 用于分钟减1操作
*/

#include <reg52.h>

sbit KEY1=P3^2;
sbit KEY2=P3^3;
sbit KEY3=P3^4;

sbit LED=P1^2;
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管 0-9
unsigned char StrTab[8]; //定义缓冲区
unsigned char minute=30,hour=12,second; //定义并且初始化值 12:30:00

void delay(unsigned int cnt)//延时函数
{
while(--cnt);
}

void Displaypro(void)
{

StrTab[0]=tab[hour/10]; //显示正常时间
StrTab[1]=tab[hour%10];
StrTab[2]=0x40;
StrTab[3]=tab[minute/10];
StrTab[4]=tab[minute%10];
StrTab[5]=0x40;
StrTab[6]=tab[second/10];
StrTab[7]=tab[second%10];

}

main()//主函数
{

TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时
TH0=0xd8;
TL0=0xf0;
ET0=1;
TR0=1;

TMOD |=0x10; //定时器1用于动态扫描
TH1=0xF8;
TL1=0xf0;
ET1=1;
TR1=1;
EA =1;

Displaypro();

while(1)//主循环
{

/////////////////////////////////////////////////////////////////
if(!KEY1) //按键1去抖以及动作
{
delay(10000);
if(!KEY1)
{
hour++;if(hour==24)hour=0; //正常时间 小时 加1
Displaypro();
}
}
////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
if(!KEY2) //按键去抖以及动作
{
delay(10000);
if(!KEY2)
{
minute++;if(minute==59)minute=0;//分加1
Displaypro();
}
}
/////////////////////////////////////////////////////////////////
if(!KEY3) //按键去抖以及动作
{
delay(10000);
if(!KEY3)
{
minute--;if(minute==0)minute=59; //分减1
Displaypro();
}
}
}
}
////////////////////////////////////////////////////////////////
/********************************/
/* 定时中断1 */
/********************************/
void time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描
{
static unsigned char num;
TH1=0xF8;//重入初值
TL1=0xf0;

switch (num){
case 0:P2=0;P0=StrTab[num];break; //分别调用缓冲区的值进行扫描
case 1:P2=1;P0=StrTab[num];break;
case 2:P2=2;P0=StrTab[num];break;
case 3:P2=3;P0=StrTab[num];break;
case 4:P2=4;P0=StrTab[num];break;
case 5:P2=5;P0=StrTab[num];break;
case 6:P2=6;P0=StrTab[num];break;
case 7:P2=7;P0=StrTab[num];break;
default:break;
}
num++; //扫描8次,使用8个数码管
if(num==8)
num=0;
}
//////////////////////////////////////////////////////////////////
/********************************/
/* 定时中断0 */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count;//定义内部静态变量

TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
switch (count)
{
case 0:
case 20:
case 40:
case 60:
case 80:Displaypro(); //隔一定时间调用显示处理
break;
case 50:LED=!LED; //半秒 LED闪烁
break;
default:break;
}

if (count==100)
{
count=0;
second++;//秒加1
if(second==60)
{
second=0;
minute++; //分加1
if(minute==60)
{
minute=0;
hour++; //时加1
if(hour==24)
hour=0;
}

}

}

}

阅读全文

与单片机多功能相关的资料

热点内容
改解压格式 浏览:268
仿社交app源码 浏览:289
解压粘液模拟器英文版 浏览:671
看高铁票多少钱用什么app看 浏览:884
java接口返回值 浏览:89
奇迹文学APP为什么不能用了 浏览:1000
怎么用电脑玩手机版的我的世界服务器 浏览:230
linux设备权限 浏览:950
pdf转曲软件 浏览:149
云服务器怎么做nas 浏览:457
有什么可以提示快递的app 浏览:311
什么app的主题都是免费的 浏览:1002
se01加密路线和普通路线放 浏览:908
怎么用安卓系统手机测量长度 浏览:46
回调突破主图源码 浏览:238
mc生存都市服务器地址大全 浏览:92
unix网络编程环境搭建 浏览:963
pythonsocket高并发 浏览:257
python开发windowsgui 浏览:619
25减9的借位算法 浏览:269