打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
应广单片机(一)
 本帖最后由 aqa 于 2019-8-21 18:40 编辑

新入职了一家公司,负责消费电子,接触到了应广单片机,现在谈谈应广单片机相关的问题,后续还会更新,本人也只是初学者,发现网上应广单片机相关的资料太少了,一是把自己所知道的发出来,帮助像我这样的初学者,方便学习,二是记录自己的学习历程。




先从一些基础的开始吧,有关于IDE的使用我就不多叙述了,资料连接里面有一个文件介绍了怎么使用,需要的也可以下载,目前我所使用的的仅限于应广的单核单片机,所以这边的都是单核的相关资料,应该单片机的开发语言是MINI-C语言,属于汇编和标准C的合体吧,哈哈哈,具体了解可以去网上查相关资料,资料链接里面也有一个开发语言的介绍,下面是一个简单的例程,驱动车载MP3数码管,展示部分程序,需要的可以点击链接下载
  1. /****************************************************************

  2. 函数名称:void  Set_User_T16(void)

  3. 函数功能:定时器计数定时256us

  4. 函数参数:无

  5. 函数返回值:无

  6. 函数说明:

  7. ****************************************************************/

  8. #define USER_TIMER_CONFIG()     $ T16M IHRC, /4, BIT10

  9. #define ENABLE_TIMER()               SET1 INTEN.2 //$ INTEN T16 //开定时器中断

  10. #define DISENABLE_TIMER()          SET0 INTEN.2 //关定时器中断

  11. #define INIT_TIMER_VALUE(n)       STT16 n//装载定时器计数值

  12. #define CONST_TIMER_VALUE       0

  13. #define EA_INT()                           ENGINT//开总中断

  14. #define DIS_INT()                          DISGINT//关总中断

  15. /**************************************************************/

  16. void  Set_User_T16(void)/*定时256us进一次中断                   2^10/(16/) = 256us*/

  17. {

  18.         //SET0 T16flag;//reset the flag

  19.         USER_TIMER_CONFIG();

  20.         T16val = CONST_TIMER_VALUE;//256us

  21.         INIT_TIMER_VALUE(T16val);

  22.         INTRQ = 0;//清除INTRQ

  23.         EA_INT();

  24.         ENABLE_TIMER();

  25. }

  26. /************************************************

  27. 中断服务函数

  28. ************************************************/

  29. void        Interrupt (void)

  30. {

  31.         pushaf;

  32.         if (Intrq.T16)/*256us进入一次中断*/

  33.         {        //        T16 Trig

  34.                 //        User can add code

  35.                 Intrq.T16        =        0;

  36.                 T16val = CONST_TIMER_VALUE;

  37.                 INIT_TIMER_VALUE(T16val);

  38.                 LED_Scan1();

  39.                 //LED_scan2();

  40.         }

  41.         popaf;

  42. }

复制代码
我目前用的是PMS132B芯片驱动的,上面是一个16位计数器写的计数中断程序,计数256us进入一次中断
  1. /****************************************************************

  2. 函数名称:void LED_Scan(void)

  3. 函数功能:扫描函数,扫描要显示13:14,其他图标都亮

  4. 函数参数:无

  5. 函数返回值:无

  6. 函数说明:没有用到的引脚设置为高阻态

  7.                   if语句里面注释的pbc位所有LED数码管全亮

  8. ****************************************************************/

  9. void LED_Scan1(void)

  10. {

  11.         static u8 cnt = 0;

  12.         SetPortIn();//设置高阻态,关闭上拉

  13.         //SetPortOut();

  14.         $ pbdier = 0;

  15.         switch (cnt)//轮询一个引脚为高电平

  16.         {

  17.                 case 0:

  18.                         pbc.0 = 1;//设置pb0输出

  19.                         pb.0  = 1;//输出高电平

  20.                         break;

  21.                 case 1:

  22.                         pbc.1 = 1;

  23.                         pb.1  = 1;

  24.                         break;

  25.                 case 2:

  26.                         pbc.2 = 1;

  27.                         pb.2  = 1;

  28.                         break;

  29.                 case 3:

  30.                         pbc.3 = 1;

  31.                         pb.3 = 1;

  32.                         break;

  33.                 case 4:

  34.                         pbc.4 = 1;

  35.                         pb.4  = 1;

  36.                         break;

  37.                 case 5:

  38.                         pbc.5 = 1;

  39.                         pb.5  = 1;

  40.                         break;

  41.                 case 6:

  42.                         pbc.6 = 1;

  43.                         pb.6  = 1;

  44.                         break;

  45.                 default:

  46.                         break;

  47.         }

  48.         //将发生变化的引脚所对应要显示的内容更改

  49.         if (PIN1)

  50.         {

  51.                 //pbc = 0x3f;

  52.                 pbc = 0x35;//配置输出引脚  0:输入          1:输出

  53.                 pb  = 0X01;//

  54.         }

  55.         if (PIN2)

  56.         {

  57.                 //pbc = 0x3f;

  58.                 pbc = 0x2e;

  59.                 pb  = 0x02;

  60.         }

  61.         if (PIN3)

  62.         {

  63.                 //pbc = 0x7f;

  64.                 pbc = 0x7c;

  65.                 pb  = 0x04;

  66.         }

  67.         if (PIN4)

  68.         {

  69.                 //pbc = 0x3f;

  70.                 pbc = 0x1b;

  71.                 pb  = 0x08;

  72.         }

  73.         if (PIN5)

  74.         {

  75.                 //pbc = 0x7f;

  76.                 pbc = 0x72;

  77.                 pb  = 0x10;

  78.         }

  79.         if (PIN6)

  80.         {

  81.                 //pbc = 0x7f;

  82.                 pbc = 0x72;

  83.                 pb  = 0x20;

  84.         }

  85.         if (PIN7)

  86.         {

  87.                 //pbc = 0x64;

  88.                 pbc = 0x44;

  89.                 pb  = 0x40;

  90.         }

  91.         cnt++;

  92.         if(cnt >= 7)

  93.         {

  94.                 cnt = 0;

  95.         }

  96.         //cnt = (cnt >= 8)?0:cnt+1;

  97. }

复制代码
上面这个是LED数码管动态扫描程序,与一般的数码管有所区别,一般数码管有共阴和共阳之分,这个没有,动态扫描的原理这里不细说了,不清楚的去网上查找,这个相当于是7个引脚驱动五位七段数码管,相关引脚定义见下图
  
          数码管引脚定义图

               数码管实物图
引脚定义图是用万用表测出来的,测量方法有很多,我用的这种方法而以,阳极和阴极就代表该引脚接在万用表的正极和负极,每一段LED组合在一起形成以以为数码管,上面有五位数码(第五位是将SD、||、USB、 :  等一共七个图标组成了第五位数码管),举个例子方便大家理解,假如现在要点亮第一位数码管的第一段(也就是1A),此时P1引脚输入高电平,P2引脚输入低电平或者接地,1A就亮了。
                     


                    以上两个图片是动态扫描程序扫描后所能显示的两种效果,图一在扫描程序里为注释的部分

                             
                  


                                                所用仿真开发板型号
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写
机电一体化专科毕业论文
AT89C2051制作八路定时电路
充电保护定时系统电路设计原理解析 —电路图天天读(179)
74HC245芯片,你会用吗?
4位共阳数码管怎么用?不懂,有谁会?哪位网友了解?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服