单片机实训指导书.docx
《单片机实训指导书.docx》由会员分享,可在线阅读,更多相关《单片机实训指导书.docx(17页珍藏版)》请在冰豆网上搜索。
单片机实训指导书
单片机实训指导书
编写:
交通与控制系邝小磊
一、绪言
单片机又称为为微控器是一个内含CPU、RAM、ROM、I/O接口的一个小芯片,它的知识涵盖计算机基础、计算机体系结构、计算机组成原理、计算机程序设计、计算机接口等,因此在电信、机电、仪表、电力、工业控制尖端武器家电等各领域中得到广泛应用,作为控制核心的单片机以体积小功能全性价比高等诸多优点而独具特色。
51系列单片机硬件构架完整功能强大通用性强体格低廉方便学生实践等特点,因而成为工科学生必须掌握的一门技术。
本实训项目由具有代表性强,容易成功制作的五个子项目组成。
(1)项目1信号灯
(2)项目2大屏幕LED
(3)项目3交通灯
(4)项目4步进电机
(5)项目5可调电子时钟
其中项目1、2、3为必做项目,项目4、5为选做项目。
实训地点:
实训楼四楼单片机实训室
二、单片机应用系统开发简介
单片机系统必须软硬件密切配合、协调一致才能组成一个高性能的单片机应用系统。
在系统的开发过程中,软硬件的功能在不断地调整,以互相适应,硬件设计和软件设计不能截然分开,硬件设计时应考虑系统资源及软件的实现方法,而软件的设计又要了解硬件的工作原理。
1、总体设计内容
(1)选择单片机类型型号
(2)了解系统功能和技术指标
(3)关键器件的选择
(4)软硬件功能的划分
(5)硬件设计内容:
A性能;B经济性;C通用性;D与系统的匹配性
2、系统构成方式选择
A专用系统;B模块化系统
3、电路板设计:
(1)晶振尽量靠近CPU晶振引脚处。
(2)电源、接地线尽量安排在直流电源入口处,数电地线和模电地线不要共地可能分开一点接地。
(3)根据具体的控制系统考虑适当的抗干扰措施
4、软件设计
使用的软件:
WAVE仿真软件;Proteus硬件仿真软件;Keil软件;字符提取软件;
5、仿真调试
6、可靠性实验与产品化
实训项目简易十字路口交通灯控制器的制作
一、实训目的:
1、设计简易十字路口交通灯控、制器。
2、熟练掌握电路中所用元件功能、特点。
3、学习十字路口交通控制灯的程序编制方法。
4、熟练掌握WAVE仿真软件、Proteus硬件仿真软件的使用方法。
'
5、掌握简易十字路口交通灯控制器的仿真、调试方法。
二、实训说明:
位于十字路口的交通控制灯在东西面北方向各有红、黄、绿三盏灯按以下顺序进行循环点亮:
1、南、北红灯亮;东、西绿灯亮。
点亮时间20S。
2、东、西黄灯闪烁。
闪烁次数5次。
3、东、西红灯亮、绿灯灭;南、北绿灯亮、红灯灭。
时间20S
4、南、北黄灯闪烁。
闪烁次数5次。
5、南、北红灯亮、绿灯灭;东、西绿灯亮、红灯灭。
时间20S。
(循环开始)
实训中用发光二极管代替真实交通信号灯进行仿真。
三、实训主要元件及相关知识
(一)AT89C51管脚排列
(二)AT89C51功能:
1、8位CPU;
2、片内振荡器时钟电路;
3、32根I/O线;
4、外部存贮器寻址范围ROM、RAM64K;
5、2个16位的定时器/计数器;
6、5个中断源,两个中断优先级;
7、全双工串行口;
8、布尔处理器;
(三)AT89C51其它知识请参见教材。
四、元件清单:
1、三极管9013×12。
2、AT89C51×1。
3、AT89C51插座×1。
4、¢5发光二极管×12(红绿黄各4只)。
5、1/8W电阻;1K×12K×1250¤×1
6、电容;22U×130P×2。
7、6MHZ晶振×1。
8、多孔印刷电路板(100×100)mm×1
五、实训原理设计
1、设计参考思想
为节约硬件资源资源到东、西红灯是同时点亮工作、绿灯也是同时点亮工作,所以可以考虑将同时工作的灯并联用一根输出口线控制。
同理南、北的红灯和绿灯同样处理。
若黄灯也同样处理只需六根输出口线。
若用一根输出口去控制一盏灯需要十二根输出口线。
2、12只LED发光二极管I/O口分配;
南亲红灯并联由P1.1口控制:
南亲绿灯并联由P1.3口控制:
东西方红灯并联由P1.4口南亲黄灯并联由P1.2口控制;东西黄灯并联由P1.5口控制;
两只交通灯并联时考虑控制:
东西绿灯并联由P1.6口控制;
到单片机AT89C51为低功耗型单片机,直接将驱动电器睥三极管基极联起来。
3、实训电路:
(1)、接口驱动口路;
(2)、单片机系统(AT89C51);
单片机AT89C51第40脚和31脚接+5伏直流电压正极,20脚接接+5伏直流电压负极。
六、程序;
在指导老师指导下编写程序。
参考程序:
#include
#include"..\drivers\LCD1602\LCD1602.h"
#include"..\drivers\time\time.h"
sbita_red=P1^0;
sbita_yellow=P1^1;
sbita_green=P1^2;
sbitb_red=P1^3;
sbitb_yellow=P1^4;
sbitb_green=P1^5;
sbitkey_int0=P3^0;
sbitkey_int1=P3^1;
sbitkey_wait=P3^4;
//***************************************//
//***************************************
voidint_init()
{
EA=1;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
}
//************************************
voidinter0(void)interrupt0
{
uchartemp0;
temp0=P1;
P1=0;
a_red=1;
b_red=1;
while(key_wait==0)
{
}
P1=temp0;
}
//*************************************
///////////////////////////////////////////
voidinter1(void)interrupt2
{
uchartemp0;
temp0=P1;
P1=0;
if(key_int0==1)//keyint0A车道绿灯,B车道红灯
{
a_green=1;
b_red=1;
}
if(key_int1==1)
{
b_green=1;
a_red=1;
}
delay1s(100);
P1=temp0;
}
//*********************************************
//***********************************************
voidmain(void)
{uchardis_time;
voidinter0(void);
voidinter1(void);
t_init();
int_init();
Initlcd();
//if(EX0==0)
//{
//EA=1;
//ES=1;
//IT0=1;
//a_red=0;
//b_red=0;
//}WrCom(0x00+0xc0);WrData('G');
//WrCom(0x01+0xc0);
//WrData('D');
//WrCom(0x02);
//WrData('C');
//WrCom(0x03);
//WrData('P');
//Dis_str(0,0,"A_ROAD_RED");
//Dis_str(0,0,"A_ROAD_GREE");
//Dis_str(0,0,"A_ROAD_RED");
//Dis_str(1,0,"B_ROAD_GREEN");
while
(1)
{//uchardis_time,j=5;
//A车道红灯,B车道绿灯?
//**************************************************
Dis_str(0,0,"A_ROAD_RED");//A车道红灯
Dis_str(1,0,"B_ROAD_GRE");//B车道绿灯灯
P1=0;
for(dis_time=20;dis_time>0;dis_time--)
{
a_red=1;
b_green=1;
//WrCom(0x80);
//WrData('A');
//WrData(0x30);
//display(1,dis_time,1,dis_time);
display(12,dis_time,12,dis_time);
delay1s(10);
}
//******************************************************
//A车道红灯,B车道黄灯闪5下
//**************************************************
Dis_str(0,0,"A_ROAD_RED");//A车道红灯
Dis_str(1,0,"B_ROAD_YEL");//B车道绿灯灯
P1=0;
for(dis_time=5;dis_time>0;dis_time--)
{
a_red=1;
b_yellow=~b_yellow;
//WrCom(0x80);
//WrData('A');
//WrData(0x30);
//display(1,dis_time,1,dis_time);
delay1s(5);
b_yellow=~b_yellow;
delay1s(5);
display(12,dis_time,12,dis_time);
}
//************************************************
//A车道绿灯,B车道红下
//**************************************************
Dis_str(0,0,"A_ROAD_GRE");//A车道绿灯
Dis_str(1,0,"B_ROAD_RED");//B车道红灯
P1=0;
for(dis_time=20;dis_time>0;dis_time--)
{
a_green=1;
b_red=1;
//WrCom(0x80);
//WrData('A');
//WrData(0x30);
//display(1,dis_time,1,dis_time);
display(12,dis_time,12,dis_time);
delay1s(10);
}
//***********************************************
//********************************************
//B车道红灯,A车道黄灯闪5下
Dis_str(0,0,"A_ROAD_YEL");//A车道红灯
Dis_str(1,0,"B_ROAD_RED");//B车道绿灯灯
P1=0;
for(dis_time=5;dis_time>0;dis_time--)
{
b_red=1;
a_yellow=~a_yellow;
//WrCom(0x80);
//WrData('A');
//WrData(0x30);
//display(1,dis_time,1,dis_time);
delay1s(5);
a_yellow=~a_yellow;
delay1s(5);
display(12,dis_time,12,dis_time);
}
//*************************************************
}
}
//**************************************//
七、操作步骤;
1、检查元件质量。
2、在印刷电路板上按图纸焊接安装单片机及三极管驱动电路。
3、检查电路质量。
4、调试;用MEDWIN仿真软件输入源程序,接好仿真器和做好的交通灯控制器。
调试、汇编、运行直到满足要求。
八、技术要求;
1、印刷电路板制作整齐美观。
2、先焊接单片机芯片插座(不可将单片机焊在电路板上)。
3、焊接点光滑、明亮
4、晶体管焊接时间控制在2-3秒,一次焊接失误须等片刻才能进行第二次补焊。
5、电烙铁头部定期清理干净。
6、晶体管焊接时不许从引脚根部变折。
7、安装AT89C51时动作要轻不得损坏CPU。
九、安全事项;
1、正确使用设备、仪器仪表,不得损坏仪器仪表。
2、正确使用电烙铁,电烙铁必须放在专用支架上。
3、电烙铁冷却后才能收藏。
4、安全使用220伏电源插座。
5、爱护公物,元件,节约导线。
6、不许在实训室内打闹,保证场地整洁。
7、严禁将元件、器材带回家中操作。
十、实训报告提要
1、写出设计步骤并画出原理图。
2、写出器件资源报告分析如何减少器件资源占用的方法。
3、写出源程序。
4、小结实训收获及意见。
实训项目二位LED八段数码管秒表显示器制作
一、实训目的;
1、设计二位LED八段数码管秒表显示器。
2、熟练掌握电路中所用元器件的功能、特点。
3、学习二位LED八段数码管秒表显示器的程序编制方法。
4、熟练掌握MedWin仿真软件的使用方法。
5、掌握二位LED八段数码管秒表显示器的仿真、调试方法。
二、实训说明:
1、相关知识说明
当多位LED显示时,为了节约I\O口,简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个8位I\O口控制,而各位的共阳极或共阴极分别由相应的I\O口线控制,实现各位的分时选通,这就是动态扫描显示方式。
采用动态扫描显示方式,每一位LED的选通时间为1-2ms,选通时间太短时发光太弱,选通时间太长时有闪烁现象同时占用CPU时间太长。
由于人眼有视觉暂留现象,只要每位显示时间足够短,就能够造成多位同时亮的假象。
常用的数字显示器有多种类型,按显示方式分,有字型重叠式、点阵式、分段式等。
按发光物质分,有半导体显示器,又称发光二极管(LED)显示器、荧光显示器、液晶显示器、气体放电管显示器等。
这里采用两个七段数字显示器来显示0-60s的计时。
2、功能说明
本实训中采用锁存器74LS273扩展了二个共阳极LED显示器的段码,端口地址为74FFFH,位码由P1口中的两根口线加反向器直接控制。
按钮K1接单片机外部中断源INTO,作为秒表的启/停开关,按钮K2接单片机外部中断源INT1,A完成秒表的归零.
三、元件清单:
1、AT89C51×1(配40脚插座)
2、或门74LS32×1(配14脚插座)
3、非门74LS04×1(配14脚插座)
4、锁存器74LS273×1(配20脚插座)
5、微型机械式按钮×2
6、LED八段(共阳)数码管×2
7、1/8W电阻:
220Ω×81KΩ×1
8、电容:
22μ×130P×2
9、6MHZ晶振×1
10、多孔印刷电路板(100×100)MM×1
四、实训主要元件及相关知识
1、AT89C51资料参见实训一。
2、74LS273
(1)管脚排列:
(2)74LS273功能:
74LS273是一种带清除功能的8D触发器,正脉冲触发,低电平清除,常用作8位地址锁存器,其引脚功能如下:
D0-D7:
输入
Q0-Q7:
输出
第一脚MR:
主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平)
CP(CLK):
触发端,上升沿触发,即当CP从低到高电平时,D0-D7的数据通过芯片,为0时将数据锁存,D0-D7的数据不变。
3、74LS20与非门和74LS32或门管脚排列:
4、八段LED数码管外形和引脚
五、实训原理图
六、程序
在指导教师指导下编写程序
七、操步骤
1、检查元件质量
2、在印刷电路板上按图纸焊接安装单片机及LED数码管等元件
3、检查电路质量
4、调试:
用MedWin仿真软件输入源程序,接好仿真器和做好的控制器
调试、汇编、运行直到满足要求。
八、技术好
1、印刷电路板制作整齐美观
2、先焊接单片机芯片插座(不可将单片机焊在电路板上)
3、焊接光滑、明亮
4、电路铁头定期清理干净
5、安装AT89C51时动作要轻,不得损坏CPU
九、安全事故
1正确使用设备、仪器仪表,不得损坏仪器仪表
2、正确使用电烙铁,电烙铁必须放在专用支架上
3、电烙铁冷却后才能收藏
4、安全使用220伏电源插座
5、爱护公物,元件,节约导线
6、不许在实训室内打闹,保证场在整洁
7、严禁将元件,器材带回家中操作
十、实训报告提要
1、写出设计步骤并画出原理图
2、写出器件资源报告
3、写出源程序
4、小结实训收获及意见
拓展训练
学生通过此次关于“简易十字路口交通灯控制器”和“LED八段数码管秒表显示器”的实训后,以所学的技能为基础,去开发出其它更有智能化的产品,比如在完成简易十字路口交通灯控制器实训后可考虑:
(1)如何实现各状态保持时间可调用显示显示器递减显示时间?
(2)如何实现当发生紧急事件时如救护车救火车警车抢险车通过时可以手动控制四个方面的红灯全亮?
(3)如何考虑当车流量很少时可以智能控制十字路口交通灯控制器的控制时间?
(4)在完成二位LED八段数码管秒表显示器实训后可考虑;
(5)如何用LED八段数码和来实现计数器频率计定时器数字钟波形发生器数字电压表产品?