加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用PROTEUS对74HC595连接数码管仿真的一个问题分析

(2011-12-22 13:05:14)

   由于单片机端口不够,在用PROTEUS对数码管进行仿真时使用了74HC595。程序编好之后发现显示的是乱码,刚开始还以为电路连接有问题,经反复检查之后确信不是电路的问题。问题出在了显示程序,一般的认为74HC595的输入都是低位在前高位在后,但在PROTEUS中应该是高位在前低位在后。

其部分程序如下:

void disp_smg(uchar DAT,uchar position)
{

  uchar n;
  for(n=0;n<=7;n++)   //向HC595输出一个字节
    {
 
     if(DAT&0x80)         //判断高位

       // if(DAT&0x01)    //低位判断,PROTEUS仿真软件里面显示的是乱码

      PORTB|=BIT(1);   //写数据位 PORTB|=BIT(1)
    else
        PORTB&=~BIT(1); 
 DAT <<= 1;    

       //DAT>>1;     //低位开始判断,右移
  PORTB|=BIT(0);
  PORTB&=~BIT(0);
  Delay_us(4);
 
 
 }
  PORTB&=~BIT(2);//
  Delay_us(4);
  PORTB|=BIT(2); //产生时钟上升沿,移位寄存器的数据进入锁存器,更新显示数据
  Delay_us(4);
 
  switch(position)
    {
   case 1:SET_WEI3;CLR_WEI4;CLR_WEI5;CLR_WEI6;break;
   case 2:CLR_WEI3;SET_WEI4;CLR_WEI5;CLR_WEI6;break;
   case 3:CLR_WEI3;CLR_WEI4;SET_WEI5;CLR_WEI6;break;
   case 4:CLR_WEI3;CLR_WEI4;CLR_WEI5;SET_WEI6;break;
   default:break;
 }
  Delay_ms(2);//延时2ms

http://s9/middle/77e3eca94b4a7551fa4c8&690



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有