本帖最后由 eehome 于 2013-1-5 09:57 编辑
void main()
{
cs_data=0xdb;
cs_su=1;
cs_su=0;
cs_data=0xfe;
cs_wei=1;
cs_wei=0;
DelayMs(50);
cs_data=0x07;
cs_su=1;
cs_su=0;
cs_data=0xfd;
cs_wei=1;
cs_wei=0;
}
共阴数码管,这段程序显示的是2.7。但是不加 DelayMs(50);这段延时语句时,为何数码管显示有问题,有残影一样,但是位选我都是先关了,再开下一个位选的啊。为什么呢?
0
|
|
|
|
忘记说了。cs_su是控制段输入的开关,cs_wei是控制为输入的开关
|
|
|
|
|
把图贴上来看一呢,没明白你的意思, 2位数码管动态扫描吗?cs_data是什么
|
|
|
|
|
数码管动态扫描,由于你的眼睛在数码管变换的那一刻不够快,所以看上去留了一块没有息影掉,延时就是为了解决这个问题
|
|
|
|
|
lovezjf234 发表于 2012-7-27 22:23
数码管动态扫描,由于你的眼睛在数码管变换的那一刻不够快,所以看上去留了一块没有息影掉,延时就是为了解 ...
这个影子能完全去掉吗?能不能告诉一下我怎么改呢。谢谢哈
|
|
|
|
|
lstcspring 发表于 2012-7-27 22:02
把图贴上来看一呢,没明白你的意思, 2位数码管动态扫描吗?cs_data是什么
是的。cs_data就是数据输入,段选开的时候,作为段选输入,位选开的时候作为位选输入。两个数码管是共阴连接的
|
|
|
|
|
不知道是不是这个原因:
你在段选之后,接下来开始位选,此时单片机引脚输出的还是段选的电平,即cs_data=0xdb;
当位选开关打开时,输出到数码管的还是之前的段选电平,虽然时间很短。
所以我建议你试试看在段选之后位选之前加一句消影,cs_data=0xff,先关闭每一位的显示。
即:
cs_data=0xdb;
cs_su=1;
cs_su=0;
cs_data=0xff;
cs_data=0xfe;
cs_wei=1;
cs_wei=0;
|
|
|
|
|
那一方,彼岸花 发表于 2012-8-2 11:35
不知道是不是这个原因:
你在段选之后,接下来开始位选,此时单片机引脚输出的还是段选的电平,即cs_data=0 ...
我已经找到解决办法了。你说的也对吧,谢谢哈{:soso_e121:}
|
|
|
|
|