应广单片机(一)

[复制链接]
724|11
 楼主 | 2019-8-21 18:24 | 显示全部楼层 |阅读模式
本帖最后由 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个引脚驱动五位七段数码管,相关引脚定义见下图

数码管引脚定义图

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

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

QQ截图20190821180707.png                              
61T)KITNJSS}C43S]KN[1JG.png                   
IMG_20190820_190308.jpg

                                                所用仿真开发板型号


后续还会更新相关的例程,有哪里描述的不对的地方请大佬指点出来,希望本帖子可以帮助到大家,有兴趣的可以留言或者加我QQ464093890一起讨论学习。



需要相关资料的朋友可以点击点击链接下载

IED及其使用手册和MINI-C学习指南链接:https://pan.baidu.com/s/1qZv-5l2WTA_6KwwwEsJ4lA
提取码:u63h
芯片手册链接:https://pan.baidu.com/s/1pACqdmqrCUK-P5cX4qXzDQ
提取码:b2oo
车载MP3数码管.rar (35.67 KB, 下载次数: 5)

使用特权

评论回复

评论

dirtwillfly 2019-8-21 20:21 回复TA
给力 
 楼主 | 2019-8-21 18:41 | 显示全部楼层
忽略我的大手

使用特权

评论回复
| 2019-8-21 19:52 | 显示全部楼层
支持下,pb,pbc这些是寄存器的定义吗,简单粗暴,不错。

使用特权

评论回复
| 2019-8-22 09:14 | 显示全部楼层
楼主,应广的仿真器是通用的,还是单型号?

使用特权

评论回复
 楼主 | 2019-8-22 14:49 | 显示全部楼层
xyz549040622 发表于 2019-8-21 19:52
支持下,pb,pbc这些是寄存器的定义吗,简单粗暴,不错。

是的,pbc是模式控制,pb是数据寄存器,菜鸟只会简单粗暴的,花里胡哨的整不来

使用特权

评论回复
| 2019-8-22 14:51 | 显示全部楼层
大佬

使用特权

评论回复
 楼主 | 2019-8-22 14:55 | 显示全部楼层
lvlv99 发表于 2019-8-22 09:14
楼主,应广的仿真器是通用的,还是单型号?

一般都是通用的,不对针对不同的芯片可能会有部分功能不能用,具体要参考芯片手册

使用特权

评论回复
| 2019-8-22 15:23 | 显示全部楼层
用什么编译软件呢?

使用特权

评论回复
 楼主 | 2019-8-22 18:24 | 显示全部楼层
yzq13246068880 发表于 2019-8-22 15:23
用什么编译软件呢?

应广科技的仿真软件,在文中有图片的,链接里面也可以下载

使用特权

评论回复
| 2019-8-29 16:29 | 显示全部楼层
aqa 发表于 2019-8-22 18:24
应广科技的仿真软件,在文中有图片的,链接里面也可以下载

这个芯片性价比如何,编程容易不?

使用特权

评论回复

评论

aqa 2019-8-29 17:27 回复TA
可对比其他的OTP芯片,个人认为性价比还是可以的,上手不难 
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表