单片机静态显示技术实验报告.doc
文本预览下载声明
桂林电子科技大学
实验报告
2016-2017 学年第一学期
开 课 单 位 海洋信息工程学院
适用年级、专业 14级机械
课 程 序 号 BS1615000_03
课 程 代 码 BS1615000
实 验 名 称 《静态显示技术》
静态显示技术实验报告
一、实验目的
1、掌握数码管与单片机的连接方法。
2、掌握段代码表的推算及数据表的使用方法。
3、掌握C语言编程方法。
采用共阴数码管,数码管的数据由单片机的P0口提供。
当P0口输出相应的数据,相应的数码管就被点亮。如:P0,则数码管最低位显示0。
74LS573这里用于提高P0口的输出电流,驱动数码管显示,并有一定的隔离干扰的作用。
本实验只用到8位数码管的其中一位。
1、打开Keil新建工程:学号-3.uv2。
2、参考实验程序,编写程序:在数码管上最低位显示“1”。生成:学号-3.hex文件。
3、打开下载软件,把学号-3.hex文件烧写到单片机,观察实验现象。
4、修改程序,让数码管最低位由0~F显示。
5、静态显示的工作原理。
6、数码管内部结构、引脚定义及驱动。
7、读懂实验程序。
三、实验结果分析
1.数码管最低位显示“1”
#includereg51.h
//--定义你要使用的IO口--//
#define GPIO_DIG P0
//--声明全局函数--//
void Delay10ms(unsigned int c); //误差 0us
//主函数
(1)数码管最低位显示“1”
void main(void)
{
unsigned char i = 0;
while(1)
{
GPIO_DIG = 0x79;
}
}
2.数码管最低位由0~F显示
(2)数码管最低位由0~F显示
#includereg51.h
//--定义你要使用的IO口--//
#define GPIO_DIG P0
//--声明全局函数--//
void Delay10ms(unsigned int c); //误差 0us
//--定义全局变量--//
unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; // 0~F的段码
void main(void)
{
unsigned char i = 0;
while(1)
{
GPIO_DIG = ~DIG_CODE[i];
i++;
if(i == 16)
{
i = 0;
}
Delay10ms(50);
}
}
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c0;c--)
{
for (b=38;b0;b--)
{
for (a=130;a0;a--);
}
}
}
根据以上程序用开发板来进行实验,程序可以实现要求。
对于在进行实验的设计时,可能存在的错误,主要是C语言的一些使用规则的错误和对中断控制等代码的错误。等发生错误时,就应从代码的开始部分进行检查和分析,对于错误的地方进行修改,直到程序无错误为止。对于验证其功能时,应确认开发板没有损坏,正确连接电路等。 四、与讨论一个闪烁频率高,一个闪烁频率低
显示全部