stcat89c51单片机实验实验二
自制基于89C51单片机试验板2
基于89C51单片机的实验电路板的制作(二)该实验电路板是纯数字电路制作,比较简单,它不比一般业余爱好者制作简单的集成功放更复杂。
事实上,在作者执教的班级里,绝大部份学生从未摸过电烙铁,但在老师指导下,没有一个做不出的,仅有个别同学由于不听指挥,乱焊导致线路板损坏而重做。
1、材料清单表1给出了所用实验材料的清单。
其中电阻均使用1/16W 的型号,体积最小的一种,以便卧式安装,电容是普通的,集成电路全部使用插座,除U1外,各插座可以购买普通插座,U1最好是使用一种质量较好的圆孔型插座(如图1所示),这种插座价格略高一些,但多次拨插也不易损坏;跳线JP1、JP2和JP5使用单排针,这种针是方体、金黄色,每排由40根针通过塑料底座连成一体,安装时切3根为一组使用,该针可以方便地插入短路子,这种短路子在电脑上也常用,其外形如图2所示;按钮采用小型轻触式按钮(图2右侧所示);SP1采用无源型的蜂鸣器,可直接安装在印板上;元件中可能稍难购买的是两个数码管,市场上常见的是共阴型,共阳型可能会断货,但作者认为在89C51类单片机的应用中,共阳型数码管更有优势,尤其中数码管数量不很多时,驱动方便,价格低廉,所以坚持采用了这种设计。
标号值说明标号值 说明 R1 1K 1/16W 碳膜 Q2-Q6 8550 PNP R2,R3 100K 1/16W 碳膜 Y1 11.0592M 晶振(卧式)R4 470 1/16W 碳膜 JP4470 9脚排阻 R5-R12 5K1 1/16W 碳膜 S1-S4 轻触按钮 小型 R13-R20 62 1/16W 碳膜 U1 AT89C51 C1,C2 27P 小圆磁片 U2 NE555C3-C9 0.1U小圆磁片 U3HIN232E1 22U 电解 U4 AT24C01A E2 1000U 电解 U5 X5045 D1-D9Φ5 LED白发红 DISP1 LG4021BH 2位数码管Q1 8050 NPNDISP2 LG4301BH 3位数码管图1 质量较好的圆孔型插座 图2 短路子和轻触按钮2、制作印板图以PCB 文件的形式随无线电杂志光盘提供,读者可以使用PROTEL FORWINDOWS软件打开该文件,并用打印机打印出来,打印出来以后,可以根据自己的条件自行制作单面印板,建议同时打印一份顶层丝印层(Top Overlay layer)图,这样在安装时可以比较方便。
at89c51实验报告
at89c51实验报告AT89C51实验报告引言:AT89C51是一款经典的8位单片机,被广泛应用于各种嵌入式系统中。
本实验报告将介绍我对AT89C51的实验过程和结果,以及对该单片机的一些理解和应用。
实验目的:1. 熟悉AT89C51单片机的基本特性和功能;2. 掌握AT89C51单片机的编程方法和调试技巧;3. 实现简单的功能模块并验证其正确性。
实验过程:1. 硬件准备在实验开始前,我准备了一块AT89C51开发板、一台电脑、一根USB数据线以及一些连接线。
将开发板与电脑连接,确保能够正常通信和编程。
2. 软件设置我选择了Keil C51作为开发工具,打开软件后,新建一个工程,并选择AT89C51作为目标芯片。
接着,我编写了一个简单的程序,用于点亮开发板上的LED灯。
3. 编程调试将编写好的程序下载到AT89C51单片机中,然后通过调试工具进行程序的调试和运行。
在调试过程中,我发现程序中存在一处错误,经过仔细排查后,成功修复了问题。
4. 功能实现在程序调试通过后,我开始尝试实现一些功能模块。
首先,我实现了一个简单的计数器,通过按下开发板上的按钮,可以实现数字的加减操作。
接着,我尝试了一些其他的功能,如LED灯的闪烁、蜂鸣器的发声等。
实验结果:经过一系列的实验和调试,我成功地实现了以上功能模块,并验证了其正确性。
AT89C51单片机表现出了良好的稳定性和可靠性,在进行各种操作时没有出现明显的延迟或错误。
对AT89C51的理解和应用:通过这次实验,我对AT89C51单片机有了更深入的了解。
AT89C51作为一款经典的8位单片机,具有较强的处理能力和丰富的外设接口,可以广泛应用于各种嵌入式系统中。
在实际应用中,AT89C51可以用来控制各种外设,如LED灯、LCD显示屏、温度传感器等。
通过编写相应的程序,可以实现各种功能,如数据采集、数据处理、控制操作等。
此外,AT89C51还支持多种通信协议,如UART、SPI、I2C等,可以与其他设备进行数据交互。
89C51单片机实验指导书
目录实验一系统认识实验 (2)实验二多字节加、减运算实验 (3)实验三多字节乘、除法运算实验 (4)实验四代码转换实验 (5)实验五布尔操作实验 (6)实验六中断系统实验 (7)实验七定时器/计数器实验 (9)实验八串行通讯接口实验 (12)实验九串并转换实验 (16)实验十存储器扩展实验 (18)实验十一8155键盘及显示接口实验 (20)实验十二ADC0809(模/数转换) (24)实验十三 DAC0832(数/模转换) (26)实验十四步进电机实验 (29)实验十五直流电机调速控制实验 (32)附录Windows版Wmd51 3.0使用说明 (34)实验一系统认识实验一.实验目的和要求1.学习和掌握本实验系统的基本操作;2.总结汇编程序的形成和调试过程;3.掌握循环程序的设计;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.软件延时若系统时钟为6MHZ,要求实现每隔250毫秒将P1.0口取反。
2.无符号数加法计算N个数据的和,即Y=∑Xi (i=1--6)。
若六个数据放在片内RAM的50H——55H地址单元中,求和的结果Y放在内部RAM的03H(高位)、04H (低位)地址单元中。
1).32H+41H+01H+56H+11H+03H2).95H+01H+02H+44H+48H+12H3).54H+0F6H+1BH+20H+04H+0C1H3.数据排序将内部RAM地址单元30H—3FH中的16个数据按小到大的顺序重新排序。
实验二多字节加、减运算实验一.实验目的和要求1.掌握多字节数的加、减法运算;2.进一步熟悉实验系统的使用方法;3.进一步熟悉汇编程序的调试过程;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数的加法2.多字节无符号数减法入口:被减数低字节地址在R0,减数低字节数地址在R1,字节数在R2;出口:差的低字节地址在R0。
字节数在R3。
3.多字节十进制BCD码减法入口:被减数低字节地址在R1,减数低字节地址在R0,字节数在R2。
单片机实验报告范文
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机(微机原理)89c51电子时钟实验
天津**大学课程设计任务书课程名称:单片机原理及应用院(系、部、中心): *****专业: ******班级: ***姓名: *** 指导教师: ***电子时钟实验一、设计目的1、进一步掌握定时器的使用功能的使用和编程方法2、进一步掌握中断处理程序的编程方法3、进一步掌握数码显示电路的驱动方法二、设计要求利用CPU的定时器和试验仪上的提供的数码显示电路,设计一个电子时钟。
格式如下:XX XX XX 由左向右分别为:时、分、秒三、设备仪器1、LAB6000微控制器试验系统2、PC机一台3、试验导线若干四、试验步骤1、硬件电路设计本试验连接只需要接上显示/键盘的选择信号即可。
显示电路见附表中的键盘及LED显示电路或数码管显示试验。
2、程序框图电子钟程序框图3、程序流程图:OUTSEG EQU 08004H OUTBIT EQU 08002H ORG 0000HAJMP MAINORG 000BHAJMP TIMEORG 0300HMAIN:mov 20h,#00hMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV IP,#02H 、MOV IE,#82HMOV TMOD,#01H 、MOV TL0,#0B0HMOV TH0,#3CHSETB TR0 、MOV SP,#40H 、NEXT: LCALL DISP 、LCALL KEY 、JZ NEXT ;LCALL ANKEY 、SJMP NEXT 、NOPNOPNOPTIME: PUSH ACC PUSH PSWMOV TL0,#0B4H ;¸MOV TH0,#3CHINC 20H ;MOV A,20HCJNE A,#10,RETI1 MOV 20H,#00HMOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETI1 MOV 21H,#00H MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00HMOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00HRETI1: POP PSW ;POP ACCRETI ;NOPNOPDISP: ANL 2FH,#10H ; MOV A,21H ;´ANL A,#0FHORL A,2FHMOV 2FH,AMOV A,21HANL A,#0F0HSWAP AMOV 2EH,AANL 2DH,#10HMOV A,22H ;ANL A,#0FHORL A,2DHMOV 2DH,AMOV A,22HANL A,#0F0HSWAP AMOV 2CH,AANL 2BH,#10HMOV A,23H ;´ANL A,#0FHORL A,2BHMOV 2BH,AMOV A,23HANL A,#0F0HSWAP AMOV 2AH,AMOV R0,#2FHMOV R3,#06HMOV DPTR,#TABLEMOV A,#01HLOOP1: MOV B,A ;MOV DPTR,#OUTBITMOV A,#0MOVX @DPTR,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV DPTR,#OUTSEGMOVX @DPTR,AMOV DPTR,#OUTBITMOV A,BMOVX @DPTR,AMOV R2,#01H ;DJNZ R2,$DEC R0MOV A,BRL ADJNZ R3,LOOP1RETTABLE: db3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHKEY: MOV P3,#0FFH ;MOV A,P3CPL AANL A,#3CHJZ RETXLCALL DISP ;LCALL DISPMOV A,P3CPL AANL A,#3CH JZ RETXMOV R6,ALOOP2: LCALL DISP ; MOV A,P3CPL AANL A,#3CHJNZ LOOP2MOV A,R6RETX: RETNOPNOPANKEY: CLR EA ;LX: MOV A,R6JB ACC.2,L1 ;JB ACC.3,L2JB ACC.4,L3 ;JNB ACC.5,L12 ;JB 2BH.4,L6JB 2DH.4,L8JB 2FH.4,L9L12: LCALL DISP LCALL DISPLCALL KEY JZ L12 LJMP LXL2: MOV 25H,#00H ; CLR 2BH.4CLR 2DH.4CLR 2FH.4SETB EARETL3: JB 2BH.4,L61JB 2DH.4,L81JB 2FH.4,L91AJMP L12L1: MOV A,25HJZ LB1JB ACC.0,LB2JB ACC.1,LB3JNB ACC.2,L12LB1: MOV 25H,#01HSETB 2BH.4CLR 2DH.4CLR 2FH.4AJMP L12LB3: MOV 25H,#04H SETB 2FH.4CLR 2DH.4CLR 2BH.4AJMP L12LB2: MOV 25H,#02H SETB 2DH.4CLR 2BH.4CLR 2FH.4AJMP L12L61: AJMP L611 ; L81: AJMP L811 ; L91: AJMP L911L6: MOV A,23H ADD A,#01HDA AMOV 23H,ACJNE A,#24H,L15 L15: JC L112 MOV 23H,#00HL112: AJMP L12L8: MOV A,22H ; ADD A,#01HDA AMOV 22H,ACJNE A,#60H,L16 L16: JC L112 MOV 22H,#00H AJMP L12 L9: MOV A,21H ADD A,#01HDA AMOV 21H,ACJNE A,#60H,L17 L17: JC L112 MOV 21H,#00H AJMP L12L611: MOV A,23H ADD A,#99HDA AMOV 23H,ACJNE A,#99H,L112 MOV 23H,#23H AJMP L12L811: MOV A,22H ; ADD A,#99HDA AMOV 22H,ACJNE A,#99H,L112 MOV 22H,#59H AJMP L12L911: MOV A,21H ADD A,#99HDA AMOV 21H,ACJNE A,#99H,L112 MOV 21H,#59H AJMP L12NOPNOPEND4、程序调试:调试程序:打开LAB6000软件,录入程序以.ASM保存,编译,全速执行,观察试验结果。
C51单片机实验报告
C51单片机实验报告
一、实验内容
本次实验的目的是实现用C51单片机实现简易的闹钟功能:即用户可以设置闹钟时间,当到达闹钟的设定时间的时候,单片机会控制LED灯或者蜂鸣器发出报警信号来提醒用户。
二、实验任务
本次实验任务如下:
1.使用C51单片机读取外部时钟的时间。
2.实现从按键输入闹钟设定的时间。
3.使用定时器实现任务调度,即在每个时刻检查一次外部时钟的时间是否到达闹钟的设定时间,如果到达设定时间,则控制LED灯或者蜂鸣器发出报警信号。
三、实验过程
1.硬件部分:本实验使用的硬件是硬件C51单片机,它具有单片机主频11.059MHz,外部内存2K和内部RAM 128字节。
本次实验采用的C51单片机核心是AT89C51,它具有4K字节的Flash存储器,它有128个8位I/O口和3个定时器/计数器。
本次实验使用到的外设有:LCD1602显示模块、4个4*4的数字键盘、AT24C02的IIC从机存储器、LED灯和蜂鸣器。
2.软件部分:本次实验使用的软件工具是Keil C51编译器,使用它来编写C51单片机程序。
at89c51led闪烁实验汇编语言
at89c51led闪烁实验汇编语言1. 简介at89c51是一种经典的单片机芯片,被广泛应用于各种嵌入式系统中。
其中,led闪烁实验是单片机入门的必备实验之一,通过这个实验可以初步了解单片机的基本工作原理和汇编语言的编程方法。
2. 实验原理在at89c51单片机中,led是一种常用的输出设备,可以通过控制引脚的高低电平来实现闪烁效果。
通过学习汇编语言的编程方法,我们可以编写程序控制led引脚的状态,从而实现led的闪烁操作。
3. 实验步骤第一步:搭建硬件实验评台,将at89c51单片机与led灯连接。
第二步:编写汇编语言程序,通过设置端口的高低电平来实现led的闪烁效果。
第三步:将编写好的程序下载到at89c51单片机中,进行调试和验证。
4. 实验代码下面是一个简单的at89c51led闪烁实验的汇编语言程序:```assemblyorg 0h ; 程序从位置区域0开始执行mov P1, #0FFh ; 设置P1端口为输出loop:mov P1, #00h ; 将P1端口输出低电平acall delay ; 调用延时程序mov P1, #0FFh ; 将P1端口输出高电平acall delay ; 调用延时程序sjmp loop ; 无条件跳转至loop标号处delay:mov R1, #0Ah ; 设置延时计数值delay1:mov R2, #0FFh ; 设置内部计数值delay2:djnz R2, delay2 ; 内部计数减1djnz R1, delay1 ; 延时计数减1ret ; 返回end ; 程序结束```在这个程序中,我们首先设置P1端口为输出,并在一个循环中不断地将P1端口输出高低电平,通过调用延时程序来实现led的闪烁效果。
5. 实验总结通过这个实验,我们初步了解了at89c51单片机的基本工作原理和汇编语言的编程方法。
在以后的学习中,我们可以通过不断地深入实践和学习,掌握更多单片机和汇编语言的知识,从而实现更加复杂的功能和应用。
C51实验报告
C51实验报告实验1 集成环境开发以及并行I/O端口应用(流水灯)实验目的:1、认识Keil uVision 、Proteus软件;2、掌握用Keil uVision、Proteus软件建立工程;3、掌握用Keil uVision、Proteus软件进行仿真调试;实验原理:仪器与材料:安装有Proteus和Keil软件的微机。
实验步骤:1、在proteus软件中画原理图;2、keil软件下编写源程序并编译形成可执行文件.hex;3、载源程序;4、仿真。
实验记录:#include <AT89X51.H>unsigned char i;unsigned char temp;unsigned char a,b;void delay(void){unsigned char m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}void main(void){while(1){temp=0xfe;P1=temp;delay();for(i=1;i<8;i++){a=temp<<i;b=temp>>(8-i);P1=a|b;delay();}for(i=1;i<8;i++){a=temp>>i;b=temp<<(8-i);P1=a|b;delay();}}}讨论及回答问题:如何通过修改程序,改变流水灯的变化样式。
实验2 单片机的中断应用实验目的:1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
实验原理:1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断程序中设定是否允许中断重入,即设置EX0位。
另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。
使用拨动开关K1来产生中断触发信号。
由于采用边沿触发方式,K1应从高电平端,拨向低电平端来产生中断触发信号。
基于AT89C51的单片机综合实验设计
式集成温度传感器,能完成对温度信号的采集和
转换工作,并具有体积小、接口简单、使用方便
" 收稿日期: 作者简介:任建强( 用研究
),男,河北霸州人,廊坊师范学院数学系教师,主要从事计算机教育和微型计算机原理与应
··
等优点 其测温范围介于
之间;精
度
;温度输出形式为 位带符号串行二进制
数据 此芯片共三只引 脚: 、 ( )
第 卷第期
廊坊师范学院学报
年月
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
基于
的单片机综合实验设计"
任建强 ,张玲娟
( 廊坊师范学院 数学系,河北 廊坊
; 廊坊师范学院 物理系,河北 廊坊
)
摘 要:采用
单片机为核心,通过其串行口接收来自温度传感器的数据以探测室内温度,并由其 口输
出信号控制继电器通断,由继电器进一步控制加热器通断,从而构成“室温自动控制系统”并设计成综合实验,使学生
对 系列单片机应用系统的开发方法有更为全面的理解
关键词:
;单片机;自动控制
中图分类号:
文献标识码:
文章编号:
()
! 引言
单片机原理及其应用是高校计算机专业、
电子专业及机械专业的一门重要课程 本课
程注重 实 践, 教 学 中 必 须 设 法 安 排 好 实 验,
学生对实际开发过程的理解 因此,我们在
原实验基础之上增设了一些综合实验 本文
基于
设计了一个“室温自动控制系
统”综合实验,以使学生对 系列单片机在
实际中的应用方法有更深入更全面的理解
" 目标系统功能描述
AT89C51单片机实验及入门程序
Mcs-51单片机的引脚功能Vcc, GND: 电源端(+5V/3.3V/2.7V) XTAL1, XTAL2: 片内振荡电路输入、输出端RESET: 复位端(正脉冲有效,宽度>8 mS)EA/Vpp: 寻址外部ROM控制端/编程电源输入端。
ALE/PROG: 地址锁存允许/编程脉冲输入端。
P0口寻址外部低8位地址时接外部锁存器G端;ALE端平时会输出周期正脉冲:f ≈ fosc/6 ;对片内ROM编程时编程脉冲由此端加入。
P3口第二功能表:1.寄存器寻址从寄存器中读取操作数或存放操作数进寄存器例:MOV A,B ;(A)←(B)MOV 30H,R0 ;(30H)←(R0)MOV A,R1 ;(A)←(R1)2.立即寻址操作数直接就出现在指令中例:MOV A,#64H ;(A)←立即数64HADD A,#05H ;(A)←(A)+立即数05H任务一:控制一盏灯点亮JOB1: CLR P1.0 ;P1.0清“0”,亮红灯HERE: AJMP HERE ;原地等待,不做别的事任务二:红灯周期性地亮/灭JOB2: CPL P1.0 ;对P1.0取反:红灯亮/灭ACALL DELAY ;延时1秒AJMP JOB2 ;重复任务三:红外防盗报警JOB3: CLR P1.1 ; P1.1清“0”,亮绿灯REDO: SETB P1.3 ;将P1.3置“1”CHECK:JNB P1.3,CHECK ;检测传感器是否被阻断LOOP: …………;有入侵者,报警!AJMP REDO ;再跳回去检测例:两个十进制数“65”与“58”相加,根据常识,显然其和应当为“123”。
MOV A,#65HADD A,#58HDA A结果:(A)= 23H(CY)= 1任务一:控制一盏灯点亮任务二:红灯周期性亮/灭任务三:红外防盗报警0RG 0000HAJMP MAINORG 0003HRL AACALL DELAYRETIMAIN:MOV A,#80HSETB EX0SETB EAWAIT:JB ACC.0,JOB1JB ACC.1,JOB2JB ACC.2,JOB3AJMP W AITJOB1: CLR P1.0 ;亮红灯HERE: AJMP HEREJOB2: CPL P1.0 ;亮/灭ACALL DELAY ;延时1秒AJMP JOB2 ;重复JOB3: CLR P1.1 ;亮绿灯REDO: SETB P1.3CHECK:JNB P1.3,CHECK LOOP: …………;报警!AJMP REDO ;再检测程序的顺序/分支/循环三种基本结构例4-1:将R2中BCD码数转为二进制数存进R2ORG 2000HBCD2B:MOV A,R2 ;取入口数据ANL A,#0F0H ;取出十位SW AP A ;高4位低4位MOV B,#0AHMUL AB ;十位乘10MOV R3,A ;积暂存进R3MOV A,R2;再取入口数据ANL A,#0FH ;取出个位ADD A,R3MOV R2,A ;结果R2RET ;若不是子程序可用END例4-3-1 设有两个4字节的二进制数2F5BA7C3H和14DF35B8H,分别放在以40H和50H 为起始地址的单元中(低位在低地址),试编程求这个数之和,结果放在以40H为起始地址的单元中。
c51单片机实验报告
C51单片机实验报告实验目的本实验旨在通过对C51单片机的学习和实践,了解单片机的基本原理和使用方法,掌握C语言与单片机的编程技巧。
实验器材•C51单片机•电脑•C语言开发环境•连接线实验步骤步骤一:准备工作1.将C51单片机与电脑连接,确保连接线连接正确且稳固。
2.在电脑上安装C语言开发环境,如Keil等。
3.打开C语言开发环境,创建一个新的工程。
步骤二:编写程序1.在新建的工程中,打开主程序文件。
2.根据实验要求,编写相应的C语言程序。
3.确保程序逻辑正确,没有语法错误。
步骤三:编译程序1.在C语言开发环境中,点击编译按钮,对程序进行编译。
2.检查编译结果,确保没有出现错误提示。
步骤四:下载程序1.将编译成功的程序下载到C51单片机中。
2.确保下载过程中连接稳定,避免中断导致下载失败。
步骤五:运行程序1.完成程序下载后,断开C51单片机与电脑的连接。
2.将C51单片机连接到相应的电路中。
3.打开电源,启动C51单片机。
4.观察程序的运行情况,检查是否符合预期的结果。
实验结果根据实验要求,我们可以通过观察C51单片机的运行结果来验证程序的正确性。
如果程序实现了预期的功能,且单片机能够正常运行,即可认为实验结果是成功的。
实验总结本次实验通过对C51单片机的学习和实践,我们掌握了单片机的基本原理和使用方法,同时也提升了C语言与单片机的编程技巧。
在实验中,我们遵循了一步一步的思路,从准备工作到编写程序、编译程序、下载程序以及最终的运行程序,每个步骤都有条不紊地进行,确保实验的顺利进行。
通过本次实验,我们深刻认识到了单片机在现代电子技术中的重要性,它广泛应用于各个领域,如家电、汽车、通信等。
掌握单片机的原理和使用方法,对于我们今后的学习和工作都具有重要的意义。
参考资料[1] C51单片机实验指导书[2] C语言与单片机编程教程。
单片机实验报告范文
单片机实验报告范文一、实验目的本实验旨在通过实际操作和实践,使学生掌握单片机的基本原理和编程方法,培养学生分析问题和解决问题的能力,并能够通过编程实现各种功能。
二、实验器材1.STC89C52单片机开发板2.LED灯3.电阻4.电源5.连接线三、实验内容1.实验一:LED灯闪烁实验本实验利用单片机控制LED灯的亮灭,使LED灯以一定的频率交替闪烁。
2.实验二:数码管显示实验本实验利用单片机控制数码管的显示,实现0-9的数字显示功能,并通过编程实现数字的递增和递减。
四、实验步骤实验一:LED灯闪烁实验1.将LED正极连接到开发板的P0端口,将LED负极连接到GND端口。
2. 使用Keil C编译器编写程序,编写程序实现LED灯闪烁功能。
4.打开电源,观察LED灯的闪烁情况,检查实验结果是否正确。
实验二:数码管显示实验1.将数码管的A-G引脚连接到开发板的P0.0-P0.6端口,将数码管的共阳极连接到开发板的VCC端口。
2. 使用Keil C编译器编写程序,编写程序实现数码管的显示功能。
4.打开电源,观察数码管的显示情况,通过按键实现数字的递增和递减功能,检查实验结果是否正确。
五、实验结果实验一:LED灯闪烁实验实验结果符合预期,LED灯以一定的频率交替闪烁。
实验二:数码管显示实验实验结果符合预期,数码管能够正确地显示0-9的数字,并且可以通过按键实现数字的递增和递减。
六、实验总结通过本次实验,我对单片机的原理和编程方法有了更深入的了解。
通过编写程序,我成功地实现了LED灯的闪烁和数码管的显示功能,并且通过按键实现了数字的递增和递减功能。
实验过程中,我也遇到了一些问题,但通过查找资料和向同学请教,我成功地解决了这些问题。
通过实验,我发现单片机的编程控制功能非常强大,可以实现各种各样的功能,这对我以后的学习和工作都具有重要的意义。
七、实验心得通过本次单片机实验,我不仅学习了单片机的基本原理和编程方法,还锻炼了自己的动手能力和解决问题的能力。
c51单片机实验报告
c51单片机实验报告
《C51单片机实验报告》
C51单片机是一种广泛应用于嵌入式系统中的微控制器,具有高性能、低功耗和丰富的外设接口,因此在各种电子设备中得到了广泛的应用。
本次实验将以C51单片机为研究对象,通过实验验证其性能和功能。
实验一:LED灯控制实验
首先,我们将C51单片机与LED灯连接起来,通过程序控制LED灯的亮灭。
实验结果表明,C51单片机可以准确地控制LED灯的亮度和闪烁频率,具有良好的稳定性和可靠性。
实验二:蜂鸣器控制实验
接着,我们将C51单片机与蜂鸣器连接起来,通过程序控制蜂鸣器的发声。
实验结果显示,C51单片机可以精准地控制蜂鸣器的音调和音量,具有较高的音频输出质量。
实验三:温湿度传感器实验
最后,我们将C51单片机与温湿度传感器连接起来,通过程序读取并显示温湿度数值。
实验结果表明,C51单片机可以准确地读取传感器的数据,并通过显示屏输出,具有良好的数据处理能力。
通过以上实验,我们验证了C51单片机在LED灯控制、蜂鸣器控制和温湿度传感器应用方面的性能和功能。
C51单片机具有较高的稳定性、可靠性和可编程性,适用于各种嵌入式系统的设计与开发。
希望本次实验报告能够对C51单片机的应用和研究提供一定的参考价值。
AT89C51实验报告
实验一MCS-51指令系统实验一一数据排序一、实验目的熟悉MCS-51指令系统,掌握程序设计方法:加深对内部存储器读写的认识;熟悉仿真开发环境,学会源程序的编写、汇编/编译、调试:熟悉单片机硬件实验系统以及良好的实验习惯培养等;学会检查结果的正确性。
二、实验内容将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM,然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM以8000H开始的地址单元内。
三、实验说明有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序流程图五、调试程序:第一步:将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM40H〜49H单元中。
ORG OOOOHLJMP S7ART1ORG0030HSTART1: MOV R0,#40H;设置RO为内部RAM首地址MOV R1,#10;设出为计数器MOV DPTR,#TAB1L00P1: CLR A;累加器清零MOVC A,A+DPTR;外部数据送累加器A中MOV RO,A;送内部RAMINC RO;调整内部RAM指针,指向下一个数据INC DPTR;调整外部RAM指针DJNZ R1,L00P1;未完继续:第二步:排序.把片内RAM40H 〜49H 单元中的10个无符号数逐一比较,并按从小到大的顺序依次 排列在这片单元中•:第三步:将内部数据RAM 中40H 〜49H 单元的内容传送到外部数据存储器以8000H 开始的连续单元 中去。
需传送10次数据•将RI 作为循环计数器。
具体程序如下。
START3: MOV R0,#40HMOV DPTR,#8000HMOV R1,#10LOOP: MOV A,ROMOVX DPTR,AINC ROINC DPTRDJNZ R1,L00PSJMP$ TAB1: DB 09H,04H,02H,08H,00H ;数 0・9 表DB 00H,06H,07H,07H,0FH END六、收获与体会第一次用汇编语言在伟福6000环境下运行,感觉和VC6.0稍有不同,伟福6000调试界而非常丰 富,有片内RAM一一DATE :片外RAM ——XDATE :代码寄存器——CODE ;特殊功能寄存器——SFR ; 并且可以单步调试,自己所编的程序一目了然:伟福6000果然是好东西;冒泡法存在的不足及改进方法:START2: CLR F0MOV R3,#9MOV R0,#40HMOV A, ROL2: INC ROMOV R2,ASUBB A,ROMOV A,R2JC L1SETB F0XCH A,RODEC ROXCH A, ROINC ROL1: MOV A, RODJNZ R3,L2 JBF0,START2;清除交换标志位FO ;10个数据循环次数 ;数据存放区首址 ;取前数 ;保存前数 ;前数减后数 ;恢复前数 ;顺序则继续比较 ;逆序则建立标志位 ;前数与后数交换 ;指向前数单元 ;仍指向后数单元 ;取下一个数 ;依次重复比较 ;交换后重新比较:40H 〜49H 共计10个单元,;设置RO 为内部RAM 首地址 ;设置外部RAM 首地址 ;设Rl 为计数器 ;取内部RAM 数 ;送外部RAM ;调整内部RAM 指针,指向下一个数据 ;调整外部RAM 指针 ;未完继续;暂停第一,在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一不足,可设置一个标志单元flag,将其设置为OFF,表示被排序的表示是一个无序的表。
单片机实验1-19
实验一开关量输入输出实验一、实验要求1.利用ATC89C51单片机的P0口作开关量输入口,P1口作开关量输出口;2.当P0.x端开关闭合时,对应的P1.x口的LED发光二极管点亮;当P0.x端开关断开时,对应的P1.x口的LED发光二极管不亮;3.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路。
4.完成全部程序和电路调试工作。
二、实验目的1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;三、设计提示1.P0口作I/O端口使用时需要上拉电阻;2.程序设计使用需要循环语句;四、主要元件实验二继电器控制输出实验一、实验要求1.利用AT89C51单片机的P1.2、P1.3口作开关量输入,P1.0和P1.1口作开关量输出,并控制一个5V的继电器和蜂鸣器,同时该继电器又控制一个220V,1Hz的交流回路,在该交流回路中有一个220V,200W的直流灯泡;2.当P1.2端开关闭合时,P1.0控制继电器闭合并控制灯泡闪亮;当P1.2端开关断开时,继电器触电断开,灯泡不亮;3.P1.0控制继电器需要采用三极管驱动放大;4.当P1.3端开关闭合时,P1.1控制蜂鸣器闭合并发出声音;当P1.3端开关断开时,蜂鸣器不响;5.P1.1控制蜂鸣器采用三极管驱动放大;6.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路;7.完成全部程序和电路调试工作。
二、实验目的1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;3.了解继电器和蜂鸣器控制电路以及小电压控制大电压的方法三、设计提示1.在PROTEUS中无交流灯泡,采用1Hz交流电的目的是为了便于观察;2.为了防止继电器线圈断开时反电动势对三极管造成最好在继电器线圈两端并上一个肖特基二极管。
3. 由于采用5V蜂鸣器,三极管端也有压降,为了保证蜂鸣器鸣叫,需要将蜂鸣器内阻改为470欧姆左右。
AT89C51实验报告(DOC)
实验一MCS-51指令系统实验——数据排序一、实验目的熟悉MCS-51指令系统,掌握程序设计方法;加深对内部存储器读写的认识;熟悉仿真开发环境,学会源程序的编写、汇编/编译、调试;熟悉单片机硬件实验系统以及良好的实验习惯培养等;学会检查结果的正确性。
二、实验内容将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM,然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM 以8000H开始的地址单元内。
三、实验说明有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序流程图五、调试程序;第一步:将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM 40H~49H单元中。
ORG 0000HLJMP START1ORG 0030HSTART1: MOV R0,#40H ;设置R0为内部RAM首地址MOV R1,#10 ;设Rl为计数器MOV DPTR,#TAB1LOOP1: CLR A ; 累加器清零MOVC A,@A+DPTR ;外部数据送累加器A中MOV @R0,A ;送内部RAMINC R0 ;调整内部RAM指针,指向下一个数据INC DPTR ;调整外部RAM指针;第二步:排序。
把片内RAM 40H~49H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。
START2: CLR F0 ;清除交换标志位F0MOV R3,#9 ;10个数据循环次数MOV R0,#40H ;数据存放区首址MOV A,@R0 ;取前数L2: INC R0MOV R2,A ;保存前数SUBB A,@R0 ;前数减后数MOV A,R2 ;恢复前数JC L1 ;顺序则继续比较SETB F0 ;逆序则建立标志位XCH A,@R0 ;前数与后数交换DEC R0 ;指向前数单元XCH A,@R0INC R0 ;仍指向后数单元L1: MOV A,@R0 ;取下一个数DJNZ R3,L2 ;依次重复比较JB F0,START2 ;交换后重新比较;第三步:将内部数据RAM中40H~49H单元的内容传送到外部数据存储器以8000H开始的连续单元中去。
实验2 AT89C51单片机定时
实验2 INT0中断与AT89C51单片机定时/计数器应用技术仿真实验一、实验目的1. 学习外部中断技术的基本使用方法。
2. 学习中断处理程序的编程方法。
3. 初步了解C51芯片来驱动动态数码管计数原理。
二、实验器材计算机,windows7旗舰版,keil uVision4,proteus7.8,所需元件清单有:AT89C51,普通电容,电解电容,晶体振荡器,电阻,数码管排阻及按键。
三、实验原理MCS-51是一个多中断源的单片机,以8051为例,有三类共五个中断源,分别是外部中断两个,定时器中断两个和串行中断一个(其中断控制字在后面实验中详细讲到)。
外部中断是由外部原因引起的,共有两个中断源,既外部中断0和外部中断1。
它们的中断请求信号分别由引脚(P3.2)和(P3.3)引入;外部中断请求信号有两种,既低电平有效方式和脉冲后沿负跳有效方式。
中断开放和屏蔽-IE寄存器EA—中断允许总控制位EA=0 中断总禁止,禁止所有中断。
EA=1 中断总允许。
EX0(EX1)-- 外部中断允许控制位EX0(EX1)=0 禁止外中断。
EX0(EX1)=1 允许外中断。
ET0(ET1)-- 定时/计数中断允许控制位ET0(ET1)=0 禁止定时/计数中断。
ET0(ET1)=1 允许定时/计数中断。
ES –串行中断允许控制位ES=0 禁止串行中断。
ES=1允许串行中断。
中断优先级控制寄存器(IP)PT0—定时中断0优先级设定位PX1--外部中断1优先级设定位PT1—定时中断1优先级设定位PS—串行中断优先级设定位为0的位优先级为低;为1的位优先级为高;中断优先级是为中断嵌套服务的,MCS-51中断优先级的控制原则是:(1)低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。
(2)如果一个中断请求已被响应,则同级的其它中断响应将被禁止。
(3)如果同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求被响应。
AT89C51单片机键盘接口实验
班级电科081 班姓名龚浪学号080712110073 实验名称键盘接口实验指导教师马光喜理学院时间:2011年月日实验九键盘接口实验(设计性实验)一、实验目的:⑴熟悉单片机通过行列键盘的接口方法⑵掌握键盘扫描及处理程序的编程方法和调试方法二、实验内容:程序运行后,根据按下的数字键,数码管上应能显示相应数字。
三、实验硬件电路四、实验步骤:1、进入Keil C51组合软件的操作环境2、在Keil C51组合软件环境中, 根据实验硬件电路编辑源程序并对源文件进行编译,生成目标代码;源程序如下:;EXP9ORG 0000HLJMP MAINORG 8000H;*******检查是否有键按下******************** MAIN: MOV P0,#00MOV A,P2ANL A,#0FHSUBB A,#0FHJNC MAINACALL DELAY ;延时去抖动;****寄存器赋初值****************MOV R2,#4 ;R2记录行数MOV R3,#4 ;R3记录列数MOV A,#0FEH ;行扫描初始值MOV R4,#0FFH ;R4记录键号初值;*******按键扫描***************************** NEXT1: MOV P0,ARLC AMOV R0,A ;修改扫描码并送R0保存MOV A,P2 ;读入列值ANL A,#0FH ;清除高4位CJNE A,#0FH,NEXT2 ;有列值为0,转NEXT2MOV A,R4ADD A,R3 ;否则指向该行最后一列MOV R4,AMOV A,R0DJNZ R2,NEXT1 ;扫描下一行LJMP MAINNEXT2: INC R4 ;键号加1RRC AJC NEXT2 ;不是按键所在列,转NEXT2使键号加1MOV A,R4MOV P3,A ;键号送P3口显示LJMP MAIN ;转MAIN进行下一次等待扫描;*********延时函数***************************** DELAY: MOV R7,#2DELAY1: MOV R6,#100DELAY2: MOV R5,#200DELAY3: DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND3、运行、调试程序和结果检查⑴采用单步,设置断点等方法,观察程序走向是否正确;⑵连续运行程序,依次按动数字键观察LED的显示是否相符。
单片机实验二
天津理工大学计算机与通信工程学院实验报告2016-2017学年第一学期课程名称单片机原理与应用学号20145475 学生姓名吴延昌年级2014级专业计算机科学与技术课程代码0660226 实验地点7-215实验名称实验二并口实验主讲教师王晓晔试验时间2016年10月14日12:30-3:30成绩实验(二)实验名称并口实验软件环境Keil一、实验目的1.熟悉和掌握AT89C51单片机的并口工作原理;2.了解和掌握单片机的并口输入输出应用。
3.掌握数码管的使用方法。
二、实验内容一、LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
Proteus设计的仿真电路如图所示。
(1)运行下述程序,并在电路上验证。
(2)如果要求黄灯闪烁3次后红灯亮,应该怎么该写程序?#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_A=P0^0; //东西向灯sbit YELLOW_A=P0^1;sbit GREEN_A=P0^2;sbit RED_B=P0^3; //南北向灯sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量//延时void DelayMS(uint x){uchar i;while(x--) for(i=0;i<120;i++);}//交通灯切换void Traffic_Light(){switch(Operation_Type){case 1: //东西向绿灯与南北向红灯亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type=2;break;case 2: //东西向黄灯闪烁,绿灯关闭DelayMS(300);YELLOW_A=~YELLOW_A;GREEN_A=1;if(++Flash_Count!=10) return; //闪烁5次Flash_Count=0;Operation_Type=3;break;case 3: //东西向红灯,南北向绿灯亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type=4;break;case 4: //南北向黄灯闪烁5次DelayMS(300);YELLOW_B=~YELLOW_B;GREEN_B=1;if(++Flash_Count!=10) return;Flash_Count=0;Operation_Type=1;}}//主程序void main(){while(1) Traffic_Light();}修改:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_A=P0^0; //东西向灯sbit YELLOW_A=P0^1;sbit GREEN_A=P0^2;sbit RED_B=P0^3; //南北向灯sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量//延时void DelayMS(uint x){uchar i;while(x--) for(i=0;i<120;i++);}//交通灯切换void Traffic_Light(){switch(Operation_Type){case 1: //东西向绿灯与南北向红灯亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type=2;break;case 2: //东西向黄灯闪烁,绿灯关闭DelayMS(300);YELLOW_A=~YELLOW_A;GREEN_A=1;if(++Flash_Count!=6) return; //闪烁5次Flash_Count=0;Operation_Type=3;break;case 3: //东西向红灯,南北向绿灯亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type=4;break;case 4: //南北向黄灯闪烁5次DelayMS(300);YELLOW_B=~YELLOW_B;GREEN_B=1;if(++Flash_Count!=6) return;Flash_Count=0;Operation_Type=1;}}//主程序void main(){while(1) Traffic_Light();}2、开关控制用AT89C51单片机控制四个按键K1到K4和四个发光二极管D1到D4,要求当按下K1或K2键时D1或D2点亮,松开时对应的发光二极管熄灭,当按下K3或K4后,D3或D4不停地闪烁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉工程大学计算机科学与工程学院《单片机原理与应用》实验报告
3.软件设计
本程序包含两部分,一本分是主程序段,他完成了中断系统的初始化,另一部分是流水灯显示函数和中断服务函数,流水函数依次点亮8只流水灯,中断函数交替显示4只灯。
#include<reg51.h>
#define uchar unsifned char
unsigned char code table[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; for(i=0;i<8;i++)
{
P1=table[i];
delay(200);
}
P1=0x00;
}
//主函数
void main()
{
EA=1;//总中断允许
EX0=1;//外部中断0允许
IT0=1;//选择外部中断0为跳沿触发
P1=0xfe;//点亮一盏灯
while(1)
{
liushui();//调用函数实现流水灯
}
}
//外部中断0服务函数
void tx0_func() interrupt 0
{
unsigned char i;
P1=0xf0;//点亮上面四盏灯
for (i=0;i<10;i++)
{
P1=~P1;//P1口取反,让另外四盏灯亮,如此重复5次
delay(200);
}
}
按下开关,四只灯交替显示
实验总结
通过本次实验,学会了单片机中断的原理,通过询问老师又了解了写流水灯字库的原理,于是将8只灯交替闪烁改为四只灯上下交替闪烁,通过此原理,可以很容易的实现
a-g段依次点亮循环显示。