完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
***it ADD0 = P2^0; ***it ADD1 = P2^1; ***it ADD2 = P2^2; typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; uint8 code ledchar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uint8 shuchar[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint8 i; uint16 ci; uint32 shu; void main() { EA=1; TMOD=0x01; TH0=0xFC; TL0=0x67; ET0=1; TR0=1; while(1) { if(ci>=1000) { ci=0; shu++; shuchar[0]=ledchar[shu%10]; shuchar[1]=ledchar[shu/10%10]; shuchar[2]=ledchar[shu/100%10]; shuchar[3]=ledchar[shu/1000%10]; shuchar[4]=ledchar[shu/10000%10]; shuchar[5]=ledchar[shu/10000%10]; } } } void Interrupttimer0() interrupt 1 { TH0=0xFC; TL0=0x67; ci++; P0=0xFF; switch(i) { case 0:ADD0=1;ADD1=1;ADD2=1;i++;P0=shuchar[0];break; case 1:ADD0=0;ADD1=1;ADD2=1;i++;P0=shuchar[1];break; case 2:ADD0=1;ADD1=0;ADD2=1;i++;P0=shuchar[2];break; case 3:ADD0=0;ADD1=0;ADD2=1;i++;P0=shuchar[3];break; case 4:ADD0=1;ADD1=1;ADD2=0;i++;P0=shuchar[4];break; case 5:ADD0=0;ADD1=1;ADD2=0;i=0;P0=shuchar[5];break; default:break; } } |
|
相关推荐
1 条评论
7个回答
|
|
以下内容来源于《51单片机轻松入门-基于STC15W4K系列》
例12.5 动态显示的秒计数器(整数有效数值前面的0消隐) 在例12.4的数据显示过程中,整数有效数值前面的0都会被点亮,通常是不符合实际使用要求的,本例中判断整数有效位前数值是否为0,若位0则让段码输出口输出0xFF,使对应位数码管不显示,本例只能对整数有效数值前面的0消隐,小数有效数值前面的0消隐将在12章“精密电压表通用显示器计数器制作”部分展示完整产品的实例,本例在上例的基础上主要增加了如下代码。 #define Hidden 16 // 高位消隐码在数据表中的位置,DispTab[15]=0xff void DataProcessing() // 数据处理函数 { unsigned char tmp[6]; // 最高位tmp[5],最低位 tmp[0] tmp[0] = sec%10; // 16进制转BCD码(个位) tmp[1] = sec/10%10; // 16进制转BCD码(十位) tmp[2] = sec/100%10; // 16进制转BCD码(百位) tmp[3] = sec/1000%10; // 16进制转BCD码(千位) tmp[4] = sec/10000%10; // 16进制转BCD码(万位) tmp[5] = sec/100000%10; // 16进制转BCD码(十万位) if (tmp[5]==0) DispBuf[5] = Hidden; // 十万位消隐 else DispBuf[5]= tmp[5]; if ((tmp[5]==0)&&(tmp[4]==0))DispBuf[4]= Hidden; // 万位消隐 else DispBuf[4]= tmp[4]; if((tmp[5]==0)&&(tmp[4]==0)&&(tmp[3]==0)) DispBuf[3]= Hidden; // 千位消隐 else DispBuf[3]= tmp[3]; if((tmp[5]==0)&&(tmp[4]==0)&&(tmp[3]==0)&&(tmp[2]==0))DispBuf[2]= Hidden; //百位消隐 else DispBuf[2]= tmp[2]; if((tmp[5]==0)&&(tmp[4]==0)&&(tmp[3]==0)&&(tmp[2]==0)&&(tmp[1]==0))DispBuf[1]= Hidden; // 十位消隐 else DispBuf[1] = tmp[1]; DispBuf[0] = tmp[0]; // 最低位显示 } 12.3 独立键盘 |
|
|
|
#include
***it ADD0 = P2^0; ***it ADD1 = P2^1; ***it ADD2 = P2^2; typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; uint8 code ledchar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uint8 shuchar[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint8 i; uint16 ci; uint32 shu; void main() { EA=1; TMOD=0x01; TH0=0xFC; TL0=0x67; ET0=1; TR0=1; while(1) { if(ci>=1000) { ci=0; shu++; shuchar[0]=ledchar[shu%10]; shuchar[1]=ledchar[shu/10%10]; shuchar[2]=ledchar[shu/100%10]; shuchar[3]=ledchar[shu/1000%10]; shuchar[4]=ledchar[shu/10000%10]; shuchar[5]=ledchar[shu/10000%10]; } } } void InterruptTimer0() interrupt 1 { TH0=0xFC; TL0=0x67; ci++; P0=0x00; switch(i) { case 0: ADD0=1;ADD1=1;ADD2=1;i++;P0=shuchar[0];break; case 1: if(shuchar[1]==ledchar[0])shuchar[1]=0x00; else { ADD0=0;ADD1=1;ADD2=1;P0=shuchar[1];} i++; break; case 2: if(shuchar[2]==ledchar[0])shuchar[2]=0x00; else {ADD0=1;ADD1=0;ADD2=1;P0=shuchar[2];} i++;break; case 3: if(shuchar[3]==ledchar[0])shuchar[3]=0x00; else {ADD0=0;ADD1=0;ADD2=1;P0=shuchar[3];} i++;break; case 4: if(shuchar[4]==ledchar[0])shuchar[4]=0x00; else {ADD0=1;ADD1=1;ADD2=0;P0=shuchar[4];} i++;break; case 5: if(shuchar[5]==ledchar[0])shuchar[5]=0x00; else {ADD0=0;ADD1=1;ADD2=0;P0=shuchar[5];} i=0;break; default:break; } } |
|
|
|
#include
***it ADD0 = P2^0; ***it ADD1 = P2^1; ***it ADD2 = P2^2; typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; uint8 code ledchar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uint8 shuchar[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint8 i; uint16 ci; uint32 shu; void main() { char i; uint8 buf[6];//中间转换缓冲区 EA=1; TMOD=0x01; TH0=0xFC; TL0=0x67; ET0=1; TR0=1; while(1) { if(ci>=1000) { ci=0; shu++; buf[0] = sec%10; buf[1] = sec/10%10; buf[2] = sec/100%10; buf[3] = sec/1000%10; buf[4] = sec/10000%10; buf[5] = sec/100000%10; for(i=5;i>=1;i--) //从最高为开始,遇到0不显示,遇到非0退出循环 { if(buf[i] == 0) shuchar[i] = 0xFF; else break; } //将剩余的有效数字位如实转换 for( ;i>=0;i--) /for()起始未对j操作,j即保持上个循环结束时的值 { shuchar[i] =ledchar[buf[i]]; } } } void InterruptTimer0() interrupt 1 { TH0=0xFC; TL0=0x67; ci++; P0=0xFF; switch(i) { case 0:ADD0=1;ADD1=1;ADD2=1;i++;P0=shuchar[0];break; case 1:ADD0=0;ADD1=1;ADD2=1;i++;P0=shuchar[1];break; case 2:ADD0=1;ADD1=0;ADD2=1;i++;P0=shuchar[2];break; case 3:ADD0=0;ADD1=0;ADD2=1;i++;P0=shuchar[3];break; case 4:ADD0=1;ADD1=1;ADD2=0;i++;P0=shuchar[4];break; case 5:ADD0=0;ADD1=1;ADD2=0;i=0;P0=shuchar[5];break; default:break; } 评分 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为什么我的积分不够了?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 09:06 , Processed in 0.867901 second(s), Total 100, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号