标题:
我的单片机数码管学习,源码,项目运行文件,电路图
[打印本页]
作者:
1805523903
时间:
2018-9-17 09:39
标题:
我的单片机数码管学习,源码,项目运行文件,电路图
数码管的学习,本项目涉及到数码管显示保留不同位小数的floatl类型的小数以及显示整数的方法。
准确的运用的六位数码管正确显示方法。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
无标题.png
(32.55 KB, 下载次数: 80)
下载附件
2018-9-17 09:39 上传
单片机源程序如下:
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#define u16 unsigned int
#define u8 unsigned char
sbit DX=P2^0;
sbit WX=P2^1;
void delay_ms(u16 x)//毫秒延时函数
{u16 i,j;
for(i=0;i<x;i++)
for(j=0;j<115;j++);
}
u8 code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00}; //共阴数码管编码
void print_float_LED2(char str[])
{
u8 temp;
int i,j;
//char str[9] = "11-15-30";
/*switch(x)
{
case 1:sprintf(str,"%.1f",n);break;
case 2:sprintf(str,"%.2f",n);break;
case 3:sprintf(str,"%.3f",n);break;
case 4:sprintf(str,"%.4f",n);break;
case 5:sprintf(str,"%.5f",n);break;
} */
for(j=0;j<95;j++)
{
i=strlen(str)-1; //从最低位开始输出
temp=0x7f;
while(i>=0)
{
P0=0XFF; /*消除P0的值*/
WX=1; /*位选输入有效*/
P0=temp; /*输出位选码*/
WX=0; /*位选锁存*/
P0=0; /*消除P0的值*/
DX=1; /*段选输入有效*/
if(str[i]=='-') { P0=0x40;} /*如果为-,则直接显示-*/
else P0=table[str[i]-'0']; /*否则,输出不带小数点的段码*/
DX=0; /*段码锁存*/
temp=_cror_(temp,1);
i--;
delay_ms(1);
}
}
}
void main()
{
char str[8] = "23-59-59";
print_float_LED2(str);
while(1)
{
str[7] = str[7]+1;
if(str[7]=='9'+1)
{
str[7]='0';
str[6] = str[6]+1;
}
if(str[6]=='6'){
str[6]='0';
str[4] = str[4]+1;
}
if(str[4]=='9'+1){
str[4]='0';
str[3] = str[3]+1;
}
if(str[3]=='6')
{
str[3]='0';
str[1] = str[1]+1;
}
if(str[0]!='2' && str[1]=='5')
{
str[1]='0';
str[0] = str[0]+1;
}
if(str[0]=='2' && str[1]=='4')
{
str[0] = '0';
str[1] = '0';
}
print_float_LED2(str); //Str[7]的值更新后,再次输出函数
}
}
复制代码
所有资料51hei提供下载:
数码管学习.7z
(37.53 KB, 下载次数: 22)
2018-9-17 09:39 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
1805523903
时间:
2018-9-17 09:40
大家学习数码管的显示可以做参考
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1