标题: 单片机数码管显示疑问,这个7的f段亮了变成带钩的7了 [打印本页]

作者: 文凤轩    时间: 2018-9-5 07:22
标题: 单片机数码管显示疑问,这个7的f段亮了变成带钩的7了
这个温度计用的共阳的数码管,这个7的f段亮了变成带钩的7了,请师傅们指点下改那里能不让f段亮变成正常的7,谢谢您!

20180905_003132.jpg (44.86 KB, 下载次数: 120)

20180905_003132.jpg

20180905_003304.jpg (47.9 KB, 下载次数: 117)

20180905_003304.jpg

作者: 文凤轩    时间: 2018-9-5 07:23
后面这张图片上传后这么模糊呀,我拍的好清晰的
作者: 文凤轩    时间: 2018-9-5 08:32
#include <AT89X52.h> #define uint unsigned int#define uchar unsigned char           //宏定义#define SET  P3_1                            //定义调整键#define DEC  P3_2                            //定义减少键#define ADD  P3_3                            //定义增加键#define BEEP P3_6                            //定义蜂鸣器#define ALAM P1_2                                //定义灯光报警#define DQ   P3_7                             //定义DS18B20总线I/O        bit shanshuo_st;                            //闪烁间隔标志bit beep_st;                                     //蜂鸣器间隔标志sbit DIAN = P0^5;                        //小数点uchar x=0;                                      //计数器signed char m;                                     //温度值全局变量uchar n;                                              //温度值全局变量uchar set_st=0;                             //状态标志signed char shangxian=38;                  //上限报警温度,默认值为38signed char xiaxian=5;                   //下限报警温度,默认值为38//uchar code  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};//
作者: 文凤轩    时间: 2018-9-5 08:33
#include <AT89X52.h> #define uint unsigned int#define uchar unsigned char           //宏定义#define SET  P3_1                            //定义调整键#define DEC  P3_2                            //定义减少键#define ADD  P3_3                            //定义增加键#define BEEP P3_6                            //定义蜂鸣器#define ALAM P1_2                                //定义灯光报警#define DQ   P3_7                             //定义DS18B20总线I/O        bit shanshuo_st;                            //闪烁间隔标志bit beep_st;                                     //蜂鸣器间隔标志sbit DIAN = P0^5;                        //小数点uchar x=0;                                      //计数器signed char m;                                     //温度值全局变量uchar n;                                              //温度值全局变量uchar set_st=0;                             //状态标志signed char shangxian=38;                  //上限报警温度,默认值为38signed char xiaxian=5;                   //下限报警温度,默认值为38//uchar code  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};///*****显示开机初始化等待画面*****/void Disp_init(void)    {        P0 = ~0x80;      //显示----        P2 = 0x7F;        Delay(200);        P2 = 0xDF;        Delay(200);           P2 = 0xF7;        Delay(200);        P2 = 0xFD;        Delay(200);        P2 = 0xFF;         //关闭显示}/*****显示温度子程序*****/void Disp_Temperature(void)     //显示温度{        P0 = ~0x98;      //显示C        P2 = 0x7F;        Delay(100);        P2=0xff;        P0=~LEDData[n];    //显示个位        P2 = 0xDF;        Delay(100);        P2=0xff;        P0 =~LEDData[m%10];    //显示十位        DIAN = 0;         //显示小数点        P2 = 0xF7;        Delay(100);        P2=0xff;        P0 =~LEDData[m/10];    //显示百位        P2 = 0xFD;        Delay(100);        P2 = 0xff;         //关闭显示}/*****显示报警温度子程序*****/void Disp_alarm(uchar baojing){        P0 =~0x98;      //显示C        P2 = 0x7F;        Delay(100);        P2=0xff;        P0 =~LEDData[baojing%10]; //显示十位        P2 = 0xDF;        Delay(100);        P2=0xff;        P0 =~LEDData[baojing/10]; //显示百位        P2 = 0xF7;        Delay(100);        P2=0xff;        if(set_st==1)P0 =~0xCE;        else if(set_st==2)P0 =~0x1A; //上限H、下限L标示        P2 = 0xFD;        Delay(100);        P2 = 0xff;         //关闭显示
作者: 杨雪飞    时间: 2018-9-5 08:50
看他中括号里的数组,第八个的十六进制是怎么写的。
作者: 杨雪飞    时间: 2018-9-5 08:55
这个不看你线路的解法或者你程序中数组是没法给你答案的,不同的接法这个是不一样的。
作者: a89588038    时间: 2018-9-5 09:14
把程序放上来不要图片,图片看不清楚
作者: yeyuting    时间: 2018-9-5 09:31
不同的接法这个是不一样的
作者: 杨雪飞    时间: 2018-9-5 09:43
共阳数码管,低电平有效,7是0XF8是不带勾的7啊,带勾的7是0XD8
作者: 杨雪飞    时间: 2018-9-5 09:48
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff
这是个数组是0-9,最后一个0XFF是全熄状态
0XF8     

H    G    F    E     D    C    B    A
1     1    1    1     1    0    0    0
8     4    2    1     8    4    2     1
      F                          8
对应的数码管只亮ABC三个笔画的嘛



作者: wc86110    时间: 2018-9-5 10:09
习惯就好,就像 6 和 9 一样多一横少一横都是还是那个数字
作者: 阿凯152    时间: 2018-9-5 10:17
不就是字库定义问题,很简单,看仔细就可以找到。
作者: qqooqq    时间: 2018-9-5 10:24
修改一下代码
作者: 人中狼    时间: 2018-9-5 10:45
uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B}
把这里的0X47改成0X07就可以了
作者: 文凤轩    时间: 2018-9-5 17:33
谢谢师傅们的耐心解答谢谢
作者: 文凤轩    时间: 2018-9-5 18:14
问题已经解决了把0x47改成0x45好了,谢谢师傅们




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1