为什么共阴极数码管管不显示? (LSA=P2^2;LSB=P2^3;LSC=P2^4)我直接用P2口

新手求大神解答单片机的数码管为什么只有4个显示_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:124,789贴子:
新手求大神解答单片机的数码管为什么只有4个显示收藏
/******************************************************************************** 实 验 名 : 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1* 实验效果 : 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。* 注 意 :*******************************************************************************/#include&reg51.h&//#include&intrins.h&#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyV//用来存放读取到的键值unsigned char KeyS//记录按键的状态,0没有,1有unsigned char DisplayData[8];//用来存放要显示的8位数的值unsigned char N//用来存放中断的时候显示的第位数值void Delay50us(); //延时50usvoid KeyDown(); //检测按键函数void DigDisplay(); //动态显示函数void TimerConfiguration();//定时器初始化设置/******************************************************************************** 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*******************************************************************************/void main(void){TimerConfiguration();KeyState=0; //初始化按键状态while(1){KeyDown();if(KeyState==1){DisplayData[7]=DisplayData[6];DisplayData[6]=DisplayData[5];DisplayData[5]=DisplayData[4];DisplayData[4]=DisplayData[3];DisplayData[3]=DisplayData[2];DisplayData[2]=DisplayData[1];DisplayData[1]=DisplayData[0];DisplayData[0]=DIG_CODE[KeyValue];KeyState=0;}DigDisplay();}}/******************************************************************************** 函 数 名 : TimerConfiguration* 函数功能 : 定时器初始化* 输 入 : 无* 输 出 : 无*******************************************************************************/void TimerConfiguration(){TMOD=0X02;//选择为定时器0模式,工作方式2,仅用TRX打开启动。TH0=0X9C;//给定时器赋初值,定时100usTL0=0X9C;ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器}/******************************************************************************** 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*******************************************************************************/void DigDisplay(){unsigned char i,j;for(i=0;i&8;i++){GPIO_DIG=0x00;//消隐switch(i) //位选,选择点亮的数码管,{case(0):LSA=0;LSB=0;LSC=0;case(1):LSA=1;LSB=0;LSC=0;case(2):LSA=0;LSB=1;LSC=0;case(3):LSA=1;LSB=1;LSC=0;case(4):LSA=0;LSB=0;LSC=1;case(5):LSA=1;LSB=0;LSC=1;case(6):LSA=0;LSB=1;LSC=1;case(7):LSA=1;LSB=1;LSC=1;}GPIO_DIG=DisplayData[i];i++;if(i&7)i=0;j=10; //扫描间隔时间设定while(j--)Delay50us();GPIO_DIG=0x00;//消隐}}/******************************************************************************** 函 数 名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*******************************************************************************/void KeyDown(void){unsigned int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f){Delay50us();a++;a=0;if(GPIO_KEY!=0x0f){ET0=0;//关定时器中断KeyState=1;//有按键按下//测试列GPIO_KEY=0X0F;// Delay50us();switch(GPIO_KEY){case(0X07):KeyValue=0;case(0X0b):KeyValue=1;case(0X0d): KeyValue=2;case(0X0e):KeyValue=3;//default:KeyValue=17;//检测出错回复17意思是把数码管全灭掉。}//测试行GPIO_KEY=0XF0;Delay50us();switch(GPIO_KEY){case(0X70):KeyValue=KeyVcase(0Xb0):KeyValue=KeyValue+4;case(0Xd0): KeyValue=KeyValue+8;case(0Xe0):KeyValue=KeyValue+12;//default:KeyValue=17;}ET0=1;//开定时器中断while((a&5000)&&(GPIO_KEY!=0xf0)) //检测按键松手检测{Delay50us();a++;}a=0;}}}/******************************************************************************** 函 数 名 : Delay50us* 函数功能 : 延时函数,延时50us* 输 入 : 无* 输 出 : 无*******************************************************************************/void Delay50us(void) //延时50us误差 0us{unsigned char a,b;for(b=1;b&0;b--)for(a=22;a&0;a--);}/******************************************************************************** 函 数 名 : Delay50us* 函数功能 : 延时函数,延时50us* 输 入 : 无* 输 出 : 无*******************************************************************************/void Timer() interrupt 1{//DigDisplay();}这个程序是我购买的单片机开发仪光盘上的,我稍微修改了一下(原来的程序中数码管是没有显示的),请问为什么数码管只有4个有显示,而且都是间隔一位的
单片机海同强大的师资阵容,因人制定课程内容,分阶段学习.单片机就到正规Java培训机构-海同科技,培训Java面对面教学,免费重读!
你多了个i++,for大循环里已经有i++了,那边的多余的两句话我就不指出了,自己修改吧。
从程序来看似乎咱俩用的单片机相同啊~
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或求找错误,在数码管上显示0~7_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:124,789贴子:
求找错误,在数码管上显示0~7收藏
#include&reg52.h&
sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void main(){ for(i=0;i&8;i++) {
//位选,选择点亮的数码管,
LSA=0;LSB=0;LSC=0;//显示第0位
LSA=1;LSB=0;LSC=0;//显示第1位
LSA=0;LSB=1;LSC=0;//显示第2位
LSA=1;LSB=1;LSC=0;//显示第3位
LSA=0;LSB=0;LSC=1;//显示第4位
LSA=1;LSB=0;LSC=1;//显示第5位
LSA=0;LSB=1;LSC=1;//显示第6位
LSA=1;LSB=1;LSC=1;//显示第7位
P0= DIG_CODE[i];//发送段码
//扫描间隔时间设定
while(j--);
P0=0x00;//消隐 } }
单片机就选海同,8天免费试听,[120天]让您0基础到精通,毕业后提供就业机会,具体详情点击咨询.
#include&reg51.h&unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(){unsigned int i=65535;while(--i);}void main(void){while(1){P0=0xc0;P1=tab[3];delay();delay();P0=0xf9;P1=tab[3];delay();delay();P0=0xa4;P1=tab[3];delay();delay();P0=0xb0;P1=tab[3];delay();delay();P0=0x99;P1=tab[3];delay();delay();P0=0x92;P1=tab[3];delay();delay();P0=0x82;P1=tab[3];delay();delay();P0=0xf8;P1=tab[3];delay();delay();P0=0x80;P1=tab[3];delay();delay();P0=0x90;P1=tab[3];delay();delay();}}自己乱弄的,四位数码管显示0-9循环
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 数码管丝印机fs bocai 的文章

 

随机推荐