找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1498|回复: 5
打印 上一主题 下一主题
收起左侧

温度传感器数码管问题求大神赐教,在线等

[复制链接]
跳转到指定楼层
楼主
ID:224119 发表于 2017-8-2 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人小白一个,怎么使以下程序在十位加入小数点。
程序如下。
#include        "config.h"       

//宏定义,数码管a-g各段对应的比特,更换硬件只用改动以下8行
#define    a 0x01                  //  AAAA
#define    b 0x04                    // F    B
#define    c 0x10                    // F    B
#define    d 0x40                    //  GGGG
#define    e 0x80                    // E    C
#define    f 0x02                    // E    C
#define    g 0x08                    //  DDDD    H
#define    h 0x20

//用宏定义自动生成段码表,很好的写法,值得学习
//更换硬件无需重写段码表
unsigned char code LED_table[]={
        a+b+c+d+e+f,                   //"0"
        b+c,                           //"1"
        a+b+d+e+g,                       //"2"
        a+b+c+d+g,                       //"3"
        b+c+f+g,                       //"4"
        a+c+d+f+g,                       //"5"
        a+c+d+e+f+g,                   //"6"
        a+b+c,                           //"7"
        a+b+c+d+e+f+g,                   //"8"
        a+b+c+d+f+g,                   //"9"
        b+c+e+f+g,                       //"H"
        a+f+e+g,                       //"C"
        d+e+f,                           //"L"
        g,                               //"-"
        h,                                                                //"."
        0x00                           //black
};



extern void Dlay(uint16 t);
extern uint DisplayData2 ;
uchar Keybit1 =0;
uchar Keybit2 =0;
void Display(uint DisplayData )                        //形参
{
        //////////////////////////////////////数码管显示
        P0 = 0X00;//清除显示
        P3 = 0x00;
        P0 = 0X80;//个位显示
        P3 = LED_table[DisplayData % 10];
        Dlay(4000);

        P0 = 0X00;//清除显示
        P3 = 0x00;
        P0 = 0X40;//十位显示
        P3 = LED_table[DisplayData % 100 / 10];       
        Dlay(4000);

        P0 = 0X00;//清除显示
        P3 = 0x00;
        P0 = 0X08;//百位显示
        P3 = LED_table[DisplayData % 1000 / 100];
        Dlay(4000);

        /////////////////////////////////////////按键读取
        P0 = 0X00;//清除显示
        P3 = 0x00;
        P3CR =Bin(11100110);        //3.4 ad口 设为输入        ,3.0-3.3开关输入
        Dlay(100);
        if((P3 & 0x10) ==0){
                if(Keybit1 ==0){
                        DisplayData2 -- ;
                        Keybit1 =1;
                }
        }else{
                Keybit1 =0;
        }

        if((P3 & 0x08) ==0){
                if(Keybit2 ==0){
                        DisplayData2++;
                        Keybit2 =1;
                }
        }else{
                Keybit2=0;
        }
       
        P3CR =Bin(11111111);        //3.3 ad口 设为输入        ,3.0-3.3开关输入
               

}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:224122 发表于 2017-8-2 16:08 | 只看该作者
P3 = LED_table[DisplayData % 100 / 10] + 0x20;   
回复

使用道具 举报

板凳
ID:224122 发表于 2017-8-2 16:09 | 只看该作者
        P0 = 0X00;//清除显示
        P3 = 0x00;
        P0 = 0X40;//十位显示
        P3 = LED_table[DisplayData % 100 / 10] + 0x20;        
        Dlay(4000);
回复

使用道具 举报

地板
ID:224119 发表于 2017-8-2 18:23 | 只看该作者
1047001555 发表于 2017-8-2 16:09
P0 = 0X00;//清除显示
        P3 = 0x00;
        P0 = 0X40;//十位显示

嗯。谢谢解惑
回复

使用道具 举报

5#
ID:152163 发表于 2017-8-2 20:02 | 只看该作者
那要看你的数码管是几段的 有的加不上
回复

使用道具 举报

6#
ID:220231 发表于 2017-8-6 01:05 来自手机 | 只看该作者
P3 = LED_table[DisplayData % 100 / 10]|0x80就行
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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