51单片机动态数码管显示C程序不解
2010-03-25 12:00
453 查看
/*实验名称:动态8字数码管显示
功能:数码管显示123456
作者:http://www.mcuyjf.com.cn
05-02-01
*/
#include <reg51.h>
//LCD的口线
sbit E=P3^5;
sbit RW=P3^6;
sbit RS=P3^7;
//8字LED的连接方法
//P0.7 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
// H G F E D C B A
unsigned char code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段码表
void Delay_ms(unsigned int t); //延时 t秒钟 :fosc=12MHz
void main(void)
{
unsigned char led12,led34,led56;
E=0; //取消LCD对LED的影响
RW=0;
RS=1;
led12=0x12;
led34=0x34;
led56=0x56;
while(1)
{
P2=0xff; //关显示
P0=ledcode[(led12>>4)&0x0f];
P2=0xfe;
Delay_ms(1);
P2=0xff;
P0=ledcode[led12&0x0f];
P2=0xfd;
Delay_ms(1);
P2=0xff; //关显示
P0=ledcode[(led34>>4)&0x0f];
P2=0xfb;
Delay_ms(1);
P2=0xff;
P0=ledcode[led34&0x0f];
P2=0xf7;
Delay_ms(1);
P2=0xff; //关显示
P0=ledcode[(led56>>4)&0x0f];
P2=0xef;
Delay_ms(1);
P2=0xff;
P0=ledcode[led56&0x0f];
P2=0xdf;
Delay_ms(1);
}
}
void Delay_ms(unsigned int t) //Delay t ms for 12MHz crystal
{unsigned char i;
while(t--)
{for(i=0;i<125;i++);
}
}
我用的是AT89S51,程序是没有问题,程序中有一个地方我看不太懂。
就是while(1)以后,每次延时后都要P2=0xff//关显示,这是什么意思?关了显示后,LED灯怎么
功能:数码管显示123456
作者:http://www.mcuyjf.com.cn
05-02-01
*/
#include <reg51.h>
//LCD的口线
sbit E=P3^5;
sbit RW=P3^6;
sbit RS=P3^7;
//8字LED的连接方法
//P0.7 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
// H G F E D C B A
unsigned char code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段码表
void Delay_ms(unsigned int t); //延时 t秒钟 :fosc=12MHz
void main(void)
{
unsigned char led12,led34,led56;
E=0; //取消LCD对LED的影响
RW=0;
RS=1;
led12=0x12;
led34=0x34;
led56=0x56;
while(1)
{
P2=0xff; //关显示
P0=ledcode[(led12>>4)&0x0f];
P2=0xfe;
Delay_ms(1);
P2=0xff;
P0=ledcode[led12&0x0f];
P2=0xfd;
Delay_ms(1);
P2=0xff; //关显示
P0=ledcode[(led34>>4)&0x0f];
P2=0xfb;
Delay_ms(1);
P2=0xff;
P0=ledcode[led34&0x0f];
P2=0xf7;
Delay_ms(1);
P2=0xff; //关显示
P0=ledcode[(led56>>4)&0x0f];
P2=0xef;
Delay_ms(1);
P2=0xff;
P0=ledcode[led56&0x0f];
P2=0xdf;
Delay_ms(1);
}
}
void Delay_ms(unsigned int t) //Delay t ms for 12MHz crystal
{unsigned char i;
while(t--)
{for(i=0;i<125;i++);
}
}
我用的是AT89S51,程序是没有问题,程序中有一个地方我看不太懂。
就是while(1)以后,每次延时后都要P2=0xff//关显示,这是什么意思?关了显示后,LED灯怎么
相关文章推荐
- 基于51单片机的74HC164驱动六位数码管动态显示程序
- 51单片机动态数码管显示
- 51单片机使用定时器进行数码管动态扫描程序
- 51单片机:6位数码管动态显示,从600000开始,每0.5秒加1
- 51单片机 学习之旅[4] 数码管 动态显示
- n久前的51单片机4*4键盘加4数码管显示汇编程序
- 51单片机 数码管的静态显示和动态显示
- 数码管动态显示程序
- 【51单片机学习过程记录】6数码管动态显示
- 关于6位数码管动态扫描显示程序的一些问题
- 基于51单片机及DS18B20温度传感器数码管显示程序
- 微信小程序实践之动态控制组件的显示/隐藏功能
- 关于使用plot动态显示数据的几个实用程序
- 给Swing程序添加一个动态显示内存情况的状态条
- php+javascript实现的动态显示服务器运行程序进度条功能示例
- FPGA 使用verilog 编写的AD tlc549 测试程序,数码管做显示,本程序已验证
- MSP430学习笔记6-动态数码管的显示
- php+javascript动态显示服务器运行程序的进度条(转)
- 网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”
- android 如何让应用程序在主菜单[launcher]程序列表中动态显示或隐藏