昨日重写了LED电子屏的中心程序,重构后的程序结构能够便利的扩展各种显现特效,我只写了电子屏右移显现函数,点阵屏程序的更新就此结束,下一步将会进行步进电动机的操控方面的制造,电路仍是按上一版http://www.51hei.com/mcu/2597.html现在上程序:
//行扫1#74hc154芯片对应数据输进口:P0^0->P0^3数据输入操控口:P0^4低电平有用;行扫输出为互斥低电平输出;//列扫1#74hc595芯片对应数据输进口:P0^5移位寄存器时钟信号;P0^6存储寄存器数据更新时钟;P0^7数据输出使能,低电平时输出有用;//P2^0串行数据输入#include//包函头文件#include //包函_nop_延时函数的头文件#define uchar unsigned char//宏界说#define uint unsigned int//宏界说////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uchar ZMHCQ[]={//16X16点阵显现缓冲区0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uchar code ZM000[]={//源文件 / 文字: 祝0x00,0x00,0x20,0x00,0x11,0xF8,0x01,0x08,0x79,0x08,0x09,0x08,0x11,0x08,0x11,0xF8,0x38,0x90,0x54,0x90,0x10,0x90,0x10,0x90,0x11,0x14,0x11,0x14,0x12,0x0C,0x00,0x00,};uchar code ZM001[]={//源文件 / 文字: 荣0x00,0x00,0x08,0x20,0x7F,0xFC,0x08,0x20,0x00,0x00,0x7F,0xFC,0x40,0x04,0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0C,0x01,0x00,0x00,0x00,};////////////////////////////////////////////////////////////////////////////////sbit HC154_A=P0^0;//HC154数据输进口sbit HC154_B=P0^1;//HC154数据输进口sbit HC154_C=P0^2;//HC154数据输进口sbit HC154_D=P0^3;//HC154数据输进口sbit G1=P0^4;//HC154使能端操控sbit SH=P0^5;//HC595移位操控sbit ST=P0^6;//HC595锁存更新显现sbit OE=P0^7;//HC595使能端操控sbit DS=P2^0;//HC595串行数据输入////////////////////////////////////////////////////////////////////////////////void chushihua() //硬件初始化{OE=1; //封闭HC595输出G1=1; //封闭HC154输出}////////////////////////////////////////////////////////////////////////////////void delay(uint ms)//延时子程序{uint x,y;for(x=ms;x>0;x--)for(y=0;y<240;y++);}//////////////////////////////////////////////////////////////////////////////////低位先入void sendbyte(uchar Rdate)//HC595串行输入一个字节{uint a;uchar date=Rdate;for(a=0;a<8;a++){SH=0;if(date&0x01)//先将最低位移入{DS=1;SH=1;}else{DS=0;SH=1;}date=date>>1;//输入的字节位右移}}////////////////////////////////////////////////////////////////////////////////void HC595_GX() //HC595锁存数据更新并输出{ST=0;_nop_();ST=1; //HC595锁存数据更新_nop_();OE=0; //HC595输出 }////////////////////////////////////////////////////////////////////////////////void HC154_HS(uint x)//X行低电平输出{G1=0;switch(x){case 1:HC154_A=0;HC154_B=0;HC154_C=0;HC154_D=0;break;case 2:HC154_A=1;HC154_B=0;HC154_C=0;HC154_D=0;break;case 3:HC154_A=0;HC154_B=1;HC154_C=0;HC154_D=0;break;case 4:HC154_A=1;HC154_B=1;HC154_C=0;HC154_D=0;break;case 5:HC154_A=0;HC154_B=0;HC154_C=1;HC154_D=0;break;case 6:HC154_A=1;HC154_B=0;HC154_C=1;HC154_D=0;break;case 7:HC154_A=0;HC154_B=1;HC154_C=1;HC154_D=0;break;case 8:HC154_A=1;HC154_B=1;HC154_C=1;HC154_D=0;break;case 9:HC154_A=0;HC154_B=0;HC154_C=0;HC154_D=1;break;case 10:HC154_A=1;HC154_B=0;HC154_C=0;HC154_D=1;break;case 11:HC154_A=0;HC154_B=1;HC154_C=0;HC154_D=1;break;case 12:HC154_A=1;HC154_B=1;HC154_C=0;HC154_D=1;break;case 13:HC154_A=0;HC154_B=0;HC154_C=1;HC154_D=1;break;case 14:HC154_A=1;HC154_B=0;HC154_C=1;HC154_D=1;break;case 15:HC154_A=0;HC154_B=1;HC154_C=1;HC154_D=1;break;case 16:HC154_A=1;HC154_B=1;HC154_C=1;HC154_D=1;break;default:break;}}