本人新手,自學51單片機驅(qū)動8*8LED點陣屏,遇難題如下:
仿真圖如下:
請問為什么LED點陣屏左上角第一個點不亮,而且斜線錯位,最右下角的點也不亮?
修改數(shù)組元素順序為:
unsigned char code led0[]={0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x01};
再仿真OK!如下圖所示:
按8*8LED點陣屏顯示原理,不用修改數(shù)組元素順序,就能顯示上圖所示“\”圖案,但實際仿真,顯示的是第一幅圖片所示的圖案,請高手賜教為什么?謝謝!
- #include<reg51.h>//單片機頭文件
- void delay1ms(unsigned int ms);//延時ms函數(shù)聲明
- unsigned char code led0[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//字碼表(LED屏顯對角斜線“\”)
- void main()//主函數(shù)
- {
- unsigned char H,i; //定義變量
- while(1)
- {
- H=0x01; //行變量賦初值
- for(i=0;i<8;i++)//行掃描
- {
- P1=H; //行數(shù)據(jù)送P1口
- P0=led0[i];//列數(shù)據(jù)送P0口
- delay1ms(1);//延時1毫秒
- H<<=1; //向下移動一行
- }
- }
- }
- void delay1ms(unsigned int ms)//延時函數(shù)
- {
- unsigned int i,j;//定義變量
- for(i=0;i<ms;i++)
- for(j=0;j<110;j++);
- }
復制代碼
|