数码管显示的动态扫描原理
数字管显示的动态扫描理论如下:显示屏中的所有数字管都以系统的方式燃烧,每个数字管的时间为1 到2 个微分。利用人类视觉保留现象的影响以及随后发光二极管的效果,数字管并非同时燃烧,但是扫描的速度显示出稳定且非抛光数据就足够了。
什么是数码管动态显示
本实验中使用的测试资源部门方案如下:其中P0端口是一个扇区符号,在低级别上是有效的。P2 端口是一个小符号,高级别有效。
P2 .0端口控制第一个数字管,直到P2 .7 端口控制第八个。
该板的扇区图标时间表如下:每个数字管的扇区符号正在删除P0端口,即每个数字管引入扇区图标。
可以使用动态优惠。
通过视觉适应性,只要我们的延迟时间足够短,数字屏幕就可以非常稳定且清晰。
该过程如下所示。
上面的方法和思想写如下:org0000h begin:mova,#08 H; 0; 部门代码MOVP0,A MOVP2 ,#01 H; BET代码LCALLDELY_1 MS MOVA,#0ABH; 1 movp0,一个movp2 ,#02 H lcalldelay_1 ms mova,#1 2 h; 2 movp0,一个movp2 ,#04 H lcalldelay_1 ms mova,#2 2 H; 3 movp0,a movp2 ,#08 h lcalldelay_1 ms mova,#0a1 h; 4 MOVP0,A MOVP2 ,#1 0H LCALLLDELAY_1 MS MOVA,#2 4 H; 5 movp0,一个movp2 ,#2 0H lcallldelay_1 ms mova,#04 H; 6 movp0,一个movp2 ,#4 0H lcallldelay_1 ms; Mova,#0aah; 7 MOVP0,A MOVP0,#0AAH; 骆驼的执行方式就像,这种习惯在将来可能很有用,#8 0H lcallldelay_1 ms ljmpstart deAy_1 mms:movr6 ,#2 temp:movr5 ,#0ffh djnzr5 ,$ djnzr6 ,$ djnzr6 从0到7 (包括点)分别从0到7 (包括点) 。
★上述样式将值指定为P0或P2 一个。
如果要更改供应号,更改程序非常烦人。
因此,我们需要在5 1 微控制器上使用常用的方法:搜索方法。
例如,在删除P0端口上的扇区图标时,我们可以将零件图标放在计划中,然后每次从此时间表中获取数字并将其发送到P0端口。
当删除P2 端口上的位图标时,您可以在另一个时间表中使用决策,每次将其从该时间表中获取数字,然后将其发送到P2 端口。
这样,如果要更改供应号,则只需要更改表中的数字即可。
org0000h开始:movr7 ,#0ffh; R7 ,R6 搜索表时,它将发送到A.D.记录(因为添加1 后0,因此是-FFH)MOVR6 ,#0FFH循环:lcallplay1 ; CallPlay1 ; CallPlay子例程段代码LCALLPLAY2 ; 呼叫播放显示BitCode subroutine lcalldelay_1 ms cjnea,#8 0H,loop; 它是否达到左数,也就是说,第八位符号ajmpstart play1 :; 搜索时间表并找到扇区符号蛋白; Mova,R7 ; 印加; movr7 ,安德尔7 ; R7 ; 这里是索引记录,#table1 ; +dptr; 除了索引MOVP0之外,基本记录,RET Play2 :; BICODE子例程表(原理与Play1 相同)Mova,R6 Inca Movr6 ,A MovdPtr,#Table2 Movca,@A+Dptr Movp2 ,A A a a a a a a a a a a a a a a a a a a+dptr movp2 ,a r ret table1 :db08 h,0abh,0abh,0abh,1 2 h,2 2 h,2 2 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 h,0a1 ,2 4 小时, 04 h,0aah; 图标时间表Sector Table2 :DB01 H,02 H,04 H,08 H,1 0H,2 0H,4 0H,8 0H; BET代码表DEVER_1 MS:MOVR5 ,#02 H; 延迟1 MS子例程温度:MOVR4 ,#0FFH DJNZR4 ,$ DJNZR5 ,TEMP RT将其下载在板上以检查并获得预期的结果。
----------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------------------------------------------------------------- ---------------------------- ----------------------------------------------------------------------------- --------------------------------------------------------------------------- -------包含
,//如果当P2 .0数字管连接到UnignedCharcodedis_code [1 1 ] = {0x08 ,0xab,0x1 2 ,0x2 ,0xa1 ,// 0x00,0xff}; (){p0 = 0xff; //关闭所有数字管P2 = 0x00; ] dis_code [4 ]; 0; //当前的位移为0(1 ){p0 = dis_buff [dis_ind,例如]; //部门代码发送p0 prot P2 = dis_digit; //选择位(即位代码)延迟(1 ); // defert dis_digit = _crol_(dis_digit,1 )strobe ii dis_index ++的下一点; //以下扇区代码dis_index = 0x07 ; //请参阅注释}} voddelayms(unsignedcharm)//延迟子编程(Crystal振荡器1 2 m){unsignedChari; 所有试管一次,回到第一个开始进行下一次检查。
再次写入通用模型:dis_index = dis_index&0x07 此方法是全新的。
例如,在第一集之后,dis_index 00000001 值为,0x07 的值保持不变,仍然是0x01 直到其价值增加。
可以用(dis_index == 8 )dis_index = 0替换此句子,效果是相同的。
★使用上述方法执行C5 1 时,其零件图标将放置在dis_code(1 1 )中。
这似乎有些复杂,但是它的想法很清楚,结构很清楚,多用途且易于扩展。
★此外,只需延长程序的延迟,例如延迟(1 000),然后在板上下载它,您可以看到数字管实际上从低到顶部显示了略微显示。
----------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------------------------------------------------------------- ---------------------------- ----------------------------------------------------------------------------- --------------------------------------------------------------------------- -------值在设施中从0到7 标记,而没有设置dis_buff []的临时仓库,实现如下:#clde
他没有发现延迟监视任何错误的发展,我也不知道这些错误。
[2 006 .5 .2 ]发现原因,补充:我今天再次看一看,发现上面有错误的地方。
当时,我想将dis_index值用作一点符号,即,当第一个位提供0时,扇区代码为dis_code [0],即dis_index值为0,而值-bit -bit代码1 目前。
当显示第二个位1 时,dis_code代码[1 ],_ index的值为1 ,目前位符号的值为2 因此,我只是使用一个过程的添加来将位移值与端口P0连接到P2 端口的位代码。
但是,如果您仔细考虑BIT代码原理,那么很明显该方法是错误的。
dis_index值为2 ,添加1 后,它是3 遵循上述方法时,将此3 用作位符号,并且正确的装饰代码必须为4 (000000001 00B)。
所以发生了什么事。
实际上,这种对应关系是,而是添加1 floatx,floaty)位于数学dis_index = 0; dis_index <8 ; dis_index ++){p0 = dis_code [dis_index]; //发送扇区代码p0 p2 =(chaar)pow(2 ,dis_index); 再次在盘子上下载它,发现仍然存在问题,也就是说,当延迟很小时,屏幕很混乱,但是如果增加了延迟时间(例如程序中的值),您可以看到数字管已正确显示位。
此外,此方法创建的软件说明数量也很大(从写作速度来看)。
这里只提出了一个想法,这仅适用于这种经验,这并不重要,因此一切都适用。
[附录的结尾] -------------------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ----- - - - - - - - - - - - - - - - - - - - - - - - - - 参考编辑我的绘画,程序如下:#include
当晶体振荡器为1 2 米时,进入脉冲循环的时间间隔为1 U。
机器周期为1 U。
假设T0的初始值为X,是计算初始值的方法:在此示例中,计时器使用方法1 ,即1 6 位临时性,即,最大值为2 1 6 = 6 5 5 3 6 此值将发生,导致抵制并进入加工计划的盈余。
在这里,如果要将其延迟1 毫米,即1 000us,则有2 1 6 -X = 1 000的公式,您可以得到x = 6 4 5 3 6 ,将其转换为六边形为FC1 8 ,即Th0 = 0xfc的初始值,TL0,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 H = 1 1 1 1 1 1 1 1 1 1 1 B,也可以说6 5 5 3 6 是通过 盈余。
当对省的反应是关键时。
也没有抵制。
这仅在下一个数字之后发生。
分钟值应为1 001 us。
如果初始值为6 4 5 3 6 (FC1 8 ),则正是所需的值,因此上面示例中的初始值应为FC1 8 而不是FC1 7 这只是我的看法。
----------------------------------------------------------------------------- --------------------------------------------------------------------------- - - ----------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------------------------------------------------------------- -------------------------------- ############################ ## ########################################################## #仿真结果它们如下(屏幕截图 确定):★电路扇区符号对应于连接到平面的方法,即与先前的扇区图标表连接联系。
此外,该数字管的最大左侧是由八个数字组成的,右端是第八位,这与板上的布置相反,因此对于一神教,形状是基于该形状的。
理事会。
上面的形状还可以模拟结果而不添加戒断电阻,但是P0端口的高水平显示为灰色,即高电阻。
数码管动态扫描显示日期
数字管扫描并通过并联和控制位和线路连接多个数字管段来指示日期,并使用视觉效果来保持人眼动态在序列中动态显示每个图形,从而执行显示日期的显示。详细说明,数字管的工作动态扫描的原理在很大程度上取决于人眼的视觉效果。
这种效果是指能够在物体消失的短时间内看到其后果的人眼。
使用此功能,我们可以同时连接多个数字管段(通常是7 个段数字管)(检查每个数字管段的闭合)和选择位线(哪个数字管都可以使用)单独控制。
例如,要显示“ 2 02 3 -04 -05 ”,我们必须首先编码每个数字(0-9 ),这将确定数字管的每个部分是否加热。
然后,通过动态扫描,“ 2 ”出现在第一个数字管中,“ 0”出现在第二个数字管中,等等。
由于扫描速度非常快,因此人眼看起来所有数字管都同时表示日期。
为了实现这种动态扫描,我们需要一个微控制器(例如微控制器)来控制数字管屏幕。
微控制器将发送一个代码,该代码在指定的时间间隔(通常以毫秒为单位)上指示每个数字管中的数字,并检查数字管通过选择位行的选择。
这样,我们可以在数字管中动态显示日期。
七段数码管动态显示实验问题怎么办
实验名称:实验名称:实验2 实验目的:(1 )Quartusii软件的FPGA设计过程更熟悉(2 )设计(3 )编程方法的常见用法计数器和宏观功能。学习和理解动态扫描数字管的工作原理的实验原理:4 位连接通用杆7 段数字管通常用于实验板上,界面电路是八个中风段A-H的末尾。
所有数字管的相同名称彼此连接,每个数字管都由一个独立的普通Paul Comdr控制。
当您将字形代码发送到数字管时,所有数字管都会收到相同的雕文代码,但是数字管的明亮,具体取决于由I/O控制的COM终端,因此您可以根据自己的判断力确定要完成的工作。
显示的。
动态扫描采用时间共享方法,并且每个LED都被控制以依次打开。
在转向扫描过程中,每个监视器的照明时间非常短,但是由于人类视觉维护和光释放二极管的Huglo效应,每个监视器并未同时打开。
,只是扫描。
速度很快,您可以在不向人们眨眼的情况下给稳定的显示数据集留下深刻的印象。
4 实验要求:实现显示0000-9 9 9 9 的小数点计数器。
5 实验阶段1 设置项目,设置一个名为Leddisplay的项目,并设置顶部地图。
2 .设计技术时钟设计频率分配器,5 0MHz频率分配器可以输出到计数器以慢速增加计数器。
打开文件并创建一个新的.v文件。
输入以下程序:moduleint_div(clk,div_out); inputclk; outputregdiv_out; reg [3 1 :0] clk_div; parameterclk_freq ='d5 0_000_000; //系统时钟5 0MHzParameterDclk_freq ='d1 0; //输出频率1 0/2 Hzalways@ dgeclk)beginif(clk_div <(clk_freq/dclk_freq))clk_div <= clk_div+1 ; elsebeginclk_div <= 0; div_out <= 〜div_out; EndEndModule完成后,将文件设置为Project-> setAstop -lvelentity中的顶部级别实体。
设计文件分析:在工具栏中,“启动分析和合成命令按钮被执行以开始分析和综合。
此步骤用于此处识别设计错误。
频率分配器的组件符号是在分析成功之后创建的。
运行执行文件 - >>> creatsymbolforcurcurrentfile和此文件的组件符号(clk,reset_n,seg_dat a,seg_com); 输入[7 :0] seg_data [7 :0] seg_data 3 6 :0] integertemp; @(posedgeclk)beginif(!reset_n) 计数[1 4 :1 2 ] 3 :0]; seg_com = end3 'b01 0:bcd_led = temp [3 :0]; BCD_LED [3 :0]; bcd_led = temp [3 :0]; seg_com = 8 'b1 1 1 01 1 1 1 ; end3 'b1 01 :begintemp = temp%1 0000000/1 00000; bcd_led = temp [3 :0]; seg_com = 8 'B1 1 01 1 1 1 ; end3 'b1 1 0:begintemp = temp%1 000 0000/1 000000; bcd_led = temp [3 :0]; seg_com = 8 'b1 01 1 1 1 1 1 ;end3 'b1 1 1 :begintemp = temp%1 00000000/1 00000000; bcd_led = temp [3 :0]; seg_com = 8 'b01 1 1 1 1 1 ; endendSeendAlways@(seg_corbcd_led)begincase(bcd_led)4 'h 0:seg_data = 8 'hc0; 4 'h1 :seg_data = 8 'hf9 ; 4 'h2 :seg_data = 8 'ha4 ; 4 'h3 :seg_data = 8 'hb0; 4 'h4 :seg_data = 8 'h9 9 ; 4 'H5 :seg_data = 8 'h9 2 ; 4 'h6 :seg_data = 8 'h8 2 ; 4 'h7 :seg_data = 8 'hf8 ; 4 'h8 :seg_data = 8 'h8 0; 4 'h9 :seg_data = 8 'h9 0; 4 'ha:seg_data = 8 'h8 8 ; 4 'hb:seg_data = 8 'h8 3 ; 4 'hc:seg_data = 8 'hc6 ; 4 'hd:seg_data = 8 'ha1 ; 4 'He:seg_data = 8 'h8 6 ; 4 'hf:seg_data = 8 'h8 e; 默认值:seg_data = 8 'hc0; 输入完成后,将其设置为顶级实体,并确认并创建一个组件符号。
4 调用宏功能模块设计计数器。
在顶部地图的空白空间上进行双击。
符号对话框弹出并扩展了库,并找到了lpm_counter。
5 设计完整的顶层并返回到顶部电路,并注意重建顶层电路映射到顶层实体。
在顶部映射的空白空间上double -click弹出符号对话框,在库列中展开项目库,并查看上述步骤中创建的一些组件符号。
单击确定,然后单击图纸的空白空间输入相应的组件,添加其他组件,然后完成以下图片的连接。
6 设置芯片和销钉。
要配置芯片引脚并运行TCL脚本,请参见以下TCLScript文件: #sup.tclset_global_asignment-nemereserve_all_unused_pins “ asinputtri-staded” set_global_assignment-nameenable_init_init_done_outpotoffset_location_ OctionSignmentPin_1 4 9 -toclkset_locet_locsinmentpin_9 0-toreset #ledset Ancopy DCOM [0] set_location_assignmentpin_1 4 7 -to7 8 ledcom [1 ] set_location_assignmentpin_1 6 0-to7 8 ledcom [2 ] set_location_assignmentpin_1 5 9 -to7 8 ledcom [3 ] set_location_assignmentpin_1 6 2 -to7 8 ledcom [4 ] set_location_sign_1 6 1 8 ed gnmentpin_1 6 6 -to7 8 ledcom [6 ] set_locate_assignmentpin_1 6 4 -to7 8 ledcom [7 ] set_locate_assignmentpin_1 4 5 -to7 8 lata [0] set_locate_assignmentpin_1 4 3 -to7 8 leddata [1 ] set_locationsignmentpin_1 3 7 to7 lata [2 ] settatan -to7 8 leddata [2 ] set_location_assignmentpin_1 3 9 -to7 8 leddata [1 ] set_location_assignmentpin_1 3 9 -1 3 9 -to7 8 leddata [2 ] set_location_assignmentpin_1 3 9 数据[3 ] set_location_assignmentpin_1 4 4 -to7 8 leddata [4 ] set_location_assignmentpin_1 4 6 -to7 8 lata [5 ] set_location_assignmentpin_1 3 5 -to7 8 leddata [6 ] set_location_assignmentpin_1 4 2 -to7 8 leddata [7 ] 7 编译并执行菜单命令项目 - > setastop-levelentity,将顶级映射设置为当前顶级实体,然后编译。
8 下载1 )下载设置:使用下载器下载配置文件将其下载到FPGA。
2 )下载后,您可以看到实验。
数字管实现了一个小数点计数器,显示0000-9 9 9 9 6 在本学期的实验(1 )摘要,现代电子实验的第一个实验报告熟悉基本功能,电路图表输入和HDL输入方法和Quartusii设计软件。
(2 )在上一个实验中,在Quartusii的上一个实验中引入教科书和课件非常详细,并且每个阶段都由屏幕截图执行,因此请小心。
没有错误。
(3 )该实验是基于实验项目中的LED按钮控制的先前实验的集成,最好找到错误。
这是一个笨拙而琐碎的事情,错误通常来自很小的错误。
这些错误(例如最高图)在调用宏功能模块设计计数器时选择错误的选项似乎毫无意义,但是检查时非常麻烦,因此在实验时要小心和一半的心脏。
(4 )通过这种实验运动,我希望为未来奠定坚实的基础。
5 .9 Baidu Wenku VIP折扣。
Lixiang 6 亿 + VIP获得了7 个段数字管实验的动态扫描显示器的动态扫描显示。
扫描显示7 段数字管实验2 实验目的:(1 )熟悉季度(2 )计数器设计的FPGA设计过程动态扫描数字管编程学习与设计3 实验原理:在实验板中,通常使用4 位连接7 个段数字管。
所有数字管的名称和每个管都由通用的Paul Com终端中的数字管控制。
当您将字形代码发送到数字管时,所有数字管都会收到相同的雕文代码,但是数字管的明亮,具体取决于由I/O控制的COM终端,因此您可以根据自己的判断力确定要完成的工作。
显示的。
动态扫描采用时间共享方法,并且每个LED都被控制以依次打开。
在旋转照明扫描过程中,每个监视器的照明时间非常短,但是由于人类的视觉维护和光释放二极管的光环效应,每个监视器实际上并不同时点亮它,但是如果扫描速度足够快,它不会闪烁且稳定,因为它给人以显示数据集的印象。