|
本帖最后由 feixiang1990 于 2013-6-7 11:37 编辑
自己买了个点阵屏幕,但是编写左移功能的时候出现问题,希望做过的能指点一二,帮下小弟。
先贴出代码:- #include<reg52.h>
- #define uchar unsigned char
- uchar hang[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
- 0x08,0x09,0x0a,0x0b,0xfc,0x0d,0xfe,0x0f};
- sbit R1=P1^0;//接LED屏输入口的R1上 这个是红色数据输入口 输出到单元板上595芯片上 08接口R1是上半屏 R2是下半屏
- sbit G1=P1^1;//同上 绿色数据
- sbit R2=P1^2;
- sbit G2=P1^3;
- sbit CLK=P1^4;//时钟信号
- sbit STB=P1^5;//锁存信号
- sbit OE=P1^6;//理解成显示或不显示的开关吧
- char code HZ[];//字库数组
- char code DZ[];
- char HC0[14],HC1[14];//缓存数组
- char XS0[14],XS1[14];
- unsigned int move,speed;
- void delay_nms(unsigned int x)
- {
- unsigned int i,j;
- for(i=0;i<x;i++)
- for(j=0;j<100;j++);
- }
- void WriteByterR1(char dat,dat2)//写一个字节数据
- {
- char i;
- for(i=0;i<8;i++)
- {
- R1=dat&0x01;
- dat=dat>>1;
- G1=dat2&0x01;
- dat2=dat2>>1;
- CLK=0;
- CLK=1;
- }
- }
- void WriteByterR2(char dat,dat2)//写一个字节数据
- {
- char i;
- for(i=0;i<8;i++)
- {
- R2=dat&0x01;
- dat=dat>>1;
- G2=dat2&0x01;
- dat2=dat2>>1;
- CLK=0;
- CLK=1;
-
- }
- }
- void main()//主函数
- {
- unsigned int lie;
- unsigned char speed,yidong,zishu;
- unsigned char i,s,k;
- while(1)//大循环
- {
- for(zishu=0;zishu<14;zishu++)
- {
- for(yidong=0;yidong<16;yidong++) //数据移位
- {
- for(speed=0;speed<200;speed++) //移动速度
- {
- //下半部分
- for(lie=0;lie<16;lie++) //16列数据
- {
- for(i=0;i<6;i++) //i为显示的汉字个数
- {
- HC1[i*2]= HZ[2*lie+i*32+zishu*32];
- HC1[i*2+1]= HZ[2*lie+1+i*32+zishu*32];
- }
- for(s=0;s<10;s++)//左移实现部分
- {
- if(yidong<8)
- {
- XS1[s] = ((HC1[s]>>yidong)|(HC1[s+1]<<(8-yidong)));
- }
- else
- {
- XS1[s] = (HC1[s+1]>>(yidong-8)) | (HC1[s+2]<<(16-yidong));
- }
-
- }
- for(k=0;k<10;k++)
- {
- WriteByterR2(XS1[k],0xff);
- }
- P0=hang[lie]; //行循环,num等于0的时候,第一行亮,依次类推
- STB=1;//锁存信号
- STB=0;
- }
- }
- }
- }
- }
- }
- char code DZ[]=
- {//此处省略
- };
- char code HZ[]=
- {
- 0xFB,0xFF,0x7B,0xC0,0x80,0xEF,0xFB,0xF7,0xF5,0xFB,0xF5,0xF5,0xF6,0xCE,0x40,0xDF,
- 0x37,0x80,0xF7,0xFB,0xC7,0xFB,0xF0,0xFB,0xF7,0xFB,0xF7,0xFB,0x17,0x80,0xF7,0xFF,/*"轻",0*/
- /* (16 X 16 , 宋体 )*/
- 0xFB,0xFF,0x7B,0xC0,0x80,0xEF,0xFB,0xF7,0xF5,0xFB,0xF5,0xF5,0xF6,0xCE,0x40,0xDF,
- 0x37,0x80,0xF7,0xFB,0xC7,0xFB,0xF0,0xFB,0xF7,0xFB,0xF7,0xFB,0x17,0x80,0xF7,0xFF,/*"轻",1*/
- /* (16 X 16 , 宋体 )*/
- 0xF7,0xFE,0xF7,0xFE,0xFB,0xFE,0xC1,0xC0,0x5D,0xDF,0x5D,0xDF,0x9D,0xDF,0xC1,0xDE,
- 0xDD,0xDD,0xDD,0xD9,0xDD,0xDB,0xDD,0xDF,0xC1,0xDF,0xDD,0xEB,0xFD,0xF7,0xFF,0xFF,/*"的",2*/
- /* (16 X 16 , 宋体 )*/
- //省略部分
- };
复制代码 效果视频如下:
http://v.youku.com/v_show/id_XNTY3NjAyODYw.html
感觉左移,做的有问题,但是又不清楚,怎么才能调成效果,也请多多指点下
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|