一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: zjhchp
收起左侧

[其他综合] 求自制LCD电压电流表电路图和程序

[复制链接]
 楼主| 发表于 2013-10-8 21:31 | 显示全部楼层
试制已成功了! 用的是1603的屏!





IMG_4615_调整大小.JPG
IMG_4616_调整大小.JPG
IMG_4618_调整大小.JPG
 楼主| 发表于 2013-10-8 21:43 | 显示全部楼层
本帖最后由 zjhchp 于 2013-10-8 21:44 编辑

求助,我用的是12C5A60S2 ,电压档一开始用的分压电阻小了,不知怎么搞的电压显示总是51V,断了P1.0口还是显示51V,可能1脚击坏了。请高手看一下,能不能改成P1.2口,汇编的程序。谢谢!!

START:        MOV        P1ASF,#00000011B        ;开启P1.0和P1.1作为AD的输入端口
        MOV        AUXR1,#04H        ;设置AD输出方式
        MOV        SP,#5FH        ;设置栈底
        MOV        IJISHU,#00H
        MOV        UJISHU,#00H





        MOV        ADC_CONTOR,#11001000B        ;开启P1.0的AD转换        电压
        LCALL        AD        ;调用AD子程序
        MOV        A,ADC_RES
        CJNE        A,UH,MAINU
        MOV        A,ADC_RESL
        CJNE        A,UL,MAINU
        MOV        UJISHU,#00H
        SJMP        MAINU1
MAINU:        INC        UJISHU
        MOV        A,#20
        CJNE        A,UJISHU,MAINU1
        MOV        UJISHU,#00H
        MOV        UH,ADC_RES        ;保存电压数据
        MOV        UL,ADC_RESL
MAINU1:        MOV        0AH,UH
        MOV        0BH,UL
        LCALL        TO10
        MOV        10H,18H
        MOV        11H,19H
        MOV        12H,1AH
        MOV        A,0AH
        RRC        A
        MOV        0AH,A
        MOV        A,0BH
        RRC        A
        MOV        0BH,A
        MOV        A,0AH
        RRC        A
        MOV        A,0BH
        RRC        A
        MOV        08H,A        ;08H保存8位电压数据
        MOV        B,09H
        MUL        AB
        MOV        R2,B
        MOV        R3,A
        MOV        R4,#61H        ;/25000
        MOV        R5,#0A8H
        LCALL        DIVD
        MOV        A,R7
        ADD        A,#30H
        MOV        13H,A
        MOV        R4,#09H
        MOV        R5,#0C4H        ;/2500
        LCALL        DIVD
        MOV        A,R7
        ADD        A,#30H
        MOV        14H,A
        MOV        R4,#00H
        MOV        R5,#250        ;/250
        LCALL        DIVD
        MOV        A,R7
        ADD        A,#30H
        MOV        15H,A
        MOV        R4,#00H
        MOV        R5,#25        ;/25
        LCALL        DIVD
        MOV        A,R7
        ADD        A,#30H
        MOV        16H,A
        MOV        A,R3
        CLR        C
        RLC        A
        CLR        C
        RLC        A
        MOV        R3,A
        MOV        R5,#10
        LCALL        DIVD
        MOV        A,R7
        ADD        A,#30H
        MOV        17H,A
        LCALL        XIANSHI
        LJMP        MAIN

点评

楼下已经给出官方手册的寄存器分析,希望能有所帮助。  发表于 2013-10-10 15:49
发表于 2013-10-10 15:45 | 显示全部楼层
根据STC手册的官方寄存器图示

QQ图片20131010151750.jpg

START:        MOV        P1ASF,#00000011B        ;开启P1.0和P1.1作为AD的输入端口

这里也就是00000011B(二进制),也就是03H(16进制)按图示是

bit
B7
B6
B5
B4
B3
B2
B1
B0
name
P17ASF
P16ASF
P15ASF
P14ASF
P13ASF
P12ASF
P11ASF
P10ASF
set
0
0
0
0
0
0
1
1


也就是P10ASF为1时,开启ADC1,P11ASF为1时开启ADC2,通过这个二进制排列,可以组出8个ADC口的状态

MOV        ADC_CONTOR,#11001000B        ;开启P1.0的AD转换        电压

bit
B7
B6
B5
B4
B3
B2
B1
B0
name
ADCPOWER
SPEED1
SPEED0
ADC_FLAG
ADC_START
CHS2
CHS1
CHS0
set
1
1
0
0
1
0
0
0


QQ图片20131010153836.jpg

所以CHS2-CHS0都设置0

QQ图片20131010154238.jpg

可以自己修改相应的数值重新定义需要使用的ADC通道了


 楼主| 发表于 2013-10-10 19:55 | 显示全部楼层
whty2010 发表于 2013-10-10 15:45
根据STC手册的官方寄存器图示

非常谢谢!终于改好了。
我的P10口坏了,改成了P12口成功了!
发表于 2013-10-10 21:03 | 显示全部楼层
zjhchp 发表于 2013-10-10 19:55
非常谢谢!终于改好了。
我的P10口坏了,改成了P12口成功了!

其实只要多看看官方的PDF手册,用STC12C204E改就可以了,总程序大小不会超过2K。
 楼主| 发表于 2013-10-10 22:35 | 显示全部楼层
whty2010 发表于 2013-10-10 21:03
其实只要多看看官方的PDF手册,用STC12C204E改就可以了,总程序大小不会超过2K。

是STC 15F204E 吧,我也想把程序给移植过去!
发表于 2013-10-10 22:55 | 显示全部楼层
zjhchp 发表于 2013-10-10 22:35
是STC 15F204E 吧,我也想把程序给移植过去!

是STC15F204E。这个汇编程序只适合28脚的版本,如果是20脚版本的IO口不够用,要注意IO数量。
 楼主| 发表于 2013-10-11 06:25 | 显示全部楼层
whty2010 发表于 2013-10-10 22:55
是STC15F204E。这个汇编程序只适合28脚的版本,如果是20脚版本的IO口不够用,要注意IO数量。

请问,STC 15F204E   20脚和28脚都没有的P0端口吧,是不是要改到P3端口
上吧?

[img]file:///C:/Users/Administrator.1Z7H41QRPCYTD8G/AppData/Roaming/Tencent/Users/1494107030/QQ/WinTemp/RichOle/30~J82I2%7DD)%7B16N$I9[TV$E.jpg[/img]

发表于 2013-10-11 10:06 | 显示全部楼层
28脚的版本有完整的P2口,LCD数据线挂在P2端口
发表于 2013-10-12 14:22 | 显示全部楼层
zjhchp 发表于 2013-10-10 22:35
是STC 15F204E 吧,我也想把程序给移植过去!

移植的时候要注意 STC12C5A60S2 和 STC15F204EA 的AD寄存器有部分不同。

研究STC官方的手册, STC15F204EA 的AD辅助寄存器没有AUXR1(地址位A2H),也就是下面这句的定义
    AUXR1 EQU A2H ;设置寄存器
STC15F204EA 是不能用的,这个MCU只有AUXR寄存器(地址位8EH)

再者这句里也要改的
     MOV AUXR1,#04H ;设置AD输出方式
STC15F204EA 也是不能用的,因为只能设置成AUXR寄存器(地址位8EH)

QQ图片20131012141401.jpg

而且这个汇编程序做出的表是有缺陷的,程序中设定AD输出的方式只取了高8位,
AUXR1的赋值是04H,二进制是00000100B,也就是说AURJ值是1表示取高8位数据ADC_RES而忽略低2位数据ADC_RESL,
实际只使用了8位精度,精度为256,和10位精度的1024查了一大截,只能说是玩具了。

修改的时候需要把10位精度带入才能达到满意的结果,而且需要扩展电流值到毫安等级,汇编程序中只达到了10MA等级,这是个缺憾。

本版积分规则

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

GMT+8, 2024-5-5 16:28 , Processed in 0.047713 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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