资源描述
中南大学
微机应用系统设计与
综合实验报告
实验名称: 微机应用系统设计与综合实验
专业班级:
姓 名:
学 号
实验时间:2012.9.10—2012.9.14
目录
第一章 实验目的及涉及知识点
第二章 实验环境
2.1 硬件环境
2.1.1 HF-ExBoard实验系统简介
2.1.2 HF-MC9S12XS128EVB-A 核心板简介
2.2 软件环境
第三章 实验项目及实验内容
3.1 流水灯
3.2 动态数码管显示
3.3 矩阵键盘
第四章 实验思考及创新
第五章 实验思考总结
第一章 实验目的及涉及知识点
1、掌握GPIO 口基本寄存器的使用,掌握如何将GPIO 作为输出口。
2、掌握GPIO 口的读写操作。
3、进一步了解C 语言在飞思卡尔单片机中的编程规范及技巧。
4、掌握2803 的驱动原理。
5、了解矩阵键盘扫描原理。
6、掌握矩阵键盘编程方法。
第二章 实验环境
2.1 硬件环境
2.1.1 HF-ExBoard实验系统简介
一、概述
HF-ExBoard扩展实验平台是合肥工业大学飞思卡尔MCU 应用研究中心自主研发设计的产品。该产品可以兼容我中心设计的基于Freescale公司的8 位、16 位、32 位MCU 核心实验板。HF-ExBoard扩展实验平台外设接口丰富、灵活方便;涵盖飞思卡尔8 位到32 位MCU 主要模块接口;配套扩展模块齐全,涵盖飞思卡尔智能车全部模块。适用于高校实验室建设、嵌入式培训、课堂教学、竞赛训练、工程开发等。
2.1.2 HF-MC9S12XS128EVB-A 核心板简介
一、概述
HF-MC9S12XS128EVB-A 型核心板是以Freescale公司16 位汽车级MCU芯片MC9S12XS128 为控制核心的系列产品之一,除了A 型之外,本系列还有B 型和C 型产品可供选择,其中A 型用于和HF-ExBoard扩展实验平台配套使用。
HF-ExBoard 扩展实验平台底板电路结构如图1.2 所示。
图1.2 HF-ExBoard 硬件结构图
HF-ExBoard 扩展实验平台底板电路划分成A 区~T 区共20 个区域,以下简要说明每个区域的功能.
A区:核心板模块扩展区域。A 区中提供了3 组插槽,可以扩展配套提供的核心板。插槽兼容我公司研发的所有8 位、16 位和32 位核心板,并且每组插槽的所有引脚均可以引出用做基础或者扩展实验。关于不同核心板和外部扩展接口之间的对应关系,详见附录。
B区:电源模块。这里通过引入机箱内的9V 直流电源,为实验平台提供5V、6V 和3.3V 电源。
C区:RS485 通讯模块。使用MAX485 扩展RS485 通讯总线,完成RS485
通讯相关实验。
D区:8 位8 段数码管模块。该区域提供动态扫描方式扩展的8 位8 段LED数码管,用于完成GPIO 相关实验。
E区:电源输出。提供9V、6V、5V 和3.3V 电源输出。
F区:128x64 液晶模块扩展。提供128x64 液晶模块的扩展接口,兼容带字库和不带字库的液晶。接口同时兼容1602 液晶。
G区:继电器控制模块。该区域提供了1 个继电器,用以完成GPIO 控制外设实验。继电器提供了常开和常闭引出端口,并且可以通过一个LED 的点亮,检验继电器动作是否正确。
H区:CAN 总线通讯模块。该区域提供了1 路CAN 总线通讯接口,可以用于完成CAN 总线通讯实验。
I区:PWM 模拟D/A 模块。该区域用于完成PWM 模拟D/A 的实验,输出连接1 个LED 灯,可以通过LED 灯的亮度变化,验证PWM 模拟D/A 实验的正确性。
J 区:扩展板区域1。该区域用于接插本公司研发的实验系统配套扩展板。用户也可以利用该区域,自行设计扩展相应模块板。
K区:0802 液晶模块扩展。该区域扩展了一个0802 的液晶模块,可以利用GPIO 对其编程完成相关实验。
L区: 测温模块。该区域扩展 DS18B20 温度传感器,可以完成温度测量实验。
M区:脉冲发生模块。该区域提供一个按键,按下该按键即可产生一个脉冲,并可选择脉冲为高电平还是低电平。该模块可以用于外部中断、输入捕捉和脉冲累加模块等实验。
N区:4x4 矩阵键盘模块。该区域提供了4x4 的矩阵键盘,可以利用GPIO连接后实现矩阵键盘扩展。
O区:IIC 器件扩展模块。该区域提供基于IIC 接口的I/O 扩展、EEPROM和实时时钟模块,用于完成IIC 模块实验。
P区:SPI 器件扩展模块。该区域利用SPI 总线扩展串入并出I/O,实现LED灯的控制。
Q区:蜂鸣器控制模块。该区域提供了1 个蜂鸣器,用以完成GPIO 控制外设实验。
R区:可调模拟电压输入模块。该区域通过一个电位器,提供可变模拟电压输入,用于完成ATD 模块实验。
S 区:扩展板区域3。该区域用于接插本公司研发的实验系统配套扩展板。用户也可以利用该区域,自行设计扩展相应模块板。
T区:扩展板区域2。该区域用于接插本公司研发的实验系统配套扩展板。用户也可以利用该区域,自行设计扩展相应模块板。
二、特点
*8、16、32 位MCU 兼容实验平台;*提供丰富的实验接口模块
*8 位8 段数码管显示模块;*4x4 矩阵键盘模块;
*IIC 器件扩展模块(包括EEPROM、实时时钟和IO 扩展);
*SPI 器件接口模块;*0802 液晶显示模块
*128x64 液晶显示模块;*蜂鸣器控制模块;
*继电器控制模块;*温度测量模块;
*可调模拟电压输入模块;*可选极性脉冲发生模块;
*PWM 模拟D/A 模块;*RS-485 通讯模块;
*CAN 总线通讯模块;
*5110 液晶显示模块(需配合扩展实验板);
*舵机控制接口模块(需配合扩展实验板);
*电机控制接口模块(需配合扩展实验板);
*模拟视频采集接口模块(需配合扩展实验板);
*数字视频采集接口模块(需配合扩展实验板);
*加速度测量模块(需配合扩展实验板)。
*提供9V、6V、5V 和3.3V 直流电源。
*为用户提供3 块扩展板区域,方便用户选择公司扩展模块,不断丰富实验内容。
*用户也可以按照扩展板区域的尺寸自行设计扩展模块,使实验平台具有更好的扩展性和自主性。
2.2 软件环境
实验指导书中所有程序均使用CodeWarrier 5.0 For S12 集成开发环境编写、编译,并配合HF-USBDM-3in1 下载调试器完成程序的在线调试及下载操作。“CODEWARRIOR FOR S12”是面向以HC12或S12 CPU的单片机嵌入式应用开发软件包。包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及调试器。
HF-USBDM-3in1 下载调试器使用注意事项:
1、一般先给目标板加电,断电时先断开调试器电源;
2、目标板正在运行时,不要先断开调试器,一定先退出 HIWAVE 调试环境,再断开调试器;
3、仿真电缆采用双排插头,连接时注意方向,不要接错,BDM 接头引脚定义如图3.32 所示。
第三章 实验项目
3.1 流水灯
一、实验目的及所涉及的知识点
1、掌握GPIO 口基本寄存器的使用,掌握如何将GPIO 作为输出口。
2、初步了解如何使用C 语言编写飞思卡尔单片机程序。
二、实验内容
利用PORTB 口的低4 位驱动4 位LED 灯,实现4 位LED 灯明灯流水操作。
三、实验电路图
流水灯实验电路图
四、实验说明
1、PORTB 口寄存器初始化。
2、送数据给PORTB 口显示,并延时一定时间。
3、改变数据,重复2。
五、实验方法及步骤
1、接线说明:
本实验无需外部接线,只需要使用跳线帽短接核心板上JP_1 处标号为PB0~PB3 的跳线即可。
2、运行程序,观察LED 灯亮灭情况。
3.2 动态数码管显示
一、实验目的及所涉及的知识点
1、了解数码管动态显示的方法。
2、掌握2803 的驱动原理。
二、实验内容
系统上电后首先单8 左移显示,然后0-7 顺次左移显示,紧接着7-0 顺次右移显示,再 0-7 全部闪烁显示,并重复以上动作。
三、实验电路图
动态数码管显示实验电路图
四、实验说明
1、GPIO 相关寄存器初始化;
2、选中数码管第一位,送段码显示第一个数据;
3、移动位码,送下个数据的段码,以此类推,实现移位显示与动态显示。
五、实验方法及步骤
1、接线说明:
实验系统底板的8 位8 段数码管模块的段码接线说明:
J_SEG-1(A) ---- IO065 (PA0)
J_SEG-2(B) ---- IO066 (PA1)
J_SEG-3(C) ---- IO067 (PA2)
J_SEG-4(D) ---- IO068 (PA3)
J_SEG-5(E) ---- IO069 (PA4)
J_SEG-6(F) ---- IO070 (PA5)
J_SEG-7(G) ---- IO071 (PA6)
J_SEG-8(DP)---- IO072 (PA7)
* 注1:J_SEG-1 表示插座的标识名称,后面括号中的A 表示该引脚的作用,后文均使用该方法描述,就不再重复说明了。
*注2:IO065 后括号中的PA0 表示当HF-ExBoard 实验系统使用
HF-MC9S12XS128EVB-A 核心板时, 实验系统底板 的IO065 接口对应MC9S12XS128EVB 的PA0,后文均使用该方法描述,就不再重复说明了。
8 位8 段数码管模块的位码接线说明:
J_DIG-1(COM0) ---- IO046 (PH7)
J_DIG-2(COM1) ---- IO045 (PH6)
J_DIG-3(COM2) ---- IO048 (PH5)
J_DIG-4(COM3) ---- IO047 (PH4)
J_DIG-5(COM4) ---- IO050 (PH3)
J_DIG-6(COM5) ---- IO049 (PH2)
J_DIG-7(COM6) ---- IO052 (PH1)
J_DIG-8(COM7) ---- IO051 (PH0)
*注3:IO051(PH7)对应的COM0 为8 位数码管中最左边第一位。
2、运行程序,观察数码管的显示。
3.3 矩阵键盘
一、实验目的及涉及知识点
1、了解矩阵键盘扫描原理。
2、掌握矩阵键盘编程方法。
二、实验内容
编写键盘扫描程序,当矩阵键盘模块有按键按下时,读取键值,并利用数码管显示键值。系统上电后8 位数码管以5-4-3-2-1 倒计数显示,待显示值为1后,数码管清除显示,此时按下矩阵键盘按键,数码管显示对应键值。
三、实验电路图
矩阵键盘连接电路图
数码管连接电路图
四、实验说明
1、GPIO 相关寄存器的初始化。
2、8 位数码管以5-4-3-2-1 倒计数显示。
3、扫描按键,键值送数码管显示。
4、重复操作3。
五、实验方法及步骤
1、接线说明:
实验系统底板的4x4 矩阵键盘接线说明:
J_Key-1(R0) ----- IO092(PS0)
J_Key-2(R1) ----- IO091(PS1)
J_Key-3(R2) ----- IO094(PS2)
J_Key-4(R3) ----- IO093(PS3)
J_Key-5(C0) ----- IO096(PS4)
J_Key-6(C1) ----- IO095(PS5)
J_Key-7(C2) ----- IO098(PS6)
J_Key-8(C3) ----- IO097(PS7)
实验系统底板的8 位8 段数码管模块的段码接线说明:
J_SEG-1(A) ---- IO065 (PA0)
J_SEG-2(B) ---- IO066 (PA1)
J_SEG-3(C) ---- IO067 (PA2)
J_SEG-4(D) ---- IO068 (PA3)
J_SEG-5(E) ---- IO069 (PA4)
J_SEG-6(F) ---- IO070 (PA5)
J_SEG-7(G) ---- IO071 (PA6)
J_SEG-8(DP)---- IO072 (PA7)
8 位8 段数码管模块的位码接线说明:
J_DIG-1(COM0) ---- IO046 (PH7)
J_DIG-2(COM1) ---- IO045 (PH6)
J_DIG-3(COM2) ---- IO048 (PH5)
J_DIG-4(COM3) ---- IO047 (PH4)
J_DIG-5(COM4) ---- IO050 (PH3)
J_DIG-6(COM5) ---- IO049 (PH2)
J_DIG-7(COM6) ---- IO052 (PH1)
J_DIG-8(COM7) ---- IO051 (PH0)
2、运行程序,观察数码管显示变化。按下按键,观察数码管显示变化。
第四章 实验思考及创新
一.流水灯思考题
如何利用PORTB 口做出闪烁效果?
Main()
{
….
…
…
DDRB=0x01; //B端口最低位方向寄存器设为输出
For(;;)
{
PORTB=0x01; //点亮最低为控制的LED灯
Delay(); //延时
PORTB=0x00; // 熄灭最低为控制的LED灯
Delay(); //延时
}
… //以上循环,延时超过人的视觉停留时间0.2s,就可以达到闪烁效果
…
}
二.动态数码管显示思考题
1、如何修改程序显示“ABCDEF”。
0~9,A~B
const unsigned char g_LED_Seg_Table[17] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00};
2、如何实现数据的闪动显示。
MAIN()
{…….
k = 2; //0-7闪烁显示
do{
for(j=0;j<25;j++)
{
led_dig = 0x01; //先选中最右端数码管显示
for(i=0;i<8;i++)
{
SEG_NUM = g_LED_Seg_Table[i];
DIG_NUM = led_dig;
led_dig = led_dig<<1; //位选信号左移1位
Delay(1);
}
}
DIG_NUM = 0x00; //熄灭数码管
Delay(100);
}while(k--);
,,,,,,,,,,
}
三.矩阵键盘思考题
1.了解矩阵键盘的线反转法,试编程实现
线反转法的具体操作步骤:
(1)将行线作为输出线列线作为输入线。置输出线全部为0此时列线中呈低电平0的为按键所在的列如果全部都不是0则没有键按下。
(2)将第一步反过来将列线作为输出线行线作为输入线。置输出线全部为0此时行线中呈低电平0的为按键所在的列。至此便确定了按键的位置(x,y)编程实现:
MAIN()
{
,,,,,,
for(;;)
{
PTS = 0x0F; //H:列,L:行,0000 1111列全亮
key_num = PTS;
key_num &= 0x0F;
if(key_num != 0x0F) //有列:按下:PTS!=0x0f
{
key_num = Get_num(); //读键值
if(key_num != 255)
{
SEG_NUM = g_LED_Seg_Table[key_num];
} //end of if(key_num!=255)
} //end of if(key_num!=0x0F)
,,,,,,
}
unsigned char Get_num(void)
{
unsigned char data_in,data_out,i,j,num;
data_out = 0xEF; //1110 1111 PTS!=0x0f
for(i=0;i<4;i++)
{ //H:列
PTS=data_out; //1110 1111 0000 1011
Delay(5);
data_in = PTS; //1110 1011
data_in &= 0x0F; //1011&1111
if(data_in != 0x0F) //有键按下,eg:0000 1011
{
Delay(5);
j = 0;
num = data_in; // 0000 1011
while(num&0x01) // 0000 1011!=0x01
{
num>>=1; // 0000 1011,1000 0101,1100 0010,0110 0001 ,1011 0000
j++;
} //end of while(num&0x01)
return(3-i+j*4);
} //end of if(data_in!=0x0F)
data_out<<=1;
} //end of for(i=0;i<4;i++)
return(255);
}
第五章 实验思考总结
通过这一星期的实验,我对该单片机XS128有了比较概略的认识。每次实验前老师都会让我们观看教学视频,然后自己再根据实验指导书的要求动手做,一般都会先按照原先的程序先做过一遍,观看实验的结果,然后再对照着程序大致浏览一遍,接着就会认真仔细的看整个程序的一个一个函数,弄懂了之后再试着按照实验指导书,修改程序已完成实验指导书的思考题目,这样做让我的收获非常大.我认为学习单片机XS128,并不是简单地模仿代码,只有一步一步地学习好单片机各个部件的操作,才能真正灵活应用单片机,使单片机为达到我们所需的目的而更好地工作。
我认为,在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。从微机的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能力从而为以后学习单片机才是最终目的!正是这次实验课程,让我更好地了解并学会应用XS128单片机,非常感谢李老师和各位学长学姐对我的帮助和指导,让我受益匪浅!
展开阅读全文