历史上的今天
今天是:2024年09月26日(星期四)
2021年09月26日 | 51任务17:定时器控制数码管从00-59,1秒增一
2021-09-26 来源:eefocus
#include "reg52.h"
//数据类型声明
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
//数码表
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 DisplayData[8];
u8 s,ms;//秒 毫秒
//延时函数 i=1 延时10us
void delay(u16 i)
{
while(i--);
}
//数码管动态扫描函数,循环扫描八个数码管
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //选位置
{
case(0):
LSA=1;LSB=1;LSC=1; break;
case(1):
LSA=0;LSB=1;LSC=1; break;
case(2):
LSA=1;LSB=0;LSC=1; break;
case(3):
LSA=0;LSB=0;LSC=1; break;
case(4):
LSA=1;LSB=1;LSC=0; break;
case(5):
LSA=0;LSB=1;LSC=0; break;
case(6):
LSA=1;LSB=0;LSC=0; break;
case(7):
LSA=0;LSB=0;LSC=0; break;
}
P0=DisplayData[i];//发送断码
delay(100);
P0=0x00;//消隐
}
}
void datapros()
{
//第7 6 位显示数字
DisplayData[0]=smgduan[s/10]; //个位
DisplayData[1]=smgduan[s%10]; //十位
}
void Timer0Init()
{
TMOD|=0X01;//定时器0模式
TH0=0Xd8; //定时器赋值10ms
TL0=0Xf0;
ET0=1;//定时器0中断允许被打开
EA=1;//总中断
TR0=1;//定时器
}
void main()
{
Timer0Init(); //定时器初始化
while(1)
{
datapros();
DigDisplay();
}
}
void Timer0() interrupt 1
{
TH0=0Xd8; //10ms
TL0=0Xf0;
ms++;
if(ms>=100) //100*ms=1s
{
ms=0;
s++;
if(s>=60)
{
//清0
s=0;
}
}
}
史海拾趣
|
c51接收部分一接收像死机了一样!我在串口助手中发送的数据为:02000102 节点号为2, 一发送本来显示的界面为: 1.输入开始 2.节点设置 请选择: 可是一发送,在第0行0列显示请选择* 按键也没有反应,像列了一样?郁闷死了? #in ...… 查看全部问答> |
|
在编程中0.5和0.473用浮点数表示分别是3F000000和3EF22D0E,那么,如果是50和62.5该如果表示呢?请行家指教。谢谢!… 查看全部问答> |
|
可以实时显示数据, 数据格式 是FF H8 L8(电压) H8 L8(电流) 曲线绘制没有分格式 单一数据绘制 下面的流程图怎么会多了eeworld的标志 | | //========================================================================== Borla ...… 查看全部问答> |
|
求助:花了几千大元参加了SMT工程师认证课程和考试不知道值不值? 刚刚加入SMT行业没多久,朋友一直要我和他一起报名了深圳NEPCON展会的SMT工程师认证课程,而且还要花上几千大元的费用,可是不知道这个证书对我以后的职业规划有没有帮助!请各位前辈给指引一下,谢谢!… 查看全部问答> |
|
我用Verilog写了一段程序 但是在初始化initial和display的地方会提示警告 说被忽略了,不知道是为什么 哪位高手帮忙解答一下 刚接触FPGA不久哦。。。非常感谢… 查看全部问答> |
|
AVR Studio界面依次点击set、AVR program、connect之后就显示Please select a device from the devicelist. 不知道我的操作有啥毛病,请帮忙指导下,谢谢了… 查看全部问答> |




