dvbbs
收藏本页
联系我们
论坛帮助
dvbbs

睿志音响技术论坛睿志音响论坛睿志音响论坛 → PIC单片机在音响中应用学习(6-20三楼讲解例程2)


  共有3126人关注过本帖树形打印

主题:PIC单片机在音响中应用学习(6-20三楼讲解例程2)

帅哥,在线噢!
zheng254434
  46楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 贴子:78 积分:709 威望:0 精华:0 注册:2/6/2015 11:36:12 PM
  发贴心情 Post By:5/29/2017 10:14:17 PM

我的软件不正常,双击例程文件,出来这个。
图片点击可在新窗口打开查看此主题相关图片如下:例程1.png
图片点击可在新窗口打开查看
选择软件OPEN,出来这个。
图片点击可在新窗口打开查看此主题相关图片如下:例程2.png
图片点击可在新窗口打开查看
就是不见编译文件。

支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
hnwangjh
  47楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 贴子:466 积分:3288 威望:0 精华:1 注册:12/19/2007 8:04:49 PM
  发贴心情 Post By:5/29/2017 10:40:06 PM

点软件FILE,下拉菜单中选择0PEN,打开教程1当中的main.c文件。教程文件应不含中文,否则系统会提示目标路径错误。直接点击教程当中的文件系统提示共享冲突。

支持(0中立(0反对(0回到顶部
帅哥,在线噢!
zheng254434
  48楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 贴子:78 积分:709 威望:0 精华:0 注册:2/6/2015 11:36:12 PM
  发贴心情 Post By:5/29/2017 10:58:55 PM

谢谢hnwangjh兄,把教程文件放到根目录,正常了。还是脑不够用。

支持(0中立(0反对(0回到顶部
帅哥,在线噢!
zheng254434
  49楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 贴子:78 积分:709 威望:0 精华:0 注册:2/6/2015 11:36:12 PM
  发贴心情 Post By:5/30/2017 1:21:28 AM

完成作业。

#include <pic.h>    

#define LED1 RA0               
#define LED2 RA1
#define LED3 RA2


#define uchar unsigned char     
#define uint unsigned int


void delay(uint);              
void initial();


void main()
{

 initial();               

 LED1= 0;                 
 LED2= 0;
 LED3= 0;

 while(1)                 
 { 
  LED1=1;             
  delay(30000);
  LED1= 0;
  delay(30000);
  LED2=1;
  delay(30000);
  LED2= 0;
  delay(30000);
  LED3=1;
  delay(30000);  
   LED3= 0;
  delay(30000);
 } 
}


void delay(uint j)
{
    uint i;
    for(i=j;i>0;i--);
}


void initial()
{
 CMCON =0b00000111; 
 ADCON1=0b00000110;
 ADCON0=0b00000000;
 TRISA=0b00000000;
 TRISB=0b00000000;
 TRISC=0b00000000;
 
 PORTA=0b00000000;
 PORTB=0b00000000;
 PORTC=0b01000000;

    INTCON=0b10000000; 
    T1CON=0X00;
}


支持(0中立(0反对(0回到顶部
帅哥,在线噢!
rjx
  50楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 贴子:4538 积分:42735 威望:0 精华:43 注册:4/27/2005 10:50:08 AM
  发贴心情 Post By:5/30/2017 6:56:25 AM

再简单归纳一下操作的步骤:

一、准备

1、下载安装MPLAB_IDE和HCPIC-pro软件。

2、在D盘或E盘(不要在C盘)建一个文件夹,如TEST1,将何生提供的例程(注解少的那个)中的所有文件考进自己建的文件夹TEST1.(此步骤是防止中文路径带来的意外)。

3、正确连接:电脑--PICKit3---学习板。

4、在自建的文件夹(TEST1)内双击有图案的FUN文件中的一个,打开后,其中一个窗口应显示何生提供的例程代码(彩色字体)。

5、按何生图示中的提示,设置好为目标板提供电源(那一行英文字前的方框要打勾!),此时学习板的数码管应点亮,显示HL 100(或HH 100),试按学习板上的三个按钮,数码管的显示会做相应变化。

注意此时数码管的显示内容是何生事先考入的程序,与窗口里显示的学习程序无关。

至此,说明你的软件和硬件均无问题。

 
图片点击可在新窗口打开查看此主题相关图片如下:2017-05-30_072401.png
图片点击可在新窗口打开查看


 

二、点亮LED

1、在学习板上焊好LED和电阻,注意LED的正负极不能焊反。

2、按何生的图示,点击“编译“按钮,会提示编译是否通过。

3、下载程序到学习板(实际是下载编译后的.hex文件).

4、点击“运行”按钮,此时,LED会轮流点亮(俗称流水灯)。此时数码管的显示无规律,因原来的程序已被你新下载的程序冲掉了。

OK,你成功了!


支持(0中立(0反对(0回到顶部
帅哥,在线噢!
zheng254434
  51楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 贴子:78 积分:709 威望:0 精华:0 注册:2/6/2015 11:36:12 PM
  发贴心情 Post By:5/30/2017 10:56:09 AM

我认为大括号应该独行,并且占有不同位置,以区分程序的层次。《》 我上面的作业错了,间隔时间变成了600MS。

支持(0中立(0反对(0回到顶部
帅哥,在线噢!
rjx
  52楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 贴子:4538 积分:42735 威望:0 精华:43 注册:4/27/2005 10:50:08 AM
  发贴心情 Post By:5/30/2017 11:52:07 AM

C语言的写法要求比较宽松,按正规的要求,大括号是要独立占一行,每条语句也独占一行的,而且列要错位,这样看起来也比较舒服,比较清晰。

但即使不独占一行,编译时也不会出错。

像下面的写法就比较正规:

 

void delay(uint j)
       {
           uint i;
           for(i=j;i>0;i--);
       }


支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
adf
  53楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 贴子:236 积分:2593 威望:0 精华:0 注册:1/19/2008 2:04:08 AM
  发贴心情 Post By:5/30/2017 11:42:25 PM

LED1-3,循环正常,数码管没显示,
图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看

支持(0中立(0反对(0回到顶部
帅哥,在线噢!
rjx
  54楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 贴子:4538 积分:42735 威望:0 精华:43 注册:4/27/2005 10:50:08 AM
  发贴心情 Post By:5/31/2017 8:04:51 AM

敬告:

为避免这个条目的帖子过多过滥,大家翻阅查询不方便,定期会删除一些无实际意义的的帖子,特此告知。


支持(0中立(0反对(0回到顶部
帅哥,在线噢!
audio-gd
  55楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 贴子:25026 积分:133178 威望:0 精华:49 注册:3/26/2005 8:25:45 PM
  发贴心情 Post By:5/31/2017 6:00:23 PM

各位加快一点进度,等大家贴上作业后,第二个例程就是用开关控制LED,应用到音响中就是开关控制继电器。

 



http://www.audio-gd.com

Blog:   http://kingwa.blog.163.com/

支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
adf
  56楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 贴子:236 积分:2593 威望:0 精华:0 注册:1/19/2008 2:04:08 AM
  发贴心情 Post By:5/31/2017 10:51:48 PM

 

我的作业

 

     

 

#include <pic.h>    

#define LED1 RA0                
#define LED2 RA1
#define LED3 RA2


#define uchar unsigned char      
#define uint unsigned int


void delay(uint);              
void initial();


void main()
{

 initial();               
 LED1= 0;                 
 LED2= 0;
    LED3= 0;

 while(1)                 
 { 
  LED1=1;              
  delay(30000);
        LED1= 0;       
  LED2=1;             
  delay(30000); 
        LED2= 0;      
  LED3=1;              
  delay(30000);        
  LED3= 0;
        
 } 
}


void delay(uint j)
{
    uint i;
    for(i=j;i>0;i--);
}


void initial()
{
 CMCON =0b00000111; 
 ADCON1=0b00000110;
 ADCON0=0b00000000;
 TRISA=0b00000000;
 TRISB=0b00000000;
 TRISC=0b00000000;
 
 PORTA=0b00000000;
 PORTB=0b00000000;
 PORTC=0b01000000;

    INTCON=0b10000000; 
    T1CON=0X00;
}


支持(0中立(0反对(0回到顶部
帅哥,在线噢!
rjx
  57楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 贴子:4538 积分:42735 威望:0 精华:43 注册:4/27/2005 10:50:08 AM
  发贴心情 Post By:6/1/2017 5:35:31 AM

完成作业的只需报告一下或发个照片即可,不需发程序了。

支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
wyyu
  58楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 贴子:151 积分:1549 威望:0 精华:0 注册:11/14/2008 9:41:39 PM
  发贴心情 Post By:6/1/2017 9:36:13 PM

作业完成
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20170601213211.jpg
图片点击可在新窗口打开查看

支持(0中立(0反对(0回到顶部
帅哥,在线噢!
rjx
  59楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 贴子:4538 积分:42735 威望:0 精华:43 注册:4/27/2005 10:50:08 AM
  发贴心情 Post By:6/2/2017 9:29:33 AM

练习一的新玩法:

何生给的程序严格讲还不是真正的流水灯(又称跑马灯),因为它是三个灯先后亮起后,再全部亮。你只要改动几行代码就可以变成真正的流水灯了!

按下面的代码修改,编译、下载后,你再看看又什么不同啊!只要改动主函数里的几行就行了,其他不要动。注意不能错一个字母,也不能错一个分号。

不要担心,只修改代码,重新编译下载,是不会搞坏东西的。

void main()
     {

     initial();                //进入到主程序后,首先要初始化单片机

 

     LED1= 0;              //以下三行是将LED设计到开机就是灭的状态,至于为何会灭,大家先想一下。再发表出来看对不对?
         LED2= 0;
         LED3= 0;

 

   while(1)                    //这是一个循环语句,当while后面括号中的值是1时,单片机运行到这内部时就不停循环,

                                // 永远不能跳出来运行其他代码,除非特号内的值是0.
       { 
             LED1=1;                //点亮LED1          
             delay(50000);         //等大约0.5秒


               LED1=0;                //灭LED1
               LED2=1;                //点亮LED2
               delay(50000);        //等大约0.5秒


               LED1=0;                //灭LED1
               LED2=0;                //灭LED2
               LED31;                  //点亮LED3
               delay(50000);        //等大约0.5秒


 

           //LED1= 0;              //关闭全部LED
               //LED2= 0;
                 LED3= 0;
                //delay(50000);         //等大约0.5秒
          } 
}

 

你能再把它改成三个LED全亮0.5S,再全灭O.5s,反复循环吗?

学单片机要多动脑,多动手,你的进步就会很快的。

你自己再设想其他的玩法(如反过来循环),或想叫那个亮它就亮,想叫那个灭它就灭。改改代码,编译下载,看看实际效果和你设想的一致吗?这样是否更能提高兴趣啊?!

可惜发不了视频,要不我发个是视频你看看效果。

 


此主题相关图片如下:dsc00508.jpg
按此在新窗口浏览图片

此主题相关图片如下:dsc00512.jpg
按此在新窗口浏览图片

支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
shiwei
  60楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蝙蝠侠 贴子:464 积分:3332 威望:0 精华:1 注册:12/11/2010 4:39:39 PM
  发贴心情 Post By:6/2/2017 12:47:19 PM

是不是这样,请指教!

 

void main()

{

    initial(); //进入到主程序后,首先要初始化单片机

 

    LED1= 0; //以下三行是将LED设计到开机就是灭的状态,至于为何会灭,大家先想一下。再发表出来看对不对?

    LED2= 0;

    LED3= 0;

 

while(1)          //这是一个循环语句,当while后面括号中的值是1时,单片机运行到这内部时就不停循环,

                      // 永远不能跳出来运行其他代码,除非特号内的值是0.

  {

     LED1=1;

     LED2=1;

     LED3=1;

     delay(50000); //等大约0.5秒

 

     LED1=0;

     LED2=0;

     LED3=0;

     delay(50000); //等大约0.5秒

  }

}



做睿志的粉丝,DIY睿志的器材
支持(0中立(0反对(0回到顶部
总数 72 上一页 1 2 3 4 5 下一页