为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

用两个74HC164驱动两个四位的数码管.doc

2017-09-18 11页 doc 56KB 47阅读

用户头像

is_954223

暂无简介

举报
用两个74HC164驱动两个四位的数码管.doc用两个74HC164驱动两个四位的数码管.doc 用两个74HC164驱动两个四位的数码管~~(一个简易电子钟) 几天前我发一了帖寻求用两74HC164做动态扫描数码管~~~ 今天我折腾了一天终于把它难弄出来了~~~~~~ 其电路图是在一本书上找到的~~由于还没学会用protel 99画图,,所以就只有将就一下了 我的程序如下: #include sbit DAT=P1^1; sbit CLK=P1^2; unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0...
用两个74HC164驱动两个四位的数码管.doc
用两个74HC164驱动两个四位的数码管.doc 用两个74HC164驱动两个四位的数码管~~(一个简易电子钟) 几天前我发一了帖寻求用两74HC164做动态扫描数码管~~~ 今天我折腾了一天终于把它难弄出来了~~~~~~ 其电路图是在一本书上找到的~~由于还没学会用protel 99画图,,所以就只有将就一下了 我的程序如下: #include sbit DAT=P1^1; sbit CLK=P1^2; unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};// 显示0~9 unsigned char code ff[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x77};//位选; unsigned char a,b,c,d,e,f,ch,hour,minite,second; //开启计时 void loading() { TMOD=0x22; TR0=1; ET0=1; EA=1; } 以下是显示程序,共八个,因为有八个数码管; void sendbyte(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xfe; for(c=0;c<8;c++) { CLK=0; DAT=num; CLK=1; num<<=1; } } void sendbyte_1(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xfd; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_2(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xfb; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_3(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xf7; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_4(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xef; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_5(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xdf; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_6(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0xbf; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } void sendbyte_7(unsigned char byte) { unsigned char num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } num=0x7f; for(c=0;c<8;c++) { CLK=0; DAT=num&0x80; CLK=1; num<<=1; } } //延时~~ void delay() { unsigned int j; for(j=0;j<250;j++) ; } main() { loading(); while(1) { a=hour/10; b=hour%10; c=minite/10;d=minite%10; e=second/10;f=second%10; ch=10; sendbyte(f); delay(); sendbyte_1(e); delay(); sendbyte_2(ch); delay(); sendbyte_3(d); delay(); sendbyte_4(c); delay(); sendbyte_5(ch); delay(); sendbyte_6(b); delay(); sendbyte_7(a); delay(); } } void time(void) interrupt 1 { unsigned int tt; tt++; if(tt==3600) { tt=0; second++; if(second==60) { second=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) hour=0; } } } } 此程序还有很多不足~ 希望单片机高手们来给我看一下~~~提一些好的建议吧~~
/
本文档为【用两个74HC164驱动两个四位的数码管&#46;doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索