3781|1

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

PIC实现4位数码管扫面显示不正常 [复制链接]

小弟在初学PIC时候遇到了这个难处。
我用PIC扫描时总是不能实现正常显示。以下是我的代码
  1. unsigned int k;
  2. void delay(ms)
  3. {
  4.         int a,b;
  5.         for(a=ms;a>0;a--)
  6.                         for(b=11;b>0;b--);
  7. }

  8. void main()
  9. {

  10.         TRISC=0x00;    //用C口做片选,D口做段选
  11.         TRISD=0x00;
  12.         TRISB2=0;
  13.         while(1)
  14.         {

  15.         PORTD=0XB0;    //D口输出数据表格第1个数据0
  16.         PORTC=0x01;        //点亮第1位数码管
  17.         delay(1);            //延时一定时间,保证数码管亮度

  18.         PORTD=0XA4;    //显示数据1
  19.         PORTC=0x02;
  20.         delay(1);
  21.         
  22.         PORTD=0XF9;    //显示数据2
  23.         PORTC=0x04;
  24.         delay(1);

  25.         PORTD=0XC0;    //显示数据3
  26.         PORTC=0x08;
  27.         delay(1);

  28.      }
  29.        
  30. }
复制代码

这样做不能使数码管显示正常,同学说是因为片选改变时间跟段选数据改变时间不一样有关。于是我又换了种方法。
用D口做8位片选输出,每个输出端与锁存器74LS373相连,通过B2口的高低电平控制锁存器输出端何时关闭与开启,来让片选与段选挫开。

  1. unsigned const char table[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};         //0,1,2,3,4,5,6,7,8,9
  2. unsigned const char table1[]={0x08,0x04,0x02,0x01};         //片选 1000,0100,0010,0001四个
  3. void delay(ms)
  4. {
  5.         int a,b;
  6.         for(a=ms;a>0;a--)
  7.                         for(b=110;b>0;b--);
  8. }
  9. void main()
  10. {

  11.         TRISC=0x00;  //C口做片选
  12.         TRISD=0x00;  //D口做段选

  13.         TRISB2=0;  //用B2口作为控制锁存器是否有效,低电平使锁存器74LS373的(OE)'的有效
  14.         while(1)
  15.         {
  16.                 for(k=4;k>0;k--)
  17.                 {
  18.                         RB2=1;     //关闭锁存器的输出
  19.                         PORTD=table[k-1];   
  20.                         PORTC=table1[k-1];     //先片选
  21.                         RB2=0;                //开启寄存器的输出,开始段选
  22.                          delay(1);         //延时1ms
  23.                  }
复制代码

最新回复

切换到下一个位显示时,先把上一位的显示清0,再下一位片选,一然的话,会有拖影现像,这样速度快的话,就是乱乱的一片了。  详情 回复 发表于 2009-8-31 18:10
点赞 关注
 

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
切换到下一个位显示时,先把上一位的显示清0,再下一位片选,一然的话,会有拖影现像,这样速度快的话,就是乱乱的一片了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表