数码管动态显示(软件延时)+基于底层显示模块的应用层程序开发+Protues仿真
1 项目要求
(1)数码管开机初始显示----,正常运行时显示2013;
(2)数码管显示任意四位十进制数;
2 仿真测试
3 参考程序
3.1 主函数
#include "DisplaySmg.h" void main() { //任务1 正常运行时显示2023 unsigned int i; //0~65535 for(i=0;i<5000;i++) //数码管开机显示 { DisplaySmg(); //for循环i控制显示时间 } while(1) { LedBuf[0]=2; //重新设置LedBuf[](extern),即数据缓存区 LedBuf[1]=0; LedBuf[2]=2; LedBuf[3]=3; DisplaySmg(); //调用数码管显示函数 } // //任务2 数码管显示任意四位十进制数 // unsigned int i; //0~65535 // unsigned int NUM = 1983; //0~65535 // for(i=0;i<5000;i++) //数码管开机显示 // { // DisplaySmg(); //for循环i控制显示时间 // } // while(1) // { // LedBuf[0] = NUM/1000; //取千位 // LedBuf[1] = NUM/100%10; //取百位 // LedBuf[2] = NUM/10%10; //取十位 // LedBuf[3] = NUM%10; //取个位 // DisplaySmg(); //调用数码管显示函数 // } }
3.2 数码管显示函数(H文件和C文件成对出现)
#ifndef __DisplaySmg_H__ #define __DisplaySmg_H__ #include <REG52.H> #include "DelayXms.h" #define GPIO_SEG P0 //段选端 #define GPIO_SEL P2 //位选端 #define SMG_NUM 4 //数码管的个数 extern unsigned char LedBuf[]; void DisplaySmg(); #endif
#include "DisplaySmg.h" unsigned char code LedData[]={ //共阴型数码管的段码表,字符,序号 0x3F, //"0",0 0x06, //"1",1 0x5B, //"2",2 0x4F, //"3",3 0x66, //"4",4 0x6D, //"5",5 0x7D, //"6",6 0x07, //"7",7 0x7F, //"8",8 0x6F, //"9",9 0x77, //"A",10 0x7C, //"B",11 0x39, //"C",12 0x5E, //"D",13 0x79, //"E",14 0x71, //"F",15 0x76, //"H",16 0x38, //"L",17 0x37, //"n",18 0x3E, //"u",19 0x73, //"P",20 0x5C, //"o",21 0x40, //"-",22 0x00, //熄灭 23 }; unsigned char code LedAddr[]={0xfe,0xfd,0xfb,0xf7}; //数码管位选 unsigned char LedBuf[]={22,22,22,22}; //显示缓存区 void DisplaySmg() { unsigned char i; //等价于 "static unsigned char i = 0;" GPIO_SEG = LedData[LedBuf[i]]; //第一步 送段码 GPIO_SEL = LedAddr[i]; //第二步 送位选 DelayXms(1); //第三步 延时1ms GPIO_SEG = 0x00; //第四步 消影(共阴形) i++; if(i==SMG_NUM) //SMG_NUM为数码管的个数 i=0; }
3.3 延时函数
#ifndef __DelayXms_H__ #define __DelayXms_H__ #include <intrins.h> void DelayXms(unsigned char xms); #endif
#include "DelayXms.h" void DelayXms(unsigned char xms) //@11.0592MHz { unsigned char i, j; while(xms--) { _nop_(); i = 2; j = 199; do { while (--j); } while (--i); } }
4 参考来源