中易网

用51单片机控制4位led数码管,使其显示出想要的数字,程序怎样写,谢谢

答案:4  悬赏:0  
解决时间 2021-01-13 10:56
用51单片机控制4位led数码管,使其显示出想要的数字,程序怎样写,谢谢
最佳答案
模拟串口方式0:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit P3_2=P3^2; //模拟接受
sbit P3_3=P3^3; //模拟发送
uchar code smg[11]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};//数码管编码0~ 9
void display(uchar z);
main()
{
display(5);
display(0);
display(4);
while(1);
}


void display(uchar z)
{
uchar i;
uchar temp;
temp = smg[z];
for(i=0;i<8;i++)
{
P3_3= 0;
if(temp & 0x01) P3_2=1;
else P3_2 = 0;
P3_3= 1;
temp = temp>>1 ;
}
}

串口}方式0:
void display()
{
SM0=0;
SM1=0; //方式0
for(i=0;i<3;i++)
{
SBUF=smg[snum[2-i]];
while(!TI) ;
TI=0;
delay(1000);
}
}

还有并行口方式 占用I/O不推荐 不过程序很简单
全部回答
这个程序关键在于键盘的检测,显示数字是很简单的。
两个函数:key()(键盘检测函数);dis()(数码管显示函数);即可。
1、建立数字与P口对应的数组
2、位选显示
数码管是8段的吧,正好对应某个P口的8个位,要显示某个数组只需将相应的Px_x亮起来就可以了
- -!
这样:
1/首先把段码端和片选端都设为输出,也就是led和单片机连的那几个角
2/你先用延时来做吧,大致是这样的
设一个片选有效;
把要显示的内容放段码中;
延时15ms;
设第二个片选有效;
把要显示的内容放段码中;
延时15ms;





直到4个都ok
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问联通有没有1G光纤是独享的一年要多少钱?
光华水力发电机5千瓦需要多少钱
到底选AMT还是MT
美国亚马逊海淘走直邮好还是转运好
设集合A有n个不同的元素,把集合A分成k个互不
请教HTC 802D的通知栏图标是什么意思?
醉驾预审后上法庭是要判刑的意思吗
钱若赓断鹅的钱太守有什么过人之处
支持映泰TA870+的CPU支持TA870U3+吗?U3和前
《圣斗士星矢里》为什么有一个白银圣斗士对待
什么办法处理旧墙面
带yi音的二字词语
我是想问2000-2005年单位给职工交养老保险交
梦见搓澡搓出好多泥
个人网络求助需正确引导,切莫因小失大
推荐资讯
今借到某某人现金(人民币壹万元整)是实。落
Java中intValue,parseInt,Valueof 这三个关
在中国根和美国籍的文章中杨振宇如何看待中国
PS里面的液化不能用怎么办?
QQNZ_1.0.0.190_Full.7z.001和002可以删除吗
请问磕碰后腿部出现淤青可以揉吗
我妈今年57单身6年了农村的,去年有人介绍我
梦见古盒里面有二条鱼
国运昌隆震八方,平淡生活见真心。请教各位大
OSI/RM模型包含哪几个层次以及各层次主要
单县0.3mm铝板H24铝板多少钱
急求助:MATLAB程序总是出现??? Error using
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?