收藏 分销(赏)

51单片机驱动两片74HC595级联动态驱动8位数码管.doc

上传人:w****g 文档编号:3562608 上传时间:2024-07-09 格式:DOC 页数:5 大小:19KB 下载积分:6 金币
下载 相关 举报
51单片机驱动两片74HC595级联动态驱动8位数码管.doc_第1页
第1页 / 共5页
51单片机驱动两片74HC595级联动态驱动8位数码管.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
51单片机驱动两片74HC595级联动态驱动8位数码管 功能 : 用2片74HC595驱动8位数码管, 级联的最低1片595控制位选,那么第一片控制段选 平台 : STC89C52   11.0592MHz 现象 : 8位数码管从第一位开始从0计数,满10进位 版本说明 : 第0版本没有使用定时器中断,同时定义了一个 unsigned long int 变量计数,再把这个数的每位分离出来显示,所以导致有点闪屏,此版本使用定时器中断,而且没有用 unsigned long int 之类的变量,而是用数组 Val[8] 来计数,  主函数只负责显示,其它的在中断函数里面处理,这样显示一点都不闪屏, 备注 : 可以用 ULN2003A 接在数码管的 com 口来提高驱动能力,ULN2003A里面有7个NPN三极管, 可以大大提高驱动能力 #include <reg52.h> sbit SCK = P1^1;    // 数据输入时钟线,脉冲 sbit SI  = P1^0;    // 数据线 sbit RCK = P1^2;    // 锁存 unsigned char code SMG[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};  // 段码 unsigned char code Wei[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};    // 位选 unsigned char Val[8]  = {0};    // 要显示的数据  ************************ 函数声明 ************************ void interrupt_init(void); void timer_init(void); 控制74HC595输出数据 void Output(void) {     RCK = 0;     RCK = 1; } 向74HC595中写入一字节数据 void Write_Byte(unsigned char dat) {     unsigned char i = 0;     for(i=0; i<8; i++)     {         SCK = 0;         SI  = dat & 0x80;         SCK = 1;         dat <<= 1;           } } 显示函数 void Display(unsigned char * p) {     unsigned char * pt = Wei;     Write_Byte(*(pt+0));     Write_Byte(SMG[*(p+7)]);     Output();     Write_Byte(*(pt+1));     Write_Byte(SMG[*(p+6)]);     Output();     Write_Byte(*(pt+2));     Write_Byte(SMG[*(p+5)]);     Output();     Write_Byte(*(pt+3));     Write_Byte(SMG[*(p+4)]);     Output();     Write_Byte(*(pt+4));     Write_Byte(SMG[*(p+3)]);     Output();     Write_Byte(*(pt+5));     Write_Byte(SMG[*(p+2)]);     Output();     Write_Byte(*(pt+6));     Write_Byte(SMG[*(p+1)]);     Output();     Write_Byte(*(pt+7));     Write_Byte(SMG[*(p+0)]);     Output(); } int main(void) {        timer_init();     interrupt_init();     while(1)     {         Display(Val);     }     return 0; } void interrupt_init(void) { EA  = 1;  //开总中断 ET0 = 1;  //开定时器0中断 ET1 = 1;  //开定时器1中断 } void timer_init(void) { TMOD = TMOD | 0x01;  //定时器0工作方式1 TMOD = TMOD & 0xFD; TH0  = 0x4B;   //装初值,50ms计数 TL0  = 0xFF; TR0  = 1;    //开启定时器0 } void timer0() interrupt 1 {     static unsigned char counter0 = 0; counter0++; TH0  = 0x4B;   //重新装入初值,定时器0从头开始计数,计数50ms   TL0  = 0xFF; if(2 == counter0)  //2*50 ms = 100ms = 0.1s {   counter0 = 0;  //counter0置零,定时器0从头开始计数         Val[0]++;         if(10==Val[0])         {             Val[0] = 0;             Val[1]++;             if(10==Val[1])             {                 Val[1] = 0;                 Val[2]++;                 if(10==Val[2])                 {                     Val[2] = 0;                     Val[3]++;                     if(10==Val[3])                     {                         Val[3] = 0;                         Val[4]++;                         if(10==Val[4])                         {                             Val[4] = 0;                             Val[5]++;                             if(10==Val[5])                             {                                 Val[5] = 0;                                 Val[6]++;                                 if(10==Val[6])                                 {                                     Val[6] = 0;                                     Val[7]++;                                     if(10==Val[7])                                     {                                         Val[7] = 0;                                     }                                 }                             }                         }                     }                 }             }         } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服