前言
提示:这里可以添加本文要记录的大概内容:
课程需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、静态数码管原理
共阴共阳 数码管段码表
二、静态数码管显示
1.单个数码管 奇数偶数
代码如下(示例):
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90,0x01};
void delayms(uint);
void main(void)
{
uchar i;
while(1)
{
out=seg[i];
delayms(900);
i++;
if(seg[i]==0x01)i=0;
}
}
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{i=250;
while(--i);
i=249;
while(--i);
}
}
这个程序还有很多可以优化的地方
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0
uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90};
void delayms(uint);
void main(void)
{
uchar i;
while(1)
{
out=seg[i];
delayms(900);
i++;
if(i==10)i=0;
}
}
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{i=250;
while(--i);
i=249;
while(--i);
}
}
2.显示任意四位数 0000-9999
重点:任意四位数,如何去显示:
代码如下(示例):
#include <reg51.h> //1.头文件
#define LED_PORT P0
unsigned char ta[]={0xc0,0xF9,0xa4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
void display(unsigned int num)
{
}
void delay(unsigned int ms)
{
unsigned int i;
i=ms;
while(i--);
}
void main() //2.主函数
{
char i;// -128 - 127
// unsigned char t; // 0-255
// int i; //-32768 -32767
// unsigned int i;//0-65535
unsigned int num=0;
//死循环上面的代码只执行一次
//设备硬件初始化
while(1)//3.死循环
{
display(num);
// 死循环里面的代码就反复执行
// 0000 9999
// 1234
//千位 1234/1000 1
//百位 1234/100%10 2
//十位 1234/10%10 3
//个位 1234%10 4
LED_PORT=ta[num/1000];
P1=ta[num/100%10];
P2=ta[num/10%10];
P3=ta[num%10];
num++;
if(num>9999)
{
num=0;
}
delay(600);
}
}
总结
学习了数码管静态显示的原理,练习了显示单个数码管 和四个数码管的显示,尤其是添加了任意四位数的显示,让数码管的显示更加实用。静态数码管显示,原理简答、程序简单,就是费io资源。