栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

74HC595驱动数码管实现秒计时

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

74HC595驱动数码管实现秒计时

【例4.4】74HC595驱动数码管实现秒计时

1.输出数据用cy进位输出

2.使用定时器定时1秒

CY(Carry)在单片机里是进位标志。CY=0是无溢出,CY=1有溢出。用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0。对无符号数的运算,判断只需CY即可,对于无符号数的运算,CY位就可以表示其是否溢出。但如果是有符号数,则不能按CY标志来判断了。

#include
#include
sbit sbclk=P2^5: //H74HC595的时钟引脚
sbit sbsck=P2^6; //74HC595的控制引脚
sbit sbser=P2^0;//74HC595的数据引脚
unsigned char temp;
unsigned char counter=0x00;//计数器
bit bT0flg=0;//T0标志位
unsigned char code sbserY_CODE[]=//字形编码
{
0xc0.0xf9.0xa4.0xb0.0x99,0x92,0x82,0xf8,0x80,0x90,
};
/定时器0初始化函数
void InitT0(void)
{
TMOD=0x01;//使用工作方式1
TH0=0xFF;
TL0=0x9C;//100ms定时
ET0=1;//开启定时器0中断
TR0=1;//启动定时器
}
//定时器0中断处理函数
void  Timer0Deal(void) interrupt 1 using l
{ET0=0;//关闭中断
TH0=0xFF;//重新装入预置值
TL0=0x9C;
ET0=1://打开T0中断
counter++:
if(counter==10)//定时1s
{
bTOfg=1;//定时器中断标志位置位
counter=0;
}
}
//H74HC595的输出函数,参数为待输出的数据
void output595(unsigned char temp)
{unsigned char;
for(i=0;i<8;i++)
{
temp<<=1//移位
sbser=CY;//数据输入
sbclk=1://发送控制信号
_nop_();//延时
_nop_();
sbclk=0;//清除控制信号
}
}
//74HC595的时钟输出函数
void clk595 ()
{sbsck=0;//时钟线清除
_ nop _();
sbsck=1;//时钟线++
_ nop _();
sbsck=0;
}
void main()
{
unsigned char timer;
InitT0();//初始化TO
EA=1;//开启中断
while(1)//循环输出0~9
{
while(bTOflg==0);//等待秒信号
bTOflg=0;
timer++;//秒计数器增加
if(timer>9)
{
timer=0;//到9则恢复到0
 
}
    output595(sbserY_CODE[timer]);
    clk595();
}}
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号