3

帖子

0

TA的资源

一粒金砂(初级)

2481
 
想看看,不知能否看到
此帖出自信息发布论坛
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

2482
 
看不到 有价值的呀
此帖出自信息发布论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

2483
 

hao

此帖出自信息发布论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

2484
 
kkananana
此帖出自信息发布论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

2485
 
这个回帖有点麻烦,还得到最下边去
此帖出自信息发布论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

2486
 
看看与自己需要的没有呢
此帖出自信息发布论坛
 
 
 

回复

4

帖子

1

TA的资源

一粒金砂(初级)

2487
 
看看吧,不知道怎么样
此帖出自信息发布论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

2488
 

回复 楼主castle36318700 的帖子

11111111
此帖出自信息发布论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

2489
 
有点麻烦,但还是要看一下,应该是好东西
此帖出自信息发布论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

2490
 
看看有没有合适的
此帖出自信息发布论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

2491
 
Dbbvh
此帖出自信息发布论坛
 
 
 

回复

133

帖子

52

TA的资源

纯净的硅(初级)

2492
 
那个倒车雷达我挺喜欢
此帖出自信息发布论坛
个人签名51单片机交流群  20766859.欢迎大家的加入~
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

2493
 

回复 楼主castle36318700 的帖子

谢谢
此帖出自信息发布论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

2494
 
非常好
此帖出自信息发布论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

2495
 
过来看看,挺好的。。
此帖出自信息发布论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

2496
 
这个得看看啦
此帖出自信息发布论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

2497
 

回复 楼主castle36318700 的帖子

//数码管位 高位-----低位
//四个按键控制步进电机:正转,反转,加1,减1,停止
//上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式
//电机转速一共10档,通过按键调节转速
//电机正转时最高位数码管显示0,反转时显示1  
#include
#define uchar unsigned char
#define uint unsigned int
#define LED_data P0   //数码管数据口
#define haha P2
sbit key_zz = P1^0;
sbit key_fz = P1^1;
sbit key_add = P3^0;
sbit key_sub = P3^1;
sbit key_ove=p1^7;//按键定义,s1正转,s2反转,s3加1,s4减1 ,停止
sbit wei3 = P2^3;
sbit wei2 = P2^2;
sbit wei1 = P2^1;
sbit wei0 = P2^0;//数码管位选定义
sbit a = P2^7;
sbit a1 = P2^6;
sbit b = P2^5;
sbit b1 = P2^4;//脉冲信号输入端定义

uchar code seg_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管驱动信号0---9,不显示
uchar code T_count[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc},  //9.7 ----1ms
                                                            {0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};
uchar code Motor_driver[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};         
uchar num1 = 0;//控制取励磁信号变量                                                  
uchar num2 = 8;

uchar k=1;//加减档位控制,1为最小档
bit Run_dir_flag = 0;//初始正转,正反转标志
uchar Display_num[4]={0,10,0,1};//数码管显示缓存,正转,不显示,显示0,显示1档位,高----低  
//================================定时器0/1初始化函数================================
void T0_T1_init()
{
        TMOD = 0x11;//定时器0/1均工作于方式1,16位计时方式
        TH0 = (65536 - 4000)/256;
        TL0 = (65536 - 4000)%256;//定时器0,定时4ms用于数码管扫描显示
           TH1 = T_count[k-1][0];
        TL1 = T_count[k-1][1];//定时器1,定时10ms用于步进电机转速控制
        TR0 = 1;
        TR1 = 1;
        ET0 = 1;
        ET1= 1;//开定时器中断
        EA = 1;//开总中断
}
//================================ms级延时函数=======================================
void delay1m(uint x)
{
    uint i,j;
    for(i=0;i              for(j=0;j<120;j++);   //数120 次,约1 ms
}
//================================主函数=============================================
void main()
{
        T0_T1_init();
        Display_num[1] = 10;//不显示
        while(1)
        {         if(key_ove==0)
            {break;         }
                if(key_zz == 0)
                {
                        delay1m(3);
                        if(key_zz == 0)
                        {
                                Run_dir_flag = 0;//正转
                                Display_num[0] = 0;//最高位显示0
                                haha = 0x00;//停止
                                 
                        }
                        while(!key_zz);
                }  if(key_ove==0)
            {break;         }       
                if(key_fz == 0 )
                {
               
                        delay1m(3);
                        if(key_fz == 0)
                        {
                       
                                Run_dir_flag = 1;//反转
                                Display_num[0] = 1;//最高位显示1
                                haha = 0x00;//停止
                        }
                        while(!key_fz);       
                }  if(key_ove==0)
            {break;         }
                if(key_add == 0)           //速度加1档
                {
                        delay1m(3);
                        if(key_add == 0)
                        {
                                k++;
                                if(k > 10 )
                                {
                                        k = 1;
                                }
                                Display_num[2]= k/10;
                                Display_num[3]= k%10;
                        }
                        while(!key_add);
                }  if(key_ove==0)
            {break;         }
                if(key_sub == 0)         //速度减1档
                {
                        delay1m(3);
                        if(key_sub == 0)
                        {
                                k--;
                                if(k == 0)
                                {
                                        k = 10;
                                }
                                Display_num[2]= k/10;
                                Display_num[3]= k%10;
                        }
                        while(!key_sub);
                }
        }

}
//==================================定时器0中断函数,用于数码管扫描显示====================================
void time0_interrupt()interrupt 1
{
        static num = 0;
        TH0 = (65536 - 4000)/256;
        TL0 = (65536 - 4000)%256;//定时器0,定时4ms用于数码管扫描显示
        switch(num)
        {
                case 0:wei3=1;wei2=1;wei1=1;wei0=0;LED_data = seg_code[Display_num[3]];break;
            case 1:wei3=1;wei2=1;wei1=0;wei0=1;LED_data = seg_code[Display_num[2]];break;
            case 2:wei3=1;wei2=0;wei1=1;wei0=1;LED_data = seg_code[Display_num[1]];break;
                case 3:wei3=0;wei2=1;wei1=1;wei0=1;LED_data = seg_code[Display_num[0]];break;
        }
        num++;
        if(num == 4) num = 0;
}
//==================================定时器1中断函数,用于脉冲频率控制=====================================
void time1_interrupt()interrupt 3
{       
        static num1 = 0;
        static num2 = 0;
        TH1 = T_count[k-1][0];
        TL1 = T_count[k-1][1];//定时器1,定时1 用于步进电机转速控制
        if(Run_dir_flag == 0)//正转
        {
                switch(num1)
                {
                        case 0:a = 1;a1 = 0;b = 0;b1 = 0;break;
                        case 1:a = 1;a1 = 1;b = 0;b1 = 0;break;
                        case 2:a = 0;a1 = 1;b = 0;b1 = 0;break;
                        case 3:a = 0;a1 = 1;b = 1;b1 = 0;break;
                        case 4:a = 0;a1 = 0;b = 1;b1 = 0;break;
                        case 5:a = 0;a1 = 0;b = 1;b1 = 1;break;
                        case 6:a = 0;a1 = 0;b = 0;b1 = 1;break;
                        case 7:a = 1;a1 = 0;b = 0;b1 = 1;break;
                }
                num1++;
                if(num1 == 8)num1 = 0;
        }
        else                  //反转
        {
                switch(num2)
                {
                        case 0:a = 1;a1 = 0;b = 0;b1 = 1;break;
                        case 1:a = 0;a1 = 0;b = 0;b1 = 1;break;
                        case 2:a = 0;a1 = 0;b = 1;b1 = 1;break;
                        case 3:a = 0;a1 = 0;b = 1;b1 = 0;break;
                        case 4:a = 0;a1 = 1;b = 1;b1 = 0;break;
                        case 5:a = 0;a1 = 1;b = 0;b1 = 0;break;
                        case 6:a = 1;a1 = 1;b = 0;b1 = 0;break;
                        case 7:a = 1;a1 = 0;b = 0;b1 = 0;break;
                }
                num2++;
                if(num2 == 8)num2 = 0;        
        }
}
此帖出自信息发布论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

2498
 
看看。。。
此帖出自信息发布论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

2499
 

看看

看看有没有什么优秀的。
此帖出自信息发布论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

2500
 
此帖出自信息发布论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 1

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表