问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机数码管如何显示数字?

发布网友 发布时间:2022-04-19 19:42

我来回答

2个回答

热心网友 时间:2023-09-06 12:15

5. [问答题] [技能题画10配线图写出程序]按下按钮S1,数码管显示1;按下按钮S2,数码管显示2;按下按钮S3,数码管显示3;按下按钮S4,数码管显示4;能互相直接切换。按下停止按钮后,数码管熄灭。。

热心网友 时间:2023-09-06 12:16

图1 独立键盘原理图
程序实现功能:数码管前两位显示十进制数,00~59,开始为00。按下S1,数值+1,按下S2,数值-1,按下S3,清零,按下S4一次,自动+1,再按一次停止。
下面附上程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit =P2^6;
sbit we=P2^7;
uchar counter,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };

uchar code list[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管的段选

delay_ms(uint ms)
{
uint i;
uint j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}

void display(uchar i)
{
uchar shi,ge;
shi = i / 10; //取十位
ge = i % 10; //求余,取各位

P0 = 0xff;
we = 1;
P0 = list[0]; //点亮第一位数码管
we = 0;

= 1;
P0 = table[shi];
= 0;
delay_ms(1);

P0 = 0xff;
we = 1;
P0 = list[1];//点亮第二位数码管
we = 0;

= 1;
P0 = table[ge];
= 0;
delay_ms(1);
}
void init()
{
TMOD=0x10; //定时器1,工作模式1,16位模式定时器
TH1=(65535-45827)/256;
TL1=(65535-45827)%256; //定时50ms
//TR1=1; //启动定时器
}

void key()
{
if(k1==0)
{
delay_ms(10);
if(k1==0)
{
num++;
if(num==60)
num=0;
while(!k1); //等待按键释放
}
}
if(k2==0)
{
delay_ms(10);
if(k2==0)
{
if(num==0)
num=60;
num--;
while(!k2); //等待按键释放
}
}
if(k3==0)
{
delay_ms(10);
if(k3==0)
{
num=0;
while(!k3); //等待按键释放
}
}
if(k4==0)
{
delay_ms(10);
if(k4==0)
{
TMOD=0x10;
TH1=(65535-45827)/256;
TL1=(65535-45827)%256;
TR1=1;
while(1)
{ if(TF1==1)
{
TF1=0;
TH1=(65535-45827)/256;
TL1=(65535-45827)%256; //定时50ms
counter++;
}
if(counter==20)
{
counter=0;
num++;
}
if(num==60)
{
num=0;
}
display(num);
}
while(!k4); //等待按键释放
{
TR1=~TR1;
}
}
}
}

void main()
{
init();
while(1)
{
key();
display(num);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑分辨率设置多少合适笔记本电脑分辨率多少最佳 各尺寸笔记本电脑的最佳分辨率 2022年高考480到510分能上山东科技大学吗 朋友借了我一万块钱,现在坐牢了怎么还钱? 天王星和海王星虽然看似一对姊妹星,但还是有区别 ...值得收藏吗?现在分别只都多少钱,照片上有一个铜币的 谁能告诉我这是一枚什么样的铜币,值不值钱? 有谁知道这铜币值不值钱,懂家告诉我一下!谢谢 有谁知道这个铜钱的来历 可以进行异地公积金贷款吗 怎么用光影魔术手制作2寸蓝底证件照? 如何用ps做2寸蓝底证件照 拍二寸蓝底证件照需要注意什么? 怎么用ps制作蓝底2寸的照片 非常感谢 求助:怎么把自拍的照片改成证件照似的蓝底2寸照? 怎么把自己拍在照片做成蓝底2寸证件照?急急急~~~~~~ 在家可以制作蓝底免冠2寸的照片吗? 大学毕业证书照,2寸蓝底,可以自己用手机拍再去冲... 蓝底的二寸照片穿什么颜色的衣服照好看 如何把照片做成二寸蓝底照片 二寸蓝底照的尺寸是多少,蓝色的色值是多少 有谁会制作证件照,2寸蓝底 怎么做一张电子版的二寸蓝底照片 迅雷投屏画质 微粒贷借了三笔,如果我提前还完一笔,这一笔还能... 微信微粒贷还了多久可以拿出来 微粒贷提前还款后能马上借钱吗? 征信不好的情况下微粒贷一次还清还能马上在借出来吗? 微粒贷款还清后,要多久才可以再借? 微粒贷还清一笔马上又可借吗? 单片机两位数码管显示数字 如何用51单片机用一位数码管显示对应数字? 51单片机的共阴数码管怎么显示数字(c语言)知道 单片机试验数码管上如何显示数字 51单片机怎样用键盘控制数码管显示 51单片机怎么用按键控制一个数码管,按一下显示一... 怎么用单片机汇编语言数码管静态显示1234?? 80C51单片机 进人计数 如何让四位数码管显示数字? 单片机数码管显示0到9 单片机怎么用数码管显示大于255的数字? 如何利用单片机让4位数码管显示? 单片机数码管如何从1显示到9? 单片机汇编语言数码管显示数字。。。。 怎样单独控制51单片机中数码管显示数字? 51单片机共阴数码管利用静态显示,让六个数码管显... 51单片机数码管怎样才能同时在两个数码管上面显示... 单片机数码管显示,为什么我的数码管上的数字一闪... 迅雷投屏没有声音怎么设置 迅雷投屏初始化失败怎么办 公司分红怎么算?