单片机IO口扩展设计
更新时间:2023-05-22 06:43:01 阅读量: 实用文档 文档下载
单片机IO口扩展设计
单片机I/O口扩展实验
摘要:本设计随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中流水灯的应用就是一个典型的例子,特别在商业广告领域有重要的应用,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
关键词:单片机,控制,8X8 LED点阵,流水灯,AT89C52,动态显示
1.引言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的是单片机的一些简单的应用,最小系统的复位,INT0和INT1的一些应用来控制输出,达到控制彩灯(流水灯)。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本系统采用单片机AT89C52为中心器件,用8*8位LED显示元件XY1588ASR(24脚共阳管)来设计控制彩灯(流水灯),系统实用性强、操作简单、扩展性强。也可以为我们更好地了解单片机的应用加深我们对单片机的认识,对我们以后的学习都带来很大的帮助。
2.总体设计方案
2.1设计内容与设计思路及关键技术
单片机采用用AT89C52芯片,控制彩灯(流水灯)。8X8LED点阵流水灯设计将在8X8LED点阵显示上移流水灯显示,然后循环显示。
P1口涉及下载线,而P3口的P3.2和P3.3作用于外部中断,所以就用P0和P2口来控制滚动显示文字,通过P0口接8*8位LED阳极,P2口接8*8位LED负极来不断扫描显示。
单片机IO口扩展设计
2.2 设计方框图
流水灯设计总体设计方框图如图1所示,控制器采用单片机AT89C52,用8*8位LED显示元件XY1588ASR(24脚共阳管)。
图1 广告牌设计总体设计方框图
主控制器采用低功耗,高性能COMS 8位单片机AT89C52芯片;单片机复位则由最小系统决定,由电源复位产生;时钟振荡则由12MHz的晶振产生;LED显示则由用8*8位LED显示元件XY1588ASR(24脚共阳管)来设计。
2.3.8X8点阵LED工作原理说明
8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列(Y)置1电平,某一行(X)置0电平,则相应的二极管就亮。
单片机IO口扩展设计
图2.8X8点阵LED结构图
从图2中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
2.5.流水灯设计的总电路图
流水灯设计的总电路图在最小系统的基础上加上了由9014三极管驱动的蜂鸣器、外部中断的两个开关(实现外部中断控制)、P0和P2口的跳线(实现外扩展)、还有用三极管驱动的8*8位LED显示元件XY1588ASR(24脚共阳管)。
单片机IO口扩展设计
图4. 总电路图
2.7.仿真运行效果图
最终调试仿真运行结果如下图:
图6.效果图
3.单片机I/O口扩展程序的主程序
#include <atmel\regx52.h>
#define int8 unsigned char
#define int16 unsigned int
#define int32 unsigned long
int8 code num_tab[][8]={
/*--8*8--阴码--逐行扫描--逆向(低位在前)--*/
{0x00,0x00,0x00,0x38,0x44,0x38,0x00,0x00},/*"0",0*/
{0x00,0x00,0x40,0x78,0x48,0x00,0x00,0x00},/*"1",1*/
{0x00,0x00,0x00,0x4C,0x54,0x6C,0x00,0x00},/*"2",2*/
{0x00,0x00,0x00,0x74,0x4C,0x6C,0x00,0x00},/*"3",3*/
{0x00,0x00,0x00,0x7C,0x28,0x10,0x00,0x00},/*"4",4*/
{0x00,0x00,0x00,0x74,0x54,0x7C,0x00,0x00},/*"5",5*/
{0x00,0x00,0x70,0x54,0x54,0x38,0x00,0x00},/*"6",6*/
{0x00,0x00,0x04,0x7C,0x04,0x00,0x00,0x00},/*"7",7*/
{0x00,0x00,0x00,0x6C,0x54,0x6C,0x00,0x00},/*"8",8*/
{0x00,0x00,0x00,0x3C,0x54,0x1C,0x00,0x00},/*"9",9*/
{0x00,0x00,0x00,0x38,0x44,0x38,0x00,0x00},/*"0",10*/
{0x00,0x00,0x40,0x78,0x58,0x68,0x00,0x00},/*"a",11*/
单片机IO口扩展设计
{0x00,0x00,0x78,0x48,0x7C,0x00,0x00,0x00},/*"b",12*/
{0x00,0x00,0x00,0x48,0x48,0x70,0x00,0x00},/*"c",13*/
{0x00,0x00,0x00,0x7C,0x48,0x78,0x00,0x00},/*"d",14*/
{0x00,0x00,0x58,0x58,0x70,0x00,0x00,0x00},/*"e",15*/
{0x00,0x00,0x00,0x4C,0x7C,0x48,0x00,0x00},/*"f",16*/
{0x00,0x08,0xD8,0xD8,0xF8,0x00,0x00,0x00},/*"g",17*/
{0x00,0x00,0x78,0x08,0x7C,0x00,0x00,0x00},/*"h",18*/
{0x00,0x00,0x40,0x7C,0x48,0x00,0x00,0x00},/*"i",19*/
{0x00,0x00,0x00,0xFC,0x88,0x00,0x00,0x00},/*"j",20*/
{0x00,0x00,0x48,0x78,0x7C,0x00,0x00,0x00},/*"k",21*/
{0x00,0x00,0x40,0x7C,0x44,0x00,0x00,0x00},/*"l",22*/
{0x00,0x00,0x00,0x78,0x78,0x78,0x00,0x00},/*"m",23*/
{0x00,0x00,0x78,0x08,0x78,0x00,0x00,0x00},/*"n",24*/
{0x00,0x00,0x30,0x48,0x48,0x30,0x00,0x00},/*"o",25*/
{0x00,0x00,0x78,0xC8,0xF8,0x00,0x00,0x00},/*"p",26*/
{0x00,0x00,0x00,0xF8,0xC8,0x78,0x00,0x00},/*"q",27*/
{0x00,0x00,0x08,0x48,0x78,0x48,0x00,0x00},/*"r",28*/
{0x00,0x00,0x68,0x68,0x58,0x00,0x00,0x00},/*"s",29*/
{0x00,0x00,0x00,0x40,0x7C,0x08,0x00,0x00},/*"t",30*/
{0x00,0x00,0x78,0x40,0x78,0x00,0x00,0x00},/*"u",31*/
{0x00,0x08,0x38,0x40,0x38,0x08,0x00,0x00},/*"v",32*/
{0x00,0x08,0x78,0x18,0x68,0x18,0x00,0x00},/*"w",33*/
{0x00,0x00,0x48,0x78,0x78,0x48,0x00,0x00},/*"x",34*/
{0x00,0x00,0x08,0x38,0xD8,0x88,0x00,0x00},/*"y",35*/
{0x00,0x00,0x48,0x78,0x68,0x00,0x00,0x00}/*"z",36*/
};
void delay(void);
int8 n;
int8 delta_p;
int8 *p;
void main(void){
int8 i;
int8 j;
p=&num_tab[0][0];
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
ET0=1;
EA=1;
TR0=1;
while(1)
{
for(i=0;i<8;i++){
delay();
单片机IO口扩展设计
P0=*(p+delta_p);
P2=i|0x18;
p++;
if(p>&num_tab[0][7])
p=&num_tab[0][0];
}
}
}
void delay(void){
int16 i;
for(i=0;i<500;i++);
}
void timer0() interrupt 1 using 3
{
TF0=0;
TH0=0xfc;
TL0=0x18;
if(n<200)
{
n++;
}
else
{
n=0;
if(delta_p>240)
delta_p=0;
else
delta_p+=2;
}
}
4.系统硬件电路
4.1.芯片由AT89C52的主要特性
与MCS-51 兼容
寿命:>1000写/擦循环ISP FLASH ROM
32可编程I/O线
3个16位定时器/计数器
2个外部中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
4.2.管脚说明
VCC:供电电压。
单片机IO口扩展设计
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚 备选功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
单片机IO口扩展设计
5.总结与体会
本系统是以单片机AT89C52芯片为核心部件,完成8X8LED点阵流水灯设计在8X8LED点阵显示上移流水灯功能。我上网找资料,上图书馆,尽可能的了解有关于单片机的基本原理,8X8LED点阵显示技术和动态显示等这方面的知识。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能有了更进一步的提高。 在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,也从中学会了很多。经过将近二周的单片机课程设计,终于完成了我的单片机I/O口扩展的设计,基本上达到实验的目的。希望这次的经验可以对以后的学习带来更好的帮助。
6.参考文献
[1]李朝青.单片机原理及接口技术(第3版).北京航天航空大学出版社,2005年10月.
[2]求是科技.单片机典型外围器件及应用实例.北京:人民邮电出版社,2006年2月
[3]辛友顺.单片机应用系统设计与实现.2005年3月
[4]戴胜华.单片机原理与应用. 2005年4月
正在阅读:
单片机IO口扩展设计05-22
叶德磊宏观经济学课后答案09-27
实用英语翻译教案(1)03-25
自杀或企图自杀处理应急预案11-17
语文网络学习资料03-21
三年级下册科学堂堂清检测题 齐02-27
2019年化验员实习总结(4篇)03-13
山东省济宁市高新区2022-2022学年第二学期一模质量检测九年级物04-12
烧烤店创业计划书03-28
服装材料学的6套试卷06-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 单片机
- 扩展
- 设计
- 数据结构课程设计之-树与二叉树的转换
- 红与黑读后感800字左右
- 家具产品品质标准
- 公共基础知识(单选题)
- 航空航天在国防和国民经济中的地位和作用
- JAVA语言基础教程
- 病理生理学问答题重点
- 商务酒店设计注意事项 Microsoft Word 文档
- 2011-2015年中国凝胶糖果市场研究及前景预测咨询报告(原创)
- 湖南省2010年第六次全国人口普查主要数据公报
- 个人学习计划 计算机信息管理 姓名
- 日本著名景观设计师户田芳树:走进我的景观世界
- 清华大学热能工程系2002级期中考试A卷参考答案(含答案)
- 人教版小学六年级数学圆柱与圆锥的复习
- 滑稽模仿与版权保护
- 2013—2014学年第一学期高中语文教研组工作总结
- 液压系统的基本回路总结
- 隧道监控量测信息化探索论文(定型版)2014.1.8
- 2009年教代会学校工作报告
- 英语专业八级改错模拟题