2457|1

111

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MM32F103 数码管动态驱动演示 [复制链接]

本帖最后由 serialworld 于 2018-11-1 06:29 编辑

MM32F103 数码管动态驱动演示,比较简单,就不多解释了。另外测试了一下96Mhz单片机全速运行的电流,5V时13.5mA左右,3.3V时使用万用表无法测量,应该是表笔的干扰较大,单片机无法正常启动。
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "led.h"
  4. #include "key.h"
  5. #include  "uart.h"
  6. #include "uart_nvic.h"
  7. #include <stdio.h>
  8. #include <unistd.h>

  9. void LED_display(uint16_t data);
  10. void LED_c(uint16_t data);
  11. void LED_4(void);
  12. void LED_5(void);
  13. void LED_6(void);
  14. uint8_t LED_buffer[4] = { 0xa1 };

  15. int _write(int32_t fd, char* ptr, int32_t len) {
  16.         if (fd == STDOUT_FILENO || fd == STDERR_FILENO) {
  17.                 int32_t i = 0;
  18.                 while (i < len) {

  19.                         while (UART_GetFlagStatus(UART1, UART_IT_TXIEN) == RESET)
  20.                                 ;
  21.                         UART_SendData(UART1, (uint8_t) ptr[i++]);

  22.                 }
  23.         }
  24.         return len;
  25. }

  26. uint16_t dis_buffer[3] = { 0 };
  27. int main(void) {
  28.         u8 t = 0;
  29.         u8 len;
  30.         u16 times = 0;
  31.         delay_init();                     //延时函数初始化
  32.         LED_Init();                                   //初始化与LED连接的硬件接口
  33. //    KEY_Init();                  //初始化与按键连接的硬件接口
  34.         LED2 = 0;                                        //点亮LED
  35. //    uart_initwBaudRate(115200u);

  36.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                // 设置中断优先级分组2
  37.         uart_nvic_init(115200);         //串口初始化为115200

  38.         while (1) {
  39. //        t=KEY_Scan(0);                //得到键值
  40.                 if (UART_RX_STA & 0x8000) {
  41.                         len = UART_RX_STA & 0x3fff;         //得到此次接收到的数据长度
  42.                         printf("\r\n your message is \r\n");
  43.                         for (t = 0; t < len; t++) {
  44.                                 while (UART_GetFlagStatus(UART1, UART_IT_TXIEN) == RESET)
  45.                                         ;
  46.                                 UART_SendData(UART1, (u8) UART_RX_BUF[t]);
  47.                         }
  48.                         printf("\r\n\r\n");         //插入换行
  49.                         UART_RX_STA = 0;
  50.                 } else {
  51.                         times++;
  52.                         if (times % 50 == 0) {
  53.                                 printf("\r\n Serial port test\r\n");
  54.                                 dis_buffer[0] = (times / 50) % 10;
  55.                                 dis_buffer[1] = (times / 50) % 10;
  56.                                 dis_buffer[2] = (times / 50) % 10;
  57.                                 dis_buffer[3] = (times / 50) % 10;
  58. //                  delay_ms(10);
  59.                         }
  60.                         if (times % 200 == 0)
  61.                                 printf("please input date\r\n");
  62.                         if (times % 30 == 0)
  63.                                 LED2 = !LED2;         //闪烁LED,提示系统正在运行.
  64.                 }
  65.                 LED_4();
  66. //                LED_6();
  67.         }
  68. }

  69. void LED_display(uint16_t data) {
  70.         switch (data) {
  71.         case 0:
  72.                 led_a = !1;
  73.                 led_b = !1;
  74.                 led_c = !1;
  75.                 led_d = !1;
  76.                 led_e = !1;
  77.                 led_f = !1;
  78.                 led_g = !0;
  79.                 led_dp = !0;
  80.                 break;
  81.         case 1:
  82.                 led_a = !0;
  83.                 led_b = !1;
  84.                 led_c = !1;
  85.                 led_d = !0;
  86.                 led_e = !0;
  87.                 led_f = !0;
  88.                 led_g = !0;
  89.                 led_dp = !0;
  90.                 break;
  91.         case 2:
  92.                 led_a = !1;
  93.                 led_b = !1;
  94.                 led_c = !0;
  95.                 led_d = !1;
  96.                 led_e = !1;
  97.                 led_f = !0;
  98.                 led_g = !1;
  99.                 led_dp = !0;
  100.                 break;
  101.         case 3:
  102.                 led_a = !1;
  103.                 led_b = !1;
  104.                 led_c = !1;
  105.                 led_d = !1;
  106.                 led_e = !0;
  107.                 led_f = !0;
  108.                 led_g = !1;
  109.                 led_dp = !0;
  110.                 break;
  111.         case 4:
  112.                 led_a = !0;
  113.                 led_b = !1;
  114.                 led_c = !1;
  115.                 led_d = !0;
  116.                 led_e = !0;
  117.                 led_f = !1;
  118.                 led_g = !1;
  119.                 led_dp = !0;
  120.                 break;
  121.         case 5:
  122.                 led_a = !1;
  123.                 led_b = !0;
  124.                 led_c = !1;
  125.                 led_d = !1;
  126.                 led_e = !0;
  127.                 led_f = !1;
  128.                 led_g = !1;
  129.                 led_dp = !0;
  130.                 break;
  131.         case 6:
  132.                 led_a = !1;
  133.                 led_b = !0;
  134.                 led_c = !1;
  135.                 led_d = !1;
  136.                 led_e = !1;
  137.                 led_f = !1;
  138.                 led_g = !1;
  139.                 led_dp = !0;
  140.                 break;
  141.         case 7:
  142.                 led_a = !1;
  143.                 led_b = !1;
  144.                 led_c = !1;
  145.                 led_d = !0;
  146.                 led_e = !0;
  147.                 led_f = !0;
  148.                 led_g = !0;
  149.                 led_dp = !0;
  150.                 break;
  151.         case 8:
  152.                 led_a = !1;
  153.                 led_b = !1;
  154.                 led_c = !1;
  155.                 led_d = !1;
  156.                 led_e = !1;
  157.                 led_f = !1;
  158.                 led_g = !1;
  159.                 led_dp = !0;
  160.                 break;
  161.         case 9:
  162.                 led_a = !1;
  163.                 led_b = !1;
  164.                 led_c = !1;
  165.                 led_d = !1;
  166.                 led_e = !0;
  167.                 led_f = !1;
  168.                 led_g = !1;
  169.                 led_dp = !0;
  170.                 break;

  171.         default:
  172.                 break;

  173.         }

  174.         return;
  175. }
  176. void LED_c(uint16_t data) {
  177.         switch (data) {
  178.         case 0:
  179.                 led_c1 = 0;
  180.                 led_c2 = 1;
  181.                 led_c3 = 1;
  182.                 led_c4 = 1;
  183.                 break;
  184.         case 1:
  185.                 led_c1 = 1;
  186.                 led_c2 = 0;
  187.                 led_c3 = 1;
  188.                 led_c4 = 1;
  189.                 break;
  190.         case 2:
  191.                 led_c1 = 1;
  192.                 led_c2 = 1;
  193.                 led_c3 = 0;
  194.                 led_c4 = 1;
  195.                 break;

  196.         case 3:
  197.                 led_c1 = 1;
  198.                 led_c2 = 1;
  199.                 led_c3 = 1;
  200.                 led_c4 = 0;
  201.                 break;
  202.         default:
  203.                 led_c1 = 1;
  204.                 led_c2 = 1;
  205.                 led_c3 = 1;
  206.                 led_c4 = 1;
  207.                 break;

  208.         }
  209.         return;
  210. }

  211. void LED_4(void) {

  212.         uint16_t i;
  213.         for (i = 0; i < 4; i++) {
  214.                 LED_c(i);
  215.                 LED_display(dis_buffer[i]);
  216.                 delay_ms(2);
  217.         }
  218. //        LED_c(i);
  219.         return;
  220. }

  221. void LED_5(void) {
  222.         int i;
  223.         for (i = 0; i < 1; i++) {
  224.                 led_a = !((LED_buffer[0] >> 0) & 0x01);
  225.                 delay_ms(2);
  226.                 led_b = !((LED_buffer[0] >> 1) & 0x01);
  227.                 delay_ms(2);
  228.                 led_c = !((LED_buffer[0] >> 2) & 0x01);
  229.                 delay_ms(2);
  230.                 led_d = !((LED_buffer[0] >> 3) & 0x01);
  231.                 delay_ms(2);
  232.                 led_e = !((LED_buffer[0] >> 4) & 0x01);
  233.                 delay_ms(2);
  234.                 led_f = !((LED_buffer[0] >> 5) & 0x01);
  235.                 delay_ms(2);
  236.                 led_g = !((LED_buffer[0] >> 6) & 0x01);
  237.                 delay_ms(2);
  238.         }

  239. }

  240. void LED_6(void) {

  241.         uint16_t i;
  242.         for (i = 0; i < 4; i++) {
  243.                 LED_c(i);
  244. //                LED_display(dis_buffer[i]);
  245.                 LED_5();
  246.                 delay_ms(2);
  247.         }
  248. //        LED_c(i);
  249.         return;
  250. }
复制代码




此内容由EEWORLD论坛网友serialworld原创,如需转载或用于商业用途需征得作者同意并注明出处u

led.PNG (1.16 MB, 下载次数: 0)

led.PNG
此帖出自电机控制论坛

最新回复

  详情 回复 发表于 2018-10-31 22:05
点赞 关注(1)
 
 

回复
举报

152

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
此帖出自电机控制论坛
个人签名

欢迎大家来到电机驱动控制技术天地,一起在EEworld交流、学习。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表