51单片机电路图及清单
- 格式:docx
- 大小:303.06 KB
- 文档页数:5
51单片机p1口转弯灯实验实验报告实验 P1口转弯灯实验一、实验内容P1.0 接开关5V,右转弯灯闪亮,P1.1接开关5V时左转弯灯闪亮,P1.0,P1.1同时接5V或接地时,转弯灯均不闪亮。
二、实验步骤P1.0 接K1,P1.1接K2,P1.4,P1.7接L1、L4、L7、L10,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。
三、实验原理图, 实验程序框图:, 实验接线图:四(实验程序清单ORG 0000HLJMP PX00ORG 0C30HPX00: MOV P1,#0FFH ;初始化PX03: MOV A,P1MOV B,AANL A,#03HCJNE A,#01H,PX01 ;满足只是P1.0为高条件? JB 00H,PX04 ;闪烁标志位CLR P1.4CLR P1.5 ;开右灯SETB P1.6SETB P1.7 ;关左灯MOV R2,#20HLCALL DELY ;延时SETB 00H ;置标志位LJMP PX03 ;继续查找状态PX04: SETB P1.4SETB P1.5SETB P1.6 ;关灯SETB P1.7MOV R2,#20HLCALL DELY ;延时CLR 00H ;清标志位AJMP PX03 ;继续查找状态PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件吗? JB 01H,PX05 ;判标志位SETB P1.4SETB P1.5 ;开左灯CLR P1.6CLR P1.7 ;关右灯MOV R2,#20HLCALL DELY ;延时SETB 01H ;置标志位LJMP PX03 ;继续查找PX05: SETB P1.4SETB P1.5SETB P1.6 ;关灯SETB P1.7MOV R2,#20HLCALL DELY ;延时CLR 01H ;清标志位LJMP PX03 ;继续查找状态PX02: SETB P1.4SETB P1.5SETB P1.6 ;关灯SETB P1.7LJMP PX03 ;继续DELY: PUSH 02HDEL2: PUSH 02HDEL3: PUSH 02H ;延时DEL4: DJNZ R2,DEL4POP 02HDJNZ R2,DEL3POP 02HDJNZ R2,DEL2POP 02HDJNZ R2,DELYRETEND五、实验总结1、通过实验进一步了解P1口的使用,学习汇编语言编程方法及调试技巧。
51单片机控制直流电机PWM调速
实验目的
1.掌握脉宽调制(PWM) 的方法。
2.用程序实现脉宽调制,并对直流电机进行调速控制。
实验设备
PC 机一台,单片机最小系统,驱动板、直流电机,连接导线等
实验原理
1.PWM (Pulse Width Modulation) 简称脉宽调制。
即,通过改变输出脉冲
的占空比,实现对直流电机进行调压调速控制。
2.实验线路图:
实验内容:
1. 利用实验室提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。
实验思考题
本实验中是通过改变脉冲的占空比,周期T 不变的方法来改变电机转速的,还有什么办法能改变电机的转速,应该怎么实现?
附件:
L298简介:
L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
51单片机最小系统原理图接触过单片机的朋友们都时常会听到别人提"最小系统"这个词.那到底什么是最小系统,有怎样设计称上"最小"呢?下面让依依电子来告诉大家:单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。
应用89C51(52)单片机设计并制作一个单片机最小系统,达到如下基本要求:1、具有上电复位和手动复位功能。
2、使用单片机片内程序存储器。
3、具有基本的人机交互接口。
按键输入、LED 显示功能。
4、具有一定的可扩展性,单片机I/O口可方便地与其他电路板连接。
51单片机学习想学单片机,有一段时间了,自己基础不好,在网上提了许多弱智的问题,有一些问题网友回答了,还有一些为题许多人不屑一顾。
学来学去,一年多过去了,可是还是没有入门,现在我就把我学习中遇到的一些问题和大家分享一下,希望在大虾的帮助下能快速的入门:)在学习之前我在网上打听了一下atmel公司的单片机用的人比较多,avr系列这几年在国内比较流行,但是考虑到avr还是没有51系列用的人多,51系列的许多技术在实践中都已经的到了前人的解决,遇到问题后,有许多高人可以帮助解决,所以这次学习,选用了atmel公司的at89s52,来进行学习。
学习单片机是需要花费时间实践的;学之前我们先准备好所需的东西一、所需硬件at89s52一片;8m晶振一个,30pf 的瓷片电容两个;10uf电解电容一个,10k的电阻一个;万用板(多孔板)一块;其他的器件如电烙铁一把30w的,松香,焊锡若干,如果是第一次学习,不知道这些东西,没关系,以下是它们的照片:Atmel公司生产的at89s52 8m晶振22pf瓷片电容电解电容图1/4 w 10k 的电阻普通的电木万用板好了,有了这些东西,我们就可以把它们组合到一起做成我们的最小系统了:)有了这些东西我们怎么焊接丫?不用着急,过一会我们把原理图给大家画出来大家就会了。
基于MCS-51单片机控制直流无刷电动机学号:3100501044班级:电气1002姓名:王辉军摘要直流无刷电机是同步电机的一种,由电动机本体、位置传感器和电子开关线路三部分组成。
其定子绕组一般制成多相(三相、四相、五相不等),转子由永久磁钢按一定极对数(2p=2,4,…)组成。
电机转子的转速受电机定子旋转磁场的速度及转子极数(P)影响:N=120.f / P。
在转子极数固定情况下,改变定子旋转磁场的频率就可以改变转子的转速。
直流无刷电机即是将同步电机加上电子式控制(驱动器),控制定子旋转磁场的频率并将电机转子的转速回授至控制中心反复校正,以期达到接近直流电机特性的方式。
也就是说直流无刷电机能够在额定负载范围内当负载变化时仍可以控制电机转子维持一定的转速。
MCS-51单片机是美国英特尔公司生产的一系列单片机的总称,是一种集成电路芯片,采用超大规模技术把具有数据处理能力的微处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入输出接口电路、定时计算器、串行通信口、脉宽调制电路、A/D转换器等电路集成到一块半导体硅片上,这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
本论文将介绍基于MCS-51单片机控制直流无刷电动机的设计,它可以实现控制直流无刷电动机的启动、停止、急停、正反转、加减速等功能。
关键词:单片机,直流无刷电动机,控制系统直流无刷电动机是在直流电动机的基础之上发展而来的,它是步进电动机的一种,继承了直流电动机的启动转矩大、调速性能好等特点克服了需要换向器的缺点在交通工具、家用电器及中小功率工业市场占有重要的地位。
直流无刷电动机不仅在电动自行车、电动摩托车、电动汽车上有着广泛的应用,而且在新一代的空调机、洗衣机、电冰箱、吸尘器,空气净化器等家用电器中也有逐步采用的趋势,尤其是随着微电子技术的发展,直流无刷电动机逐渐占有原来异步电动机变频调速的领域,这就使得直流无刷电动机的应用范围越来越广。
常用芯片引脚图一、 单片机类1、MCS-51芯片介绍:MCS-51系列单片机是美国Intel 公司开发的8位单片机,又可以分为多个子系列。
MCS-51系列单片机共有40条引脚,包括32条I/O 接口引脚、4条控制引脚、2条电源引脚、2条时钟引脚。
引脚说明: P0.0~P0.7:P0口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时的地址/数据复用口。
P1.0~P1.7:P1口8位口线,通用I/O 接口无第二功能。
P2.0~P2.7:P2口8位口线,第一功能作为通用I/O 接口,第二功能作为存储器扩展时传送高8位地址。
P3.0~P3.7:P3口8位口线,第一功能作为通用I/O 接口,第二功能作为为单片机的控制信号。
ALE/ PROG :地址锁存允许/编程脉冲输入信号线(输出信号)PSEN :片外程序存储器开发信号引脚(输出信号)EA/Vpp :片外程序存储器使用信号引脚/编程电源输入引脚RST/VPD :复位/备用电源引脚2、MCS-96芯片介绍:MCS-96系列单片机是美国Intel 公司继MCS-51系列单片机之后推出的16位单片机系列。
它含有比较丰富的软、硬件资源,适用于要求较高的实时控制场合。
它分为48引脚和68引脚两种,以48引脚居多。
引脚说明:RXD/P2.1 TXD/P2.0:串行数据传出分发送和接受引脚,同时也作为P2口的两条口线HS1.0~HS1.3:高速输入器的输入端HS0.0~HS0.5:高速输出器的输出端(有两个和HS1共用)Vcc :主电源引脚(+5V )Vss :数字电路地引脚(0V )Vpd :内部RAM 备用电源引脚(+5V )V REF :A/D 转换器基准电源引脚(+5V )AGND :A/D 转换器参考地引脚12345678910111213141516171819204039383736353433323130292827262524232221P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST RXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1V SS V CC P0.0/AD 0P0.1/AD 1P0.2/AD 2P0.3/AD 3P0.4/AD 4P0.5/AD 5P0.6/AD 6P0.7/AD 7EA/V PP ALE/PROG PSENP2.7/A 15P2.6/A 14P2.5/A 13P2.4/A 12P2.3/A 11P2.2/A 10P2.1/A 9P2.0/A 8803180518751XTAL1、XTAL2:内部振荡器反相器输入、输出端,常外接晶振。
51系列单片机引脚排列图与引脚功能介绍(含AT8051、89C2051等)51系列单片机引脚排列图与引脚功能介绍(含AT8051、89C2051等)AT89c51(含8051、80S51、8031、8751、8052等)可以说是最常用的51单片机了,下图介绍了AT89c51双列直插和smt两种封装的芯片引脚图资料.供大家查阅.管脚资料与普通的51单片机一样.部分引脚简要说明:1、 RESET:一般接2个元件:①接10K电阻到地,②接10μ电容到电源。
2、 -EA / VPP:一般情况下接高电平(这时使用MCU内部RAM/ROM)。
3、 ALE / PROG:一般情况下空着(这时使用MCU内部RAM/ROM)。
4、 -PSEN:一般情况下空着(当使用MCU内部RAM/ROM时)。
5、 P0内部没有上拉电阻。
所以必要时需要在每个引脚外接5.1K左右上拉电阻到电源。
6、 XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空(特别声明:有些文章把XTAL1、XTAL2的功能正好说反了。
而我们这里的说法绝对是正确的)。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取20PF左右。
7、 VDD:电源+5V。
VSS:GND接地。
PDIP:PQFP/TQFP:PLCC:引脚功能说明:89C51外部引脚图:(可以直接拷入ASM程序文件中,作注释使用,十分方便); ┏━┓┏━━┓; P1.0 ┫1 ┗┛ 40┣ Vcc; P1.1 ┫2 39┣ P0.0; P1.2 ┫3 38┣ P0.1; P1.3 ┫4 37┣ P0.2; P1.4 ┫5 36┣ P0.3; P1.5 ┫6 35┣ P0.4; P1.6 ┫7 34┣ P0.5; P1.7 ┫8 33┣ P0.6; RST/Vpd ┫9 32┣ P0.7; RXD P3.0 ┫10 31┣ -EA/Vpp(内1/外0 程序地址选择); TXD P3.1 ┫11 30┣ ALE/-P (地址锁存输出); -INT0 P3.2 ┫12 29┣ -PSEN (外部程序读选通输出); -INT1 P3.3 ┫13 28┣ P2.7; T0 P3.4 ┫14 27┣ P2.6; T1 P3.5 ┫15 26┣ P2.5; -WR P3.6 ┫16 25┣ P2.4; -RD P3.7 ┫17 24┣ P2.3; X2 ┫18 23┣ P2.2; X1 ┫19 22┣ P2.1; GND ┫20 21┣ P2.0; ┗━━━━━┛引脚说明:①电源引脚Vcc(40脚):典型值+5V。
C51单片机看门狗电路及程序设计方案院系:信息工程学院年级:2010级电子一班刘禹豪电子一班赵训虎电子二班邓启新一、引言在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。
由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog)(1)看门狗电路基本原理看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
(2)看门狗电路一般设计方式“看门狗”电路一般分为硬件看门狗与软件看门狗两种设计方式。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。
如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等.软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的方法实现(即利用单片机*此处设计原理实际上为下文中硬件看门狗设计思路。
内部定时器资源,通过编程模拟硬件看门狗工作方式),以51系列为例:因在51单片机中有两个定时器,在利用内部定时器资源来对主程序的运行进行监控时。
回想自己自己当初学习单片机的历程倍感艰辛,大一开始就进入实验室,学过51单片机、MSP430单片机、C8051F单片机、PIC单片机、ZIGBEE(CC2530处理器,个人觉得比单片机层次更高一些,可以应用的协议栈系统比较丰富),后来又学习了DSP、FPGA、ARM,参加过很多电子设计大赛,做了不少项目,也申请了几个专利。
当然,这期间的付出也非常非常多,大学七年里面几乎没有歇息过,放弃了寒暑假,一直呆在实验室里面,双休日也很少出去玩......所以我想说的是做技术确实很辛苦,需要坚韧不拔的毅力,需要付出很多很多。
当然这期间也走了不少的弯路,撞来撞去,像个丈二和尚摸不着头脑,哈哈。
所以希望分享一些有用的东西给大家,希望对大家有所帮助吧。
以前做了不少的PCB板子,现在也用的不多了,共享给大家,希望对大家有所帮助。
以后有时间,我会定期分享给大家一些做单片机方面的资料,还有如果哪位师弟师妹嫌买的学习板太贵的话,可以多几个人一起找我,我给大家做PCB电路板,大家自己买元器件,自己焊接调试,我想这样可能你们会学到的更多一些,而且还能少华一点钱。
今天我先把51单片机的最小系统原理图还有PCB文件共享给大家,这个是我以前做的PCB,大家可以直接拿去做PCB板子,如果那里有什么不懂的可以找我。
资料我上传到了“大牙兔工程师论坛,在STC板块就可以找到,或者直接搜索‘免费开源共享了,原理图+PCB+实物,教会大家做单片机最小系统’也可以找到”,也可以添加群234717900要资料。
1.最小系统原理图:2.PCB顶层设计3.PCB底层设计4.实物图6.基于Altium designer的原理图文件原理图文件.rar(10.12 KB, 下载次数: 1286) 7.基于Alitum designer的PCB文件PCB文件.rar(47.56 KB, 下载次数: 1569)。
C51单片机和电脑串口通信电路图与源码51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
串口通讯的硬件电路如上图所示在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。
通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。
按图7-3加上MAX232就可以了。
这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。
为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。
本串口软件在本网站可以找到软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。
串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。
串口实验的源程序如下所示:;这是一个S51单片机实验开发板向PC机的串口单向发送数据AF的演示程序;采用MAX232专用芯片作RS232/TTL电平转换.;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平);就发送一个16进制的AF字符ORG 0000HMOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV PCON,#80H;波特率翻倍为2400x2=4800BPSMOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)SETB TR1;启动定时器T1;以上完成通讯初始化设置WRIT:JB P3.6,$;判断K1是否按下,如果没有按下就等待ACALL DELAY10;延时10毫秒消触点抖动JB P3.6,WRIT;去除干扰信号JNB P3.6,$;等待按键松开MOV A,#0AFH;将16进制的字符AF发送到串口去MOV SBUF,A;将AF通过串口发送出去AJMP WRIT;10毫秒延时子程序DELAY10:MOV R4,#20D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2RETEND;=============两机串口通讯程序(主机)===================== ; 功能: 使用串行中断,接收数据并显示; 硬件环境: 自制单片机实验板; 软件环境: 伟福 V3.20; Create date: 2004_07_26; First Modify: 2004_07_26; second Modify:; Last Modify: 2004_07_26; Author: Sujiande;;===========预定义===================LED0 EQU 40H ;预定义数码管LED1 EQU 41H ;预定义数码管LED2 EQU 42H ;预定义数码管LED3 EQU 43H ;预定义数码管LED4 EQU 44H ;预定义数码管LED5 EQU 45H ;预定义数码管LED6 EQU 46H ;预定义数码管LED7 EQU 47H ;预定义数码管SDA BIT P0.1 ; 定义数据线引脚定义SCL BIT P0.0 ; 定义时钟线引脚定义;---------------------------ORG 0000H ;主程序入口AJMP MAIN ;跳转到主程序ORG 0100H ;主程序在ROM中存放位置;===============主程序=====================MAIN:MOV LED0,#00H ;赋初值MOV LED1,#00HMOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭MOV LED3,#16MOV LED4,#16MOV LED5,#16MOV LED6,#16MOV LED7,#16;--------------------;MOV DPTR,#TABLE ; 赋显示代码首地址MOV R1,#00H ; 给R1赋初值00HACALL DISPLAY ; 调显示子程序MOV SP, #30H ; 给堆栈指针赋初值;--------------------------; 使用定时器1,作为波特率发生器,设定波特率=9600,; 定时器初值为:FAH; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,; RB8=0,TI=0,RI=0 即0101 0000B; 波特率加倍;-----------------------------MOV TMOD,#20H ;设置定时器1,工作方式2MOV TH1,#0FAh ;赋初值: FAMOV TL1,#0FAh ;赋初值: FAMOV SCON, #50h ;设置串行口控制寄存器MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X) SETB TR1 ;启动定时;*****************主程序结束************************ LP8: MOV A,R1 ;将1的数据装到A中;-----------------------MOV SBUF,A ;将A的数据送到缓冲区JNB TI,$ ;等待数据发送完毕CLR TI ;清发送中断标志;-----------------------INC R1CJNE R1,#99,LP3MOV R1,#00HLP3: ACALL SEPERATE ;调拆分程序ACALL DISPLAY ;调显示子程序ACALL DELAY_1S ;调延时子程序AJMP LP8;=================拆分程序===================== SEPERATE: ANL A,#0Fh ;与操作得到个位数据MOV LED0,A ;个位送LED0MOV A,R1ANL A,#0F0H ;与操作得到十位数据SWAP AMOV LED1,A ;十位送LED1RET;===============显示子程序===================== DISPLAY:MOV DPTR,#TABLE ; 赋显示代码首地址MOV A,LED0 ;查表数据送AMOVC A,@A+DPTR ;查表,得到显示代码ACALL SHIFT ;调移位子程序MOV A,LED1MOVC A,@A+DPTRACALL SHIFTMOV A,LED2MOVC A,@A+DPTRACALL SHIFTMOV A,LED3MOVC A,@A+DPTRACALL SHIFTMOV A,LED4MOVC A,@A+DPTRACALL SHIFTMOV A,LED5MOVC A,@A+DPTRACALL SHIFTMOV A,LED6MOVC A,@A+DPTRACALL SHIFTMOV A,LED7MOVC A,@A+DPTRACALL SHIFTRET;---------显示代码表---------TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9, DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,-;================移位子程序============================SHIFT: PUSH A ; 进栈暂存A值MOV R0,#8 ; 循环8次CLR C ;清进位标志CLR SCL ;时钟线,先钳位为0LP2: RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPCLR SCLNOPNOPDJNZ R0,LP2POP A ; 出栈恢复A值RET;=============延时子程序===============DELAY_1S:MOV R7,#0ffHLOOP7: MOV R6,#0ffHLOOP6: NOPNOPNOPNOPNOPNOPDJNZ R6,LOOP6DJNZ R7,LOOP7RET;------------------------------END;=============两机串口通讯程序(从机)===================== ; 功能: 使用串行中断,接收数据并显示; 硬件环境: 自制单片机实验板; 软件环境: 伟福 V3.20; Create date: 2004_07_26; First Modify: 2004_07_26; second Modify:; Last Modify: 2004_07_26; Author: Sujiande;===========预定义===================LED0 EQU 40H ;预定义数码管LED1 EQU 41H ;预定义数码管LED2 EQU 42H ;预定义数码管LED3 EQU 43H ;预定义数码管LED4 EQU 44H ;预定义数码管LED5 EQU 45H ;预定义数码管LED6 EQU 46H ;预定义数码管LED7 EQU 47H ;预定义数码管SDA BIT P0.1 ; 定义数据线引脚定义SCL BIT P0.0 ; 定义时钟线引脚定义;---------------------------ORG 0000H ;主程序入口AJMP MAIN ;跳转到主程序ORG 0023H ;中断入口地址AJMP S_INT ;跳转到中断程序ORG 0100H ;主程序在ROM中存放位置;==============主程序========================MAIN:MOV LED0,#00H ;赋初值MOV LED1,#00HMOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭MOV LED4,#16MOV LED5,#16MOV LED6,#16MOV LED7,#16;------------------------------MOV DPTR,#TABLE ; 赋显示代码首地址ACALL DISPLAY ; 调显示子程序MOV SP, #30H ; 给堆栈指针赋初值;--------------------------------------------; 使用定时器1,作为波特率发生器,设定波特率=9600,; 定时器初值为:FAH; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,; RB8=0,TI=0,RI=0 即0101 0000B; 波特率加倍;---------------------------------------------MOV TMOD,#20H ;设置定时器1,工作方式2MOV TH1,#0FAh ;赋初值: FAMOV TL1,#0FAh ;赋初值: FAMOV SCON, #50h ;设置串行口控制寄存器MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X);---------------------------------------SETB EA ; 启动总中断SETB ES ; 启动串行中断SETB TR1 ;启动定时AJMP $ ; 等待中断;*****************主程序结束************************;===============中断服务程序============================= S_INT:MOV R1, SBUF ;将缓冲区的数据送到R1ACALL SEPERATE ;调拆分程序ACALL DISPLAY ;调显示子程序CLR RI ;清接收中断标志RETI ;中断返回;=================拆分程序===================== SEPERATE: MOV A,R1ANL A,#0Fh ;与操作得到个位数据MOV LED0,A ;个位送LED0MOV A,R1ANL A,#0F0H ;与操作得到十位数据SWAP A ;MOV LED1,A ;十位送LED1RET;===============显示子程序======================MOV A,LED0 ;查表数据送AMOVC A,@A+DPTR ;查表,得到显示代码ACALL SHIFT ;调移位子程序MOV A,LED1MOVC A,@A+DPTRACALL SHIFTMOV A,LED2MOVC A,@A+DPTRACALL SHIFTMOV A,LED3MOVC A,@A+DPTRACALL SHIFTMOV A,LED4MOVC A,@A+DPTRACALL SHIFTMOV A,LED5MOVC A,@A+DPTRACALL SHIFTMOV A,LED6MOVC A,@A+DPTRACALL SHIFTMOV A,LED7MOVC A,@A+DPTRACALL SHIFTRET;---------显示代码表---------TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9, DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,-;================移位子程序============================SHIFT: PUSH A ; 进栈暂存A值MOV R0,#8 ; 循环8次CLR C ;清进位标志CLR SCL ;时钟线,先钳位为0LP2: RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPCLR SCLNOPNOPDJNZ R0,LP2POP A ; 出栈恢复A值RET;=============延时子程序=============== DELAY_1S:MOV R7,#0ffHLOOP7: MOV R6,#0ffHLOOP6: NOPNOPNOPNOPNOPNOPDJNZ R6,LOOP6DJNZ R7,LOOP7RET;------------------------------END。
单片机系统板元件清单
2、原理图
(注意:上图电路图为了画图方便简洁,其中所画的引脚顺序跟芯片不一样)
(芯片的引脚需要与排针相连,方便实现功能,具体如图)
3、供电问题
可用充电宝作为电源供电,也可以在系统板的基础上焊接稳压电路,然后接电池组进行
供电。
选择焊接稳压电路供电的方法进行供电会有一定的额外加分。
电路图如下:
此电路可将左端输入的9V电压转换成右端输出的5V电压。
材料清单如下:
备注:左端9V电压可由六节干电池提供。