c语言数码管程序
‘壹’ 51单片机,8个数码管循环显示1-9的c语言程序。
假设8个历氏镇数码核郑管肢粗公共端均接地,同时显示1-9x0dx0a#include
‘贰’ 求用c语言写的八位数码管动态显示程序,P0控制段,P2控制位。
#include"reg51.h"
#include "intrins.h" //_nop_();延老拿时函数用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P0 //段码输出口
#define BIT_OUT P2 //扫描口
sbit dot=P2^7; //LED小数点控制
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[8]={1,2,0,0,0,0}; //待显示单元数据,共6个数据
unsigned long temp;
/*************1毫秒延时程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<侍亏搭120;j++)
;
}
//
/***********LED显空友示动态扫描函数**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<8;k++) //8位LED扫描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
BIT_OUT=m;
delay1ms(3);
m=(m<<1)|0x01;
}
dis_buff[0]=temp/10000000;
dis_buff[1]=(temp%10000000)/1000000;
dis_buff[2]=(temp%1000000)/100000;
dis_buff[3]=(temp%100000)/10000;
dis_buff[4]=(temp%10000)/1000;
dis_buff[5]=(temp%1000)/100;
dis_buff[6]=(temp%100)/10;
dis_buff[7]=temp%10;
}
/**************初始化程序****************/
void initiation()
{
TMOD=0x01;
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
ET0=1;
TR0=1;
EA=1;
}
/****************定时器0中断服务程序*****/
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
t10ms++;
if(t10ms==100)
{
t10ms=0;
ts++;
if(ts==60)
{
temp++;
ts=0;
}
}
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
display();
}
}
一秒加1
‘叁’ C语言数码管计数程序
#include<咐昌扮reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=
{
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
};
sbit key1=P3^4;
uchar num=0;
void delay(uint z);
void main()
{
while(1)
{
P2=0xfe;
P0=table[num];
delay(50);
if(key1==0)
{
while(!key1);
num++;
};
if(num==10)
{
num=0;
};
}
}
void delay(uint z)
{
while(z--);
}
看衡灶看吧,一迅销个道理。
‘肆’ 用C语言编制一个在8个数码管上轮流显示1~8的程序(单片机8051)
#include
<搭没reg51.h>
#define
uint
unsigned
int
/坦枝启/
宏定义
可以不用
#define
uchar
unsigned
char
sbit
//位申明
具体看你的数码管是共阴还是共阳的
还有要用到的I/O口
char
tab[]={}
//显示1--8的数码管编码;
voide
delay(uint
a)
//延迟a
ms
晶让如振伟11.0592
{
uint
i,
j;
for(i=a;i>0;i--);
for(j=110;j>0;j--);
}
main()
{
while(1)
{
//在循环语句里执行显示函数
}
}
说明:由于这个得看你的电路图具体情况,上面只是一个框框,你可以自己该就可以!
‘伍’ 51单片机的共阴数码管怎么显示数字(c语言)
要让51单片机共阴数码管显示数字,只需要将单片机的P2端口输出数字对应的段码即可。
以显示数字“0”碧饥为例,c语言程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//数码管的段码编码
Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(){//主函数
P0 = table[0];//显示0,大家可以修改里面的数据。
while(1);//程序不再执行其他步骤;
}
扩展迹返资料:
数字0-9的对应段码:
数字0 0x3f
数字1 0x06
数字2 0x5b
数字3 0x4f
数字4 0x66
数字5 0x6d
数字6姿慧饥 0x7d
数字7 0x07
数字8 0x7f
数字9 0x6f
‘陆’ 单片机数码管显示0到999c语言程序怎么编
#include<reg51.h>
unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time=0,s,sz;delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);
}INT_0()interrupt 0
{ delay(10);
if(INT0==0){sz++;<br> if(sz>2){sz=0;}
}
}
void T0_int()interrupt 1
{
TH0=(65535-50000)/256;//设置初值
TL0=(65535-50000)%256;
s++;
if(s>首喊20){s=0;<br> if(sz==1)time++;<br> if(time>999){time=0;}
if(sz==0){time=0;//清零<br>伏卜 }
(6)c语言数码管程序扩展阅读:
运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和寄存缺芹穗器等几部分组成。
ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
运算器有两个功能:
(1) 执行各种算术运算。
(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
‘柒’ c语言程序怎么让数码管循环显示0123-9012再到0123然后数码管熄灭
1.首先你要有几个函数可以显示每个数码管数字
voidled1Show(chardat);
voidled2Show(chardat);
voidled3Show(chardat);
voidled4Show(chardat);
dat为你要显示此世的字符,函数是不是能复用,看你代码
2.再写一个统一显示的函数
voidledShow(intdat)//dat为你要显示的数字
{
led1Show(dat/1000);
led2Show(dat%1000/100);
led3Show(dat%100/10);
led4Show(dat%10);
}
3.在你的主函数中调用
intdat=123;
while(1)
{
ledShow(dat);
并蚂dat++;
if(dat>9012)
绝扒埋dat=123;
delay_ms(500);//加个延时,要不然会刷新太快。
}
‘捌’ 51单片机显示八位数码管的C语言程序
1、最开始,我们虚桐先打开keil。