实验基础
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,输入低电平使对应的段发光。

各个数字的显示使用查表的方式,下图为各段对应的引脚图。

前四节课的内容大概就是这些,欢迎指正其中的错误,欢迎各路大佬给些学习意见。
实验基础
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,输入低电平使对应的段发光。

各个数字的显示使用查表的方式,下图为各段对应的引脚图。

前四节课的内容大概就是这些,欢迎指正其中的错误,欢迎各路大佬给些学习意见。
举报