液压滤芯厂家
免费服务热线

Free service

hotline

010-00000000
液压滤芯厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

51单片机点阵88上下左右移显示C程序

发布时间:2020-07-21 17:45:34 阅读: 来源:液压滤芯厂家

最近在研究点阵,这东西看起来简单,但是要完全掌握它,可是要花一定时间的!我现在做得8*8点阵硬件电路是这样的,行采用74HC138+三极管8550驱动,列采用74HC595驱动,这种电路是非常用的,其次的扫描原理就是,先打开第一行,然后送代码给列,即595端,像这样扫描8次行,一个字就完成了,具体原理图如下图: 下面我将我写得代码下载地址分享下:

一、上移:#includereg52.h>#define uchar unsigned char#define uint unsigned int#define LINE P1//定义行线IO口,即74HC154控制端#define shudu 50//字移动的速度sbit DATA=P3^5;//74HC595数据端sbit CLK=P3^7;//74HC595移位脉冲端sbit CLKR=P3^6;//74HC595数据锁存端uint word;//字节变量uchar line;//字节变量uchar code table[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x18,0x00,0x7E,0x00,0x00,0x08,0x08,0x7F,0x49,0x7F,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//字模数组void delay(uchar z){uchar x,y;for(x=8;x>0;x--)for(y=z;y>0;y--);}/********************************//**74HC595移位寄存器送数子函数***//********************************/void song(uchar z)//带参数函数{uchar num,hang;//定义变量hang=z;//将形参给变量for(num=0;num8;num++)//移动8次将数据发送完毕{if(hang0x01==1)//将高7位屏蔽掉,保留最低位判断DATA=1;//为1就将74HC595数据端置1else DATA=0;//否则给0CLK=0;//上升沿送走数据CLK=1;//高电平形成上升沿hang>>=1;//将数移走一位}}/********************************//*将一行数据转换出来,然后显示*//********************************/void xian(){uchar i,f;for(i=0;ishudu;i++)//一字移动的速度{word=f;//将字暂存器给计数器for(line=0;line8;line++)//扫描8次,即完成一个字的移动{song(~table[word]);CLKR=1;//在74HC595处锁存起来CLKR=0;CLKR=1;word++;//将计数器加1LINE=line;//打开行线,即74HC138行线端P3=0xff;delay(20);}}f+=2;//显示完一个字后加2形成上移if(word>=32){word=0;//清0重新开始f=0;}}/********************************//************主程序*************//********************************/void main(){while(1){ xian();}}

福州吸脂

南京牙齿矫正

南京牙齿矫正价格

深圳植发医院