![]() |
發(fā)布時間: 2020-2-3 15:59
正文摘要:看了普中的教學(xué)視頻,想顯示20.20.720.6 改了一下LSA的值,但是顯示變成了如圖 以下是代碼 小白求答! #include "REG52.H" typedef unsigned char u8; typedef unsigned int u16; sbit LSA=P2^2; sbit ... |
wulin 發(fā)表于 2020-2-3 17:29 0加點真是經(jīng)典,站在初學(xué)者的角度,別太搞好了,給他啟發(fā)就可以了. |
我?guī)湍闩昧?#include "REG52.H" typedef unsigned char u8; typedef unsigned int u16; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 a=0,b=1,c=2,d=3,e=4,f=5,g=6,h=7;//使用八個數(shù)進行位置確定 u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); } void DigDisplay() { u8 i; for(i=0;i<8;i++) { switch(i) { case(0): LSA=0;LSB=1;LSC=0;break; case(1): LSA=0;LSB=0;LSC=0;break; case(2): LSA=0;LSB=1;LSC=0;break; case(3): LSA=0;LSB=0;LSC=0;break; case(4): LSA=1;LSB=1;LSC=1;break; case(5): LSA=0;LSB=1;LSC=0;break; case(6): LSA=0;LSB=0;LSC=0;break; case(7): LSA=0;LSB=1;LSC=1;break; } P0=smgduan[i]; delay(100); P0=0x00; } } void display() { u8 j; for(j=0;j<8;j++) { switch(j) //位選,選擇點亮的數(shù)碼管, { case(0): LSA=0;LSB=0;LSC=0;P0=smgduan[a] ;break;// case(1): LSA=1;LSB=0;LSC=0; P0=smgduan[b];break;// case(2): LSA=0;LSB=1;LSC=0; P0=smgduan[c];break; case(3): LSA=1;LSB=1;LSC=0; P0=smgduan[d];break;// case(4): LSA=0;LSB=0;LSC=1; P0=smgduan[e];break;// case(5): LSA=1;LSB=0;LSC=1; P0=smgduan[f];break;// case(6): LSA=0;LSB=1;LSC=1; P0=smgduan[g];break;// case(7): LSA=1;LSB=1;LSC=1; P0=smgduan[h];break;// } delay(100); P0=0x00; } } void main() { while(1) { display(); // DigDisplay(); } } |
把20.20.720.6對應(yīng)的段碼:0x5b,0xbf,0x5b,0xbf,0x07,0x5b,0xbf,0x7d作為數(shù)組, case(0): LSA=0;LSB=0;LSC=0;break; case(1): LSA=1;LSB=0;LSC=0;break; case(2): LSA=0;LSB=1;LSC=0;break; case(3): LSA=1;LSB=1;LSC=0;break; case(4): LSA=0;LSB=0;LSC=1;break; case(5): LSA=1;LSB=0;LSC=1;break; case(6): LSA=0;LSB=1;LSC=1;break; case(7): LSA=1;LSB=1;LSC=1;break; } 這樣改了就可實現(xiàn) |
switch的case幾種狀態(tài)都重復(fù)了,顯示不亂才怪 |
位碼不可以隨意改動,想改變顯示字符只能改段碼。
![]()
|
Powered by 單片機教程網(wǎng)