写的不知道好不好,有什么不对的地方还请指出,谢了。
正整数显示无异常,小数显示有点异常(小数会有精度问题,后面在处理,先给大家贴出来代码)。
本次,使用了数组用来存放要显示的数值。
用单独的数码管显示函数进行显示,之前把数码管显示函数放在数据处理里面了,那样会导致每次做无用的功。
另外,为了显示的稳定性,加入了清除数码管显示,初始化数码管代码。
最重要的是我解决了“鬼影问题”,我看别人写的数码管代码,大都是:送位选码——送段选码——延迟,然后下次循环。
这样均有产生“鬼影问题”,问题就在代码流程思路没有整好,应该这样:送位选码——送段选码——延迟——送段选码(假值,即不让数码管显示值),然后下次循环。这样思路对,数码管显示也对。
#ifndef __DT_H__
#define__DT_H__
#include sbit wei = P2^7;//锁存器位选
sbit duan = P2^6;//锁存器段选
#define dt_dt P0
//0≤x≤99999999 unsigned int 无符号整型
//将要显示的正整数临时存储在数组里面,然后循环显示数组里的元素即可
//x传递的数据10进制(x不是8位则高位不会亮)
//void dt(unsigned long int x, unsigned int y);
void convert_long_int(unsigned long int x);//原数据转换保存到数组里
//x为8位有符号小数 for 对于DS18B