桂林电子科技大学
实验报告
开 课 单 位
适用年级、专业 机械
课 程 序 号
课 程 代 码
实 验 名 称 《动态显示技术》
动态显示技术实验报告
一、实验目的
1、掌握动态显示技术。
2、掌握数码管与单片机的连接方法。
3、掌握段代码表的推算及数据表的使用方法。
4、掌握C语言编程方法。二、实验内容
实验设备:计算机一台、单片机实验箱一台、Proteus软件、Keil软件。
硬件原理图:
采用共阴数码管,数码管的数据由单片机的P0口提供。
当P0口输出相应的数据,相应的数码管就被点亮。如:P0,则数码管最低位显示0。
74LS573这里用于提高P0口的输出电流,驱动数码管显示,并有一定的隔离干扰的作用。
本实验只用到8位数码管的其中一位。
1、打开Keil新建工程:学号-4.uv2。
2、参考实验程序,编写程序:首先在数码管最高位连续显示0~9字段,其次在数码管次高位连续显示0~9字段,依此类推。生成:学号-4.hex文件。
3、打开下载软件,把学号-4.hex文件烧写到单片机,观察实验现象。
4、修改程序,将自己的学号显示在数码管上。
1、思考动态显示的工作原理。
2、各寄存器的使用。
3、读懂实验程序。
三、实验结果分析
1、程序流程图
/**************************************
* 实 验 名 : 动态显示技术
* 实验说明 : 8位数码管显示0~7
**************************************
#include
//--定义使用的IO口--//
#define GPIO_DIG P0//段选
#define GPIO_PLACE P1//位选
//--定义全局变量--//
unsigned char code DIG_PLACE[8] = {
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制,查表的方法控制
unsigned char code DIG_CODE[17] = {
0x06,0x66,0x06,0x7d,0x3f,0x06,0x3f,0x6d,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值
//--声明全局函数--//
void DigDisplay(); //动态显示函数
void main(void)
{
unsigned char i;
for(i=0; i<8; i++)
{
DisplayData[i] = DIG_CODE[i];
}
while(1)
{
DigDisplay();
}
}//子函数,使用数码管显示数字
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=0; i<8; i++)
{
GPIO_PLACE = DIG_PLACE[i]; //发送位选
GPIO_DIG = DisplayData[i]; //发送段码
j = 10; //扫描间隔时间(延时)
while(j--);
GPIO_DIG = 0x00;//消隐
}
}
根据以上程序用开发板来进行实验,程序可以实现要求。
本次实验结果次显示在数码管上。对于在进行实验的设计时,可能存在的错误,主要是C语言的一些使用规则的错误和对中断控制等代码的错误。等发生错误时,就应从代码的开始部分进行检查和分析,对于错误的地方进行修改,直到程序无错误为止。对于验证其功能时,应确认开发板没有损坏,正确连接电路等。四、与讨论五、小组表现评价(必填)
在本次实验中16号负责程序编写,17号负责电路连接,配合得非常好,听完老师的讲解,剩下的就是我们自己调试了,有不懂的问老师,老师也讲得十分仔细,在调程序的过程中,主要是了解c语言的命令语句的使用方法,这是第四次