网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月14日漏签0天
51单片机吧 关注:73,968贴子:302,458
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 12回复贴,共1页
<<返回51单片机吧
>0< 加载中...

这个暑假才开始学的51,坚持ing

  • 取消只看楼主
  • 收藏

  • 回复
  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
然而开学就大三了,觉得再不自学些东西就晚了.对51有兴趣的可以一起交流,共同进步


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.昨天用独立键盘写了一个流水灯循环,按下键灯保持当前,放开时则正常循环


2025-08-14 17:51:25
广告
不感兴趣
开通SVIP免广告
  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2.动态扫描显示学号


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这两天看1602液晶,看完觉得比前面的简单点,只不过要了解指针,什么数组的指针,指针数组等。明天写程序加油。 by~z


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
奥还有写命令的时候,那些指令顺序要注意,一言不合他就不对了,其实我到现在也不清楚指令中清屏能干嘛


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看了温度传感器,觉得套路跟1602差不多,可还是很难


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么我对独立键盘情有独钟!今天依然用独立键盘使流水灯循环,不过循环中用了指针,难度稍稍大了点,按键循环,放开保持当前


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在复习之前的,这个是定时器加中断,主程序让流水灯循环,中断执行程序是让蜂鸣器响。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code a[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};
uint n,i;
sbit bee=P2^3;
void delay(uint z);
void main()
{ TMOD=0x10;
TH1=0x4b;
TL1=0xff;
TR1=1;
EA=1;
ET1=1;
while(1)
{ for(i=0;i<7;i++)
{ P1=a[i];
delay(100);
}
}
}
void time1() interrupt 3
{ TH1=0x4b;
TL1=0xff;
n++;
if(n==20)
{ n=0;
bee=0;
delay(150);
bee=1;
delay(150);
}
}


2025-08-14 17:45:25
广告
不感兴趣
开通SVIP免广告
  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如上,别忘了中断让n=0;我就说嘛,我的蜂鸣器怎么只响一次啊


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
总结一下: 1.让流水灯,数码管亮起来是最基本的,至于怎么玩,就看个人能力
2.中断+定时器的完美结合
3.键盘
后面程序还没练习,不过对温度传感器挺感兴趣,等我的18B20回来


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
秒表,可以重置和暂停,但是但是但是显示有点奇怪
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint aa,t,bai,shi,ge;
sbit w=P2^7;
sbit d=P2^6;
sbit q=P3^0;
sbit m=P3^1;
void delay(uint z);
void init();
void display(uint bai,uint shi,uint ge);
void main()
{ init();
while(1)
{
bai=t/100;
shi=t%100/10;
ge=t%10;
display(bai,shi,ge);
if(q==0)
{ delay(200);
if(q==0)
EA=0;
}
else EA=1;
if(m==0)
{ delay(200);
if(m==0) t=0;
}
}
}
void display(uint bai,uint shi,uint ge)
{ w=1;
P0=0xfb;
w=0;
P0=0xff;
d=1;
P0=a[ge];
d=0;
delay(5);
w=1;
P0=0xfd;
w=0;
P0=0xff;
d=1;
P0=a[shi];
d=0;
delay(5);
w=1;
P0=0xfe;
w=0;
P0=0xff;
d=1;
P0=a[bai];
d=0;
delay(5);
}
void init()
{ TMOD=0x01;
TH0=0x4c;
TL0=0xff;
TR0=1;
EA=1;
ET0=1;
}
void delay(uint z)
{ uint x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
void time0() interrupt 1
{ TH0=0x4c;
TL0=0xff;
aa++;
if(aa==20)
{ aa=0;
t++;
if(t==100) t=0;
}
}


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上面外部中断0的外部触发方式的区别:
触发方式为0,即低电平触发,流水灯和数码管都停止
触发方式为1,即跳变沿触发,数码管停止,流水灯依旧循环


  • 葉玥黑加白
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
简单的矩阵键盘,通过数码显示键盘序号
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit w=P2^7;
sbit d=P2^6;
void delay(uint z);
uchar back();
uchar code aa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e};
uchar a,t,num;
void main()
{ w=1;
P0=0xfd;
w=0;
while(1)
{ d=1;
P0=aa[back()];
d=0;
}
}
uchar back()
{ P3=0xfe;
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ delay(20);
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ t=P3;
switch(t)
{ case 0xee: num=1;break;
case 0xde: num=2;break;
case 0xbe: num=3;break;
case 0x7e: num=4;break;
}
while(t!=0xf0)
{ t=P3;
t=t&0xf0;
}
}
}
P3=0xfd;
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ delay(20);
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ t=P3;
switch(t)
{ case 0xed: num=5;break;
case 0xdd: num=6;break;
case 0xbd: num=7;break;
case 0x7d: num=8;break;
}
while(t!=0xf0)
{ t=P3;
t=t&0xf0;
}
}
}
P3=0xfb;
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ delay(20);
t=P3;
t=t&0xf0;
if(t!=0xf0)
{ t=P3;
switch(t)
{ case 0xeb: num=9;break;
case 0xdb: num=10;break;
case 0xbb: num=11;break;
case 0x7b: num=12;break;
}
while(t!=0xf0)
{ t=P3;
t=t&0xf0;
}
}
}
return(num);
}
/*void init()
{ TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
} */
void delay(uint z)
{ uint x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回51单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示