- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机控制继电器实现开关状态显示研讨
桂 林 电 子 科 技 大 学
单片机最小应用系统
设
计
报
告
指导老师:吴 兆 华
学 生: 王 竣 民
机电工程学院
单片机最小应用系统设计报告
目录
一、设计题目 3
二、设计内容与要求 3
三、设计目的意义 3
四、系统硬件电路图 3
五、程序流程图与源程序 5
5.1流程图 5
5.2源程序 5
5.2.1程序设计思想 5
5.2.2源程序清单 5
六、系统功能分析与说明 6
6.1系统主要组成部分 6
6.1.1 单片机最小系统部分 6
6.1.2 可编程的并行接口芯片8255A 7
6.1.3 输入输出部分 7
6.2 可编程的并行接口8255A接口电路部分 8
6.2.1 8255A的引脚 8
6.2.2 8255A的内部结构 9
6.2.3 8255A的工作方式 10
6.2.4 8255A的控制字 12
6.3 开关状态的读入与显示部分 14
6.4 指示灯显示部分 14
6.5 电路板的制作 14
6.5.1 PCB图的制作 15
6.5.2 电路板的腐蚀、钻孔和元器件的焊接 16
6.6 系统连线说明分析 16
七、设计体会 17
八、参考文献 18
一、设计题目
可编程的并行接口芯片8255A控制继电器实现开关状态显示控制。采用AT89S51单片机读取外部(8255的A口)的开关信号并将相应的信号通过8255的B口用LED显示出来端口。
二、设计内容与要求
用8051单片机和8255读取开关状态并显示开关状态。用8255的A口接8个开关,B口接8个发光二极管,读取开关状态后,将状态通过8个发光二极管显示出来。
三、设计目的意义
1、掌握单片机扩展外部数据存储器的方法。
2、掌握可编程的并行接口芯片8255A与单片机的硬件接口电路、8255A内部结构及其编程方法。
3、掌握单片机的最小系统的设计。
4、掌握电路板的设计与制作。。
5、了解程序编写与调试的方法和技巧。
6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。
四、系统硬件电路图
系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外部扩展芯片8255A部分、外电路接通显示部分、及电源显示部分。
设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。
图1 系统硬件图
五、程序流程图与源程序
5.1流程图
5.2源程序
5.2.1程序设计思想
单片机通入电源后,一直让单片机对8255的A口进行采集,将8255的A口的开关信号送入8255的B口,原因是8255的B口要时时显示开关的通与段的状态。
5.2.2源程序清单
#includereg51.h
#includeabsacc.h
#define uchar unsigned char
#define uint unsigned int
#define COM8255 XBYTE[0x0300] /*命令口地址*/
#define PA8255 XBYTE[0x0000] /*口A*/
#define PB8255 XBYTE[0x0100] /*口B*/
void delay200ms(void) /*延时函数*/
{ unsigned char i,j,k;
for(i=5;i0;i--)
for(j=132;j0;j--)
for(k=150;k0;k--);
}
void delay1s(void)
{ unsigned char i,j,k;
for(i=10;i0;i--)
for(j=132;j0;j--)
for(k=150;k0;k--);
}
void main(void) /*主函数*/
{
uchar m;
delay200ms();
COM8255=0x90; /*确定A,B口工作方式,A口输入,B口输出*/
while(1)
{
delay200ms();
m=PA8255; /*单片机读入8255 A口开关信号*/
P1=m; /*中间信号,便于调试*/
PB8255=m; /*将读入信号
文档评论(0)