找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5054|回复: 2
打印 上一主题 下一主题
收起左侧

为什么只能让点阵一半消隐

[复制链接]
跳转到指定楼层
楼主
ID:43591 发表于 2012-8-3 01:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char
sbit cp=P2^4;     //74hc164芯片的脉冲端
sbit dsb=P2^5;    //74hc164芯片的数据输入端
sbit wei=P2^7;
sbit du=P2^6;
uchar code table[]={0xef,0x01,0x6d,0x6d,0x01,0xef,0xef,0xef};    //列值,HC573
uchar code sheet[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};    //行值 HC164
/************************************************************************************************/
void delay_xms(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=125;y>0;y--);      //12MHz下时间为1002us=1.002ms  //y=115时,11.0592MHz
}                //时间为1.00044ms
/***********************************************************************************************/
void shift(uchar temp)
{
 uint i;
 for(i=8;i>0;i--)
  {
   dsb=temp&0x80;
   cp=0;
   cp=1;
   temp<<=1;    //74hc164同步移位首先移到D0位
  }
}
/************************************************************************************************/
/***********************************************************************************************/
void main()
{
 uint j;
 wei=1;
 P0=0xff;
 wei=0;
 while(1)
 {
  for(j=0;j<8;j++)
   {
     du=1;
     P0=table[j];        
     du=0;
     shift(sheet[j]);     
     delay_xms(1); 
     du=1;         P0=0xff;
     du=0; 
         shift(0x00);  //顺序反了也不能消隐
        }
     }
}  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2012-8-3 01:44 | 只看该作者
一半消隐?我先拿到板子上试试了再回帖
回复

使用道具 举报

板凳
ID:43591 发表于 2012-8-3 20:36 | 只看该作者
你调试可以吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表