/ ch03-3-4c - 七段LED数码管实验程序 /
//==声明区=================================================
#include<reg51h> //定义8051寄存器的头文件,P2-17~19
#define SEG P0 //定义七段LED数码管接至Port 0
/声明七段LED数码管驱动信号数组(共阳)/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //数字0-4
0x92,0x83,0xf8,0x80,0x98}; //数字5-9
void delay(int); //声明延迟函数
//==主程序==========================================
main() //主程序开始
{ unsigned char i; //声明无符号变量i
while(1) //无穷循环,程序一直跑
for(i=0;i<10;i++) //显示0-9,共10次
{ SEG=TAB[i]; //显示数字
delay(500); //延迟500×1m=05秒
} //for循环结束
} //主程序结束
//==子程序==========================================
/ 延迟函数,延迟约x×1ms /
void delay (int x) //延迟函数开始
{ int i,j; //声明整形变量i,j
for (i=0;i<x;i++) //计数x次,延迟x×1ms
for (j=0;j<160;j++); //计数120次,延迟1ms
} //延迟函数结束
用动态显示的方法来做
在定时中断中,分别对每个数码管显示一次,也可以用延时来做,你若只是单单看个效果那就用延时来做吧
亮第一个数码管(这里当他为共阳极数码管):
P2^0=1;
P1=XXX;//自己写出L的字形码
delay_ms(1);//延迟1ms这个时间越小越好拉
P2^0=0;//关掉第1个数码管显示
P2^1=1;//开始第二个数码管显示
//然后就以此类推,3个,4个甚至8个数码管这样子写
- -!
这样:
1/首先把段码端和片选端都设为输出,也就是led和单片机连的那几个角
2/你先用延时来做吧,大致是这样的
设一个片选有效;
把要显示的内容放段码中;
延时15ms;
设第二个片选有效;
把要显示的内容放段码中;
延时15ms;
。
。
。
。
。
直到4个都ok
#include "STC12C54H"
#define uchar unsigned char
#define uint unsigned int
#define dataport P1//P1直接驱动数码管的8个阳极
sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极
sbit wei2=P3^4;
sbit wei3=P3^5;
uint a=0;//中断次数计数,一次50ms,20次为1 秒
//共阴数码管七段码
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//延时子程序
void delay1ms(uint t)
{
uint i,j,k;
for(i=t;i>0;i--)
for(j=15;j>0;j--)
for(k=27;k>0;k--);
}
//显示子程序
void display(uint n)
{
uchar a1,a2,a3;
a1=n/100%10;
a2=n/10%10;
a3=n%10;
wei1=1;
dataport=TABLE[a1];
delay1ms(1);
wei1=0;
dataport=0x80|TABLE[a2];//这里多个小数点
delay1ms(1);
wei3=1;
dataport=TABLE[a3];
delay1ms(1);
wei3=0;
}
void init(void)
{
TMOD=0X01;
TH0=(655536-50000)/256;//定时50ms
TL0=(655536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1M0=0;
P1M1=0xff;//P1口设为推挽输出,驱动能力强
P3M0=0;
P3M1=0x38;//P33P34 P35口设为推挽输出
}
void main(void)//主程序
{
init();//初始状态设定
while(1)
{
display(a/2);//显示计数值,以十分之一秒为单位
}
}
void timer0(void)interrupt 1//中断子程序
{
TH0=(655536-50000)/256;
TL0=(655536-50000)%256;
a++;
if(a==1980)a=0;//1980次是99秒
}
以上就是关于求单片机实验七段数码管显示实验程序全部的内容,包括:求单片机实验七段数码管显示实验程序、利用51单片机控制3个LED数码管在3个数码管上显示字符LED,怎样编写程序、用51单片机控制4位led数码管,使其显示出想要的数字,程序怎样写,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)