设计与开发

单片机数码管显示实验报告 单片机应用技术课程报告~数码管的静态显示

小编 2024-11-28 设计与开发 23 0

单片机应用技术课程报告~数码管的静态显示

实验名称

数码管的静态显示

实验时间

2020年7月26 日

学生姓名

实验地点

钉钉群线上

同组人员

专业班级

1、会使用单片机连接外部设备并构建单片机数码管电路。

2、能使用工具软件绘制单片机硬件原理图、能编写简单的C51程序。

3、通过编程,学会在单片机上实现一种数字静态显示控制方法。

2、任务设计要求

1、LED数码管将按照程序设置的方式工作,每隔一段变化一次,依次循环显示0~9十

个数字。

2、程序开始先将“0~9”十个数字的字型码存入一维数组中,然后,每隔1段时间将

数组中的对应字符的字型码通过P2端口送到显示器的段控端,实现相应字符的显示。程序

设计利用for语句循环10次,调用延时函数,依次将“0~9”十个数字的字型码送到显示器

的段控端。

3、总体设计方案

1、程序开始先将“0~9”十个数字的字型码存入一维数组中,然后,每隔1段时间将数

组中的对应字符的字型码通过P0,P2端口送到显示器的段控端,实现相应字符的显示。

2、P0口接共阴极数码管,P2口接共阳极数码管,程序设计利用for语句循环10次,调

用延时函数,依次将“0~9”十个数字的字型码送到显示器的段控端。

4、硬件电路设计

5、软件程序设计

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar i;

void delay()

{ uint k,j;

for(j=600;j>0;j--)

for(k=248;k>0;k--);

}

void main(void)

{ while(1)

{

for(i=0;i<10;i++)

{

P0=table[i];

P2=~table[i];

delay();

}

}

2)性能指标测试及结果分析

程序运行

7、项目总结

这次的实验做得比较顺利,除了在编写程序的时候出现了错误,不过在老师和同学的帮助下程序正常生成了HEX文件,并且能够正常仿真,在连接硬件线路图的时候没有出现错误,这是一个进步。在今后的实验过程中我会更加的注意,减少错误的产生。

8位单片机控制数码管显示示例

单片机(如8051)通常用于控制数码管显示。以下是一个简单的示例,说明如何使用8051单片机控制一个7段LED数码管(假设是共阳极的)显示数字。

首先,我们需要了解7段LED数码管的工作原理。每个数字或字符都在7段LED上有一个特定的模式。例如,'0'是由7个LED都关闭来表示的,而'8'是由6、7和2(其他LED都关闭)来表示的。

以下是用于控制7段LED的8051单片机的一个简单程序示例:

c

复制

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code LedChar[]={ // 定义LED字符的编码

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71

}; // 这些编码对应于每个数字或字符在7段LED上的模式

void delay(uint z) // 延迟函数

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() // 主函数

{

while(1) // 无限循环,将一直显示数字

{

P2 = LedChar[3]; // 将编码为3的数字(即'3')发送到P2口,假设P2是连接7段LED的端口

delay(5); // 稍微延迟,以使LED能够正确更新

}

}

这个程序将无限循环地显示数字'3'。你可以通过更改LedChar[3]中的索引来更改显示的数字。例如,如果你想显示数字'5',你可以将LedChar[3]更改为LedChar[4]。

请注意,这个程序假设P2口是连接7段LED的端口。如果你的电路连接不同,你需要更改这个端口。此外,这个程序没有包括任何错误检查或异常处理。在实际应用中,你可能需要添加这些功能。

相关问答

普中 单片机数码管 动态 显示实验 ,为什么最后一位数码管总是不亮?

首先硬件上检查有没有问题,比如说管子本身有没问题,再次看你程序,比如说驱动口错了或者程序跑飞了,或者扫描时间不正确导致首先硬件上检查有没有问题,比如说...

单片机数码管 小数点的 显示 ?

以下是我的回答,单片机数码管小数点的显示可以通过以下步骤实现:首先,需要了解数码管的工作原理。数码管是由多个LED段组成的,通过控制各个段的亮灭来显示不...

8951 单片机数码管 如何 显示 自己的学号?

要使用8951单片机控制数码管显示学号,可以按照以下步骤进行操作:1.首先,将数码管的七个数码管f即a~g对应到8951单片机的P口,设置为输出模式;2.然后,将学号...

单片机 与MAX7219 数码管显示 程序?

修改显示函数,当前面为0时不显示。7219打开硬件译码时,写入0xf就是不显示,如:write_7219(1,0xF);就是第一个数码管不显示。这样只要在函数show_number_7219中...

为何程序烧进 单片机 数码管 只亮中间-ZOL问答

你能确定数码管是共阴的吗?如果真的确定,那你程序中的段码可是共阳数码管的段码,刚好相反,应该显示是要显示0,中间一横不亮,可是段码反了,就变成只亮中间一横了...

关于 单片机 独立按键切换 数码管显示 不同数字?

都是逐个点亮,只不过流水灯间隔时间慢一点,数码管间隔时间快一点,当后者间隔时间小于0.1s时(实际上最好小于0.01s),由于视觉暂留效应,人类就觉察不到数码...

自制的51 单片机 学习板继电器、蜂鸣器有反应 但 数码管 、LED都...

3:确认数码管是否正确,有共阴共阳之分.线路是否正确?4:用万用表测试脚位电平是否正常.5:检查单片机是否有部分I/O口损坏.或是更换试试.1、明白数码管和L...

单片机 做数字电压表可 数码管 只有一半亮,怎么让它正常工作?

将电位器连接到Arduino的模拟接口上,也就是A0-A5中的任意一个,ArduinoA0-A5口为ADC引脚,其分辨率为10位,也就是1024级,输出数值为0-1023,默认以输入电压作...

求助: 单片机数码管 两个数值位置互换五秒后恢复……怎么编程?

有2个环节注意就可以了1、可以把所有需要显示的数设置为1个数组形式,交换其实就是数组内的数交换。2、5秒回复嘛,做个定时器当显示的数组内容所有都为0时,开...

c语言编程中,如何在51 单片机 8位 数码管 上滚动 显示 -HELLO--字符。比如?

P0=smgduan[i];delay(100);这两句是显示字母的语句,把它们加入对应的case语句里,就可以指定哪一段数码管显示啥字母,比如:case(2):LSA=0;LSB=1;LSC.....

猜你喜欢