51单片机数码管静态显示和动态显示原理及实验
数字管道的静态视图和动态显示是两种常见的可视化方法。在静态查看模式下,对段的选择和每个数字管的位的选择都可以独立控制。
通常,每个数字管对应于一组位选择线和一组段选择线,这些线路由微控制器的I/O门控制。
这种方法的优点是它在显示屏上是稳定的,并且不受进修频率的影响,而是需要更多的I/O端口资源,而且价格昂贵。
动态显示方法依次更改可视化状态,以便每个数字管的查看信息可以在短时间内迅速变化,从而使人眼具有连续显示的幻想。
在动态显示中,每个数字管的查看信息都由位线路的选择控制,而段线的选择是由解码器芯片(例如7 4 HC2 5 )驱动的。
这种方法的优点是它节省了I/O门的资源,并且成本低,但是显示效果受复习频率的影响。
在动态显示模式下,通过将J1 6 引脚连接到解码器1 3 8 来获得位选择控制。
7 4 HC2 5 芯片负责控制片段的选择并通过其内部电路进行数字管段的选择。
在这种动态显示方法中,当必须连接到低级别并且应将段选择连接到高级别时,数字管正常显示。
解码器的劳动原理可以通过真实表观察。
当合格的控件较低时,A0A1 A2 插入了不同的级别控制输出。
例如,如果A0A1 A2 为000(轨道为0)对应于低级别的Y0输出,如果001 (轨道为1 ),则高输出水平为y1 这相当于二进制和十进制转换以及小数数的相应产生。
如何利用单片机让4位数码管显示
使用动态扫描对四个数字管稳定显示1 2 3 4 3 .2 微控制器数字数字数字数字数字数字数字数字数字数字数字数字数字数字数字(包括编程和设计)的数字数字数字。这项工作是稳定显示1 2 3 4 的四位数管的任务。
(2 )将Proteus用于电路和实态和真正的模拟3 .3 SciiBudi(1 )动态数字瘘管(定义动态动态显示是选择所有数字管的段。
S-BIT数字管值得通过动态扫描显示。
所谓的动态扫描显示意味着字体代码和相应 再次使用光发射管的余花并保留人眼的时间,使人在公共汽车和连接之间的连接中同时显示了一个人的感觉,使人再次咬一口。
在总线的P0端口之间,如图5 -1 7 所示。
单击电线,起点和终点,如果终点在空白处,则在绘制电影时左侧的连接处双击。
班级线。
目前,我们需要决定旅行的方式,因为他们喜欢单击我们要转动的点上的左鼠标按钮。
通过绘图斜线,您需要更容易地关闭自动轨道办公线。
Proteus的自动曲目角色是在短时间内引起的战争。
选择了两个连接点,战争并选择一种合适的连接方法。
可以使用标准工具栏上的“战争”控制按钮关闭战争或打开战争,也可以在菜单栏中的“工具”下找到此图标。
③标记连接到总线的电线。
连接到P0端口的线标签是序列的P00-P06 该电路中P0端口的上拉电阻通过总线到P0端口,而数字管也与每辆总线P0端口相关联。
单击标签按钮的字符串以制作工具栏工具。
将鼠标放入一串图形标签中以食用窗口。
按照鼠标指针找到“×”符号。
窗户如图5 -1 6 所示。
“字符串”列,输入名称(例如PC),单击字符串的“确定”按钮标签校准。
同样,可以标记其他字符串标签,如图5 -1 6 所示。
请注意,标签的校准字符串,其中一个的线程必须与同一名称相同。
图5 -1 6 编辑字符串标签Windows 3 .4 步骤3 .4 .1 步骤1 :Proteus电路设计和动态ENGUALIS的示意图显示至微核心构成门户数字管,如图-1 7 所示。
图5 -1 7 示意图动态扫描显示四位公共阴极数字管的动态扫描显示I.选择组件①微控制器:AT8 9 C5 2 ②除外通用阴极数字管:7 SEG,MPX4 ,C2 ,CC2 ,CC2 ,CC2 ,位置组件-px4 ,CC2 Place Compents -pplape -ppepents -pps cc2 -ppx4 ,cc2 4 ,cc2 ; 位置7 SEG-MPX4 -CC2 ,位置组件-PY,维护电源,接地,连接,组件属性设置数字管动态扫描中所示如图5 -1 7 所示,整个电路计划在ISIS平台中进行。
(i)如图5 -1 8 所示,公共端的排除(RespAck 8 )。
在此电路中,要在组件P0中上拉,可以在图5 -1 9 所示的列的组件值中更改该值。
例如,在此示例中,将电阻值更改为2 00欧姆。
图5 -1 8 排除了图5 -1 9 的属性框,已经完成了整个电路图的绘制。
3 ,4 .2 步骤2 :来源编程和对象代码文件生成(1 )程序流程图图图5 -2 0数字管动态扫描的流程图(2 )源编程#包括
什么是数码管动态显示
本实验中使用的实验板的资源电路图如下:其中P0端口是截面代码,在低级别上是有效的。P2 端口略有代码,高级别是有效的。
P2 .0端口首先控制数字管,除非P2 .7 端口控制第八个。
该板的片段代码表如下:每个数字管的段代码是从P0端口输出的,即每个数字管的段代码输入是相同的。
动态显示可以使用。
通过视觉逗留,只要我们的延迟时间很短,数字显示可能看起来很稳定且清晰。
该过程如下所示。
上述方法和想法写如下:org0000h start:mova,#08 H; 0; 段代码movp0,movp2 ,#01 H; 位代码lcalldlay_1 ms mova,#0ABH; 1 movp0,一个movp2 ,#02 H lcalllllyy_1 ms mova,## 1 2 h; 2 movp0,一个movp2 ,#04 H lcalllllllyy_1 ms mova,#2 2 H; 3 movp0,一个movp2 ,#08 H lcalllllyy_1 ms mova,#0a1 h; 4 movp0,一个movp2 ,#1 0H lcalllllllllyy_1 ms mova,#2 4 H; 5 movp0,一个movp2 ,#2 0H lcallllllyy_1 ms mova,#04 H; 6 movp0,一个movp2 ,#4 0H lcalllllllyy_1 ms; Mova,#0aah; 7 MOVP0,A MOVP0,#0AAH; 这些句子以这种方式实现,这是将来movp2 的习惯,#8 0H lcallllly_1 ms ljmpstart dalay_1 ms:movr6 ,#2 临时:movr5 ,#0ffh djnzr5 ,$ djnzr5 ,$ djnzr6 ,temp ret temp ret temp temp tem tem tem tem tem tem tem tem八到八个可能有可能。
分别从高到7 点(包括点)。
★上述方法为一个接一个地提供了P0或P2 的值。
如果要更改显示的数字,则更改程序非常令人不安。
因此,我们需要使用通常在5 1 MicroController中使用的方法:表查找方法。
例如,当P0端口的段代码输出时,我们可以将段代码显示在表中,然后每次从该表中获取数字并将其发送到P0端口。
端口上的P2 端口输出代码时,您可以将位代码放在另一个表中使用它,并且每次您都可以从该表中获取数字并将其发送到P2 端口。
这样,如果要更改显示的数字,则只需要更改表中的数字即可。
org0000h启动:movr7 ,#0ffh; R7 ,R6 ,查看表时,它会发送到索引寄存器A(因为添加1 后为0,因此是预设FFH)MOVR6 ,#0FH循环:lcalllplay1 ; CallPlay1 ; CallPlay sabarutin显示段代码lcallplay2 ; 呼叫显示sabarutin lcalldlay_1 ms cjnea,#8 0H,loop; 它是否达到左侧的数字,即,第8 位代码ajmpstart play1 :r7 ; 这里是序列化寄存器movdptr,#table1 ; +dptr; 基本寄存器加索引寄存器地址movp0,rit Play 2 :; RET Table1 :DB08 H,0ABH,1 2 H,2 2 H,0A1 H,2 4 H,04 H,0AAH; 段代码表2 :DB01 H,02 H,04 H,08 H,1 0H,2 0H,4 0H,8 0H; 位代码表延迟_1 ms:movr5 ,#02 H; 延迟1 MS Sabarutin温度:MOVR4 ,#0FH DJNZR4 ,$ DJNZR5 ,TEMP零售下载董事会以验证并获得预期的结果。
, ----------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------- ---------------------------------------------------------包括
。
, (){p0 = 0xf; //关闭所有数字。
] = dis_code [5 ] = dis_code [5 ] 0; //当前偏移量为0,而(1 ){p0 = dis_buff [dis_ind ex]; //段代码P0端口p2 = dis_digit; //位(即位代码)选择延迟(1 ); 第二频道dis_index ++下一位; //下一节代码dis_index&= 0x07 ; //请参阅评论}…所有试管一次,首先回到一个开始进行下一次扫描。
一般写回来:dis_index = dis_index&0x07 此方法非常新。
例如,在第一个循环之后,dis_index的值为0000001 ,0x07 的值保持不变并且仍然具有0x01 ,其值为0和0x02 ,在第一个循环之后,它仍然是0x02 ,直到价格上涨。
如果(dis_index = 8 )dis_index = 0,则可以替换此句子,并且效果相同。
★当使用上述方法应用C5 1 时,其段代码将放置在array dis_code [1 1 ]中,然后将程序中调用的值通过缓冲区阵列dis_buff []加载,以便可以使用该下标(偏移)。
它看起来有些复杂,但是它的视图清晰,结构清晰,而且通用性且易于扩展。
★此外,只需延长程序的延迟,例如延迟(1 000),然后在板上下载它,您可以看到数字管实际上是从咬合中显示的。
, ----------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------- ------------------------------------------------------------- 0到7 在下标中的价值 它被标记为未设置缓冲区阵列dis_buf [],实现如下:#include
0x2 2 ,0xa1 ,// 0,2 ,3 ,4 0x2 4 ,0x04 ,0xaa,0x00,0x2 0,0xf}; 当前显示数字管和缓冲区voidmain(){p0 = 0xf; //关闭所有数字代码管P2 = 0x00; dish_index = 0; //当前偏移0 dis_digit = 0x01 ; //选择p2 .0 {p0 = dis_code [dis_index];代码P2 端口延迟(1 ); 程序(Crystal Osilator 1 2 m){Austy-Signed(ms-){for(i = 0; i <1 2 0; i <1 2 0; i ++)★我最初想通过以下方式实现一个循环:( dis_index = 0; dis_index <8 ; dis_index <8 ; [dis_index]; //段代码p0 prp2 = dis_index+1 发送; 0到达第二位置的三位数字,显示三个8 s,第三位数字显示七个数字,没有显示高四位数。
位观察很长一段时间没有引起任何错误,我对Keil调试并不熟悉。
]当时,我想将dis_index的值用作位代码,也就代码此时值为1 当显示第二个位1 时,截面代码dis_code [1 ],是dis_index的值,此时,位代码值为2 因此,我曾经仅使用1 个操作将P0 P0的偏移值与端口P2 的位代码联系起来。
但是,如果您仔细考虑BIT代码的原理,那么上述方法显然是错误的。
dis_index值为2 ,添加1 后为3 在遵循上述方法时,将此3 用作位代码,正确的位代码应为4 (000001 00B)。
所以出了点问题。
实际上,这种对应关系存在,但不仅是添加1 位代码2 应该具有dis_index功率。
也就是说:0--1 1 -2 2 -4 3 -8 4 --1 6 …功率操作函数包含在flootpo(flox,脚托)中,而返回值为xy(floatType):for(dis_index = 0; dis_index <8 ; [dis_index]; 再次在板上下载它,发现仍然存在问题,也就是说,当延迟非常低时,性能是混乱的,但是如果延迟时间增加(例如程序中的价格),则可以看到数字管的显示正确。
此外,此方法生成的代码量也很大(从速度来看,此写作清楚)。
在这里,只提出了一个想法,它仅适用于本实验,并且非常低,因此就是全部。
[互补端] ------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------- ----------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ ------------我的董事会中的参考修订,程序如下:#include
在1 7 中,因此p2 = 0x00; //修复所有数字管p0 = dis_buff [dis_index]; //段代码P0端口p2 = dis_digit; /位代码P2 端口不喜欢= _Crol_(dish_digit,1 )发送; = 0x07 ; //所有8 个数字试管都已在一次通行后扫描,首先返回下一次扫描★计时器/计数器输入脉冲持续时间类似于机器的持续时间,即1 /1 2 时钟振荡频率。
当晶体振荡器为1 2 米时,输入脉冲周期间隔为1 U。
机器周期为1 U。
假设T0的初始值为X,即计算初始值的方法:在此示例中,计时器方法使用方法1 ,即1 6 位计时器,即,最大值为2 1 6 = 6 5 5 3 6 该值将是溢出的,这是造成阻碍的原因将会,障碍将进入处理程序。
在这里,如果要将其延迟1 ms,即1 000US,则公式为2 1 6 -X = 1 000,可以获得X = 6 4 5 3 6 ,它转换为Hexadesimal,即,初始值TH0 = 0xFC,TL0 = 0x1 8 也就是说,计时器从6 4 5 3 6 开始计数,1 ,000后的价格为6 5 5 3 6 在上面的示例中,加载的初始值不是FC1 8 (6 4 5 3 6 ),而是FC1 7 (6 4 5 3 5 )。
我认为这可能是因为计数范围为0〜6 5 5 6 5 ,我也考虑过这个问题。
我粗心地写了很多书,但是上一本使用的东西更多,我认为前者更合适,因为在计算机中,1 6 位二进制无法代表6 5 5 3 6 当所有位均为1 时,该值由6 5 5 3 5 、6 5 5 3 5 ,即6 5 5 3 5 H = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 表示,也可以说6 5 5 3 6 是由HighFrame获得的。
当对障碍做出反应很重要时。
也没有触发阻塞。
它仅在下一个计数之后发生。
确切的值应为1 001 U。
如果初始值为6 4 5 3 6 (FC1 8 ),则实际上是所需的值,因此在上面的示例中,初始值应为FC1 8 而不是FC1 7 这只是我的看法。
, , ######################## 此外,此八电导性模拟数字管的最左端是第一个位置,最右端是第八位,这与董事会上的顺序相反,因此,为了统一性,该数字是在此基础上连接的。
木板。
上图还可以在不连接桥电阻的情况下模拟结果,但是高水平的P0端口显示为灰色,即高电阻。
数码管的显示与闪烁
实验简介:数字管的动态显示是蓝桥杯单芯片单元竞赛中的一个常见测试问题。通过控制数字管上的字段以关闭关闭来显示这些值。
数字管显示除以常见阴极的共同阳极。
Lanqiao杯官方开发板的数字管模块是带有共同阳极的文本。
本节解释数字管理原理以及如何控制显示。
通用阳极原理阳极数字管的知识点连接阳极形成公共端子和与电源正电极相关的端子。
一定的低光的末端发出二极管; 有很高的时间。
通过控制规则和二极管进出。
DS1 和DS2 数字瘘管中的蓝桥杯的状态示意图中的数字管连接图清楚地说明了。
分析y7 c = 1 的分析,田地对DP的功率关闭; 有了Y6 C = 1 ,数字管的力量是政府的终结。
现场表号0-9 是通过数字管的原理和基本操作来学习的。
问题:在数字管中显示“ F”。
描述Y6 C和Y7 C值。
CAP和A链路的上色使用7 4 HC1 3 8 解码器和7 4 HC02 北约Porta,并通过y6 = 0的陷阱连接,Y6 中的Y6 C = I设置了仔细检查输入和输出表的方法。
选择数字管站点的第一位以选择DS1 ,初始化,选择位置并显示数字2 选择DS2 的第四位置,初始化,选择位置和显示编号9 代码模型显示数字2 代码:初始化,在循环中选择位置和显示数字2 显示编号9 代码:初始化:在周期中选择状态和显示编号9 显示代码再次0-9 :循环更改P0值,显示0-9 实验性摘要在学习数字管显示后显示原理,示意图和接口的使用,并根据模型代码实现显示和闪闪发光。
蓝色桥的常见测试的一部分,作为主要利润。