1.8只数码管滚动显示单个数字
#include #include unsigned char code duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9 unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码 unsigned char tempdata[8]; void delay(int ms) { unsigned char j; for(;ms>0;ms--) for(j=125;j>0;j--); } void main() { int i; P1=0x7f; for(i=0;i<8;i++) { P0=duanma[i]; delay(2000); P1=_cror_(P1,1); //cror在流水灯中实际效果是左移,而在数码管中就是右移 } } 2.数码管上显示12345,从右往左移动 实现这种功能有几种方法,此处列举两种原理 原理一:从数码管成像原理出发 #include #include unsigned char code duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9 unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码 unsigned char tempdata[8]; void delay(int ms) { unsigned char j; for(;ms>0;ms--) for(j=125;j>0;j--); } void main() { int i,j,k; float K1=0xef,K2=0xef; for(i=0;i<8;i++) { for(k=0;k<50;k++) { for(j=1;j<6;j++) { P1=0xff; P1=K1; P0=duanma[j]; delay(5); K1=_cror_(K1,1); } K1=_crol_(K1,5); } K2=_crol_(K2,1); K1=K2; } 原理二:改变段码的值,使其循环可以首尾相接 #include void delay(unsigned char ms) { unsigned int j; for(;ms>0;ms--) { for(j=125;j>0;j--); } } unsigned char code DuanMa[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xa4,0xb0,0x99,0x92,0xff,0xff,0xff,0xf9,0xa4,0xb0,0x99,0x92,0xff,0xff,0xff,0xff,0xff,0xff,};// 改变段码的值 unsigned char code WeiMa[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码 unsigned char TempData[8]; //用于存放4位数码管显示数字的段码 void Display(unsigned char FirstBit,unsigned char Num) { unsigned char i; for(i=0;i P1=0xff; //清空数据,防止有交替重影 P0=TempData[i]; //取显示数据,段码 P1=WeiMa[i+FirstBit]; //取位码 delay(2); // 扫描间隙延时,时间太长会闪烁,太短会造成重影 } } void main() { unsigned int a=8,j; while(1) { j++; if(j==30) { j=0; a++; if(a==26) a=18; } TempData[0]=DuanMa[a-8]; TempData[1]=DuanMa[a-7]; TempData[2]=DuanMa[a-6]; TempData[3]=DuanMa[a-5]; TempData[4]=DuanMa[a-4]; TempData[5]=DuanMa[a-3]; TempData[6]=DuanMa[a-2]; TempData[7]=DuanMa[a-1]; Display(0,8); } }
上一篇:51单片机之数码管动态循环左移显示手机号
下一篇:基于proteus的51单片机仿真实例六十、8位数码管显示实例
推荐阅读最新更新时间:2024-11-16 20:28
设计资源 培训 开发板 精华推荐
- 使用 ON Semiconductor 的 CAT3614 的参考设计
- AT89s51 测试电容容量
- 使用 ROHM Semiconductor 的 BD48K25G-TL 的参考设计
- 使用 Analog Devices 的 AD8318 的参考设计
- 【实测成功】基于ESP12的1路物联网开关
- LTC2992CDE 功率效率计的典型应用
- LT3468ES5-1 闪光灯电路的典型应用电路使用一个 3mm 高的微型变压器
- 基于TMS320F2812的变速恒频风力发电系统运行与控制研究源码
- LT3066IMSE-5 可调高效稳压器的典型应用电路
- XKT560P: Evaluation system supporting NXP MPC560xP
- 更好的你我,更好的EEWorld!2020年终庆典
- 看视频瓜分红包:面向高效高密度开关电源的先进功率 MOSFET 技术及应用
- 抢先体验!免费试用LM3S8962 评估套件!(10.13~11.30)
- 初夏TI电池管理与您邀约:晒样片订单 抢楼赢礼!
- PI自研氮化镓助力实现更小、更轻、更高效的充电器 看视频好礼送!
- EEWORLD 示波器问卷有奖大调查
- TI 工业知识挑战赛番外篇!
- 遇见春天,“愚”你同乐 快来与keysight一起学习 光通信测试测量解决方案 下载赢好礼!
- 有奖直播|TI DLP® 技术如何推动AR HUD和汽车大灯的发展
- 有奖直播:TI 超低功耗 MCU 在触摸及智能化工业网关中的应用