在51单片机的数码管的应用开发中一些小的细节还是应该注意到的。
其中位选信号应该在段选之前打开,下面是一段示例代码(我用的是国信长天开发板):
#include #include #define uint unsigned int sbit buzz=P0^6; /************************************************** 函数功能:d延时函数,延时一段时间 ***************************************************/ void delay(int x) //延时Xms { uint i,j; for(i=0;i } /************************************************** 函数功能:主函数 ***************************************************/ void main(void) { unsigned char temp; unsigned char code Tab[]={0x80,0xc0,0xc6,0x92,0xf9}; //数码管显示0~9的段码表,程序运行中当数组值不发生变化时 //前面加关键字code ,可以大大节约单片机的存储空间 P2=0xa0; //令蜂鸣器的锁存器打开 buzz=0; //关闭蜂鸣器 temp=0x01; //设定中间变量temp while(1) //无限循环 { int i; for(i=0;i<5;i++) { P2=0xc0; //位选,令com公共端的锁存器打开 P0=temp; //控制哪个数码管亮 P2=0xe0; //令数码管的锁存器打开 P0=Tab[i]; //让P0口输出数字的段码 // temp=temp<<1; //左移一位 与下句效果效果相同 temp=_crol_(temp,1); //左移一位 delay(100); //调用延时函数 } temp=0x01; //当移到最左端时,再设定temp,重新开始 } } 由于段选信号,位选信号都是从P0端送出,所以在同一时刻只能是输出位选信号或者是段选信号。此刻位选,段选的刷新频率是一致的。 就本例来说,段选信号的作用在delay(3)的时刻分别显示8,0,C,5,1。既是说假如八个数码管同时选通,那么显示的是8 0 C 5 1依次间隔delay(3)时间的显示。 位选的作用就是让不同的数码管显示不同的字段,本身在一个时刻只能显示一个数码管,结果整个效果是五个数码管显示80C51,ps:如果扫描6个数码管那么显示的就是80c518.
上一篇:单片机系统抗干扰,软件 VS 硬件孰轻孰重?
下一篇:老工程师对嵌入式学习之51单片机的一些心得体会
推荐阅读最新更新时间:2024-11-10 12:42
设计资源 培训 开发板 精华推荐
- ADA4637-1BRZ-R7带保护同相放大器的典型应用电路
- 使用 ROHM Semiconductor 的 BD46452 的参考设计
- LTC3897IFE 高效两相 24V 升压转换器的典型应用电路,具有浪涌电流控制、过流保护、输入电压浪涌保护和反向输入保护
- 用于ST25DV04K动态NFC / RFID标签IC的开发套件,具有快速传输模式功能
- NCP612 100 mA CMOS 低 Iq 稳压器在 SC70-5 中的典型应用
- 使用 ON Semiconductor 的 CM3103 的参考设计
- 使用 ROHM Semiconductor 的 BA18BC0T 的参考设计
- SESD0201X1UN-0020-090,使用 SESD0201X1UN-0020-090 ESD 抑制二极管阵列的典型应用 20kV 2-Pin DFN
- AD8346-EVALZ,AD8346 评估板,800 MHz 至 2500 MHz 正交调制器
- 使用 Analog Devices 的 LT1121CS8 的参考设计
- 得捷第二季Follow me第2期来袭,一起解锁功能强大且灵活的【Arduino UNO R4 WiFi】
- 免费下载 | TE暖通空调 & 热泵解决方案资料包!
- 第二届英飞凌【碳化硅应用技术】发展论坛
- 下载有礼|电路设计的参考书《ADI 参考电路合集 (第4册) 》
- 【社区大讲堂】顶嵌与你一起:动手做嵌入式产品
- 直播已结束【TI MSPM0应用详解:个人电子、楼宇自动化和医疗】
- 下载MPS汽车电机控制技术干货,赢【Keep体脂秤、自动洗手机套装、小米保温杯】,开启汽车技术进阶之旅!
- 是德科技感恩月直播已结束|高速示波器基础与是德新品示波器解析
- 有奖评测:平头哥RISC-V低功耗板——RVB2601