设计74hc164控制数码管显示系统
74ls164串行输出扩展运用课程设计
单片机课程设计报告74IS164串行输出扩展运用班级:09移动1班姓名:王家树、黄志豪学号:09112002、09112003指导老师:陈海松一、课题的提出选择这个课程设计,是由于陈老师在课程上曾提到过74IS164芯,并且对串口通信比较喜欢,通过老师的咨询,便提出做一个关于74IS164的串行通信程序应用设计的报告。
二、设计任务和要求任务:设计一个能够由数码管显示,编写一个关于74IS164的串输入并行输出一串数字。
要求:利用单片机的并行串行I/O 口,利用C 语言中的指针函数,编写一段好用 又简洁的设计代码。
三、设计方案的论证1首先从参考文献中可以查到 54/74164是8位移位寄存器(串行输入,并行输 出),是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通 过两个输入端(DSA或DSB )之一串行输入;任一输入端可以用作高电平使能端, 控制另一输入端的数据输入。
时钟(CP )每次由低变高时,数据右移一位,输入 到QO , Q0是两个数据输入端(DSA 和DSB )的逻辑与,它将上升时钟沿之前保 持一个建立时间的长度。
主复位(MR )输入端上的一个低电平将使其它所有输入 端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
2、功能图图1.逻辑符号CP3 斗 5£©10—11□12 —□13&1D34S610111213SRGS四、硬件资源及其分配关键元件:89C51芯片,74IS164芯片、数码管、复位电路主要用到的硬件:P3 口、数码管、串行输出输入口;硬件分配:1•串行输出输入口(单片机51的10、11脚)分别接第一个74IS164的8脚1、2 脚,第二第三第四第五第六个进行级联;2. 74IS164的9脚复位端接高电平;3. 每个数码管(a b、c、d、e、f、g)接74ls164 并行输出口(3、4、5、6、10、11、12、13);五、硬件图:1£_:29Jfl-:31XTAL1PO.O/ADO P0.1/AD1 P0.2/AD2 XTAL2P03/AD3 P0.4/AD4 P0.5/AD6 P0.6/AD6 RSTP0.7/AD7 P2.0/A8 P2.1/A9 P2 2fA103E J —11: 35—11: 33 ■ ^12;PSEN ALE EAP2.3fA11 P2.4JA1 2 P25fA13 P2.6fA1 4P2.7JA1524丄—il丄士士丄土012345671 1 .1 1- 1 1 P3.0/RXD P3 1HXD P3.2flNTg P3.3/iNTT P3.4/T0 P3.5/T1 P3.6/WRP3.7/RD10 叫1 仁 txq_L2:…_L2 _L£ _L^ _LZ ARl^FlI P=ni^ri I FDhRy (AT89C51 控制) 弓RGB 1 1 n-LM-iMH〜L -13I-Lit ■BU11*lag(74IS164 级联)(整图分布)六、主程序:1第一次编写的程序 #in elude <reg51.h>#define _DISP_LED_h__void Disp_LED(unsigned int *key_num); void DelayNS(unsigned int dly); void main() {int nu mb[6]={1,5,8,3,1,2}; Disp_LED( nu mb); DelayNS(20);}void Disp_LED(u nsig ned int *key_ num) { 一 一Un sig ned char code LED_Val[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9 un sig ned char data nu m[6];un sig ned char k; num[ 0]=*key_ num; nu m[1]=*(key_num+1); nu m[2]=*(key_num+2); nu m[3]=*(key_num+3); num[ 4]=*(key_ nu m+4); nu m[5]=*(key_ nu m+5);for(k=0;k<=5;k++)R&Trarr HF rrpul- PI .i fu 卜M E t-ii t-ii hlviwoe- I «.IMi j MdtiiJ RMfiaES L IW I T科出片3■治 时」靳I ■:皿2HHMli■梓Fi.imA »(-*nr frutfTT利丄砒[F-J^Ti MMffir 科.WT F JI fwT 蛋=1玉 4.■IK5-IiRCFlE^terLHiJiM-h■■>i・m ・・』■ h dI■>1I J aIfa■ hdI■I I.■b■・■!■3 I■ ■ ■":'^^1° -!:- ■■I - '1 v :n-fSI ^rMI ^r|5| nrf"| fr-|EI 訂={:I ;;::』:; Lfllj : ;; I J HJ :: IJWI--》25 ___ r-k£吐ID|聊IJ^L»>■^fTi^i^O4*84SBUF=LED_Val[ nu m[5-k]]; while(TI==O);TI=O;}}void DelayNS(u nsig ned int dly){int i,j;for(i=0;i<10000;i++) for(j=0;j<dly;j++);}2、第二次自学的头文件编写的程序:〃Disp_LED.c 主程序#in clude <reg51.h>#in clude "DISP_LED.h"void main(){int numb[6]={1,5,8,3,1,2};Disp_LED( nu mb); DelayNS(20);}〃DISP_LED.h 自编头文件#ifndef __DISP_LED_h__ #defi ne __DISP_LED_h__ void Disp_LED(u nsig ned int *key_ nu m); void DelayNS(u nsig ned int dly);/*函数名称:Disp_LED函数功能:数码管显示输入参数:key_num*/void Disp_LED(u nsig ned int *key_ num) { 一一un sig ned char code LED_Val[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9un sig ned char data nu m[6];un sig ned char k;num[ 0]=*key_ num;nu m[1]=*(key_num+1);nu m[2]=*(key_num+2);nu m[3]=*(key_num+3);num[ 4]=*(key_ nu m+4);nu m[5]=*(key_ nu m+5);for(k=0;k<=5;k++){SBUF=LED_Val[ nu m[5-k]];while(TI==0);TI=0;}}/*函数名称:DelayNS 函数功能:延时程序输入参数:dly 返回信息:无*/void DelayNS(u nsig ned int dly) {int i,j; for(i=0;i<10000;i++) for(j=0;j<dly;j++);} #en dif七、调试运行1、按照电路图将电路用protues仿真。
基于51单片机的74HC164驱动六位数码管显示程序与仿真
P2=0xff; //数码"灭"
}
}
main()
{
separateData(123456);
while(1)
{
display();
}
}
DS_data[2]=dat/100%10;
DS_data[3]=d4]=dat/10000%10;
DS_data[5]=dat/100000%10;
}
void write_164(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
sbit MOSI=P1^1;//符号DSA引脚1数据输入符号DSB引脚2数据输入
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//共阴数码管
基于51单片机的74HC164驱动六位数码管显示程序与仿真
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//74HC164
sbit CLK=P1^0;//符号CP引脚8时钟输入(低电平到高电平边沿触发)
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
基础实验(数码管显示)含代码
实验一基础实验(数码管显示)一、实验内容使用MCS-51汇编语言编写程序,完成如下功能:1. 使用三个数码管显示十进制数值(001~999,可任意设置);2. 每隔1秒,该数值自动减一,直到归零;3. 归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置);4. 每隔1秒,新数值继续自动减一,直到再次归零;5. 重新执行步骤1,循环往复。
6. 当开关S1按下时,暂停计数;S1松开时,恢复计数。
二、数码管显示原理如图所示,三段式数码管由三片74HC164级联控制三个数码管的显示,其中使用单片机P4.5作为模拟串口数据,使用P4.4模拟串口时钟,CLR端接高电平。
使用上一个74HC164的Q7作为下一个74HC164的输入端。
要想输出一个字形码,就需要从高位到低位依次向移位寄存器输出8个比特。
移位寄存器的数据线和时钟线分别接到单片机的P4.5和P4.4管脚,可以使用MCS-51里面的位操作指令进行输出。
连续输出3个字形,24个bit之后,欲显示的字形将稳定地显示在数码管上,程序可以转而执行其他工作。
三、实验流程图1.主程序流程图开始初始化定义计数器R6,R5,R4定义码表TAB 0-9根据R6偏移从TAB取数送到算术寄存器A中调用SHOW子程序根据R5偏移从TAB取数送入算术寄存器A中调用SHOW子程序根据R4偏移从TAB取数送入算术寄存器A中调用SHOW子程序调用延时子程序S1按下?是循环延时否R6减一即个位减一R6为-1?是R5减一即十位减一重新初始化R6否R5为-1?否是R4减一即百位减一重新初始化R5R4为-1?重新初始化R4否2.显示子程序SHOW 流程图3.延时子程序DELAY 流程图子程序SHOW 开始R0初始化计数时钟置0右移AC 标志位送入DATA时钟置1,上跳R0=0?是RET否子程序DELAY 开始RI 初始化为80R3减一R3为0?是R2减一R2为0?是R1减一是R1为0?否R2初始化为200R3初始化为250否否是四、程序源代码 0000H2.LJMP START 0050H4.START:5.P4 EQU 0C0H6.P4SW EQU 0BBH7.CLK EQU P4.48.DAT EQU P4.59.SW EQU P3.610.MOV P4SW, #70H11.LP:12. MOV R6, #913. MOV R5, #914. MOV R4, #915.LOOP:16. MOV DPTR, #TAB17. MOV A,R618. MOV DPTR,#TAB19. MOVC A,@A+DPTR20. LCALL SHOW21.22. MOV A,R523. MOV DPTR,#TAB24. MOVC A,@A+DPTR25. LCALL SHOW26.27. MOV A,R428. MOV DPTR,#TAB29. MOVC A,@A+DPTR30. LCALL SHOW31. LCALL DELAY32.33.PAUSE:34. NOP35. JNB SW,PAUSE36. DEC R637. CJNE R6,#-1,LOOP38.39. DEC R540. MOV R6,#941. CJNE R5,#-1,LOOP42. DEC R443. MOV R5,#944. CJNE R4,#-1,LOOP45. MOV R4,#946. LJMP LOOP47.48.SHOW:49. MOV R0,#850.SLP:51. CLR CLK52. RLC A53. MOV DAT,C54. SETB CLK55. DJNZ R0,SLP56. RET57.58.DELAY:59. MOV R1,#8060.SD:61. MOV R2,#20062.SD1:63. MOV R3,#25064.SD2:65. DJNZ R3,SD266. DJNZ R2,SD167. DJNZ R1,SD68.RET69.70.TAB:71. DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H72.73.74.END75.TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H五、思考题1.MCS51中有哪些可存取的单元,存取方式如何?它们之间的区别和联系有哪些?答:MCS51单片机中,包含程序存储器ROM、数据存储器RAM和特殊功能寄存器(SFRs),其中数据存储器还包含内部RAM,内部扩展RAM和片外RAM。
74HC164引脚图与中文资料
74HC164引脚图与中文资料8 位串入、并出移位寄存器1. 概述74HC164、74HCT164 是高速硅门CMOS 器件,与低功耗肖特基型TTL (LSTTL) 器件的引脚兼容。
74HC164、74HCT164 是8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA 或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟(CP) 每次由低变高时,数据右移一位,输入到Q0,Q0 是两个数据输入端(DSA 和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位(MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
2. 特性•门控串行数据输入•异步中央复位•符合JEDEC 标准no. 7A•静电放电(ESD) 保护:·HBM EIA/JESD22-A114-B 超过2000 V·MM EIA/JESD22-A115-A 超过200 V 。
•多种封装形式•额定从-40 °C 至+85 °C 和-40 °C 至+125 °C 。
3. 功能图图1. 逻辑符号图2. IEC 逻辑符号图3. 逻辑图图4. 功能图4. 引脚信息图5. DIP14、SO14、SSOP14 和TSSOP14 封装的引脚配置引脚说明符号引脚说明DSA 1 数据输入DSB 1 数据输入Q0~Q3 3~6 输出GND 7 地(0 V)CP 8 时钟输入(低电平到高电平边沿触发)/M/R 9 中央复位输入(低电平有效)Q4~Q7 10~13 输出VCC 14 正电源罗亩的笔记74HC164英文资料参考链接:/news/2008-12/8713.htm74HC164中文资料参数时间:2009-06-19 17:49:09 来源:资料室作者:SN54HC164,/SN74HC164是8位移位寄存器,当其中一个(或二个)选通串行输入端的低电平禁止进入新数据,并把第一个触发器在下一个时钟脉冲来后复位到低电平时,门控串行输入端(A 和B)可完全控制输入数据。
74hc164驱动数码管
下面是74ls164 驱动共阳数码管的演示程序,电路请看附件#i nclude<reg51.h>#define uint unsigned int#define uchar unsigned charsbit DAT=P1^1; //模拟串口数据发送端sbit CLK=P1^2;//模拟时钟控制端uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭(共阳字段表)void sendbyte(uchar byte){uchar num,c;num=tab[byte];for(c=0;c<8;c++){CLK=0;DAT=num&0x80; //(0x80即十进制的128, 二进制的10000000 按位发送)CLK=1;num<<=1;}}void delay_50ms(unsigned int t) //50MS演示程序{unsigned int j;for(;t>0;t--)for(j=6245;j>0;j--){;}}main(){unsigned char h;while(1){for(h=0;h<10;h++){delay_50ms(1);sendbyte(h);delay_50ms(10);}h=0;}}下面这段是74ls164 驱动共阴数码管的程序源码#i nclude<reg51.h>#define uint unsigned int#define uchar unsigned charsbit DAT=P1^1;sbit CLK=P1^2;uchar code tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};//0-9,-,全灭void sendbyte(uchar byte){uchar num,c;num=tab[byte];for(c=0;c<8;c++){CLK=0;DAT=num&0x01;CLK=1;num>>=1;}}void delay_50ms(unsigned int t){unsigned int j;for(;t>0;t--)for(j=6245;j>0;j--){;}}main(){unsigned char h;while(1){for(h=0;h<10;h++){delay_50ms(1);sendbyte(h);delay_50ms(10);}h=0;}}0人 | 分享到:阅读(305)| 评论(0)| 引用(0) |举报。
74HCT164程序
功能:驱动74HCT164使2位数码管显示任意2个指定的数字,然后再从11显示到99,循环。
电路:PB0接时钟,PB1接数据,上升沿有效。复位MR接PB2,低电平复位。
数据信号送到十位数码管的74HCT164,再从Q7送到个位的164的数据端。
for(i=0;i<100;i++)
{
i1=i%10;
i2=i/10;
send(i2,i1);
_delay_ms(500);
_delay_ms(500);
if(i>99)
{
i=0;
}
}
#define dp1 PORTB|=(1<<1) //数据1
#define dp0 PORTB&=~(1<<1)
#define mrH PORTB|=(1<<2)
#define mrL PORTB&=~(1<<2) //低电平复位
const char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0};//0-9,全灭
volatile unsigned char n=0;
void send(unsigned char ten,unsigned char one)
{
mrH;
cp0;
unsigned char i,numOne,numTen,num1,num2;
numOne=tab[one];
for(i=0;i<8;i++)
74HC164应用实例
74HC164应用实例实例1 74HC164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等. 74HC164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO口又比较紧张的电子产品中,下面浅谈使用方法:1. 首先先了解他的引脚功能和逻辑图,如下图:图1 引脚名称和用途图2 真值表通过真值表我们可以了解到,A,B两个输入端是互锁的,CLK上升沿时数据移入移位寄存器中,CLEAR为清零用的,接低电平时所有端口都输出低电平,了解了真值表之后开始运用了,先给出如下原理图:图3 原理图图中,采用义隆的EM78P153作为控制芯片,P50作为CLK时钟信号,注意平时数据不传输时,时钟信号是不发送的应一直保持低电平或者高电平,数据需要传输的时候才输出时钟信号^_^ ,继续P51作为移位数据输出端,接到74HC164的B端,A端接高电平,当然也可以AB端短路,然后连接到DATA移位数据端,P52作为数码管的选通信号(也可以叫消隐^_^), 作用是使数据传输过程暂时关闭显示,以免显示出不需要的数据,原因是应为164不带锁存功能,数据传输过程是一位一位的向高位移位输出的,所以要等数据全部移入后才打开始点亮数码管.注意了哦,通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管,如图,本人偷懒没有画出那个数码管的8字该介绍的介绍的差不多了,废话少说,该开始干活了,任务是: 显示0-9 每秒+1 ,到9后又返回0,一直循环显示,根据任务得到如下流程图:1. 显示部分:将需要显示的数值送入A ==> 查表求得显示段码==>将段码逐位移入164==>8位移完后点亮数码管==>延时==>返回第一步执行2. 中断部分:进入中断==>保存现场(以备调查取证,送你入狱^_^)==>重置TCC==>够1秒钟将需要显示的数据+1,并重置,不够就退出;根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.....搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.......,希望你不要重蹈我覆辙,哎哟!! 谁! 谁! 谁扔砖头上来? 啥?你扔的? 我废话太多.........,那俺少来两句,继续上菜, 咦好像没啥可说的了,上源程序吧1. ;中断部分:2.3. ;;;;;;;;;;中断;;;;;;;;4. INTPUT:5. MOV TEMPA, A;6. MOV A,@130;7. MOV TCC,A;255-130=1258. CLR RF;9. ;;;;;此处填写250Us处理程序10. BS WKREG,T500US11. ;;;;;;;;;;;;;;;;;;;;;;;;;12. DJZ R1MS13. JMP INTEXT;14. MOV A,@415. MOV R1MS,A;重置16. BS WKREG,T1MS17. ;;;;;;;此处填写1ms处理程序18.19. ;;;;;;;;;;;;;;;;;;;;;;;;;;20. DJZ R20MS21. JMP INTEXT;22. MOV A,@2023. MOV R20MS,A;重置24. ;;;此处填写1秒处理程序25. BS WKREG,T20MS26. ;;;;;;;;;;;;;;27. DJZ R1S28. JMP INTEXT;29. MOV A,@5030. MOV R1S,A;31. ;;;;;;;;;32. INC NUMBER33. MOV A,NUMBER34. SUB A,@1035. JBS SR,236. JMP INTEXT37. MOV A,@038. MOV NUMBER,A39.40.41. INTEXT:42. MOV A,TEMPA;43. RETI;;;;;;;;;;;;;;;;;;;;;44.45.46.47.48.49. ;显示部分:50.51. ;==============TXDATA==============52. TXDATA:53. BS P5,CC154. MOV A,@855. MOV DATALOP,A;56. TXLOP:57. BC WKREG,T500US58. BS P5,CLK;clk=高59. NOP;60. NOP61. JBS DATA_BUF,762. JMP $+363. BS P5,DATA;64. JMP $+265. BC P5,DATA66. DD1MS: JBS WKREG,T500US67. JMP $-168. BC P5,CLK69. BC WKREG,T500US70. JBS WKREG,T500US71. JMP $-1;72. RLC DATA_BUF73. DJZ DATALOP74. JMP TXLOP75. ;;;;;;;;;;76. BC WKREG,T500US77. BS P5,CLK;clk=高78. BC WKREG,T500US79. JBS WKREG,T500US80. JMP $-1;81. BC P5,CLK82. ;;;;;;;;83. BC P5,CC184.85. RET;;;;;;;86.87. ;数据查表88. ;===============DSPTBL============89. DSPTBL: ADD PC,A90. RETL @0B01000000;091. RETL @0B01111001;192. RETL @0B00100100;293. RETL @0B00110000;394. RETL @0B00011001;495. RETL @0B00010010;596. RETL @0B00000010;697. RETL @0B01111000;798. RETL @0B00000000;899. RETL @0B00010000;9100.101.102. ;循环体部分;103.104. ;;;;;;;;;;主程序;;;;;;;;;;;105. MLOOP:106. MOV A,NUMBER107. CALL DSPTBL108. MOV DATA_BUF,A109. CALL TXDATA110. BC WKREG,T1MS111. JBS WKREG,T1MS112. JMP $-1113. NOP;114.115. JMP MLOOP;;;;;;;;;;;;;;;;;;;;实例2 在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。
I0口驱动74LS164数码管静态显示程序
74LS1641、器件功能作用8 位串入,并出移位寄存器2. 概述74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。
74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
3. 特性•门控串行数据输入•异步中央复位•符合 JEDEC 标准 no. 7A•静电放电 (ESD) 保护:·HBM EIA/JESD22-A114-B 超过 2000 V·MM EIA/JESD22-A115-A 超过 200 V 。
•多种封装形式•额定从 -40 °C 至+85 °C 和 -40 °C 至+125 °C 。
4. 功能图图 1. 逻辑符号图 2. IEC 逻辑符号图 3. 逻辑图图 4. 功能图5. 引脚信息图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置引脚说明符号引脚说明DSA 1 数据输入DSB 2 数据输入Q0~Q3 3~6 输出GND 7 地 (0 V)CP 8 时钟输入(低电平到高电平边沿触发)/M/R 9 中央复位输入(低电平有效)Q4~Q7 10~13 输出VCC 14 正电源罗亩的笔记6. 功能表(真值表)H = HIGH(高)电平h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referenced input) 的状态↑ = 低-至-高时钟跃变7. 电器特性动态特性(TA=25℃)8. 推荐工作条件[1] 对于 DIP14 封装:Ptot 在超过70 °C 时以 12 mW/K 的速度线性降低。
74LS164驱动数码管动态显示
74LS1641、器件功能作用8 位串入,并出移位寄存器2. 概述74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。
74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
3. 特性•门控串行数据输入•异步中央复位•符合 JEDEC 标准 no. 7A•静电放电 (ESD) 保护:·HBM EIA/JESD22-A114-B 超过 2000 V·MM EIA/JESD22-A115-A 超过 200 V 。
•多种封装形式•额定从 -40 °C 至+85 °C 和 -40 °C 至+125 °C 。
4. 功能图图 1. 逻辑符号图 2. IEC 逻辑符号图 3. 逻辑图图 4. 功能图5. 引脚信息图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置引脚说明符号引脚说明DSA 1 数据输入DSB 2 数据输入Q0~Q3 3~6 输出GND 7 地 (0 V)CP 8 时钟输入(低电平到高电平边沿触发)/M/R 9 中央复位输入(低电平有效)Q4~Q7 10~13 输出VCC 14 正电源罗亩的笔记6. 功能表(真值表)H = HIGH(高)电平h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referenced input) 的状态↑ = 低-至-高时钟跃变7. 电器特性动态特性(TA=25℃)8. 推荐工作条件[1] 对于 DIP14 封装:Ptot 在超过70 °C 时以 12 mW/K 的速度线性降低。
164芯片程序设计指引
164驱动程序及说明一、概述利用164芯片分时驱动,实现以较少的IO口扫描检测按键和实现LED、数码管的显示。
二、164芯片说明74164芯片为8位移位寄存器,串行输入,并行输出,含两个串行数据输入口(与非门输入)和一个串行时钟输入口。
常用型号为74HC164,兼容TTL电平,最高工作时钟频率20MHz,扇出系数10。
三、参考电路164芯片管脚分布图164芯片工作时序图四、程序框图五、程序说明1.外部名称和全局变量申明NAME BTNDISPPUBLIC _BtnDisp ; 子程序名PUBLIC _n_Button, _n_LEDDisp, _n_NumDisp2.IO端口定义PIO_164Clk EQU P0.0 ; 164时钟口,输出PIO_164Data EQU P0.1 ; 164数据口,输出PIO_BtnCom1 EQU P2.2 ; 第1组按键公用端,输入PIO_BtnCom2 EQU P6.3 ; 第2组按键公用端,输入PIO_LEDCom1 EQU P5.2 ; 第1组LED公用端,输出PIO_LEDCom2 EQU P2.0 ; 第2组LED公用端,输出PIO_NumCom1 EQU P5.1 ; 第1位数码管公用端,输出PIO_NumCom2 EQU P5.0 ; 第2位数码管公用端,输出3.常量定义无4.变量定义DSEG SADDR ; 申明数据区_n_Button: DS (16) ; 按钮输入数据,含按键压下、抬起、响应标志。
_n_LEDDisp: DS (2) ; LED显示灯分2组,每组最多8个_n_NumDisp: DS (2) ; 2-8段码数码管显示数据n_ScanChn: DS (1) ; 按键扫描通道号:0~7,每次子程序扫描2组*1个按键,8次全部扫描完。
n_DispChn: DS (1) ; 显示扫描通道号:0~3,每通道(1个数码管或1组LED)显示时间占1/4,刷新周期取决于子程序执行频率5.使用说明作为常规子程序调用,如果直接嵌入主程序文件,无需外部名称和全局变量申明,程序中检测的按键数16,显示驱动8段数码管2个,及最多LED数16个。
74HC164驱动数码管
只要用到一片164就够了,作动态扫描,下面程序是两个数码管动态扫描,164并行输出口再接一片功率驱动芯片,如TD62083。
程序如下:/**************************************//* 74LS164数码管动态显示*//**************************************///-------------------------------------库函数声明,管脚定义------------#include <at89x51.h>#define uchar unsigned charsbit simuseri_CLK=P1^1; //用P1^1模拟串口时钟sbit simuseri_DATA=P1^0; //用P1^0模拟串口数据sbit a0=ACC^0;unsigned char code dis_code[11]={0x28,0x7E,0xa2,0x62, //查表显示0, 1、、9 0x74,0x61,0x21,0x7A,0x20,0x60, 0x01};uchar numer,temp;uchar ge,shi;//----------------------------------------------------------------------------// 函数名称:out_simuseri// 输入参数:data_buf// 输出参数:无// 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA//----------------------------------------------------------------------------void out_simuseri(uchar data_buf){uchar i;i=8;ACC=data_buf;do{simuseri_CLK=0;simuseri_DATA=a0;simuseri_CLK=1;ACC=ACC>>1;}while(--i!=0);}/************************************/void delay(uchar ms) //延时程序{uchar i;while(ms--){for (i=0;i<125;i++);}}/***********************************/void main(){uchar m;while(1){for(temp=0;temp<99;temp++){ge=temp/10;shi=temp%10;for(m=0;m<20;m++) //显示频率200ms加1次{P2_0=0; //位段码numer=dis_code[ge];out_simuseri(numer); //个位移位显示delay(5);P2_0=1;P2_1=0;numer=dis_code[shi]; //十位移位out_simuseri(numer);delay(5);P2_1=1;}m=0;}}}/****************************************/#i nclude<reg51.h>#define uint unsigned int#define uchar unsigned charsbit DAT=P1^1; //模拟串口数据发送端sbit CLK=P1^2;//模拟时钟控制端uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭(共阳字段表)void sendbyte(uchar byte){uchar num,c;num=tab[byte];for(c=0;c<8;c++){CLK=0;DAT=num&0x80; //(0x80即十进制的128, 二进制的10000000 按位发送)CLK=1;num<<=1;}}void delay_50ms(unsigned int t) //50MS演示程序{unsigned int j;for(;t>0;t--)for(j=6245;j>0;j--){;}}main(){unsigned char h;while(1){for(h=0;h<10;h++){delay_50ms(1);sendbyte(h);delay_50ms(10);}h=0;}}下面这段是74ls164 驱动共阴数码管的程序源码#i nclude<reg51.h>#define uint unsigned int#define uchar unsigned charsbit DAT=P1^1;sbit CLK=P1^2;uchar code tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};//0-9,-,全灭void sendbyte(uchar byte){uchar num,c;num=tab[byte];for(c=0;c<8;c++){CLK=0;DAT=num&0x01;CLK=1;num>>=1;}}void delay_50ms(unsigned int t) {unsigned int j;for(;t>0;t--)for(j=6245;j>0;j--){;}}main(){unsigned char h;while(1){for(h=0;h<10;h++){delay_50ms(1);sendbyte(h);delay_50ms(10);}h=0;}}刚开始的时候把74HC164当成了74HC573使了,还看了原理图,半天摸不出个所以然,然后上网查了资料,才知道原来74HC164是串入并出的,此时才知道思考方向出错了。
74hc164级联实现四位数码管显示电路
2、设计中的优点与不足:
优点:基本实现了74HC164级联实现四位数码管显示电路的设计与仿真。
不足:由于Multisim中无法直接控制输入信号,我们尝试过利用555定时器构成多谐控制输入信号,可是没有成功。最后,我们在输入信号时,通过运用开关的闭合与断开来控制输入信号,在开关闭合时产生高电平,在开关断开时产生低电平。这样控制输入信号使实验增加了难度和麻烦。
实物样品等〕:
(1)提供核心器件的工作原理与应用介绍;
(2)提供用Protel99设计的电路原理图,也可给出印刷板电路图; (3)提供用Multisim、MaxPluss、Proteus等其他软件对电路的仿真结果与分析; (4)提供符合规定要求的课程设计说明书;
(5)提供参考文献不少于三篇,且必须是相关的参考文献;
7
74HC164逻辑图 (图2)
74HC164功能表
(图3)
H = HIGH(高)电平
L = LOW(低)电平
X =无关项
? = 低-至-高时钟跃变
8
74HC164波形图(图4)
2、七段数码管:
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二
极管的阳极接到一起形成公共阳
关于74HC164的应用
电子技术Electronic Technology电子技术与软件工程Electronic Technology & Software Engineering 关于74HC164的应用孙镛程(辽宁科技大学电子与信息工程学院辽宁省鞍山市114051)摘要:本文使用74H C164芯片的输入和输出功能,与单片机进行串行通信,并行输出直接驱动显示设备.通过数据缓存器、锁存器 来扩展单片机I/O 口,减少单片机的需求。
该系统的成本还具有较大的优势,被广泛用于按鍵和显示驱动电路.关键词:74H C164;数码管显示;L E D;按徤扫描1引言在当前的电子产品市场中,74HC164 (以下简称“164”)起 着重要的作用。
2 74H C164的系统结构和工作原理2. 1系统结构该芯片是一个串行输入、并行输出的接口芯片,(74HC164is a serial input and parallel output interface chip)数据通过端口 A和端口B进行与运算形成,端口A与端口 B的与运算是在脉冲上升沿 来临之前完成的。
寄存器的复位信号在低电平时起作用,当寄存器 的复位端口输入一个低电平信号时,寄存器复位为零同时输出低电 平信号。
74HC164芯片的两个输入端口 A、B,任意一个端口接高 电平时可以控制另一个端口,输入端不能悬空处理。
如图I和表I 所示。
表1:74H C164引脚功能表符号引脚说明DSA1数据辅入DSB2数据辎入Q0-Q33^6输出GND7地(0V)CP8时钟输入(低电平到高电平边沿缺发)/M/R9中央复位输入(低电平有效)Q4、Q710-13输出VCC14正电源表2:功能图表其中,表2中:1純达入綸出H代表高电平。
辘人式h代表在低到高时钟跃变一个建立时间的高电平。
L代表低电平。
I M/R CP复位DSAI代表由低到高时钟跃变一个建立时间周期的低电平。
q表示由低到高时钟CLK跃变成一个建立时间的参考输入的(清L除)移位HLT为低到高的时钟的跳跃变化。
74HC164应用实例:驱动数码管两例(电路图和源程序)
74HC164应用实例:驱动数码管两例(电路图和源程序)————————————————————————————————作者:————————————————————————————————日期:4HC164应用实例:驱动数码管两例(电路图和源程序) 文章编号:100816210758 文章分类: 电路 > 电子元件 点击:... 关键词: 74HC164文章来源:百合电子工作室收集整理 摘要: 74HC164应用实例:驱动数码管的两个实例分别提供了汇编源程序和C 源程序...实例174HC164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等. 74HC164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO 口又比较紧张的电子产品中,下面浅谈使用方法:1. 首先先了解他的引脚功能和逻辑图,如下图:图1 引脚名称和用途图2 真值表通过真值表我们可以了解到,A,B两个输入端是互锁的,CLK上升沿时数据移入移位寄存器中,CLEAR为清零用的,接低电平时所有端口都输出低电平,了解了真值表之后开始运用了,先给出如下原理图:图3 原理图图中,采用义隆的EM78P153作为控制芯片,P50作为CLK时钟信号,注意平时数据不传输时,时钟信号是不发送的应一直保持低电平或者高电平,数据需要传输的时候才输出时钟信号^_^ ,继续P51作为移位数据输出端,接到74HC164的B端,A端接高电平,当然也可以AB端短路,然后连接到DATA移位数据端,P52作为数码管的选通信号(也可以叫消隐^_^), 作用是使数据传输过程暂时关闭显示,以免显示出不需要的数据,原因是应为164不带锁存功能,数据传输过程是一位一位的向高位移位输出的,所以要等数据全部移入后才打开始点亮数码管.注意了哦,通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管,如图,本人偷懒没有画出那个数码管的8字该介绍的介绍的差不多了,废话少说,该开始干活了,任务是: 显示0-9 每秒+1 ,到9后又返回0,一直循环显示,根据任务得到如下流程图:1. 显示部分:将需要显示的数值送入A ==>查表求得显示段码==>将段码逐位移入164==>8位移完后点亮数码管==>延时==>返回第一步执行2. 中断部分:进入中断==>保存现场(以备调查取证,送你入狱^_^)==>重置TCC==>够1秒钟将需要显示的数据+1,并重置,不够就退出;根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.....搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.......,希望你不要重蹈我覆辙,哎哟!! 谁! 谁! 谁扔砖头上来? 啥? 你扔的? 我废话太多.........,那俺少来两句,继续上菜, 咦好像没啥可说的了,上源程序吧1.;中断部分:2.3.;;;;;;;;;;中断;;;;;;;;4.INTPUT:5.MOV TEMPA, A;6.MOV A,@130;7.MOV TCC,A;255-130=1258.CLR RF;9.;;;;;此处填写250Us处理程序10. BS WKREG,T500US11.;;;;;;;;;;;;;;;;;;;;;;;;;12. DJZ R1MS13.JMP INTEXT;14.MOV A,@415.MOV R1MS,A;重置16. BS WKREG,T1MS17.;;;;;;;此处填写1ms处理程序18.19.;;;;;;;;;;;;;;;;;;;;;;;;;;20. DJZ R20MS21.JMP INTEXT;22.MOV A,@2023.MOV R20MS,A;重置24.;;;此处填写1秒处理程序25. BS WKREG,T20MS26.;;;;;;;;;;;;;;27. DJZ R1S28.JMP INTEXT;29.MOV A,@5030.MOV R1S,A;31.;;;;;;;;;32.INC NUMBER33.MOV A,NUMBER34. SUB A,@1035. JBS SR,236.JMP INTEXT37.MOV A,@038.MOV NUMBER,A39.40.41. INTEXT:42.MOV A,TEMPA;43.RETI;;;;;;;;;;;;;;;;;;;;;44.45.46.47.48.49.;显示部分:50.51.;==============TXDATA==============52.TXDATA:53. BS P5,CC154.MOV A,@855.MOV DATALOP,A;56.TXLOP:57. BC WKREG,T500US58. BS P5,CLK;clk=高59.NOP;60.NOP61. JBS DATA_BUF,762.JMP $+363. BS P5,DATA;64.JMP $+265. BC P5,DATA66.DD1MS: JBS WKREG,T500US67.JMP $-168. BC P5,CLK69. BC WKREG,T500US70. JBS WKREG,T500US71.JMP $-1;72.RLC DATA_BUF73. DJZ DATALOP74.JMP TXLOP75.;;;;;;;;;;76. BC WKREG,T500US77. BS P5,CLK;clk=高78. BC WKREG,T500US79. JBS WKREG,T500US80.JMP $-1;81. BC P5,CLK82.;;;;;;;;83. BC P5,CC184.85.RET;;;;;;;86.87.;数据查表88.;===============DSPTBL============89.DSPTBL: ADD PC,A90. RETL @0B01000000;091. RETL @0B01111001;192. RETL @0B00100100;293. RETL @0B00110000;394. RETL @0B00011001;495. RETL @0B00010010;596. RETL @0B00000010;697. RETL @0B01111000;798. RETL @0B00000000;899. RETL @0B00010000;9100.101.102.;循环体部分;103.104.;;;;;;;;;;主程序;;;;;;;;;;;105.MLOOP:106.MOV A,NUMBER107.CALL DSPTBL108.MOV DATA_BUF,A109.CALL TXDATA110. BC WKREG,T1MS111. JBS WKREG,T1MS112.JMP $-1113.NOP;114.115.JMP MLOOP;;;;;;;;;;;;;;;;;;;;实例2在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。
反转法扫描键盘,串行口数据输出,74ls164驱动数码管显示
voidsbuf(ucharnum)//串行口数据输出函数
{TI=0;
SBUF=LED_tab[num];
while(!TI);
TI=0;
}
ucharkey_num()//扫描按键
{uchari;uintl,s,key;
l=0x0f;s=0xf0;
while(l==0x0f){P1=0x0F;l=P1&0x0f;}//一直扫行码,等到扫到行码
while(s==0xf0){P1=0xF0;s=P1&0xf0;}//一直扫列码,等到扫到列码
key=l|s;
for(i=0;i<17;i++)
{if(key_tab[i]==key) break;}
returni;
}
voiபைடு நூலகம்main()
{uchara;
SCON = 0x00;//串行口方式0
sbuf(0);
while(1)
{a=key_num();
sbuf(a);
}
}
反转法扫描键盘串行口数据输出74ls164驱动数码管显示p1口为扫按键特征码输入端p30p31为串行口数据输出端74ls164位串行移位输入并行8位串行输出的移位寄存器数码管为segmax2ca共阳数码管程序代码如下
反转法扫描键盘,串行口数据输出,74ls164驱动数码管显示
P1口为扫按键特征码输入端
P3.0,P3.1为串行口数据输出端
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计 74hc164 控制数码管显示系统 (00-99 显示)
一、总体设计 1、 系统组成 本系统功能由硬件和软件两大部分协调完成。
本系统的硬件采用模块化设计,以单片机控制为核心,74hc164 为驱动,与数码管 接口电路等组成单片机控制的数码管显示系统。
该系统硬件主要包括主控模块、报警模块、 数码管显示模块等。
其中单片机控制器主要完成外围硬件的控制以及一些运算按功能, 74hc164 完成串行输入,并行输出,数码管显示模块完成字符、数字的显示功能。
应用软件采用模块化设计方法。
该系统软件主要由主程序、 定时器 T0 中断服务子程序、 164 子程序等模块组成。
二、硬件设计 1、主控模块设计 本项目采用 AT89S52 单片机。
电源、时钟信号以及复位电路是单片机工作的基本条件,缺一不可。
单片机系统的 基本工作电路电源电路、时钟电路、复位电路。
(1)电源电路模块设计 电源模块为系统板上的其他模块提供+5V 电源。
系统板可从 USB 接口获取+5V 电源,即 用相应配套的 USB 线从电脑主机上获取+5V 直流电源。
(2)时钟电路模块设计 单片机的时钟信号用来位单片机芯片内部的各种操作提供时间基准。
时钟电路为单片机产生时钟脉冲序列, 作为单片机工作的时间基准, 典型的晶体振荡频 率为 12MHz。
由于 AT89S52 系列单片机芯片内有时钟振荡电路, 因此本项目中采用内部时钟方式, 只 要在单片机的 XTAL1 和 XTAL2 引脚外接石英晶体和微调电容, 就够成了自激振荡器并在单片 机内部产生时钟脉冲信号,具体电路如图 1-1。
图中电容 C1 和 C2 的作用是稳定频率和快速 起振。
(3)复位电路模块设计 复位电路使用单片机或系统中的其他部件处于某中确定的状态。
当在 MC-51 系列单片机的 RST 引脚处引入高电平并保持 2 个机器周期,单片机内部就 执行复位操作。
实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是按键复 位。
本项目中采用案件复位方式,具体电路设计如图 1-1。
在单片机运行期间,可以用此案 件完成复位操作。
2、报警模块设计 本项目中选用蜂鸣器。
蜂鸣器的正极接+5V 的电源, 另一极接在三极管 8550 的集电极, 三极管 8550 主要用于信号的放大,以驱动数码管工作。
三极管 8550 的基极通过限流电阻 接到单片机 P2 的 P2.0 如图 1-1,通过控制三极管 8550 的基极电平来打开或关闭蜂鸣器。
三 极管 8550 的发射极接地。
3、数码管显示模块设计 本项目中选用 8 段共阳极数码管,数码管的 a、b、c、d、e、f、g、dp 段分别与 74hc164 的 QA、QB、QC、QD、QE、QF、QG、QH 相连,用来控制显示数字。
数码管的公共使能端
COM 连接+5V 的电源。
如电路图 1-1
图 1-1 74hc164 控制数码管显示原理图 三、软件设计 1、数据结构设计 单片机的 P0 口 P1.0、P1.1 通过控制 74hc164 控制数码管显示。
单片机的 P2 口 P2.0 用于控制 8550 是否导通,从而控制蜂鸣器。
单片机的 P2 口 P2.1、P2.2、P2.3 控制三个独立按键。
2、程序设计 主程序主要完成子函数调用等功能。
主程序流程图: 开始
调用定时器 T0 中断服务子函 数
否
判断是否 有按键按 下 是 R<2? 否
是 TR0=1 TR0=0
否 第二个按键 是否按下
第三个按键 是否安下 是 m=m+1 是 m>99 调用 164 子 程序 是 是 否 m<0 m=m-1 是
是 否
数码管显示
m=0
m=99
判断数码管个 位是否为零?
是
蜂鸣器发声
定时器 T0 中断服务子函数流程图:
开始
TH0=0x3c
TL0=0xb0
count>=20? 是 count>=20?
子程序返回
164 子函数流程图: 开始
8 位数据传送完毕 后才给数码管显
子程序返回 C 语言程序: #include<at89x51.h> #define uchar unsigned char #define uint unsigned int uchar smg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit clk=P1^0; sbit dak=P1^1; sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2; sbit fm=P2^3; uchar count,flag; void time() interrupt 1 { TH0=0x3c; TL0=0xb0; count++; if(count>=20) { count=0; flag=1; } }
void sendchar (uchar ch) { uchar i ; for(i=0;i<8;i++) //8 位数据传送完毕后才给数码管显示 { clk=0; dak=ch&0x80; clk=1; ch<<=1; } } void delay(uchar n) { uchar i,j; for(i=0;i<n;i++) for(j=0;j<110;j++); } void main() { uchar m,s,g,temp,r,temp1,temp2; TMOD=0X01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; sendchar(smg[g]); sendchar(smg[s]); temp=1; while(1) { if((!key1)&temp&temp1&temp2==1) { delay(20); if((!key1)&temp&temp1&temp2==1) r++; if(r<2) { TR0=1; } else
{ TR0=0; r=0; } } temp=key1; if((!key2)&temp&temp1==1) { delay(20); if((!key2)&temp&temp1==1) m=m+1; if(m>=100) { m=0; } s=m/10; sendchar(smg[s]); g=m%10; sendchar(smg[g]); } temp1=key2; if((!key3)&temp&temp2==1) delay(20); if((!key3)&temp&temp2==1) m=m-1; if(m<=0) { m=100; } s=m/10; sendchar(smg[s]); g=m%10; sendchar(smg[g]); } temp2=key3; if(flag==1) { flag=0; m++; if(m>=100) m=0; s=m/10; g=m%10; sendchar(smg[s]);
{
sendchar(smg[g]); } if(g==0) { fm=0; } else { fm=1; } } }
相关知识
一、数码管的结构 数码管由 8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字 0~9。
数码管分为共阴极和共阳极两种结构。
所谓共阴极,及时将所有的 LED 的阴极连 到一起,而共阳极这相反,所有的阳极被连到了一起。
但不是那种结构,其设计的原理 基本相同,唯一不同的是驱动电路的设计有差异,一般共阴极采用推(Push)电流的方 式来驱动,而共阳极结构则采用拉(Pull)电流的方式来驱动。
二、数码管工作原理 共阳极数码管的 8 个发光二极管的阳极(二极管正端)连接在一起。
通常,公共阳 极接高电平(一般接电源) ,其他管脚阶段驱动电路输出端。
当某段驱动电路的输出端 为低电平时, 则该段所连接的字段导通并点亮, 根据发光字段的不同组合可显示出各种 数字或字符,此时,要求段驱动电路能吸收额定的段导通电流,还需根据未接电源及额 定段导通电流来确定相应的限流电阻。
三、单片机简介 单片机是在一块芯片上集成了中央处理器部件(CPU) 、储存器(RAM、ROM) 、定 时器/计数器和各种输入/输出(I/O)接口(如并行 I/O 口、串行 I\O 口和 A/D 转换器) 等。
由于单片机通常是为实时控制应用而设计制造的, 因此, 又称为微控制器 (MCU) 。
。