导航:首页 > 操作系统 > 单片机数码管p20是最高位吗

单片机数码管p20是最高位吗

发布时间:2023-06-06 15:08:12

1. 51单片机如何利用4个七段数码管采用动态显示显示4位数字,如2035

不停地利用人的视觉暂留,在一个合适的速度下依次显示1个2,1个0,1个3,1个5.

当显示一个“2”的时候,其他三位都是空的,以此类推。

但人眼是看不到短时间内这些变化的,假如这个行为不断循环,那么人看到的就是“2035”,而不是单个的数字。

比如说吧:

...

P1=num[2];//假设num[2]是0x5b,即"2"
P20=1;//假设使能端是高有效,按实际情况来。
delay();//延长50ms应该可以把,不能太长(过0.1秒就能看出来了),最好也不要太短
P1=num[0];
P21=1;
delay();

...

2. 51单片机低四位数码管位选不影响高四位

什么是单片机?怎样学习单片机?这是单片机初学者的灵魂拷问。
下面以我个人经验来总结一下单片机入门容易掉的3个坑
第一个坑,我们传统的讲法是一开始就讲单片机内部结构,什么运算器、控制器、寄存器、RAM、ROM 、IO口等等,这种想法没有错,但是,我认为也不是很对,因为对于大多数初学者是听不懂的,反而增加了畏难情绪,甚至还容易带坑里去。
第二个坑,把二进制和单片机天然联系在一起,学到的是单片机,认识二进制,这对于已经入门的朋友来说不要紧,你可以这样理解,但是对于门外的同学,我认为这也是往坑里带,我们同学就会一直纠结,它就怎么认识二进制了呢?从本质上讲,二进制和单片机没有任何关系,所以在这里我要给单片机初学者一个忠告,同学们,忘掉二进制吧,只有忘掉二进制你才能重新开始并真正理解单片机。
第三个坑,几乎100%的学校是将C语言,单片机作为两门独立课程开设的,这人为增加的难度,非计算机专业的学习C语言都应该放到单片机环境中去学习。
很多初学者想学习单片机,但是却不知道怎么入门,该从何学起。
其实学习单片机可从以下四个阶段开展入门学习
第一阶段,学会C语言的常用语法,熟悉51单片机开发平台、软件keil的操作,了解单片机的大概原理特性,能读懂按键、数码管、跑马灯、串口的简单程序,能熟悉几个常用的外围芯片驱动。
第二阶段,这个阶段是四个阶段中最重要的阶段,很多初学者完成了第一阶段的学习,真正去面对一个小项目的时候还是无从下手,它们不知道按键、显示、通讯、应用程序之间是如何关联起来的,一旦遇到多任务项目的时候,不知道如何并行处理,它们最缺的是程序的框架思路,网上有很多热心牛人分享的程序框架思想都值得大家学习和借鉴,就是用定时中断计时,再用四位置豫剧来实现多任务的切换。
第三阶段,大家在做项目时,除了写单片机的软件,还不可避免地要跟整个电路的硬件打交道,掌握一些常用的硬件电路知识就显得尤其重要。电阻、电容、电感、二极管、三极管的应用,电压差和参考地的关系,常见的变压整流电路、常见的外围驱动电路等等,这方面优秀的电子基础教程很多,大家应该主动找这方面的资料来学习学习。
第四阶段,有了前面三个阶段的主动学习和积累,就可以去做项目了。在项目中学习,根据工作的需要来选择学习哪个厂家的单片机,根据工作的需要来决定是否需要学习汇编语言。有一些厂家的单片机并不能用C语言开发,只能用汇编语言。根据工作的需要来深入研究相关行业所需的硬件电路知识,根据工作的需要来学习相关的外围芯片驱动程序。以上就是新手入门学习单片机的四个阶段。
喜欢的帮忙收藏点个赞哦,文章内容仅代表个人观点,不喜勿喷,谢谢大家的支持与鼓励!
学习单片机,我华维林北是认真的,童鞋们有什么疑问都可以来找我,及时回复林北能得到非常实用的干货资料,能帮助辅导大家学到一些单片机相关知识而成长,华维林北会得到很大的满足感!好了,这期就说到这,我们下期见!
华维林北

3. 单片机上8个数码管这样是让他循环显示,怎样让它静态显示呢

/**52单片机,12MHz晶振,8位共阴数码管,P0口段选,P2口低电平位选,P20最高位,P27最低位**/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define TRUE 1
#define FALSE 0

#define th0 0xfe
#define tl0 0x0c //500us at 12MHz(定时器工作模式1 状态)
#define DisTimeAt500usCount 5 //单'位'数码管显示时间,数码管刷新频率f=1/(4t),其中 t 为单'位'数码管显示时间,单位 s,频率f 单位 Hz

#define SEG_Num 8 //数码管位数
uchar code LoveYouList[SEG_Num]={0x38,0x3f,0x3e,0x79,0x40,0x6e,0x3f,0x3e};//LOVE-YOU
#define SEG_Data P0 //数码管段驱动接口
#define SEG_En P2 //数码管位驱动接口
#define SEG_AllOff SEG_En=0xff //关闭所有数码管(位驱动)

bit DisplayFlag; //显示标志位

void Timer0() interrupt 1 //定时器0中断函数
{
static uchar t500us; //定义静态变量 t500us 定时计数寄存空间
TL0=tl0;
TH0=th0; //重赋 1ms 定时初值
t500us=++t500us%DisTimeAt500usCount; //先计数值加1,后对计数范围进行限制0~(DisTimeAt500usCount-1)
if(!t500us) DisplayFlag=TRUE; //若定时计数值归0,则表示计数值曾到达 单'位'显示时间(DisTimeAt500usCount),显示标志 置位
}

void SystemInit() //系统初始化函数
{
TMOD=0x01; //关闭定时器1,开启定时器0,且工作在模式1(16位定时器)
TH0=th0;
TL0=tl0; //装定时初值(1ms at 12MHz)
TR0=1; //启动计时
ET0=1; //允许定时器0中断
EA=1; //开启系统中断功能
}

void Display() //显示函数
{
static dis_loca; //定义静态变量 显示位置
dis_loca=++dis_loca%SEG_Num; //先对 显示位置 加1,后对变量范围进行限制 0~(SEG_Num-1)
SEG_AllOff; //关闭所有数码管显示(位驱动)
SEG_Data=LoveYouList[dis_loca]; //将本次显示位上的内容转成代码,并送到数据端口
SEG_En&=~(1<<dis_loca); //开启本次需要显示的位驱动
}

void main() //主函数
{
SystemInit(); //调用 系统初始化函数
while(1) //循环系统
{
if(DisplayFlag) //若显示标志位为真(单'位'显示时间结束),则执行以下任务
{
DisplayFlag=FALSE; //清显示标志位
Display(); //调用 显示函数
}
}
}
很多设定好的参数可以在 宏定义的时候修改,包括数码管位数、数码管刷新率等,如果LZ的晶振不是12MHz,那么只需要将宏定义中 TH0,TL0的初值修改正常即可,如24MHz,就改成FC18,总体效果我没实物测试,看LZ造化了。

4. 关于7段数码管显示问题

7段数码管其实是八段,有时小数点没有使用,所以常说7段,

显示原理是这样的

数码管首先从上到右,到下到左,到中间,最后到小数点分别标记为abcdefgdp八段其中小数点位DP为最高位,a段为最低位,要想显示什么字告祥纤符只需要使对应的段发光即可,一般的习惯是单片机的端口的最低位接a段,次低位接b段,...最高位(如p0.7)接dp,显示码宴历从高往低表示为为dpgfedcba

如要显示“1”,只需要将b、c段点亮即可,若是共阴极,片选是低电平选中,某一段输出高电平点亮,即显袜仿示码为00000110即0x06,其他的依照该方法类推

你给的码表为共阴极的。

共阳极的恰巧相反!

数码管的示意图如下图所示

阅读全文

与单片机数码管p20是最高位吗相关的资料

热点内容
彩虹六号如何人工服务器 浏览:632
mc服务器地址怎么登入 浏览:556
苹果app怎么扫描二维码下载 浏览:959
css文件在线解压 浏览:154
36岁程序员近况 浏览:283
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:580
华为手机的方舟编译器在哪呢 浏览:123
下载压缩虐杀原形2 浏览:905
linux脚本cd 浏览:167
间架结构pdf 浏览:843
重庆农村商业银行app怎么老出问题 浏览:471
慧编程配置要求 浏览:673
数控机床编程与操作视频 浏览:461
文件夹资料误删怎么办 浏览:87