|
剛學(xué)習(xí)單片機(jī),開(kāi)始做了個(gè)8*8的點(diǎn)陣屏,當(dāng)時(shí)做好后能正常仿真運(yùn)行,之后又想在此基礎(chǔ)上加幾個(gè)彩燈,就用中斷把點(diǎn)陣放進(jìn)去了,結(jié)果效果不行,就放棄了。
把關(guān)于中斷和彩燈的程序注釋掉,只留下點(diǎn)陣屏?xí)r,仿真還是會(huì)出現(xiàn)彩燈閃爍和中斷觸發(fā),
把關(guān)于點(diǎn)陣屏的程序再重新建一個(gè)工程,之后仿真就出現(xiàn)問(wèn)題。明明一模一樣的代碼啊,
求大家?guī)兔匆幌聠?wèn)題在哪,非常感謝。
復(fù)制上來(lái)注釋變成了亂碼,有些注釋改過(guò)來(lái)了
這就是沒(méi)弄好的已經(jīng)注釋掉彩燈和中斷的程序代碼,仿真出來(lái)注釋沒(méi)起作用一樣
錯(cuò)誤.jpg (572.86 KB, 下載次數(shù): 39)
下載附件
2020-4-24 23:29 上傳
- #include <reg52.h>
- #include <intrins.h>
- //8*8點(diǎn)陣屏
- unsigned char code tabel [4][8]={
- 0xDB,0x00,0xDB,0x81,0xED,0xED,0xE9,0xEF,//½Ú
- 0x83,0xBB,0xBB,0x83,0xBB,0xBB,0x83,0xFF,//ÈÕ
- 0xB7,0xB7,0xA1,0xB5,0x00,0xB7,0xAB,0x9D,//¿ì
- 0xC3,0xB7,0xB7,0xB7,0x00,0xF7,0xD3,0xA5 //ÀÖ
- }; //4¸öÊý×飬ÿ¸öÊý×é8¸ö
- sbit DIO=P3^4;
- sbit S_CLK=P3^5;
- sbit R_CLK=P3^6;
- void send_byte (unsigned char dat) //發(fā)送字節(jié)函數(shù)
- {
- unsigned char i;
- dat=0xfe;
- S_CLK=0;//給低電平
- R_CLK=0;//給低電平
- for (i=0;i<8;i++)
- {
- if (dat & 0x01) //È¡datµÄ×îµÍλ
- DIO=1;
- else
- DIO=0;
- S_CLK=1; //給上升沿
- dat >>=1; //dat右移1
- S_CLK=0; //拉低
- }
- }
- //void delay (unsigned int p) //延時(shí)函數(shù)
- //{
- // unsigned int x,y;
- // for(x=p;x>0;x--)
- // for(y=114;y>0;y--);
- //}
- ////LED
- //unsigned char temp; //LED變量
- unsigned char j,k,row;//8*8
- unsigned int z;//8*8
- //void zhongduan()
- //{
- // EA=1;
- // EX0=1;
- // IT0=0;
- //}
-
- void main ()
- {
- // zhongduan();//中斷初始化
- // //LED
- // temp=0xfe;
- // P1=temp;
- // P2=temp;
- // delay(100);
- // while(1)
- // {
- // temp=_crol_(temp,1);
- // P1=temp;
- // P2=temp;
- // delay(100);
- // }
- //8*8
- while (1) //循環(huán)掃描
- {
- for (k=0;k<4;k++) //ÏÔʾ4¸ö×Ö
- {
- for (z=0;z<1000;z++)
- {
- row=0x80; //先選第一行(共陽(yáng)極)
- for (j=0;j<8;j++)
- {
- send_byte(tabel[k][j]); //·列值
- send_byte(row); //行
- R_CLK=1; //給高,發(fā)出
- R_CLK=0;
- row=_cror_(row,1); //循環(huán)右移
- }
- }
- }
- }
- //void zhongduan2() interrupt 0 //外部中斷0
- //{
- // //8*8
- // while (1) //Ñ­»·É¨Ãè
- // {
- // for (k=0;k<4;k++)
- // {
- // for (z=0;z<1000;z++)
- // {
- // row=0x80;
- // for (j=0;j<8;j++)
- // {
- // send_byte(tabel[k][j]);
- // send_byte(row);
- // R_CLK=1;
- // R_CLK=0;
- // row=_cror_(row,1);
- // }
- // }
- // }
- // }
- }
復(fù)制代碼 另外重建的點(diǎn)陣屏代碼,只有點(diǎn)陣屏
只有點(diǎn)陣屏.jpg (575.68 KB, 下載次數(shù): 24)
下載附件
2020-4-24 23:36 上傳
- #include <reg52.h>
- #include <intrins.h>
- unsigned char dat;
- unsigned char code tabel [4][8]={
- 0xDB,0x00,0xDB,0x81,0xED,0xED,0xE9,0xEF,//½Ú
- 0x83,0xBB,0xBB,0x83,0xBB,0xBB,0x83,0xFF,//ÈÕ
- 0xB7,0xB7,0xA1,0xB5,0x00,0xB7,0xAB,0x9D,//¿ì
- 0xC3,0xB7,0xB7,0xB7,0x00,0xF7,0xD3,0xA5 //ÀÖ
- };
- sbit DIO=P3^4;
- sbit S_CLK=P3^5;
- sbit R_CLK=P3^6;
- void send_byte (unsigned char dat)
- {
- unsigned char i;
- dat=0xfe;
- S_CLK=0;
- R_CLK=0;
- for (i=0;i<8;i++)
- {
- if (dat & 0x01)
- DIO=1;
- else
- DIO=0;
- S_CLK=1;
- dat >>=1;
- S_CLK=0;
- }
- }
- unsigned char j,k,row;
- unsigned int z;
- void main()
- {
- while (1)
- {
- for (k=0;k<4;k++)
- {
- for (z=0;z<1000;z++)
- {
- row=0x80;
- for (j=0;j<8;j++)
- {
- send_byte(tabel[k][j]);
- send_byte(row);
- R_CLK=1;
- R_CLK=0;
- row=_cror_(row,1);
- }
- }
- }
- }
- }
復(fù)制代碼
|
|