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动态显示
推荐阅读最新更新时间:2024-11-02 00:04
设计资源 培训 开发板 精华推荐
- [测试通过] ESP-01S 烧录器 USB_TTL 下载器
- TWR-S12G240,适用于汽车应用的 MC9S12G240 超可靠 16 位 MCU 塔式系统模块的塔式开发板
- LT1767EMS8 12V 至 3.3V 降压转换器的典型应用电路
- 网络多功能像素灯Pro版(充电拓展版)
- AM6TW-2405SH35Z 5V 6瓦双输出DC-DC转换器的典型应用
- MCP73871EV,MCP73871 锂离子电池充电器评估板
- AKD4368-B,带集成耳机放大器的 AK4368 24 位 DAC 评估板
- NCS2002SN2T1G可变占空比脉冲发生器典型应用电路
- OP497GSZ平方放大器典型应用电路
- Sp34063A 1.5A 降压/升压/反相 DC-DC 开关稳压器的典型升压转换器电路