矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 6406|回复: 27

六个核桃测小麦湿度

[复制链接]
     
发表于 2019-5-28 08:46:05 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2019-5-28 08:59 编辑

快收小麦了,晒干了的小麦要靠牙咬判断干湿,想DIY个测湿度的,于是用六个核桃的铁皮瓶子做了一个简单测湿度的表,我小学文化不懂理论和计算,好像是差分电容原理,程序是以前做别的用的程序,稍微该了一下用在了这里,单片机型号STM32F030F4P6。
演示视频,测量三种不同湿度的小麦,第一种是家里粮食袋子里面的,第二种是用水泡了一下晒的不干,第三种是粮食袋子里面的放在太阳下晒了两个小时,我不是专业电工,就是农民种地的喜欢DIY,所以非常不专业,非常简单的原理验证,没有实际应用价值,没有校准和温度补偿,还是个音频范围的,外国的产品都是149M的。

视频可以看到1602下面一行xiaomai后面的数是ADC采到的,数越大小麦越湿。




电路图是先焊接后画的,没怎么画过,也不会设计电路,不确定有没有问题。

11111.png


截图_2019-05-28_08-42-19.png

截图_2019-05-28_08-43-04.png

截图_2019-05-28_08-43-21.png

截图_2019-05-28_08-43-49.png




程序
liangshi.tar.gz (6.18 KB, 下载次数: 91)


  1.         @@单片机stm32f030f4p6
  2.         @@电容小麦水分测量
  3.         @作者:yjmwxwx
  4.         @时间:2019-05-26
  5.         @编译器:ARM-NONE-EABI-AS
  6.          .thumb
  7.                  .syntax unified
  8. .section .data
  9. zheng_xian_biao:
  10.         .short 0x30,0x33,0x36,0x38,0x3b,0x3e,0x41,0x44,0x47,0x49,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x57,0x55,0x53,0x51,0x4f,0x4d,0x4a,0x48,0x45,0x43,0x40,0x3d,0x3a,0x37,0x34,0x31,0x2e,0x2b,0x28,0x25,0x22,0x1f,0x1c,0x1a,0x17,0x15,0x12,0x10,0xe,0xc,0xa,0x8,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x4,0x6,0x7,0x9,0xb,0xd,0xf,0x11,0x13,0x16,0x18,0x1b,0x1e,0x21,0x24,0x27,0x29,0x2c,0x30
  11. lcdshuju:
  12.         .ascii  "yjmwxwx-20190526"
  13. dianhua:       
  14.         .ascii        "     15552208295"
  15. qq:
  16.         .ascii        "   QQ:3341656346"
  17. xiaomai:
  18.         .ascii "xiaomai ="
  19.         .equ STACKINIT,                        0x20001000
  20.         .equ asciimabiao,                0x20000000
  21.         .equ jishu,                        0x20000010
  22.         .equ lvbozhizhen,                0x20000020
  23.         .equ lvbohuanchong,                0x20000024
  24.         .equ adccaiyang,                0x20000100
  25.         .section .text
  26. vectors:
  27.         .word STACKINIT
  28.         .word _start + 1
  29.         .word _nmi_handler + 1
  30.         .word _hard_fault  + 1
  31.         .word 0
  32.         .word 0
  33.         .word 0
  34.         .word 0
  35.         .word 0
  36.         .word 0
  37.         .word 0
  38.         .word _svc_handler +1
  39.         .word 0
  40.         .word 0
  41.         .word _pendsv_handler +1
  42.         .word _systickzhongduan +1               @ 15
  43.         .word aaa +1     @ _wwdg +1          @ 0
  44.         .word aaa +1     @_pvd +1            @ 1
  45.         .word aaa +1     @_rtc +1            @ 2
  46.         .word aaa +1     @_flash +1          @ 3
  47.         .word aaa +1        @ _rcc + 1          @ 4
  48.         .word aaa +1      @_exti0_1  +1      @ 5
  49.         .word aaa +1      @ _exti2_3 +1      @ 6
  50.         .word aaa +1       @_exti4_15 +1     @ 7
  51.         .word aaa +1                         @ 8
  52.         .word aaa +1         @_dma1_1  +1    @ 9
  53.         .word aaa +1    @_dma1_2_3 +1        @ 10
  54.         .word aaa +1       @_dma1_4_5 +1     @ 11
  55.         .word aaa +1         @_adc1 +1          @ 12
  56.         .word aaa +1       @_tim1_brk_up +1  @ 13
  57.         .word aaa +1        @ _tim1_cc +1    @ 14
  58.         .word aaa +1         @_tim2 +1       @ 15
  59.         .word aaa +1          @_tim3 +1      @ 16
  60.         .word aaa +1                         @ 17
  61.         .word aaa +1                                @ 18
  62.         .word aaa +1        @_tim14 +1    @ 19
  63.         .word aaa +1                         @ 20
  64.         .word aaa +1         @_tim16 +1      @ 21
  65.         .word aaa +1         @_tim17 +1      @ 22
  66.         .word aaa +1          @_i2c   +1     @ 23
  67.         .word aaa +1                         @ 24
  68.         .word aaa +1           @_spi   +1    @ 25
  69.         .word aaa +1                         @ 26
  70.         .word aaa +1         @_usart1 +1     @ 27
  71.         .align 2

  72. _start:
  73. shizhong:
  74.         ldr r2, = 0x40022000   @FLASH访问控制
  75.         movs r1, # 0x32
  76.         str r1, [r2]           @FLASH缓冲 缓冲开启
  77.         ldr r0, = 0x40021000 @ rcc
  78.         ldr r1, = 0x10001
  79.         str r1, [r0]
  80. denghse:
  81.         ldr r1, [r0]
  82.         lsls r1, r1, # 14
  83.         bpl denghse
  84. dengpllguan:
  85.         ldr r1, [r0]
  86.         lsls r1, r1, # 6
  87.         bmi dengpllguan
  88.         ldr r1, = 0x110002
  89.         str r1, [r0, # 0x04]
  90.         ldr r1, = 0x1010001
  91.         str r1, [r0]
  92. dengpll:
  93.         ldr r1, [r0]
  94.         lsls r1, # 6
  95.         bpl dengpll
  96.         @0x34时钟控制寄存器 2 (RCC_CR2)
  97.         movs r1, # 0x01
  98.         str r1, [r0, # 0x34]  @ HSI开14M时钟
  99. dengdai14mshizhongwending:
  100.         ldr r1, [r0, # 0x34]
  101.         lsls r1, r1, # 30     @ 左移30位
  102.         bpl dengdai14mshizhongwending  @ 等待14M时钟稳定

  103. _neicunqingling:
  104.         ldr r0, = 0x20000000
  105.         movs r1, # 0
  106.         ldr r3, = 0x1000
  107. _neicunqinglingxunhuan:
  108.         subs r3, # 4
  109.         str r1, [r0, r3]
  110.         bne _neicunqinglingxunhuan

  111. _waisheshizhong:                         @ 外设时钟
  112.         @+0x14=RCC_AHBENR
  113.         @0=DMA @2=SRAM @4=FLITF@6=CRC @17=PA @18=PB @19=PC @20=PD @22=PF
  114.         ldr r0, = 0x40021000
  115.         ldr r1, = 0x460005
  116.         str r1, [r0, # 0x14]

  117.         @+0x18外设时钟使能寄存器 (RCC_APB2ENR)
  118.         @0=SYSCFG @5=USART6EN @9=ADC @11=TIM1 @12=SPI1 @14=USART1 @16=TIM15 @17=TIM16 @18=TIM17 @22=DBGMCU
  119.         ldr r1, = 0xa00
  120.         str r1, [r0, # 0x18]
  121.         @+0X1C=RCC_APB1ENR
  122.         @1=TIM3 @4=TIM6 @5=TIM7 @8=TIM14 @11=WWDG @14=SPI @17=USRT2 @18=USART3 @20=USART5 @21=I2C1
  123.         @22=I2C2 @23=USB @28=PWR


  124. tim1chushiha:
  125.         ldr r0, = 0x40012c00 @ tim1_cr1
  126.         movs r1, # 0
  127.         str r1, [r0, # 0x28] @ psc
  128.         ldr r1, = 96
  129.         str r1, [r0, # 0x2c] @ ARR
  130.         ldr r1, = 0x68
  131.         str r1, [r0, # 0x1c] @ ccmr2  CC3
  132.         ldr r1, = 0x100    @  CC3
  133.         str r1, [r0, # 0x20] @ ccer
  134.         ldr r1, = 0x8000
  135.         str r1, [r0, # 0x44] @ BDTR
  136.         ldr r1, = 0x800 @ CC3 DMA
  137.         str r1, [r0, # 0x0c] @ DIER
  138.         ldr r1, = 0xe1
  139.         str r1, [r0]

  140.        
  141. _adcchushihua:
  142.         ldr r0, = 0x40012400  @ adc基地址
  143.         ldr r1, = 0x80000000
  144.         str r1, [r0, # 0x08]  @ ADC 控制寄存器 (ADC_CR)  @adc校准
  145. _dengadcjiaozhun:
  146.         ldr r1, [r0, # 0x08]
  147.          movs r1, r1
  148.         bmi _dengadcjiaozhun   @ 等ADC校准
  149. _kaiadc:
  150.         ldr r1, [r0, # 0x08]
  151.         movs r2, # 0x01
  152.         orrs r1, r1, r2
  153.         str r1, [r0, # 0x08]
  154. _dengdaiadcwending:
  155.         ldr r1, [r0]
  156.         lsls r1, r1, # 31
  157.         bpl _dengdaiadcwending @ 等ADC稳定
  158. _tongdaoxuanze:
  159.         ldr r1, = 0x01
  160.         str r1, [r0, # 0x28]    @ 通道选择寄存器 (ADC_CHSELR)
  161.         ldr r1, = 0x3000        @ 13 连续转换
  162.         str r1, [r0, # 0x0c]    @ 配置寄存器 1 (ADC_CFGR1)
  163.         movs r1, # 0                 @
  164.         str r1, [r0, # 0x14]    @ ADC 采样时间寄存器 (ADC_SMPR)
  165.         ldr r1, [r0, # 0x08]
  166.         movs r2, # 0x04         @ 开始转换
  167.         orrs r1, r1, r2
  168.         str r1, [r0, # 0x08]    @ 控制寄存器 (ADC_CR)

  169. dmachushihua:
  170.         @+0=LSR,+4=IFCR,
  171.         @+8=CCR1,+c=CNDTR1,+10=CPAR1+14=CMAR1,
  172.         @+1c=CCR2,+20=CNDTR2,+24=CPAR2,+28=CMAR2
  173.         @+30=CCR3,+34=CNDTR3,+38=CPAR2,+3c=CMAR3
  174.         @+44=CCR4,+48=CNDTR4,+4c=CPAR4,+50=CMAR4
  175.         @+58=CCR5,+5c=CNDTR5,+60=CPAR5,+64=CMAR5
  176.         @+6C=CCR6,+70=CNDTR6,+74=CPAR6,+78=CMAR6
  177.         @+80=CCR7,+84=CNDTR7,+88=CPAR7,+8c=CMAR7

  178.         @tim1ch3DMA
  179.         ldr r0, = 0x40020000
  180.         ldr r1, = 0x40012c3c @ 外设地址
  181.         str r1, [r0, # 0x60]
  182.         ldr r1, = zheng_xian_biao @ 储存器地址
  183.         str r1, [r0, # 0x64]
  184.         ldr r1, = 100             @点数
  185.         str r1, [r0, # 0x5c]
  186.         ldr r1, = 0x25b1         @ 储存到外设
  187.         str r1, [r0, # 0x58]

  188. _waishezhongduan:                                @外设中断
  189.         @0xE000E100    0-31  写1开,写0没效
  190.         @0XE000E180    0-31 写1关,写0没效
  191.         @0XE000E200    0-31 挂起,写0没效
  192.         @0XE000E280    0-31 清除, 写0没效

  193. _systick:                                @ systick定时器初始化

  194.         ldr r0, = 0xe000e010
  195.         ldr r1, = 0xffffff
  196.         str r1, [r0, # 4]
  197.         str r1, [r0, # 8]
  198.         movs r1, # 0x07
  199.         str r1, [r0]
  200.        
  201. io_she_zhi:
  202.         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  203.         @a(0x48000000)b(0x48000400)c(0x48000800)d(0x48000c00)f(0x48001400)
  204.         @ 输入(00),通用输出(01),复用功能(10),模拟(11)
  205.         @偏移0x4 = 端口输出类型 @ (0 推挽),( 1 开漏)
  206.         @偏移0x8 = 输出速度  00低速, 01中速, 11高速
  207.         @偏移0xC = 上拉下拉 (00无上下拉,  01 上拉, 10下拉)
  208.         @偏移0x10 = 输入数据寄存器
  209.         @偏移0x14 = 输出数据寄存器
  210.         @偏移0x18 = 端口开  0-15置位
  211.         @偏移0x28 = 端口关
  212.         @0X20 = 复用低
  213.         @GPIO口0(0-3位)每个IO口占用4位
  214.         @ AF0 = 0X0000, AF1 = 0X0001, AF2 = 0X0010 AF3 = 0X0011, AF4 = 0X0100
  215.         @ AF5 = 0X0101, AF6 = 0X0111, AF7 = 0X1000
  216.         @0x24 = 复用高
  217.         @GPIO口8 (0-3位)每个IO口占用4位
  218.         @ AF0 = 0X0000, AF1 = 0X0001, AF2 = 0X0010 AF3 = 0X0011, AF4 = 0X0100
  219.         @ AF5 = 0X0101, AF6 = 0X0111, AF7 = 0X1000
  220.         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  221.         ldr r0, = 0x48000000
  222.         ldr r1, = 0x28205553
  223.         str r1, [r0]
  224.         movs r1, # 0xfc  @ pa2-pa7开漏输出
  225.         str r1, [r0, # 0x04]
  226.         ldr r1, = 0x200
  227.         str r1, [r0, # 0x24]

  228. _lcdchushihua:
  229.         movs r0, # 0x33
  230.         movs r1, # 0
  231.         bl _xielcd
  232.         bl _lcdyanshi
  233.         movs r0, # 0x32
  234.         movs r1, # 0
  235.         bl _xielcd
  236.         bl _lcdyanshi
  237.         movs r0, # 0x28
  238.         movs r1, # 0
  239.         bl _xielcd
  240.         bl _lcdyanshi
  241.         movs r0, # 0x0c
  242.         movs r1, # 0
  243.         bl _xielcd
  244.         bl _lcdyanshi
  245.         movs r0, # 0x01
  246.         movs r1, # 0
  247.         bl _xielcd
  248.         bl _lcdyanshi
  249.        


  250. _tingting:
  251.         ldr r0, = jishu
  252.         ldr r1, [r0]
  253.         cmp r1, # 8
  254.         beq _lcddi1
  255.         cmp r1, # 16
  256.         beq _lcddi2
  257.         cmp r1, # 24
  258.         beq _lcddi3
  259.         b _tiaoguoguanggao
  260. _lcddi1:
  261.         movs r0, # 0x80
  262.         ldr r1, = lcdshuju
  263.         movs r2, # 16
  264.         bl _lcdxianshi
  265.         ldr r0, = 0x40020000
  266.         ldr r1, = 0
  267.         str r1, [r0, # 0x08]
  268.         b _tiaoguoguanggao
  269. _lcddi2:
  270.         movs r0, # 0x80
  271.         ldr r1, = dianhua
  272.         movs r2, # 16
  273.         bl _lcdxianshi
  274.         b _tiaoguoguanggao
  275. _lcddi3:
  276.         movs r0, # 0x80
  277.         ldr r1, = qq
  278.         movs r2, # 16
  279.         bl _lcdxianshi
  280.         ldr r0, = jishu
  281.         movs r1, # 0
  282.         str r1, [r0]
  283. _tiaoguoguanggao:
  284.         movs r0, # 0xc0
  285.         ldr r1, = xiaomai
  286.         movs r2, # 9
  287.         bl _lcdxianshi
  288.         bl _chuanganqi
  289.         movs r1, # 4
  290.         ldr r2, = asciimabiao
  291.         movs r3, # 0xff
  292.         bl _zhuanascii
  293.         movs r0, # 0xcc
  294.         ldr r1, = asciimabiao
  295.         movs r2, # 0x04
  296.         bl _lcdxianshi
  297.         b _tingting

  298.        
  299. _chuanganqi:                @出
  300.                         @R0=幅值,R1=相位
  301.         push {r2-r7,lr}
  302.         ldr r0, = 0x40012400
  303.         movs r1, # 0x01
  304.         str r1, [r0, # 0x28]
  305.         bl _jianbo                        @检波90、270
  306.         bl _jisuanfuzhi                        @计算90幅度
  307.         mov r2, r0
  308.         mov r0, r1
  309.         bl _jisuanfuzhi                        @计算270幅度
  310.         mov r1, r0
  311.         mov r0, r2
  312.         bl _xiangweipanduan                @判断相位
  313.         mov r4, r1
  314.         mov r3, r0
  315.         ldr r0, = lvbohuanchong                @滤波器缓冲区
  316.         movs r1, # 16                        @级数
  317.         ldr r2, = lvbozhizhen                @滤波器指针
  318.         bl _lvboqi                        @平滑,平均滤波器
  319.         mov r1, r4
  320.         pop {r2-r7,pc}


  321. _xiangweipanduan:                @相位判断
  322.                                 @入R0=90度,R1=270度
  323.                                 @出R0=相之间相差的数值,
  324.                                 @出R1=1,90度是正,R1=0,90度是负
  325.         push {r2,lr}
  326.         subs r1, r1, # 0        @ 校准0点
  327.         subs r2, r0, r1
  328.         bpl _adc90shizheng
  329.         subs r2, r1, r0
  330.         bpl _adc90shifu
  331.         cmp r0, r1
  332.         bne _xiangweipanduanfanhui
  333. _adc90shizheng:
  334.         mov r0, r2
  335.         movs r1, # 1
  336.         pop {r2,pc}
  337. _adc90shifu:
  338.         mov r0, r2
  339.         movs r1, # 0
  340.         pop {r2,pc}
  341. _xiangweipanduanfanhui:
  342.         movs r0, # 0
  343.         movs r1, # 1
  344.         pop {r2,pc}
  345.        
  346.        
  347. _jisuanfuzhi:                        @计算幅值
  348.                                 @入R0出R0
  349.                                 @R0=ADC90度采样
  350.         push {r1-r3,lr}
  351.         cmp r0, # 0
  352.         beq _adcshi0fanhui
  353.         ldr r1, = 0x04                @实 Q15
  354.         ldr r2, = 0xffff8004    @虚 Q15
  355.         mov r3, r0
  356.         muls r0, r0, r1                @实
  357.         asrs r0, r0, # 15
  358.         muls r3, r3, r2                @虚
  359.         asrs r3, r3, # 15
  360. _shibushibushi0:                @检测实部是不是负数
  361.         movs r0, r0
  362.         bpl _fzbushifushu1
  363.         mvns r0, r0                @是负数转成正数
  364.         adds r0, r0, # 1
  365. _fzbushifushu1:                        @检测虚部是不是负数
  366.         movs  r3, r3
  367.         bpl _fzbushifushu
  368.         mvns r3, r3                @是负数转成正数
  369.         adds r3, r3, # 1
  370. _fzbushifushu:
  371.         adds r0, r0, r3                @相加得到副值
  372. _adcshi0fanhui:       
  373.         pop {r1-r3,pc}
  374.        
  375. _jianbo:                                @检波
  376.                                         @输出r0=90度,R1=270度
  377.         push {r2-r4,lr}
  378.         ldr r2, = 0x4002005c
  379.         ldr r3, = 0x40012440
  380.         cpsid i
  381. _jianbo90du:
  382.         ldr r4, [r2]
  383.         cmp r4, # 25
  384.         bne _jianbo90du
  385.         ldr r0, [r3]                        @取出90度
  386. _jianbo270du:
  387.         ldr r4, [r2]
  388.         cmp r4, # 75
  389.         bne _jianbo270du
  390.         ldr r1, [r3]
  391.         cpsie i
  392.         pop {r2-r4,pc}

  393. _lvboqi:                                @滤波器
  394.                         @R0=地址,R1=长度,r2=表指针地址,r3=ADC数值
  395.                         @出R0=结果
  396.         push {r1-r7,lr}       
  397.         ldr r5, [r2]                @读出表指针
  398.         lsls r6, r1, # 2       
  399.         str r3, [r0, r5]        @数值写到滤波器缓冲区
  400.         adds r5, r5, # 4
  401.         cmp r5, r6
  402.         bne _lvboqimeidaohuanchongquding
  403.         movs r5, # 0
  404. _lvboqimeidaohuanchongquding:
  405.         str r5, [r2]
  406.         movs r7, # 0
  407. _lvboqixunhuan:
  408.         cmp r5, r6
  409.         bne _lvbozonghe
  410.         movs r5, # 0
  411. _lvbozonghe:
  412.         ldr r4, [r0, r5]
  413.         adds r5, r5, # 4
  414.         adds r7, r7, r4
  415.         subs r1, r1, # 1
  416.         bne _lvboqixunhuan
  417.         asrs r0, r7, # 4        @修改
  418.         pop {r1-r7,pc}
  419.        

  420. _lcdxianshi:                          @r0=LCD位置,r1=数据地址,r2=长度
  421.         push {r0-r4,lr}
  422.         mov r4, r1

  423.         movs r1, # 0
  424.         bl _xielcd

  425.         movs r1, # 1
  426.         movs r3, # 0
  427. _lcdxianshixunhuan:
  428.         ldrb r0, [r4,r3]
  429.         bl _xielcd
  430.         adds r3, r3, # 1
  431.         cmp r3, r2
  432.         bne _lcdxianshixunhuan
  433.         pop {r0-r4,pc}

  434. _lcdyanshi:
  435.         push {r5,lr}
  436.         ldr r5, = 0x2000
  437. _lcdyanshixunhuan:
  438.         subs r5, r5, # 1
  439.         bne _lcdyanshixunhuan
  440.         pop {r5,pc}

  441. _xielcd:                        @入R0=8位,r1=0命令,r1=1数据
  442.         push {r0-r7,lr}
  443.         lsrs r6, r0, # 4
  444.         lsls r0, r0, # 28
  445.         lsrs r0, r0, # 28
  446.         movs r2, # 0x80                @ RS
  447.         movs r3, # 0x40                @ E
  448.         movs r5, # 0x3c
  449.         ldr r4, = 0x48000000
  450.         cmp r1, # 0
  451.         beq _lcdmingling
  452.         str r2, [r4, # 0x18]        @RS=1
  453.         b _lcdshuju
  454. _lcdmingling:
  455.         str r2, [r4, # 0x28]        @RS=0
  456. _lcdshuju:
  457.         str r3, [r4, # 0x18]        @E=1
  458.         str r5, [r4, # 0x28]

  459.         lsls r7, r6, # 31
  460.         lsrs r7, r7, # 26
  461.         str r7, [r4, # 0x18]

  462.         lsrs r7, r6, # 1
  463.         lsls r7, r7, # 31
  464.         lsrs r7, r7, # 27
  465.         str r7, [r4, # 0x18]

  466.         lsrs r7, r6, # 2
  467.         lsls r7, r7, # 31
  468.         lsrs r7, r7, # 28
  469.         str r7, [r4, # 0x18]

  470.         lsrs r7, r6, # 3
  471.         lsls r7, r7, # 31
  472.         lsrs r7, r7, # 29
  473.         str r7, [r4, # 0x18]

  474.         bl _lcdyanshi
  475.         str r3, [r4, # 0x28]        @E=0


  476.         str r3, [r4, # 0x18]    @E=1
  477.         str r5, [r4, # 0x28]

  478.         lsls r7, r0, # 31
  479.         lsrs r7, r7, # 26
  480.         str r7, [r4, # 0x18]

  481.         lsrs r7, r0, # 1
  482.         lsls r7, r7, # 31
  483.         lsrs r7, r7, # 27
  484.         str r7, [r4, # 0x18]

  485.         lsrs r7, r0, # 2
  486.         lsls r7, r7, # 31
  487.         lsrs r7, r7, # 28
  488.         str r7, [r4, # 0x18]

  489.         lsrs r7, r0, # 3
  490.         lsls r7, r7, # 31
  491.         lsrs r7, r7, # 29
  492.         str r7, [r4, # 0x18]

  493.         bl _lcdyanshi
  494.         str r3, [r4, # 0x28]    @E=0

  495.         pop {r0-r7,pc}
  496.         .ltorg


  497. _zhuanascii:                                        @ 16进制转ASCII
  498.                 @ R0要转的数据, R1长度,R2结果表首地址, r3=小数点位置
  499.         push {r0-r7,lr}
  500.         mov r7, r3
  501.         mov r5, r0
  502.         mov r6, r1
  503.         movs r1, # 10
  504. _xunhuanqiuma:
  505.         bl _chufa
  506.         mov r4, r0
  507.         muls r4, r1
  508.         subs r3, r5, r4
  509.         adds r3, r3, # 0x30
  510.         mov r5, r0
  511.         subs r6, r6, # 1
  512.         beq _qiumafanhui
  513.         cmp r6, r7
  514.         bne _meidaoxiaoshudian
  515.         movs r4, # 0x2e                @小数点
  516.         strb r4, [r2,r6]        @插入小数点
  517.         subs r6, r6, # 1
  518. _meidaoxiaoshudian:
  519.         strb r3, [r2,r6]
  520.         movs r6, r6
  521.         bne _xunhuanqiuma
  522.         pop {r0-r7,pc}
  523. _qiumafanhui:
  524.         strb r3, [r2, r6]
  525.         pop {r0-r7,pc}

  526.        
  527. _chufa:                                @软件除法
  528.         @ r0 除以 r1 等于 商(r0)余数R1
  529.         push {r1-r4,lr}
  530.         cmp r0, # 0
  531.         beq _chufafanhui
  532.         cmp r1, # 0
  533.         beq _chufafanhui
  534.         mov r2, r0
  535.         movs r3, # 1
  536.         lsls r3, r3, # 31
  537.         movs r0, # 0
  538.         mov r4, r0
  539. _chufaxunhuan:
  540.         lsls r2, r2, # 1
  541.         adcs r4, r4, r4
  542.         cmp r4, r1
  543.         bcc _chufaweishubudao0
  544.         adds r0, r0, r3
  545.         subs r4, r4, r1
  546. _chufaweishubudao0:
  547.         lsrs r3, r3, # 1
  548.         bne _chufaxunhuan
  549. _chufafanhui:
  550.         pop {r1-r4,pc}
  551.         .ltorg


  552. _nmi_handler:
  553.         bx lr
  554. _hard_fault:
  555.         bx lr
  556. _svc_handler:
  557.         bx lr
  558. _pendsv_handler:
  559.         bx lr
  560. _systickzhongduan:
  561.         ldr r2, = jishu
  562.         ldr r0, = 0xe000ed04
  563.         ldr r3, [r2]
  564.         ldr r1, = 0x02000000
  565.         adds r3, r3, # 1
  566.         str r3, [r2]
  567.         str r1, [r0]                 @ 清除SYSTICK中断
  568. aaa:
  569.         bx lr
复制代码


评分

3

查看全部评分

     
发表于 2019-5-28 09:31:42 | 显示全部楼层
这是弄技术的农民,软硬都懂,

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 12:42:40 | 显示全部楼层
进来一看,一个核桃都没有。
这个虽然不是很准确,作为参考还是可以的。
DIY就是外壳不好做,这类小仪器建议用台式电脑的坏电源外壳改装,可以做的比较好看。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 15:37:32 | 显示全部楼层
用汇编,真有耐心。
弱弱问下,写代码和割麦子那个更辛苦?

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 17:36:08 | 显示全部楼层
直接上arm汇编,现在有这种本事和耐心的少了

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 17:59:16 | 显示全部楼层
测量原理上有硬伤,精度高不了,麦粒大小、样品紧实度、小麦品质的影响,每一种测量方法都有局限性

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 18:09:51 | 显示全部楼层
查了下,小麦的水分检测都是采用干燥失重原理来做的。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 18:38:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:10:17 | 显示全部楼层
林间小溪 发表于 2019-5-28 09:31
这是弄技术的农民,软硬都懂,

我硬件一点也不懂,软件不会数学和物理也不行。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:14:11 | 显示全部楼层
qie 发表于 2019-5-28 12:42
进来一看,一个核桃都没有。
这个虽然不是很准确,作为参考还是可以的。
DIY就是外壳不好做,这类小 ...

以前厚的白铁皮做粮仓了,只有一些薄的做不了机壳,这次买了一些厚一点的白铁皮可以做机壳,慢慢练练希望能做的漂亮一些。
回复 支持 反对

使用道具 举报

     
发表于 2019-5-28 19:21:37 | 显示全部楼层
懂技术的农民,佩服!

虽然不懂麦子,不过觉得 7 楼所说有道理,感觉按这个思路可以提高精度

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:22:33 | 显示全部楼层
夏国特 发表于 2019-5-28 15:37
用汇编,真有耐心。
弱弱问下,写代码和割麦子那个更辛苦?

在您的推荐下学了一段时间IMX6ULL和LINUX,后来做东西被打断了,现在不知道是学LINUX还是学单片机,学LINUX我们这小县城根本没这方面的工作,只有一些做硬度计之类金属检测仪器的。

现在收割小麦就是摊晒和卖需要人工,一年忙不几天,就看天好不好,也没粮食烘干机。

感觉程序这东西自己写任何语言都难,用别人写的就容易。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:26:15 | 显示全部楼层
ace919 发表于 2019-5-28 17:36
直接上arm汇编,现在有这种本事和耐心的少了

汇编不难就那么几条指令,关键还是数学和物理,这两样我根本不懂,理论不行做什么也做不好。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:29:24 | 显示全部楼层
大孔景元 发表于 2019-5-28 17:59
测量原理上有硬伤,精度高不了,麦粒大小、样品紧实度、小麦品质的影响,每一种测量方法都有局限性


这种就是快速检测的准确度差一些,我这能力根本做不准,我看外国的是149M的,国内的好像是50M的。


截图_2019-05-28_19-05-32.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-5-28 19:44:02 | 显示全部楼层
1134761078 发表于 2019-5-28 18:38
这样很好呀,电路进一步的完善之后就可以开发产品了,农户需要这样的测试仪器


产品是不可能了,我没有那技术,国家对检测粮食水分的仪器管理比较严格,好像要通过检测,所以只能做着玩,我本来想做检测土壤湿度给菜地浇水的,不过农民用不到这些技术,农民就靠牙咬手摸,农业产值低用不起先进技术。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表