历史上的今天
今天是:2024年11月25日(星期一)
2021年11月25日 | C51数码管显示相关问题总结
2021-11-25 来源:eefocus
1.单个数码管的静态显示
/*--------------------------
功能:一个数码管的静态显示
Author: Zhang Kaizhou
Date: 2019-5-16 21:18:17
--------------------------*/
#include sbit duan_address = P2^6; // 定义段地址为位寻址类型的变量 sbit wei_address = P2^7; // 定义位地址为位寻址类型的变量 void main() { wei_address = 1; // 打开位锁存器 P0 = 0xfe; // 输出数码管所在的位置 wei_address = 0; // 关闭位锁存器 duan_address = 1; // 打开段锁存器 P0 = 0x7d; // 输出共阴极数码管的段码(6) duan_address = 0; // 关闭段锁存器 while(1); } 2.数码管的动态循环显示 /*----------------------------------- 功能:在数码管上循环显示0~F 16个字符 Author: Zhang Kaizhou Date: 2019-5-16 21:41:50 -----------------------------------*/ #include #define uchar unsigned char #define uint unsigned int sbit wei_address = P2^7; // 定义可位寻址类型的变量wei_address sbit duan_address = P2^6; // 定义可位寻址的变量daun_address uchar num; // 定义无符号字符变量num uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; // 定义一个无符号字符型数组table[]用于存放共阴极数码管(0~F字符)段码,存放在单片机内部的ROM或Flash中 void delay(uint xms); void main() { wei_address = 1; // 开位锁存器 P0 = 0x00; // 选择要显示的数码管 wei_address = 0; // 关锁存器 while(1) { for(num = 0; num < 16; num++) // 在数码管上循环显示0~F字符 { duan_address = 1; // 开数码管的段锁存器 P0 = table[num]; // 输出段码 duan_address = 0; // 关段锁存器 delay(1000); // 延时1000ms = 1s } } } void delay(uint xms) { uint i, j; for(i = xms; i > 0; i--) for(j = 110; j > 0; j--); } 3.多个数码管的动态扫描显示 /*----------------------------------- 功能:在4个数码管上动态显示字符信息 Author: Zhang Kaizhou Date: 2019-5-16 21:41:50 -----------------------------------*/ #include #define uchar unsigned char #define uint unsigned int sbit wei_address = P2^7; // 定义可位寻址类型的变量wei_address sbit duan_address = P2^6; // 定义可位寻址的变量daun_address uchar num; // 定义无符号字符变量num uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; // 定义一个无符号字符型数组table[],存放在单片机内部的ROM或Flash中 void delay(uint xms); void main() { while(1) { // 显示0 duan_address = 1; P0 = table[0]; duan_address = 0; wei_address = 1; P0 = 0xfe; wei_address = 0; delay(5); // 显示1 duan_address = 1; P0 = table[1]; duan_address = 0; P0 = 0xff; // 消影 wei_address = 1; P0 = 0xfd; wei_address = 0; delay(5); // 显示2 duan_address = 1; P0 = table[2]; duan_address = 0; P0 = 0xff; // 消影 wei_address = 1; P0 = 0xfb; wei_address = 0; delay(5); // 显示3 duan_address = 1; P0 = table[3]; duan_address = 0; P0 = 0xff; // 消影 wei_address = 1; P0 = 0xf7; wei_address = 0; delay(5); } } void delay(uint xms) { uint i, j; for(i = xms; i > 0; i--) for(j = 110; j > 0; j--); }
上一篇:51单片机内部定时器使用
下一篇:LCD1602动态显示
史海拾趣
|
之前看到有朋友用NEC的单片机,找不到资料,这里放上 因为有几百兆,所以选择放链接,请斑竹谅解: 1.NEC单片机选型手册 http://www.getsoon.com.cn/bbs/viewthread.php?tid=2&;extra=page%3D1 2.NEC单片机开发环境 h ...… 查看全部问答> |
|
加速度传感器可以用来测量加速度、运动、冲击、振动、倾角和压力,产品的应用领域包括汽车工业、其他移动机器以及范围广泛的终端设备、医疗设备、运动健身和娱乐领域。 2楼:浅谈 3D-MEMS 加速度传感器 3楼:在消费电子设备中如何选择和集成MEMS ...… 查看全部问答> |
|
这里介绍下光谱类仪器的测量电路 光谱类仪器包括多种化验常用的测量仪器,如等离子体发射光谱仪,分光光度计等。其中的原理大都一致,这里略作介绍。 原理:通过检测被测量物质的特征光谱,从而进行定量测量。为了使被测物体发光,有几种方法:荧 ...… 查看全部问答> |
|
本人evc初学者不知道变量的定义应该写在什么地方呢?或者是别的错误?程序错误如下!感谢大家帮忙 F:\\EVC\\LCD\\LCD_TEST.cpp(50) : error C2065: \'mouseclick\' : undeclared identifier F:\\EVC\\LCD\\LCD_TEST.cpp(85) : error C2065: \'lcdbrush\' : undeclared identifier F:\\EVC\\LCD\\LCD_TEST.cpp(85) : error C2440: \'=\' : cannot ...… 查看全部问答> |
|
12864汉字液晶显示--按键电子时钟程序(具有闪烁,移位,加一,减一功能) #include <reg52.h>#include <intrins.h>#define uchar unsigned charvoid lcd_ini();void ascii_change(void);void delay();void wri_add(uchar com);void wri_dat(uchar com1);void shan(void);void disp();void tkey(void);sbit cs=P1^7 ...… 查看全部问答> |
|
我用的是PIC16F72单片机, 烧录文件为 .HEX 文件 ,程序是一直能够正常运行的, 但是此次正常烧写后,实验发现有些功能正常,有些功能不对了 ,不知道是何原因,请哪位高人指点一下… 查看全部问答> |




