51单片机仿真实例

发布者:dandan666最新更新时间:2015-01-19 来源: 51hei关键字:51单片机  仿真实例 手机看文章 扫描二维码
随时随地手机看文章
这是一个常用程序段—子程序—标准程序,通过端口扫描而获得输入数据或控制输出数据,达到节省位或字节的目的—节约硬件资源。
关于扫描,可以从位及其取反实现流水灯着手来理解。可以通过移位实现流水灯—扫描。可以通过字节数据(01H,02H,04H,08H,10H,20H,40H,80H—阳极管)的端口发送实现流水灯—扫描。可以通过数据表(DB 01H,02H,04H,08H,10H,20H,40H,80H—阴极管)实现流水灯—扫描。可以通过循环跳转实现流水灯—扫描。扫描注意入比出查—获得输入要比较数据、发送输出要检查出口
扫描获取端口字节
扫描输出位移动产生动态效果(01、02、04、08、10、20、40、80),可以用字节表
扫描输出字符字节,通过延时可以变换字符以便造成数字进位效果
ORG 0000H
START:
dbuf     equ  30h  ;置存储区首址
temp     equ  40h  ;置缓冲区首址
         org 00h
         mov 30h,#2 ;存入数据
         mov 31h,#0
         mov 32h,#1
         mov 33h,#0
         mov 34h,#7
         mov 35h,#1
         mov r0,#dbuf
         mov r1,#temp
         mov r2,#6     ;六位显示器
         mov dptr,#segtab ;段码表首地址
dp00:    mov a,@r0    ;取要显示的数据
         movc a,@a+dptr ;查表取段码
         mov @r1,a     ;段码暂存
         inc r1
         inc r0
         djnz r2,dp00                                                          
disp0:   mov r0,#temp    ;显示子程序
         mov r1,#6      ;扫描6次
         mov r2,#01h    ;从第一位开始
dp01:    mov a,@r0
         mov p2,a   ;段码输出
         mov a,r2   ;取位码
         mov p1,a   ;位码输出
         acall delay  ;调用延时
         mov a,r2
         rl a
         mov r2,a
         inc r0
         djnz r1,dp01
         sjmp disp0
segtab:  db 0C0H,0F9H,0A4H,0B0H,99H,92H  ;共阳极管
         db 82H,0F8H,80H,90H,88H,88H,83H
delay:   mov r4,#29h         ;延时子程序
aa1:     mov r5,0ffh
aa:      djnz r5,aa
         djnz r4,aa1
         ret
         end
???????????????????????
************************************************************************
还可以用其他程序形式进行扫描,像循环、递增或递减判断程序等。扫描技术可以用于点阵显示,液晶板(LCD)显示。这些都需要字符编码、显示延时、扫描端口以充分利用资源(节约资源)。
 
 
 实例1—关于动态显示—LED闪烁
 
ORG 0000H
  START: 
    MOV  A,#0FFH   ;字节传送
    MOV  P3,A  ;字节传送
       MOV  P1,A
       MOV C, 0A0H ;位传送
    JNB  0A0H,GUAN ;判断位电平低为真,则转移;直接地址位为0转移
       MOV  P1,#00H ;  P1口先赋#0FFH,再赋#00H,则产生闪烁
RET
GUAN : 
       MOV  P3,#00H ;P3口先赋#0FFH,再赋#00H,则产生闪烁,也可以使用取反指令
     RET   ;可以产生闪烁效果
 END 
其他方法(如:延时子程序)也可以实现动态显示。[page]
 
 实例2—单个LED灯-单个按键的仿真
ORG  0000H   ;这是伪指令,机器并不执行,用于程序的交流。指令执行的起始地址,十进制用D表示,十六进制用H表示,二进制用B表示。一个字节(8位机、16位机、32位机、64位机)一次执行。也可以按位来执行,也就是一个bit。
ORG  00000000B与ORG  0000H作用相同。注意8位(bit)一个字节。16位的处理器需要用0000 0000H 表示。16或32位以上,使用操作系统(Wince、Linux等)更有效,可以利用大量的、底层的、专业化、标准化的面向控制的库函数(如:API等)。
START:  ;这是伪指令,机器并不执行。只是为了汇编语言讲故事的可理解性
   MAIN:    ;伪指令,主程序,用于区别子程序
   PC→MOV  A,#00H   ;将立即数00000000B(常数0D)传送给累加器ACC(专用寄存器,可用于存放计算结果等)。要通过累加器A和其它存储地址进行数据交换。注意PC是自动移位(自动+1)到下一个语句的地址。使用该语句实质上是让PC具有初始位置。
PC→MOV  P1,A    ;将累加器中的数(常数0D)传送给端口P1(P1口8位全部置0,低电平, P1端口各位处于关闭状态,LED灯处于系统响应的准备状态),按字节传送数据。特别记忆:PC→表示指针所指地址,并会自动加1。
PC→MOV  C,0A0H   ;检测P2.0口的状态,将P2.0口的状态(由按键状态决定)传送给位累加器C,位累加器C的地址是PSW(程序状态字寄存器)的进位标志位CY(D7H\PSW.7)。P2.0口可以是开或关,也就是置1或0,高电平或低电平),按字节传送数据。要通过位累加器C和其它存储地址进行数据交换。该语句也可以写成:MOV  C,P2.0,比较字节数据传送MOV A,#00H或MOV  A,P1。
PC→MOV  P1.0,C;等价于MOV  90H,C;将位累加器C地址中的值传送给P1.0口(90H是其直接地址),也就是将P2.0口的状态(由直接地址0A0H状态决定)传送给直接地址90H,P1.0口
PC→MOV  P1.1,C  ;等价于MOV  91H,C
PC→MOV  P1.2,C  ;等价于MOV  92H,C
PC→MOV  P1.3,C  ;等价于MOV  93H,C  等等
END ;伪指令,程序结束标志
 
 实例3—扫描实现数字移动变化的仿真
 实例4—双数码管双端口数字进位仿真
 
 实例5—双四数码管组双端口数字显示—单端口扫描移动仿真—点阵
双四数码管组双端口数字显示—单端口扫描移动仿真,可以被分解为
a)  双四数码管组双端口数字显示—单端口无扫描无移动—>数字变化(依靠数表和指针),
b)  双四数码管组双端口数字显示—单端口扫描移动—>数字不变化(依靠数表和指针),
c)   双四数码管组双端口数字显示—单端口扫描移动—>数字变化(依靠数表和指针),
关键字:51单片机  仿真实例 引用地址:51单片机仿真实例

上一篇:51单片机的中断体系结构
下一篇:智能型单摆周期测定仪

推荐阅读最新更新时间:2024-03-16 13:51

基于LCD12864和51单片机的简单小游戏Proteus仿真程序
以lcd12864作为显示屏,实现一个按钮控制的简单小游戏。主要工作集中于游戏的图形化以及相关逻辑的实现。人物场景设计通过字模提取软件转换成为段码预先储存在单片机中,动画的实现采取局部刷新的方式以提高显示的速度。 仿真原理图如下 单片机源程序如下: #include reg51.h #define LCDLCDDisp_Off 0x3e #define LCDLCDDisp_On 0x3f #define Page_Add 0xb8//ye #define LCDCol_Add 0x40//lie #define Start_Line 0xC0//hang /*****液晶显示器的端口定义*****
[单片机]
基于LCD12864和<font color='red'>51单片机</font>的简单小游戏Proteus仿真程序
51单片机——定时/计数器
一.定时器操作步骤 定时器操作步骤 二.工作方式控制寄存器TMOD 工作方式控制寄存器TMOD TMOD的低半字节(D0,D1,D2,D3)用来控制定时器/计数器0 TMOD的高半字节(D4,D5,D6,D7)用来控制定时器/计数器1 对TMOD中的内容说明: GATE 门控制  GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。    当INT0引脚为高电平时TR0置位,启动定时器T0;    当INT1引脚为高电平时TR1置位,启动定时器T1。    GATE=0时,仅由TR0,TR1置位分别启动定
[单片机]
SED1335与51单片机的接口程序设计
  在以单片机为核心的嵌入式应用中,友好的人机交互界面起着十分重要的作用。典型的显示器件是LED数码管,其亮度高,适应于大多数应用场合。缺点是接口电路复杂,功耗高。液晶显示器件是利用液晶的电光效应制作的,具有功耗低、接口控制方便等优点,而且模块的接口信号和操作指令具有广泛的兼容性,并能直接与单片机接口,它还具有专用指令,可方便地实现各种不同的操作,同样的显示面积LCD其功耗为LED显示器的几百之一,所以它特别适宜与COMS电路直接相配。随着液晶显示技术的进步,高质量的液晶显示模块被日趋广泛地应用于各种嵌入式系统中。   现以笔者在某仪器设计中用到的图形点阵液晶模块TM320240E为例,介绍一种320×240图形点阵液晶与51
[单片机]
SED1335与<font color='red'>51单片机</font>的接口程序设计
用proteus8.0仿真51单片机控制步进电机实验报告与源码
用proteus8.0仿真51单片机控制步进电机,实现简单的正反转、加减速控制。 ps. 该贴仅为获取黑币而法,如有雷同,多多保函 实验内容 掌握KeilC51软件与Protues软件联合仿真调试的方法; 掌握步进电机的工作原理及控制方法; 掌握步进电机控制的不同编程方法。 电路图 实验心得 这次实验让我学到了通过改变延时函数的参数可以实现步进电机的增减速,改变驱动电机的数模可以实现电机的正反转,中途遇到的困难不少,但在老师的指导下总算是完成任务。这两次实验使我能更熟练地运用微机来控制其他器件,获益良多。 单片机源程序如下: #include reg52.h sbit KEY0=P0^0; sbit KE
[单片机]
用proteus8.0仿真<font color='red'>51单片机</font>控制步进电机实验报告与源码
使用51单片机编写计时器(分钟,秒钟分离版)
针对网络上大部分例程序只有倒计时秒 , 无法一眼看出还剩多少时间,因此做考试计时器不具备实用性。 因此,编写一个 分钟,秒钟分离的版本,方便考生的时间控制。 /*================================================================== 编写时间: 2022.04.21 设计目标: 四位共阴极数码管, 前两位为分钟后两位为秒钟。 设定时间为90分钟,开机后开始倒计时。 硬件电路设计: 数码管使用4个NPN三极管驱动,基极通过1K电阻连接STC89C51的 P1.0-P1.4 口。发射极共地,集电极接数码管阴极。 数码管数据位分别通过电阻限流后同S
[单片机]
单片机教程-MCS-51单片机简述
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生
[单片机]
51单片机(AT89C52)D/A转换
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit cs=P3^0; sbit wr=P3^1; void delayms(uint x) { uint y,z; for(y=x;y 0;y--) for(z=110;z 0;z--); } void main() { uchar temp; cs=0; wr=0; while(1) { P2=temp; delayms(25); temp++; } }
[单片机]
<font color='red'>51单片机</font>(AT89C52)D/A转换
基于AT89C51单片机的变频调速控制系统设计
  1.概述   在电气传动领域中,随着自关断器件技术水平的不断提高,脉宽调制技术(简称PWM技术)也日趋成熟。PMW交流变频调速以其高效率、高功率因数、输出波形好、结构简单等优点,在井下风机、水泵、造纸机等设备中得到了广泛的应用。将单片机应用于交流变频调速系统,可有效地避免传统调速方案中的一些缺点,达到了提高控制精度的目的 ,其特点:   (1)采用单片机可以使绝大多数控制逻辑通过软件实现,简化了电路。   (2)单片机具有更强的逻辑功能,运算速度快,精度高,有大容量的存储单元,可以实现较为复杂的控制。   (3)无零点漂移,控制精度高。   (4)可以提供人机界面,多机连网工作。   根据国内外有关变频调速的最新研
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved