单片机实训总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、任务与目的
本课程的实训是使我们综合应用所学习的理论知识,使用STAR-MT51实验板完成单片机控制下的实时温度测量及显示的软件编程。
本课程实训涉及的知识包括:单片机的最小系统、单片机人机接口电路(独立式键盘、LED显示)、8位数码管的驱动电路、18B20温度芯片的应用等。
二、原理(条件)
1. LED发光二极管
一般的发光二极管的导通压降为1.7V~1.9V,工作电流为5mA~10mA
2.LED数码管显示接口
LED数码管是利用多个LED组合而成的显示设备,可以显示0-9等10个数字和某些字母,在许多的数字系统中作为显示输出设备,使用非常广泛。数码管内部字段LED和引脚分布图。它的结构是由发光二极管构成的a、b、c、d、e、f 和g七段
LED内部的所有发光二极管有共阴极接法和共阳极接法两种:一种是将LED 内部所有二极管阳极接在一起并通过com引脚引出,将每一个发光二极管的另一端分别引出到对应的引脚,称之为共阳极LED显示器
另一种是将LED内部所有发光二极管的阴极都连在一起的,称之为共阴极LED显示器
LED用于显示数字、字母或符号时,必须将要显示的内容转换为LED对应七段码的信息,共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当发光二极管导通时,相应的笔划段发亮,即通过点亮不同的LED字段,可显示数字0,1,┅,9和A,b,C,d,E,F等不同的字符及自定义的一些简单符号。8个笔划段dp g f e d c b a对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示要显示字符的字形代码。
3.独立式键盘接口
(1)监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。
(2)判断是哪个键按下。
(3)完成键处理任务。
需注意事项:
① 电路或软件的角度应解决的问题-----------消除抖动影响
键盘按键所用开关为机械弹性开关,利用了机械触点的闭合、断开作用。
为了确保CPU对一次按键动作只确认一次,必须消除抖动的影响。按键的消抖,通常有软件、硬件两种消除方法。
软件消抖:在第一次检测到有键按下时,执行一段延时10ms的子程序后,
再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认有键按下,进行相应处理工作。
②键盘电路结构
独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O 口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。
优点:电路配置灵活,软件结构简单。
缺点:每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。
4.定时器中断
定时/计数器是单片机的重要部件,其工作方式灵活,编程简单,使用方便。89C51单片机内有2个16位可编程的定时器/计数器,分别为T0和T1。定时器/计数器T0、T1核心组成部分为16位的加1计数器,它们的工作状态和工作方式分别由两个特殊功能寄存器TCON和TMOD来决定。
定时器/计数器T0、T1可以有四种不同的工作方式:方式0、方式1、方式2、方式3。
方式1
当TMOD中M1M0 = 01时,定时器/计数器选定方式1进行工作。下图是T0工作在方式1下的逻辑结构图(T1与其完全一致)。两个8位寄存器TH0和TL0构成了一个16位的定时器/计数器。
在该工作方式下,当作为定时器使用时,按定时时间计算计数初值。
方式2
工作方式2,其逻辑结构如下图所示。该方式下,16位计数器被分为两个8位寄存器:TL0和TH0,其中TL0作为计数器,TH0作为计数器TL0的初值预置寄存器,并始终保持为初值常数。TH0的内容重新装入TL0后,其自身保持不变。这样计数器具有重复加载、循环工作的特点,可用于产生固定脉宽的脉冲信号。
这样省掉了工作方式0、方式1一定要通过软件给计数器重新赋初值的麻烦,并提高了计数精度。该工作方式下,当作为定时器使用时,按定时时间计算计数初值
三、内容与步骤
本实训采用STAR-MT51实验板,编写程序完成指导教师指定的项目内容。
1、LED指示灯闪烁。
2、8位数码管的指定显示内容。
3、数字时钟显示。
(一)熟悉STAR-MT51结构,复习单片机接口电路内容
编写第一个程序,控制LED指示灯闪烁
1、建立项目文件,掌握头文件的使用
2、熟悉单片机C文件编写规范,变量定义,程序注释写法等
3、熟练掌握KEIL C51调试环境,熟悉编译,设置,在线观察参数
4、编写LED指示灯亮灭的程序控制
5、添加延时子函数,掌握无传递参数的子函数编写
6、实现LED指示灯闪烁
程序:
#include
unsigned char k;
void delayms(unsigned char ms);
main()
{ while (1){
P0 = 0x01;
P0 = 0x01;
for(k=0;k<8;k++)
{
P0 = << 1;
delayms(1000);
}
for(k=0;k<8;k++)
{
P0 = << 1;
delayms(1000);
}
if(P0!=0xBF)
{
P0 = ~(0xfe << 1) + 1;
P0 = 0xaa;
}
else
{
P0 = 0xFF;
P1 = ~(0x01 << k);
}
}}
void delayms(unsigned char ms) // 延时子程序
{