好了,现在得开始更新了,已经落后一大截了,趁最近有时间得赶回来。
1、板子靓照..........................................................................6楼
2、简单的流水灯..................................................................7楼
3、数码管显示加定时器秒表...............................................9楼(2011/12/13更新)
4、lcd显示,定时器实现时钟............................................10楼(2011/12/15更新)
5、DS18B20的LED显示...................................................14楼(2011/12/18更新)
6、DS1302时钟,星期自动转换,闰年识别(视频).......15、16楼(2011/12/23更新)
7、定时器模拟PWM电机控制(温控风扇).......................17楼(2011/12/27更新)
8、步进电机资料....................................................................18楼
zhuludiqing MCU DIY进程帖(步进电机)

关键词: zhuludiqing 进程 步进 电机




#include<reg52.h>
#include<intrins.h>
void Delay(unsigned int);
void main()
{
int i=0;
unsigned char temp=0x01;
while(1)
{
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);
P1=temp;
Delay(300);
}
}
}
延迟程序我给写到reg52.h里了。像这种短而常用的,我一般喜欢写到reg52.h里。像显示键盘扫描等大一点的程序,一般写自己建的头文件里,方便调用改错。
这个是写在reg52.h里的延迟程序
void Delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

刚才有事,写的有点仓促,现在补一个
#include<reg52.h>
#include<intrins.h>
void main()
{
int i=0;
unsigned char temp;
while(1)
{
temp=0xfe;
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);//循环左移1位
P1=temp;
Delay(300); //适当延迟(晶振频率(24M、Delay(1)=0.5ms)
}
temp=0xfc;
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);
P1=temp;
Delay(300);
}
temp=0x08;
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);
P1=temp;
Delay(300);
}
}
}

#include"DISPLAY.h"
#include"INIT.h"
uchar flag;
char sec=0;
void main()
{
init();
while(1)
{
Display_show(sec);
TR0=1;
}
}
void time0() interrupt 1
{
TH0=(65536-20000)/256;//10us延迟,晶振24M
TL0=(65536-20000)%256;
flag++;
if(flag==100)//1s延迟
{
flag=0;
Display_show(sec);
flag++;
if(sec==60)
{
sec=0;
}
}
}
头文件在下面一
——回复可见内容——



#include <reg52.h>
#include"LCD.h"
#include"INIT.h"
sbit s2=P3^1;
sbit s3=P3^2;
uchar flag,sun;
char hour,minu,sec;
void keyscan();
void write_time(uchar add,uchar time)//写时间函数
{
uchar ge,shi;
write_com(0x80+0x40+add);
shi=time/10;
ge=time%10;
write_date(0x30+shi);
write_date(0x30+ge);
}
void main()
{
LCDinit();
init();
TR0=1;
while(1)
{
keyscan();
}
}
void time0() interrupt 1
{
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;
flag++;
if(flag==100)
{
flag=0;
sec++;
if(sec==60)
{
sec=0;
minu++;
if(minu==60)
{
minu=0;
hour++;
if(hour==24)
{
hour=0;
}
write_time(3,hour) ;
}
write_time(6,minu) ;
}
write_time(9,sec) ;
}
}
void keyscan()
{
if(s1==0)
{
Delay(5);
if(s1==0)
{
while(!s1);
TR0=0;
sun++;
if(sun==4)
{
sun=0;
TR0=1;
write_com(0x0c);
}
}
}
if(sun!=0)
{
if(sun==1)
{
write_com(0x80+0x40+10);
write_com(0x0f);
if(s2==0)
Delay(5);
if(s2==0)
{
while(!s2);
sec++;
if(sec==60)
sec=0;
write_time(9,sec);
}
if(s3==0)
Delay(5);
if(s3==0)
{
while(!s3);
sec--;
if(sec==-1)
sec=59;
write_time(9,sec);
}
}
if(sun==2)
{
write_com(0x80+0x40+7);
if(s2==0)
Delay(5);
if(s2==0)
{
while(!s2);
minu++;
if(minu==60)
minu=0;
write_time(6,minu);
}
if(s3==0)
Delay(5);
if(s3==0)
{
while(!s3);
minu--;
if(minu==-1)
minu=59;
write_time(6,minu);
}
}
if(sun==3)
{
write_com(0x80+0x40+4);
if(s2==0)
Delay(5);
if(s2==0)
{
while(!s2);
hour++;
if(hour==24)
hour=0;
write_time(3,hour);
}
if(s3==0)
Delay(5);
if(s3==0)
{
while(!s3);
hour--;
if(hour==-1)
hour=23;
write_time(3,hour);
}
}
}
}
头文件在下面
——回复可见内容——

只要日夜不停的干活,就能永葆青春?


