- UID
- 322989
- 阅读权限
- 70
- 推广
-
- 幽默
-
- 注册时间
- 2012-10-8
- 最后登录
- 1970-1-1
|
注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
自学51单片机有1个月左右的时间了,通过这段时间的学习,对单片机的基本操作和编程方法算是有一个基本的认知,本人学习51不为别的,只有两个字,“好玩”!学会了用它做自己想玩的东西,有的人会说,真可笑,什么年代了,想玩的话,只要有钱什么东西买不到,错!买到的东西再好,那不是自己做出来的,只有通过自己学到的知识做自己想要的东西,那才是最好玩的,通过自己的学习,一步步的实践,经历无数次的失败、查资料、反复折腾,到最后的成功,这种喜悦的心情我想只有经历过的人才能体会,说了这些其实还是希望通过此文激励一下大家,科技飞速发展的今天,好玩的东西有很多,唯有学习最快乐!
好了,说了这么多,说点正经事吧,刚才说到哪了,哦,对了,单片机是吧,好多人会问,单片机究竟能做啥?我来告诉大家,单片机可以这样来理解,只要是与控制电路有关的电路,都可以用单片机来完成,小到儿童玩具、按摩器,大到工厂设备、机器人、导弹和卫星!只是应用场合的不同,单片机的性能也不一样,当然要想达到设计卫星的级别也不是一件容易的是,本人的目的很简单,学会它,用来做自己想要的东西玩,下面是本人用51系列单片机STC8952为核心制作的电水壶控制板,工作过程如下:“接通电源不工作,按下启动键首先做数码管上显示ON,几秒后进入加热状态并显示当前水温,当中途按下停止按键时,加热停止并做数码管显示静态字母OFF,当水温达到100度时,停止加热,并保持数字100不变,同时喇叭里发出;水开了,快来呀!一会儿水烧干了!的语音提醒(我录的 ),虽然看起来不复杂,但也用到了不少关于单片机理论方面的知识,比如按键检测、数码管动态扫描原理、以及各种语句语法的使用等,说实话,改这个电水壶还真没什么意义,但是换个角度想,通过改电水壶我还真学到了好多新的东西,因为做这个板子并不是一帆风顺的,比如为了让刚刚按下启动键的时候显示个“ON”,停留一会儿自动消失,再进入温度检测大循环;按下停止键时显示“OFF”,当温度达到100时,让单片机相应的IO口输出低电平,停止加热,并让数码管锁定当前温度不再变化等等,这些问题对我一个初学而言真的要费一番周折,哪个地方不懂了,就针对哪个地方上百度,看视频,不断的学习,终于做出了我想要的东西。一会儿我把代码发给大家帮我指点指点,比如哪个地方可以有更简便的方法,哪个地方的语法不正确等等,本人感激不尽,本人这个程序里没有解决的BUG也有很多,比如工作中按下停止键显示OFF,然后再按启动键是无效的,真诚的希望师傅们的批评指教!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2;
uint temp;
uchar flag1;
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit jiare=P1^4;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table1[]=
{0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef};
sbit K1=P3^4;
sbit K2=P3^5;
sbit OFF=P1^2;
uchar a;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay(uint count)
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
void dsreset(void)
{
uint i;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}
bit tmpreadbit(void)
{
uint i;
bit dat;
DS=0;i++;
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return (dat);
}
uchar tmpread(void)
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tmpwritebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)//write 1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0;//write 0
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
}
void tmpchange(void)
{
dsreset();
delay(1);
tmpwritebyte(0xcc);
tmpwritebyte(0x44);
}
uint tmp()
{
float tt;
uchar a,b;
dsreset();
delay(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<<=8;
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
return temp;
}
void display(uint temp)//显示程序
{
uchar A1,A2,A2t,A3;
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
A3=A2t%10;
dula=0;
P0=table[A1];//显示百位
dula=1;
dula=0;
wela=0;
P0=0x7e;
wela=1;
wela=0;
delay(3);
dula=0;
P0=table1[A2];//显示十位
dula=1;
dula=0;
wela=0;
P0=0x7d;
wela=1;
wela=0;
delay(3);
P0=table[A3];//显示个位
dula=1;
dula=0;
P0=0x7b;
wela=1;
wela=0;
delay(0.5);
}
void main()
{
uchar at;
uint x,y;
jiare=0;
if(K1==0)
{x=300; jiare=1;
while(x--)
{
for(y=100;y;y--);
dula=1;
P0=0x3f;
dula=0;
wela=1;
P0=0x7e;
wela=0;
delayms(1);
dula=1;
P0=0x37;
dula=0;
wela=1;
P0=0x7d;
wela=0;
delayms(1);
dula=1;
P0=0x0;
dula=0;
wela=1;
P0=0x7b;
wela=0;
delayms(1);
}
at=1;}
else{at=0;}
while(at)
{
do
{
tmpchange();
for(a=10;a>0;a--)
{
display(tmp());
}
if(temp>=910)
{ OFF=1;jiare=0;
while(1)
{
dula=1;
P0=0x6;
dula=0;
wela=1;
P0=0x7e;
wela=0;
delayms(1);
dula=1;
P0=0x3f;
dula=0;
wela=1;
P0=0x7d;
wela=0;
delayms(1);
dula=1;
P0=0x3f;
dula=0;
wela=1;
P0=0x7b;
wela=0;
delayms(1);
if(K2==0)
{break;}
}
}
else
{
OFF=0;
}
if(K2==0)
{OFF=0;jiare=0;
while(1)
{
dula=1;
P0=0x3f;
dula=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delayms(1);
dula=1;
P0=0x71;
dula=0;
P0=0xff;
wela=1;
P0=0x7d;
wela=0;
delayms(1);
dula=1;
P0=0x71;
dula=0;
P0=0xff;
wela=1;
P0=0x7b;
wela=0;
delayms(1);}
}
}
while(1);
}
if(K1==1)
{OFF=0;}
}
|
评分
-
参与人数 10 | 威望 +41 |
金币 +1 |
评优 +2 |
幽默 +13 |
收起
理由
|
国强电修部
| + 6 |
+ 1 |
|
|
谢谢分享,家电维修论坛有您更精彩! |
RANDY
| + 2 |
|
|
|
谢谢分享,家电维修论坛有您更精彩! |
火箭升空
| + 3 |
|
|
+ 3 |
再改良一下,可以申请专利! |
风中奇缘
| + 3 |
|
|
|
很给力! |
谢工
| |
|
|
+ 5 |
很给力! |
查看全部评分
|