您的位置: proteus仿真社区 >> 论坛 >> 仿真求助专区 >> 查看帖子
字体: 小 中 大 | 打印 发表于: 2008-6-27 13:47 作者: fzpxp 来源: proteus仿真社区
7seg.JPG
QUOTE:
原帖由 fzpxp 于 2008-6-27 13:47 发表 ISIS中,7SEG-MPX4-CC能否实现显示四段不同数字?比如 “1234”,我现在只会实现同样的字符,比如“3333”,如附件中图示。如果能实现具体应该怎么做?
7-seg.rar(2008-06-27 15:03:51, Size: 31.7 KB, Downloads: 1)
Snap1.jpg
7-SEG.rar(2008-06-27 17:50:36, Size: 16.3 KB, Downloads: 16)
原帖由 fzpxp 于 2008-7-11 09:40 发表 请问大哥, C程序中初始引入unsigned char image[4]={0xff,0xff,0xff,0xff};并且数组全都是0xff是什么目的呢?还有延时子函数中 i = 1000; while (i--)0 = 0xFF;的P0 = 0xFF是什么意思,我试着把这句去掉好像也没影响 ...
原帖由 fzpxp 于 2008-7-11 10:24 发表 1.就是程序初始化时没有灯亮了? 2."是让 P0 端口不接地一闪时"这句话是什么意思,我不太理解?
原帖由 fzpxp 于 2008-7-11 11:22 发表 刚才我又试了一下,延时中加P0 = 0xFF时可以正常显示“1234”,去掉P0 = 0xFF这句后第一二三个数码管都不亮,只有第四个显示"L",这就是您所说的“数据管会显示的更清晰”吗?从程序上我理解不了为什么不加P0 = 0xFF,会显示成"L",理论上i的值越小就是扫描频率越高,应该显示的越稳定清晰。但是试着把i该成50可看到"12"偶尔会灭一次,i=10,所有数码管就都不稳定了,为什么会出现这种情况? ...
图.jpg
最新回复
budhy (2008-6-27 14:53:02)
QUOTE:
当然能够实现显示四段不同数字。把你的原理图和程序船上来,我们会帮你的。fzpxp (2008-6-27 15:03:51)
(2008-06-27 15:03:51, Size: 31.7 KB, Downloads: 1)
budhy (2008-6-27 17:48:10)
[ 本帖最后由 budhy 于 2008-6-27 17:50 编辑 ]
Snap1.jpg
(2008-06-27 17:50:36, Size: 16.3 KB, Downloads: 16)
fzpxp (2008-6-27 21:04:12)
fzpxp (2008-7-11 09:40:24)
还有延时子函数中 i = 1000; while (i--)
budhy (2008-7-11 09:51:22)
QUOTE:
[ 本帖最后由 budhy 于 2008-7-11 09:57 编辑 ]
fzpxp (2008-7-11 10:24:32)
2."是让 P0 端口不接地一闪时"这句话是什么意思,我不太理解?
budhy (2008-7-11 10:32:27)
QUOTE:
fzpxp (2008-7-11 10:36:33)
2."是让 P0 端口不接地一闪时"就是P0口瞬间灭一下吧?但是这样做是什么目的呢?delay过后第二个数码管位选选通,第一个位选断开(P2 = mask[1];)是不是就没有必要在延时中加P0 = 0xFF;了?还有刚才您为什么说“实际线路上很需要这样”。请赎我是不是有点钻牛角,不吝赐教
fzpxp (2008-7-11 11:22:53)
再追加一个问题:
3.理论上i的值越小就是扫描频率越高,应该显示的越稳定清晰。但是试着把i该成50可看到"12"偶尔会灭一次,i=10,所有数码管就都不稳定了,为什么会出现这种情况?
budhy (2008-7-11 13:02:52)
QUOTE:
fzpxp (2008-7-11 13:05:34)
其中t11,t21,t31,t41分别表示四个数码管的接通时序,t10,t20,t30,t40分别表示四个数 码管的关断时序。
其中t11=t21=t31=t41;t10=t20=t30=t40. t11="delay()" //“*”表示*指令执行的时间
t10="P0 = image[1]"+"P2 = mask[1]"
如果把延时程序中的P0 = 0xFF;语句去掉则第一个数码管显示"1"延时完后瞬间显示一下"2"才关断,然后第二个数码管显示“2”延 时完后瞬间显示以下"3"才关断.....其中瞬间指的是"P0 = image[1];"+P2 = mask[1]; 这条指令的执行时间,
所以第一个数码管应该关断时错误的显示了第二个数码管应该显示 的"2",如图2,就是说四个数码管没有同时关断的时刻,如图2
t11="delay()"+"P0 = image[1]"+"P2 = mask[1]"
以上是我对为什么DELAY中加P0 = 0xFF;的理解,准确的说不是加上后显示更清晰,而是 去掉后四个数码管显示通断时序有点错乱了。
以下是我的一点其他见解,我觉得P0 = 0xFF可以不加而保证通断时序不错乱
您的程序中 P0 = image[0]; P2 = mask[0]; delay(); 只需要调换一下顺序,先选则位选再选择段选,其他三个数码管也依次换一下顺序 P2 = mask[0]; P0 = image[0]; delay(); 经测试未再出现“L”这样的显示错误,而能正常显示“1234”
请大哥指教一下,谢谢!
图.jpg