资源描述:
《单片机动态显示技术实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、桂林电子科技大学实验报告2016-2017学年第一学期开课单位海洋信息工程学院适用年级、专业14级机械设计制造及其自动化课程名称《单片微型计算机与接口技术-课内实验》主讲教师周旋课程序号BS_03课程代码BS实验名称《动态显示技术》学号-17姓名林亦鹏卢炳荣动态显示技术实验报告一、实验目的1、掌握动态显示技术。2、掌握数码管与单片机的连接方法。3、掌握段代码表的推算及数据表的使用方法。4、掌握C语言编程方法。二、实验内容实验设备:计算机一台、单片机实验箱一台、Proteus软件、Keil软件。硬
2、件原理图:采用共阴数码管,数码管的数据由单片机的P0口提供。当P0口输出相应的数据,相应的数码管就被点亮。如:P0=B,则数码管最低位显示0。74LS573这里用于提高P0口的输出电流,驱动数码管显示,并有一定的隔离干扰的作用。本实验只用到8位数码管的其中一位。1、打开Keil新建工程:学号-4.uv2。2、参考实验程序,编写程序:首先在数码管最高位连续显示0~9字段,其次在数码管次高位连续显示0~9字段,依此类推。生成:学号-4.hex文件。3、打开下载软件,把学号-4.hex文件烧写到单片机
3、,观察实验现象。4、修改程序,将自己的学号显示在数码管上。1、思考动态显示的工作原理。2、各寄存器的使用。3、读懂实验程序。三、实验结果分析1、程序流程图/***************************************实验名:动态显示技术*实验说明:8位数码管显示0~7**************************************#include//--定义使用的IO口--//#defineGPIO_DIGP0//段选#defineGPIO_PLA
4、CEP1//位选//--定义全局变量--//unsignedcharcodeDIG_PLACE[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制,查表的方法控制unsignedcharcodeDIG_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、
5、F的显示码unsignedcharDisplayData[8];//用来存放要显示的8位数的值//--声明全局函数--//voidDigDisplay();//动态显示函数voidmain(void){unsignedchari;for(i=0;i<8;i++){DisplayData[i]=DIG_CODE[i];}while(1){DigDisplay();}}//子函数,使用数码管显示数字voidDigDisplay(){unsignedchari;unsignedintj;for(i=0
6、;i<8;i++){GPIO_PLACE=DIG_PLACE[i];//发送位选GPIO_DIG=DisplayData[i];//发送段码j=10;//扫描间隔时间(延时)while(j--);GPIO_DIG=0x00;//消隐}}根据以上程序用开发板来进行实验,程序可以实现要求。本次实验结果为依次显示在数码管上。对于在进行实验的设计时,可能存在的错误,主要是C语言的一些使用规则的错误和对中断控制等代码的错误。等发生错误时,就应从代码的开始部分进行检查和分析,对于错误的地方进行修改,直到程序
7、无错误为止。对于验证其功能时,应确认开发板没有损坏,正确连接电路等。四、思考与讨论1、数据表的调用方法。答:定义数组,将数据存储在数组中,再通过for循环语句,对其相对应数组中的数进行调用。2、数码管的使用方法。答:从数组中调用出的数,对应对数码管进行位选,具体到哪一位显示,在通过段选,对每一位数码管的具体段进行显示。3、利用定时/计数器实现延时,程序应该怎么写?答:加入定时器函数#include#defineGPIO_DIGP0#defineGPIO_PLACEP1unsig
8、nedcharcodeDIG_PLACE[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharcodeDIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedcharDisplayData[8];voidDigDisplay();voidTimerConfig();申明定时器函数void