单片机交流
直播中

徐胤

8年用户 1138经验值
私信 关注
[问答]

如何对51单片机进行proteus仿真呢

如何对51单片机进行proteus仿真呢?

回帖(1)

李璇

2021-10-20 14:45:43
  实验基础
  51单片机
  本门课程硬件平台为ATMEL公司的AT89C52单片机,在Proteus软件进行仿真实验。
  51单片机是8位单片机、8k ROM 、256bytes RAM、四个8位并行I/O口
  
  汇编语言
  本门课程使用汇编语言编程。
  51单片机汇编指令
  keil4
  
  
  
  
  
  
  这里进行说明,提示是否添加.s文件,这个是51单片机的启动文件。在用c语言进行编程的时候,是要电机“是”来添加一个启动文件的。在实验课上用汇编语言编写程序并不需要这个启动文件。
  
  
  
  
  
  
  这样之后就可以在右侧的编辑页面进行编程了
  Proteus仿真软件
  因为手上没有开发板,实验课都是用的proteus仿真软件进行51单片机的仿真。
  老师给的软件版本是8.7SP3但是因为我这里破解出了问题总是闪退还没解决,就用了8.6版本。在这里附上一个Proteus8.7闪退解决办法,可以作为参考。可能是因为盗版系统的原因,这个办法似乎在我的电脑上面并不适用。
  下面开始使用
  
  
  然后一路点击下一步直到出现原理图界面,中间的选项全部保持默认即不创建pcb,不创建pcb布板设计,没有固件项目
  
  在原理图界面鼠标中键单击一下可以移动界面,再次单击退出移动。
  鼠标左键单击元件可以选中元件,再次单击可更改元件属性,右键可进行元件的旋转等操作。
  
  
  
  
  单击元件可选中,再次单击编辑元件
  
  
  
  实验内容
  第一节课
  第一节课内容为安装和认识keil4集成开发环境。上文已经详细记录。
  第二节课
  万物始于LED。
  第二节课的内容是学会使用Proteus进行仿真和点亮一个LED。
  Proteus软件的简单使用在上文已经记录。
  汇编程序如下:
  ORG 0100HSETB P2.0SJMP $ ;无条件相对转移 $就是本句语言的指针地址 ;SJMP $,就是硬件部分END 硬件部分
  
  
  第三节课
  点亮一个灯之后就是点亮流水灯了。
  汇编程序:
  ORG 0000HLJMP MAINORG 0100HMAIN:MOV A,#80HLOOP:MOV P2,ALCALL DELAYRR A LJMP LOOPDELAY:MOV R2,#255D1:MOV R3,#250D2:DJNZ R3,D2 ;寄存器减1,不为0 则转移DJNZ R2,D1RETEND 要实现流水灯效果,只需要让累加器A中的1000 0000循环右移,中间加 以延时即可。延时要足够长,否则会看到所有的灯都是亮的。
  延时程序分为两层的循环,D1和D2,分别用到R2、R3两个寄存器。两个八位寄存器,那对应的数字就是0~255注意给寄存器传送立即数时不要超过255。
  
  硬件连接如图。
  在用Proteus进行仿真时,不需要搭建完整的实验电路,只需要搭建本次实验所需的部分的功能电路即可进行仿真。所以可以不搭建晶振和复位等电路。
  第四节课
  第四节课是用单片机驱动数码管。
  数码管实质上就是LED灯的并联。abcdefg七段显示数字,八段数码管比七段数码管多了一个小数点段h。分为共阴数码管和共阳数码管,在Proteus软件中有这么多数码管可供选择
  
  带有anode描述的即为共阳数码管,其com端接地,输入高电平使对应的段发光。
  带有cathode描述的即为共阴数码管,其com端接vcc,输入低电平使对应的段发光。
  
  各个数字的显示使用查表的方式,下图为各段对应的引脚图。
  
  前四节课的内容大概就是这些,欢迎指正其中的错误,欢迎各路大佬给些学习意见。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分