1、四位共阳数码管的使用剖析四位数码管的探究 1硬件准备 1软件准备 2控制思路: 2卞面是实际的焊接之中,考虑到实际电路的连接顺序,采用下面的连接。 4两位数码管源程序:00-99 4异曲同工:000 9999 5更进一步:四位数字时钟 7四位数码管的探究硬件准备四位共阳数码管一块,1K电阻4只。数码管的引脚图如下所示:四位共阳数码管A 11 10 B C 7A B C DBB5BBC接高电平3接低电平时5(夷 1按高电平3授低电平时如2亮A. B. C. D均连接VccKS7IREP3.0 匚TxD/P3.1 匚XTAL2IXTALI匚 rm)/P3.v 匚 EH/P3. 3 匚ECI/T03
2、4 匚 PTO1/PCA0/TPP3.5IGnd匚123456789)sop20 、 DIP20098 7 654321 OG 1 1X 1X 11 1 1X 1X 11 1VCP1.7/SCLKPl.fi/MTSOPl. 5/MO5IPl. 1/Pl.3Pl.2Pl. L/CLK0CI1Pl. O/CLKOCIOP3. 7/PCA0/PW0使用的单片机是STC12C2052,位选町以使用P1接I I控制。参照下面数据手册的内容,可以看出P35, 3.4, 3.3, 3.2均能够作为I/O接口以推挽方式使用。由于数码管所能承受的电流较小,所以外加1K的限流电阻。单片机P3.5, 3.4, 3.
3、3, 3.2四个接口可以作为数码阳极一端,利用推挽方式输出高电平,pi接11作为数码管的段选,输出低电平,驱动每一段数码管,这就为设想的实现取得了理 论的基础。证明了使用20脚单片机控制数码管产生时钟的效果是切实可行的。下面关键的 部分就成了数码管的编程阶段了。P1 口 设定 P1M0 (7: 0P1M1 7: 0I/O Ul模式(Pl.K如做AQ使用,需先将英设置成开漏或高阻输入00准双向口(传统8051 I/O 口模式 灌电流可达20mA 拉电流为230uA 由于制造误差,实际为250uA150uA01推挽输出(强上拉输出.可达20mA.要加限流电阻)10仅为输入(奇阻),如果该UO口需作
4、为A/D使用,可选此模式11开jW(Open Drain).如果该IS口需作为A/D使用.可选此換式P3 口设定 P37, x , P3. 5, P3.4, P3. 3, P3.2, P3. 1, P3. 0 无P3.6 口P3M0 7: 0P3M1 7: 0I/O 口模式00准双向口(传统8051 I/O 口模式). 淞电流可达20mA拉电流为230pA 由于制造误差实际为250uA 15 Ou A01推挽输出(强卜拉输出可达20mA.耍加限流电R1)10仅为输入(高阻)11JTifOpen Drain),内部上拉电阻断开,耍外加卜面将使用单片机控制数码管产生时钟的效果。由于单片机的计时是由
5、软件延时的方法产生,所以说误差会有很人。因此本作品仅供娱乐。初期的想法是加入闹钟的概念。但是由于 闹钟的定时不易调整,只能通过计算机编写软件定闹,这样就不是时钟的简洁的目的。另外, 由于当单片机控制蜂鸣器响的时候,单片机控制数码管的部分势必会停止,这样又会影响时 钟的准确性。因此,首先要实现的只是单片机的简易时钟功能或者说只是一个最人为1小时 的秒表。软件准备将单片机的O接I I设置成推挽输出。P1MO=OXOO;P1M1=OXFF;P3M0=0X00;P3M1=OXFF;控制思路:第三四位作为秒表的秒针部分,每秒钟变化一次。当第四位由0变到9时,第四位自动清零, 第三位由0变成1,实现加一。
6、软件的实现分为两部分。首先先实现后两位的秒针功能,先将前两位置之。卜面是编程的设 想。由于数码管的引脚是共阳极,所有的阳极都是连接在一起的,因此不能同时给所有的阳极供 电,如果那样的话,所有的数码管会有相同的显示方式。考虑到这一情况,只能采用和点阵 屏类似的扫描方法,即将数码管分成四个一位的情况,然后每个4nis扫描一次的方法。 四位共阳数码管A 11 10 B C 7A B C D日日汨日I111 11 1 1/ 4 51 1C授高电平3接低电平 d授高电平3恢低电平时dp2亮A. B. C. D均连接VccP3.5P3.4P3.3P3.2ABCD显示P1.7P1.6P1.5P1.4P1.3
7、P1.2P1.1P1.0十六引脚124571011Dp00001000111111010111D720010010I2531000010185411000011C35100010018960000100109711010101D58000000010191000000I81卜面是对D位数码管的控制,以测试段选的有效性。#include#defiiie weixuan Plsbit a=P3A5;sbit b =P3A4;sbit c =P3A3;sbit d= P3A2;void yanshi(unsigned int a )unsigned int i;while(a)fbr(i=0;i60
8、0;i+);void mam()code unsigned char shuzi=0xll,0xd7,0x25,0x85,0xc3,0x89,0x09,0xd5,0x01,0x81;PlM0=0X00;P1M1=OXFF;/设置Pl, P3接I的工作方式为推挽输P3M0=0X00;P3Ml=0XFF;while(9)unsigned iiit j;d=l;for(j=0j 21 1 1J 4 fc接高电平3接低电平时d小亮 日按高电平3按低电平时如2亮A. B. C. D均连接Vcc12340001011110200113101041110510106001071110800109101011
9、5710十六01000x241101Oxed00010x310001Oxa!10000xe800100xa200100x220101Oxe500000x200000OxaO下面是通过动态扫描的方法,利用单片机控制数码管的后两位(C和D),来实现数码管从 00显示到99的一个程序。单片机每4ms输出一个信号,控制数码管显示一个数字,利用人 眼的视觉暂停效呆来实现显示变化的过程。由于外接电阻1K,所以单片机在亮度上不是很 好,在以后的操作中还是需要改善的。两位数码管源程序:00-99#include define weixuan Pl sbit a=P3A5;sbit b =P3A4;sbit c
10、 =P3A3;sbit d= P3A2;void tOyansliiQ 址时 4nisTMOD=OXOi;/ 十六位TLO = 0x60; /设置定时初值THO = OxFO; /设置定时初值TR0=l;xvhile(TF0=0);TF0=0;void mam()unsigned int j,kj;code unsigned char shuzi=0x24,0xed.0x31 .Oxa 1.0xe8.0xa2.0x22,0xe5,0x20,0xa0;/* 扌非挽设置 * */PlM0=0X00;P1M1=OXFF;/设置Pl, P3接I I的工作方式为推挽输出。P3M0=0X00;P3Ml=0
11、XFF:严*/ a=O;b=O;c=O;d=O;xvhile(l)血(J=O;j v 10J-H-) p (坏fbr(k=O;k 10:k+)个位馆坏for(l=0 ;1125;!+)/! 25* 8ms= 1000nis= 1 sc=l;weixuaii=shuzij;tOyaiishi();c=O; 4ms d=l;weixuaii=shuzik;tOyansluQ;d=O: 4ms接下来将会是对数码管的A.B, C,D四位的控制。由于上面的基础,相信四位控制显示0000 9999的过程将不会很复杂。异曲同工:00009999#include书define weixuan Plsbit a
12、=P3A5;sbit b =P3A4;sbit c =P3A3;sbit d= P3A2;void tOyansliiQ 延时 4nisTMOD=0X01;/+ 六位TLO = 0x60; /设置定时初值THO = OxFO; 设置定时初值TR0=l;while(TF0=0);TFO=O:void mam()unsigned char i,kJaiLii;code unsigned char shuzi=0x24,0xed.0x31 .Oxa 1,0xe8,0xa2.0x22,0xe5,0x20,0xa0;/*ift|& -*/PlM0=0X00;P1M1=OXFF;/设置Pl, P3接门的工
13、作方式为推挽输出。P3MOOXOO;P3Ml=0XFF:*/a=O;b=O;c=O;d=O;xvhile(l)fbr(k=O;k 10;k+) 7 千位fbr(l=0;l10;l+)/ 百位for(m=0 ;m 10 | 位/4ms*4=16nis;fbi(n=O ;n 10 ;n+) 、(Ifoi(i=0;i62;i-H-)/62ms* 16=992ms 1 sa=l;weixuan=shuzik;tOyanshi();a=O: 4ms b= 1 ;weixuan=shuzil ;tOyansluQ;b=O; 4msc=l;weixuan=shuzim;tOvanshi();c=O; 4ms
14、 d= 1 ;weixuan=shuzin;tOyanshi();d=O; 4ms更进一步:1小时定时器#include define weixuan Pl sbit a=P3A5;sbit b =P3A4;sbit c =P3A3;sbit d= P3A2;void tOyansliiQ 址时 4msTMOD=0X01/+A 位TLO = 0x60; 设置定时初值THO = OxFO; 设置定时初值TR0=l;while(TF0=0);TF0=0;void tlyansliiQ/lnisTMOD=0X10;TLl=0xl8; 设置定时初值THl=0xFC; 设置定时初值TR1=1;while
15、(TFl=0);TF1=O;void mam()unsigned char i,kdaiLii;code unsigned char shuzi=0x24,0xed.0x31 .Oxa 1.0xe8. 0xa2.0x22,0xe5,0x20,0xa0;/* 扌非挽设置 * */PlM0=0X00;P1M1=OXFF; /置Pl, P3接I I的工作方式为推挽输出oP3M0=0X00;P3Ml=0XFF:a=O;b=O;c=O;d=O;while(l)fbr(k=0;k6;k+)7T-位for(l=0;l10;l+)/7 百位fbr(m=O ;m6 ;m+) k7 fbi(n=O;n 10;ii
16、-h-).7 个位for(i=0 ;i5 5;i+)/19*55 1045nis=l sa=l;weixuan=shuzik;tOyanshi();a=O: 4msb= 1 ;weixuan=shuzil ;tOyanslu();b=O: 4ms c=l;weixuan=shuzim;tOvanshi();c=O; 4ms d=l;weixuan=shuzin;tOyanshi();d=O; 4ms if(i25)b=l;weixuan=0x20;tlyansliiQ;b=0; inisc=l ;weixuau=0x20;tlyaiisliiQ;c=0; 1ms烁 d= 1 ;weixuan=
17、0x2 O;tl yansliiQ;d=O; 1 ins小数点可能是由3位共同控制的,暂时还没有发现时那两位控制的,所以干脆使用三位控制。 如果小数点的控制也使用4ms的延时,那么每一位数码管显示的时间间隔将会是28ms,经 过实际的测试发现能够明显感觉出闪烁来。由于小数点的显示是连续的,即连续亮25个周 期,灭25个周期,所以使用1ms的延时并不会有什么影响。欲穷千里目下面是24h定时器的源程序。由于实验板的面积有限,不能加入两个调整时间的开关,因此 不能实现调整时间,在未来的实验中将会解决这一问题。增加调节小时,分钟的程序。 #includedefine weixuan Plsbit a=
18、P3A5;sbit b =P3 八 4;sbit c =P3A3;sbit d= P3A2;void tOyansliiQ 延时 InisTMOD=0X01;十六位TL0 = 0xl8; /设置定时初值TH0 = OxFC; /设置定时初值TRO=1;while(TF0=0);TF0=0:void tlyansliiQ/lnisTMOD=0X10;TLl = 0xB4; /设置定时初值TH1 = OxFE; 设置定时初值TR1=1; while(TFl=O);TF1=O;void mam()unsigned char kJjnji; mt i;code unsigned char shuzi=
19、0x24.0xed.0x31 .Oxa 1 .Oxe&0xa2.0x22,0xe5,0x20,0xa0;P1MOOXOO;P1M1=OXFF;/设置Pl, P3接口的工作方式为推挽输出。P3MOOXOO;P3Ml=0XFF:J*/a=O;b=O;c=O;d=O;xvhile(l) fbr(k=0;k2;k+)/T 位fbr(l=0;l10;l+)/ 百位if(k=2&k=4) break; fbr(m=0 ;m6 ;m+) 1、fbi(n=O;n 10;n+丿个仆 for(i=0;i12000;i-H-)/5ms*12000=lniuia=l ;weixuan=shuzik;tOyanslii
20、Q;a=O/ 1msb= 1 ;weixuan=shuzil ;tOyanslii();b=O: 1ms c=l;weixuan=shuzim;tOyanshi();c=O;/lms d= 1 ;weixuan=shuzin ;tOyanshi();d=O;/ 1ms if(i/l 00%2=0),7 小数点闪烁b= 1 ;weixuan=0x2 O;tl yansliiQ; b=0 ;/3 3 Ou sc= 1 ;weixuau=0x20;tlyaiisliiQ;c=O; 33Ous d=l;weixuan=0x20;tlyansliiQ;d=0y/330us注意如果小数点闪烁的程序中同时设置小数点控制为bcd=l,那么将会造成电流较小从而 小数点的闪烁过暗。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1