一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: zhupingheng

冯老师,fat进来帮忙!关于以前那个LC+CE表的问题

  [复制链接]
发表于 2011-8-11 15:19 | 显示全部楼层
回复 20# zhupingheng


时隔太久,现在我机上也没有BASCOM编译器,不过刚粗读了一遍代码,你目前的情况是档位切换正常,那这样改一下:

*************************************************************
'/////返回到电容测量//////
   If I = 6 Then
      I = 2       '返回到电容测量
      Enable Ovf1
      Enable Ovf2
      Disable Int0
      Disable Ovf0
      Portd.3 = 1
      K = 1
      M = 1
   End If
Loop
End

*************************************************************   
在代码中找到上面的红色这一行(我用记事本打开的,看不到行号,你自己找一下吧,对照上下文应该不会找错的),将红色语句入为I=1,然后编译、写片、运行,这样按开关S切换完各档位后,再按S就跳自检重新初始化一次,这样应该能看到自检了吧
回复

使用道具 举报

 楼主| 发表于 2011-8-11 16:54 | 显示全部楼层
回复 21# fat

按照fat老师的指导改完编译后,现在确实在按完所有换挡后出现了“set ok....”,但是这样跟作者的意图就不同了吧,作者是开机后自检,在切换过程中并不会进入到set ok...
麻烦fat大哥再帮俺仔细瞧瞧,bascom软件冯老师曾上传过。https://www.yleee.com.cn/attachment.php?aid=MTUyODR8YWFjYjI4MjJ8MTMxMzA1MjcwNXxmNmRjY29qMVBlRVNFMWVnUWlqd2pidFF4R1E0WTAzdXc0NDdNUStyMGRtcDNYWQ%3D%3D


    IMG_7122.JPG
回复

使用道具 举报

发表于 2011-8-11 17:08 | 显示全部楼层
自检的过程,是MCU根据程序内置的标准电容值,去测量另外一个振荡电容和振荡电感的过程,因为我们业余条件下自制使用的元件温漂大小不同,有人用铁盒子装起来使用,有人裸奔着用,所以稳定性因人而异,各档切换之后再重新自检一次,计算最新(温漂后)的振荡元件值,并没有坏处,倒也不存在违背原作者意图的问题。我自己的就修改成可以重新自检的,这样温漂后不用重新开关电源来重新自检。

因此,只要你制作的测量结果正常(与已知“标准元件”比较),那就说明硬件和程序配合没有大问题,至于一开始为什么没出自检画面,要单步跟踪下看看,最好有仿真器,可以硬件设断点,没仿真器的话,也可以按我上面说的,自己加人工断点试试。
回复

使用道具 举报

 楼主| 发表于 2011-8-11 17:40 | 显示全部楼层
本帖最后由 zhupingheng 于 2011-8-11 17:43 编辑

回复 23# fat


    没看明白程序中的“J”指啥?它的值是通过什么进行改变,开机不自检,我分析了可能是这段代码的原因,好像全部跳过了
还有那个电源开关S2按下跟开机自检啥关系?从程序中还没看出来
Do
   '/////按键处理/////
   If Pind.7 = 0 Then                                       'S1
      Waitms 40
         If Pind.7 = 0 Then
            Incr I
            Bitwait Pind.7 , Set
         End If
   End If
   '/////电感L1,电容C1计算/////
   If I = 1 Then
      If J = 1 Then
         Lcd "  L_C_CE meter"
         Lowerline
         Lcd "    20081217"

从上面这段程序来看,当按下档位切换开关S1后,等待一段时间,再判断。如果按键确实按下,则I的值加1,然后等待S1释放。
现在的问题是I肯定=1了,从程序没有开机显示"  L_C_CE meter"和"    20081217"可以判断是由于J不等于1,但是J是什么呢?如果可以让J等于1,那不就可以执行这个显示了??

回复

使用道具 举报

发表于 2011-8-11 17:48 | 显示全部楼层
J好象就是作个标记用的,初值为1,第一次时显示版权信息。
*****************
   End If
  J=1  <----这里加上一这句
Loop
End

'/////计数中断/////
*****************
回复

使用道具 举报

发表于 2011-8-11 19:21 | 显示全部楼层
回复  fat
    没看明白程序中的“J”指啥?它的值是通过什么进行改变,开机不自检,我分析了可能是这 ...
zhupingheng 发表于 2011-8-11 17:40 http://116.255.141.47/images/common/back.gif

从程序看好像I没有等于1,是等于2了才进入C测试的界面。J=1是上面已经赋值的,在此之前没有变化
回复

使用道具 举报

 楼主| 发表于 2011-8-11 21:20 | 显示全部楼层
回复 25# fat


    J确实是个标志,但是开始时赋了初值1,并且I=1,所以按理应该执行下面的指令
If I = 1 Then
      If J = 1 Then

         Lcd "  L_C_CE meter"
         Lowerline
         Lcd "    20081217"

         Waitms 1500                                        '等待F1计数
         Portd.3 = 0                                        '接入标准电容C2
         Waitms 1500                                        '等待f2计数


接通电源S2时,开始从头执行指令,此时右下角的选择按键未被按下,因此Pind.7 = 1,此时就会执行上面的指令(自检和版权显示)。现在这些语句被跳过了,会不会跟单片机速度与液晶刷新速度有关??
回复

使用道具 举报

发表于 2011-8-11 21:40 | 显示全部楼层
回复  fat


    J确实是个标志,但是开始时赋了初值1,并且I=1,所以按理应该执行下面的指令
If I =  ...
zhupingheng 发表于 2011-8-11 21:20 https://www.yleee.com.cn/images/common/back.gif


那好办,把上面的分支入口条件全部+1,让第一次什么也不执行,当I=2时才进入初始化,这样等你按键后再初始化了
回复

使用道具 举报

 楼主| 发表于 2011-8-11 22:49 | 显示全部楼层
回复 28# fat


    刚刚无意中用表笔触碰M8的13脚,就是程序中那个PIND.7,发现继电器会动作,本来无显示的液晶,结果直接就跳入到电容test c...测试档了,继续查找原因
回复

使用道具 举报

发表于 2011-8-12 01:43 | 显示全部楼层
PIND.7是按键吧,你用表笔碰它,等于是注入信号了,另外一支表笔接着地吧
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-14 02:42 , Processed in 0.032188 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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