本人新手,自学51单片机驱动8*8LED点阵屏,遇难题如下:
仿真图如下:
请问为什么LED点阵屏左上角第一个点不亮,而且斜线错位,最右下角的点也不亮?
修改数组元素顺序为:
unsigned char code led0[]={0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x01};
再仿真OK!如下图所示:
按8*8LED点阵屏显示原理,不用修改数组元素顺序,就能显示上图所示“\”图案,但实际仿真,显示的是第一幅图片所示的图案,请高手赐教为什么?谢谢!
- #include<reg51.h>//单片机头文件
- void delay1ms(unsigned int ms);//延时ms函数声明
- unsigned char code led0[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//字码表(LED屏显对角斜线“\”)
- void main()//主函数
- {
- unsigned char H,i; //定义变量
- while(1)
- {
- H=0x01; //行变量赋初值
- for(i=0;i<8;i++)//行扫描
- {
- P1=H; //行数据送P1口
- P0=led0[i];//列数据送P0口
- delay1ms(1);//延时1毫秒
- H<<=1; //向下移动一行
- }
- }
- }
- void delay1ms(unsigned int ms)//延时函数
- {
- unsigned int i,j;//定义变量
- for(i=0;i<ms;i++)
- for(j=0;j<110;j++);
- }
复制代码
|