开发板手册1.docx
- 文档编号:5470477
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:21
- 大小:165.81KB
开发板手册1.docx
《开发板手册1.docx》由会员分享,可在线阅读,更多相关《开发板手册1.docx(21页珍藏版)》请在冰豆网上搜索。
开发板手册1
AT89S52单片机开发板实验手册
概述:
AT89S52多功能单片机开发板
特点:
1.板载资源丰富,常见的控制对象基本已经包括.
2.采用在系统方式(ISP)编程,通过下载电路下载程序,不用烧录器即可下载程序,调试方便.
3.可由直流稳压电源或通过USB数据线供电.扩展了若干个电源接口,板上电源可以外接给其
他电路板使用.
4.所有板上资源均用排针引出.
5.红外发射/接收,PS/2接口接入键盘,时钟芯片,数字温度计测温等模块的程序编成了子
函数,已经模块化,工程应用需要时可以直接调用.
6. 提供程序,常用软件(编译软件,烧录软件,字模提取,串口上位机软件,C语言所有库函数
等),视频教程(主要为计算机屏幕操作的录像),开发板用户手册,原理图,器件Datasheet
等.配套提供的所有程序均可直接运行,注释已经尽量详细,能满足从单片机入门到进阶的
需要.
7.基于以上各模块,提供了综合应用的实例,即:
可通过PC机键盘或通过红外发射进行控制
的电子万年历等.(具体见实验介绍).
本开发板含有如下功能模块:
01. 流水灯 (控制8个超亮LED闪烁)
02. 方波,PWM信号输出
03. 按键中断
04. 四位数码管动态显示
05. 计数脉冲信号并显示
06. 报警与音乐演奏
07. 4×4键盘扩展
08. 看门狗+上电自动复位+手动复位+电源监控
09. 128*64点阵式液晶显示 (可显示画面和文字等)
10. RS232串行通讯 (单片机通过串口与PC机进行通讯,板上数码管和上位机软
件均可显示通讯的数据,提供上位机软件)
11. 红外信号发射与接收 (单片机控制红外二极管发射红外信号并接收信号,也可以通
过遥控器发射,单片机控制接收信号并处理)
12. 温度测量
13. I2C接口的E2PROM (AT24C08,8K容量,可用于断电时存储数据等场合,单片机软件
模拟I2C总线协议与之通讯)
14. 时钟芯片 (扩展时钟芯片以获取年/月/日,当前时间,星期等信息)
15. PS2接口 (可外接PC机的键盘做系统的输入)
16. 可通过键盘/红外遥控控制的电子万年历 (液晶屏显示年/月/日,当前时间,星期,闹
铃定闹的时间,倒计时状态等;可以修改闹铃时间和倒计时的起始时间;可显示环境温度;可通过PS/2接口接入键盘或通过红外发射来校正时间,开/关闹铃等.)
实验注意事项:
1.通电时,最好不要用手拿着电路板,防止短路;接线时必须断开电源(开关为J2).
2.焊接JTAG座之前,需要将其2脚的针拔出,可确保调试器的VCC不与板子的VCC接到一起。
3.要确保程序正常下载,需要做到:
1>单片机P1.5,P1.6,P1.7三个引脚不能接到功能模块;
2>单片机复位端J13的2脚,不能接到上电自动复位端(即J13的1脚),也不能接到看门狗的复位输出(即J13的3脚)。
3>确保USB调试器的驱动安装正确,在确保第1>点和第2>点的情况下,调试器还是不能下载程序,则可尝试更新调试器的驱动,再尝试下载。
4.程序下载完成后,将J13的1脚和2脚通过短路帽短接,再按下按键S17手动复位单片机:
程序下载完成后往往需要复位单片机,单片机才能正常工作。
5.数码管和液晶屏不能同时接到开发板,否则二者都不能正常使用.
6.程序以相应目录下的为准,本手册的部分代码只作为功能介绍之用,不能保证是最新版本。
编程软件和烧录软件等的使用见视频教程。
实验目录
(Ⅰ)基本实验
1. 流水灯-------------------------------------------------------------------------------------------4
2. 方波-PWM信号输出---------------------------------------------------------------------------6
3. 按键中断----------------------------------------------------------------------------------------8
4. 四位数码管动态显示-------------------------------------------------------------------------10
5. 计数脉冲信号并显示-------------------------------------------------------------------------12
6. 报警与音乐演奏-------------------------------------------------------------------------------13
7. 4×4键盘扩展----------------------------------------------------------------------------------13
8. 看门狗+上电自动复位+手动复位+电源监控----------------------------------------------14
9. 128*64点阵式液晶显示----------------------------------------------------------------------14
10. RS232串行通讯-------------------------------------------------------------------------------15
11. 红外信号发射与接收-------------------------------------------------------------------------16
12. 温度测量---------------------------------------------------------------------------------------16
13. I2C接口的E2PROM--------------------------------------------------------------------------17
14. 时钟芯片---------------------------------------------------------------------------------------18
15. PS2接口---------------------------------------------------------------------------------------18
(Ⅱ)综合实验
16.可调式电子万年历-----------------------------------------------------------------------------19
(Ⅰ)基本实验
1.流水灯
实验内容:
利用单片机I/O口输出高低变化的电平,控制流水灯按程序设置的功能闪烁.
接线说明
J6接入单片机P0口.
注意:
单片机端口有两种操作方式,一种是写端口,如P0=0xff;另一种是读端口,如if(P0==0xff),即读I/O口P0的状态,值为0xff时满足条件.
程序清单:
/***************************************************************
函数功能:
控制8个流水灯闪烁
接线说明:
流水灯接线柱接到P0口
学习内容:
单片机IO口(输入/输出)的应用
****************************************************************/
#include
delay(intk);//延时函数预定义
main()
{
inti;
intdata1=0x7f;
intdata2=0xfe;
while
(1)
{
intabb=0xfe;//变量abb赋初值
for(i=0;i<8;i++)
{
P0=abb;
delay(1000);//延时1秒
abb=abb<<1;//8个灯依次点亮
}
P0=0xff;//8个灯均灭
delay(1000);
abb=0x7f;
for(i=0;i<8;i++)
{
P0=abb;
delay(1000);
abb=abb>>1;//8个灯换个方向依次点亮
}
P0=0xff;//8个灯均灭
delay(1000);
P0=0x00;//8个灯均灭
delay(1000);
P0=0xff;//8个灯均灭
delay(1000);
}
}
delay(intk)//延时函数,大致延时K毫秒
{
intd,n;
for(d=0;d { for(n=0;n<125;n++){;}//由经验值,12M晶振时大概的延时时间(延时1ms) } } 2.方波输出 <1>.利用板上NE555组成振荡器产生方波. 占空比及周期可以通过相关电阻,电容的数值计算得出.(线路已经接好,上电后L2即开始 闪烁) <2>.通过单片机定时器产生方波 通过设定定时器的定时值,计数值满时溢出产生中断,在中断服务程序中使相应管脚输出电平反相,从而产生方波信号. 接线说明: 单片机P1.2接到流水灯上(J6)的任意一个 程序清单: /*********************************************************************** 函数功能: 利用内部定时器输出方波控制流水灯 接线说明: P1.2接到流水灯上(J6)的任意一个 学习内容: 单片机内部定时器/计数器的应用 编程思想: 单片机内部定时器最大定时值不超过一秒,可以用累加的方式增加定时时间 ***********************************************************************/ #include inttime=0; sbitP1_2=P1^2;//定义控制脚 voidtimeout1()interrupt1using2//定时器0的中断服务程序 { if(++time==100)//延时100*10ms(即1秒)时输出反向 { P1_2=~P1_2; time=0; } TH0=(65536-10000)/256;//重装数据,延时10ms TL0=(65536-10000)%256; TR0=1; } main() { TMOD=TMOD&0xf0|0x01;//定时器0工作在方式1 EA=1; ET0=1; TH0=(65536-10000)/256;//延时10ms TL0=(65536-10000)%256; TR0=1; while (1){;} } <3>.单片机输出PWM波形(可用示波器观察相应引脚上的输出信号) 输出PWM信号的原理与产生方波大致一样.设定一个数组,存入不同的延时值,定时器装入初值,溢出后产生中断,在中断服务取出数组中的定时值赋给定时器的数据寄存器,从而产生PWM波形.高低电平的维持时间有数组的值决定. 接线说明: 单片机I/O口P1.0接到流水灯上的任意一个. 程序清单: /******************************************************************* 函数功能: 利用内部定时器输出PWM信号控制流水灯 接线说明: P1.0接到流水灯上的任意一个 学习内容: 单片机内部定时器/计数器的应用 编程思想: 输出低电平1000微秒,高电平15000微秒(12M的晶振时), 可应用于电力电子技术中升压斩波电路等做IGBT的触发信号等. *******************************************************************/ #include sbitP1_0=P1^0;//定义变量P1_0代表I/O口P1口的0脚 biti=0; inttab[2]={1000,15000}; voidtimeserver()interrupt3using3//定时器1中断服务程序 { P1_0=~P1_0;//输出取反 i=~i; TH1=(65536-tab[i])/256; TL1=(65536-tab[i])%256; TR1=1; } main() { P1_0=0; TMOD=TMOD&0x0f|0x10;//不改变定时器0的工作状态,定时器1工作于方式1 TH1=(65536-tab[i])/256;//定时器存入初值 TL1=(65536-tab[i])%256; EA=1;//CPU开中断 TR1=1;//定时器1开始工作 while (1){;}//等待定时器中断 } 3.按键中断 通过设定单片机中断的形式,如下降沿产生中断或低电平产生中断.按键输入低电平到相 应中断输入管脚,单片机识别出中断信号,如果CPU和相应外部中断使能有效(即EA---CPU中断使能位,EX0,EX1---外部中断使能位),则进入中断服务程序. 接线说明: 中断按键的线路已经连接好,不用另外接线.数码管用跳线冒接入(即AA连接到P0.0,BB连接到P0.1依次接入,CON1…CON4分别接到P2.7……P2.4) 程序清单: /**************************************************************** 函数功能: 利用内部中断控制数码管显示 接线说明: 数码管用跳线冒接入 学习内容: 单片机中断(外部)的应用 编程思想: 单片机识别出中断0或中断1就转向中断服务程序 *****************************************************************/ #include bitflag1=0,flag2=0; voidservice_int1()interrupt0//外部中断0的中断服务程序,0为中断源序号,2为//使用的寄存器(可更改) { flag1=1;//允许数码管显示数据 } voidservice_int2()interrupt2//外部中断1的中断服务程序 { flag2=1;//允许数码管显示数据 } voiddelay()//延时程序 { intj; for(j=32400;j>0;j--){;} } voidmain() { EX0=1;//开外部中断 EX1=1; EA=1;//开CPU中断 P0=0x00; P2=0xff; IP=0x04;//设置中断优先级,外部中断0的级别设为最高,外部中断1和其他中断同级 //不设优先级则按单片机硬件决定 while (1) { P0=0x00; P2=0xff; if(flag1==1) { P0=0xd5;//显示3 P2=0x00; flag1=0; delay(); } if(flag2==1) { P0=0xdb;//显示6 P2=0x00; flag2=0;//清除显示使能 delay(); } } } 4. 四位数码管动态显示 数码管每个显示数字共用数据线(8根线),每个分别有一个使能管脚,显示数据采用隐消的编程方法,即每一位显示一段时间再轮换. 接线说明: 数码管用跳线冒接入(即AA连接到P0.0,BB连接到P0.1依次接入,CON1…CON4分别接到P2.7……P2.4).数码管和液晶不能同时接入系统,否则任一部分都不能正常使用. 程序清单: /************************************************************************* 函数功能: 数码管数值动态显示 接线说明: 用跳线冒接入数码管 学习内容: 常用的输出显示器件的编程应用 编程思想: 用隐消的方法实现数码管的动态显示,显示部分整理成库文件,方便以后直接应用 *************************************************************************/ #include #include main() { intj,k; k=1286;//显示值,实现数值累加显示 while (1) { for(j=1;j<70;j++) { Led(k);//数码显示 } k+=1; } } 以下为LED8888.h charshuju[10]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7};//数码管显示数字0-9 voidled8888_Delay(intj)//延时函数 { intm; for(m=0;m { inti; for(i=0;i<300;i++){;}//约1ms } } voidLed(intk) { if(k>999) {P2=P2&0x7f;//P2.7输出低电平,选通千位数 P0=shuju[k/1000];//取千位数 led8888_Delay (2);//延时 P2=P2|0xff;//销隐 } if(k>99) { P2=P2&0xbf;//P2.6输出低电平,选通百位数 P0=shuju[k%1000/100]+0x20;//取出百位数,点亮数码管百位后的那一点 led8888_Delay (2);//延时 P2=P2|0xff;//销隐 } if(k>9) { P2=P2&0xdf;//P2.5输出低电平,选通十位数 P0=shuju[k%100/10];//取十位数 led8888_Delay (2);//延时 P2=P2|0xff;//销隐 } if(k>=0) {P2=P2&0xef; P0=shuju[k%10];//取出个位数 led8888_Delay (2); P2=P2|0xff; } } 5. 计数脉冲信号并显示 利用单片机计数器功能,计数外部输入的脉冲信号,计算得出频率值. 接线说明: FIN接入单片机I/O口P3.5.数码管接入 程序清单: /********************************************************************** 函数功能: 计数外部(555电路)的脉冲 接线说明: FIN接入单片机I/O口P3.5. 学习内容: 单片机内部定时器/计数器的应用 **********************************************************************/ #include #include intcount=0;//显示值赋初值 main() { TMOD=0x55;//计数器1工作在方式1 TL1=(65536-5)%256;//设置初值,计数4次后产生定时/计数器中断 TH1=(65536-5)/256; TR1=1;//启动计数器 EA=1;//开CPU中断,不开中断也行,没有用到计数器中断 ET1=1; while (1) { count=TL1;//显示当前计数值 Led(count); } }6. 报警与音乐演奏 通过单片机内部定时器,输出频率改变的信号给蜂鸣器电路,并改变节拍即可产生音乐. 接线说明: NC接到单片机I/O口P1.2 7. 4×4键盘扩展 原理: 采用矩阵扫描的形式,识别按键,然后转入相应处理,程序参见光盘部分. 接线说明: 接线柱J15接到单片机P1口.(J15的第一个脚对应接P1.0),数码管接入. 8. 看门狗+上电自动复位电路+手动复位电路+电源监控 外部看门狗: 采用MAX813L,程序跑飞时可以强制复位,相当于一个定时器,有一个设定的计数值,计数没有溢出之前将其计数值清零,然后重新计数,这个过程即: ”喂狗”,如果在计数溢出之前没有清零,则计数器溢出,从而产生强制复位信号.工业控制干扰大的场合必用看门狗电路防止出现意外事故. 附带功能: 电源检测功能,当电源电压低于门限值时相关引脚电平跳变,可以输入到单片机中断口,使单片机保存数据等. 接线说明: NF接到P3.2,NG接到P1.4,J13中将看门狗输出与复位脚用短路冒短接起来。 数码管接入.可以试着停止喂狗的语句看数码管显示有何变化. 9. 128*64点阵式液晶显示 所用的液晶型号为FM12864J(20个接口),使能信号E为低电平有效.驱动程序见程序部分。 接线说明: 液晶模块用跳线冒接入(即AA连接到P0.0,BB连接到P0.1依次接入,CON1…CON5分别接到P2.7……P2.3). 10. RS232串行通讯 串行通讯可以实现单片机与PC机方便的通讯,51的输入/输出缓冲器共用一个地址,但是两个不同的寄存器,可以分别用于缓存待发射的和要接收的程序,程序参见光盘部分. 通讯波特率的设定: 51单片机通过定时器中的定时值来设定波特率。 接线说明: 开发板上的串口接到PC机串口.RXD接到P3.0,TXD接到P3.1,数码管接入.注意数码管显示的数据为十进制,以十六进制发送11,则数码管显示为17. 11. 红外信号发射与接收 红外发射采用红外发射二极管,用软件产生38KHZ(也可为其他频率的)的载波信号,单片机对信号进行调制然后发射出去,所谓载波调制是非常简单的过程,看看下面的程序即可明白; 红外接收用一体化红外接收头,选用38KHZ的(与发射频率一致才能接收),红外头的原理: 相当于一个滤波器,过滤频率为特定值的信号,如38KHZ等,当没有接收到信号时输出为高电平,接收到特定频率的信号后,把这个特定频率的信号过滤掉,然后输出低电平,至于红外编码的标准,暂可以不涉及,若想用38KHZ的遥控器来控制,则要先进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开发 手册