数码管显示拨码开关编码
拨码开关
开关拨码开关概要用语说明使用注意事项拨码开关用语说明●关于输出代码用语意义2进制代码(binary code) 用2个值(“0”和“1”、“OFF”和“ON”等)的组合构成的符号。
10进制代码(decimal code) 采用10进制的代码。
使用0、1、2、3、4、5、6、7、8、9。
2位10进制代码(binary-coded decimal code) 将10进制分开的数字用2进制表示。
也叫BCD代码。
2位16进制代码(binary-coded hexadecimal code) 将16进制分开的数字用2进制表示。
使用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
奇偶校验(parity check) 是一个检测2进制代码有无错误的方法。
加上奇偶校验用的信号,作为奇数(或偶数)统一起来,将其用于判定。
实码(real code) 作为电子电路的2值信号,将相对于接地电压较高的H定为1,较低的L用0表示。
补码(complement code) 与实码相反,“H”用0表示,“L”用1表示。
●关于刻度盘的本体/接插件COM.的端子编号和COM.连接的端子编号+」、「-」显示(-P M 型)以06型(2位10进制代码)显示,但也可以制成以「+、-、+?-」显的机型,而不是以「0、1、2? 9」显示。
其型号为A 7□-2 06 -P M 或A 7□-2 06 -P M-1。
下图为A 7 B S-20 6-M 的示例,将本体的输出端子1和C O M 端子间作为2进制代码使用。
A 7B S-20 6-P M示例型号A 7B S 本体C 1 2 4 8 接插件2 4 5 6 7 +(0)—(1) ●+(2) ●—(3) ●●+(4) ●—(5) ●●+(6) ●●—(7) ●●●+(8) ●—(9) ●●注 1. ●标记表示内部开关为ON状态。
注 2. ( )内的数字表示为A7BS-206型时的刻度盘。
编码器译码器及数码管显示实验
实验 6 编码器译码器及数码管显示实验实验数据1、测试变量译码器的逻辑功能变量译码器是一种完全译码器,它将一系列输入代码转换成与之一一对应的有效信号。
例如当输入为000时输出为第一个灯亮,输入为001时第二个灯亮,输入为111时第第8个灯亮。
2、编码、译码、显示电路的设计通过8-3编码器先将8位开关信号状态编码为二进制代码,再通过数码管显示译码器将此代码变换成相应的7位数码,驱动7位数码显示器,显示不同字符。
其中用到了预先编码的原理。
优先编码器的功能是允许同时在几个输入端有输入信号,编码器按输入信号排定的优先顺序,只对同时输入的几个信号中优先权最高的一个进行编码。
例如当D6为L、D7为H时则显示“1”,输出为001,无论其他输入信号为多少;当D5为L、D6为H、D7为H时,则显示“2”,输出为010,而不管其他开关电平输入为多少。
思考题1.总结组合逻辑电路设计的步骤和方法:组合逻辑电路的设计步骤可分为:1.根据电路功能的文字描述,将其输入与输出的逻辑关系用真值表的形式列出;2.通过逻辑化简,将真值表写出最简的逻辑函数表达式;3.选择合适的门器件,把最简的表达式转换为相应的表达式;4.根据表达式画出该电路的逻辑电路图;5.最后一步进行实物安装调试,这是最终验证设计是否正确的手段。
2、怎样判断7段数码管各引脚和显示字段的对应关系?3、3-8译码器在实际应用中的作用有哪些?译码器的输出既可以用于驱动或控制系统其他部分,也可驱动显示器,实现数字、符号的显示。
在CPU设计中,指令译码器是CPU的一部分,能将存储在指令寄存器或微程序指令中的比特转换为能控制CPU其他部分的控制信号。
8个寄存器组成的简单CPU会使用指令译码器中的3线-8线逻辑译码器来选择寄存器文件的源寄存器并输出到ALU以及目的寄存器中,以接受ALU的输出。
典型的CPU指令译码器也包括其他很多组件。
故障排除首先检查芯片的型号看是否合适,然后查看线路连接是否正确,然后检查接地和接高电平的接孔是否接好,然后按照规定的标准操作给门电路标准的电压观察其输出情况判断是否能够正常工作。
BCD码
BCD码用于PLC的输入、输出,例如数码管显示,拨码开关输入,日期、时间的输入、输出。
应该是当时的临时解决方案,现在的应用越来越少了,未来估计会更少。
答:拨码开关用得越来越少了,电梯的数码管显示还是需要BCD码的,时间日期的显示、输入要要用BCD码,BCD码是二进制编码的十进制数,PLC用十进制数和用户交流就需要BCD码。
BCD码不会消亡。
8段码数字显示管都是用BCD码显示的。
PLC中有相应的转换程序,非常方便。
现在用屏非常多,一般不用数码显示管了。
需要占PLC 4个输出点。
电梯的楼层就是用数码管显示的,谁见过用屏显示楼层的吗?所以还是有不一般的情况。
以电梯的楼层显示为例,需要用指令将PLC内部的二进制整数转换为两位BCD码(一个字节),然后将这两位BCD码(每一位用4位二进制数表示)分别送给两个数码管的译码驱动芯片。
没BCD码就干不了这件事。
lsy9202:BCD码用于操作硬件,而硬件就是电路,电路是只能识别0和1的二进制数的,所以整数123想让电路认识就要转换为BCD码W#16#123=2#0000_0001_0010_0011答:BCD码用于操作硬件这个说法不准确,准确一点说,BCD码用于输入(例如拨码开关)、输出设备(例如数码管),它们是和人打交道的,输入的和显示的都是十进制数。
但是通过这些设备不能直接输入和显示十进制数,所以要用BCD码。
BCD码就是每一位用4位二进制数表示的十进制数,例如要输入十进制数123,拨码开关提供给PLC的BCD码为W#16#123=2#0001_0010_0011,PLC就可以用12个数字量输入点来接收了。
可以用指令将BCD码转换为整数。
即BCD代码。
Binary-Coded Decimal??,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。
是一种二进制的数字编码形式,用二进制编码的十进制代码。
这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。
数码管编码
数码管编码
(1)LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母A,B,C,D,E,F,G,DP来表示;
(2)一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、
1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
(3)共阳极:位选为高电平,选中数码管,段选为低电平,选中各数码段;
(4)共阴极:位选为低电平,选中数码管,各段选为高电平,选中各数码段;
共阳极由0到f的编码为: 共阴极由0到f的编码为uchar code table[]={ uchar code table[]={
0xc0,0xf9,0xa4,0xb0, 0x3f,0x06,0x5b,0x4f,
0x99,0x92,0x82,0xf8, 0x66,0x6d,0x7d,0x07,
0x80,0x90,0x88,0x83, 0x7f,0x6f,0x77,0x7c,
0xc6,0xa1,0x86,0x8e}; 0x39,0x5e,0x79,0x71};。
实验四编码器,译码器,数码管(定稿)
实验四编码器、译码器、数码管一、实验目的1.掌握编码器、译码器和七段数码管的工作原理和特点。
2.熟悉常用编码器、译码器、七段数码管的逻辑功能和他们的典型应用。
3. 熟悉“数字拨码器”(即“拨码开关”)的使用。
二、实验器材1. 数字实验箱 1台2. 集成电路:74LS139、 74LS248、 74LS145、 74LS147、 74LS148 各1片74LS138 2片3. 电阻: 200Ω 14个4. 七段显示数码管:LTS—547RF 1个三、预习要求1.复习编码器、译码器和七段数码管的工作原理和设计方法。
2. 熟悉实验中所用编码器、译码器、七段数码管集成电路的管脚排列和逻辑功能。
3. 画好实验用逻辑表。
四、实验原理和电路按照逻辑功能的不同特点,常把数字电路分成两大类:一类叫做组合逻辑电路,另一类叫做时序逻辑电路。
组合逻辑电路在任何时刻其输出信号的稳态值,仅决定于该时刻各个输人端信号的取值组合。
在这种电路中,输入信号作用以前电路的状态对输出信号无影响。
通常,组合逻辑电路由门电路组成。
(一)组合逻辑电路的分析方法:a.根据逻辑图,逐级写出函数表达式。
b.进行化简:用公式法或图形法进行化简、归纳。
必要时,画出真值表分析逻辑功能。
(二)组合逻辑电路的设计方法:从给定逻辑要求出发,求出逻辑图。
一般分以下四步进行。
a.分析要求:将问题分析清楚,理清哪些是输入变量,哪些是输出函数。
进行逻辑变量定义(即定义字母A、B、C、D ……所代表的具体事物)。
b. 根据要求的输入、输出关系,列出真值表。
c. 进行化简:变量比较少时,用图形法;变量多时,可用公式法化简。
化简后,得出逻辑式。
d. 画逻辑图:按逻辑式画出逻辑图。
进行上述四步工作,设计已基本完成,但还需选择元件——数字集成电路,进行实验论证。
值得注意的是,这些步骤的顺序并不是固定不变的,实际设计时,应根据具体情况和问题难易程度进行取舍。
(三)常用组合逻辑电路:1.编码器编码器是一种常用的组合逻辑电路,用于实现编码操作。
数码管二进制和十六进制字符编码表
一、数码管显示字符表一个数码管有八段:a,b,c,d,e,f,g,dp(小数点),即由八段发光二极管组成。
因为发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管);故可分共阳极(公共端接高电平或+5V电压)和共阴极(共低电平或接地)两种数码管。
其中每个段均有0(不导通)和1(导通发光)两种状态,但共阳极数码管和共阴极数码管显然是不同的。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
对于共阳数极码管:各段选为低电平(即0接地时)选中各数码段, 位选为高电平(即1)选中数码管。
对于共阴极数码管:各段选为高电平(即1接+5V时)选中各数码段,位选为低电平(即0)选中数码管。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
字母显示:共阳极的数码管0~f的段编码:unsigned char code table[]={ //共阳极0~f数码管编码0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0x88,0x83,//8~b0xc6,0xa1,0x86,0x8e //c~f};共阴极的数码管0~f的段编码是:unsigned char code table[]={//共阴极0~f数码管编码0x3f,0x06,0x5b,0x4f, //0~30x66,0x6d,0x7d,0x07, //4~70x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71 //c~f };。
拨码开关(指拨开关)介绍
拨码开关最开始是日本 OMRON 研发出来的,随着用途广泛起来,目前市面上用量最广 泛的是台湾生产的。大陆目前也有很多厂家加入到此行列当中。
用途:
广泛使用于数据处理、通信、遥控和防盗自动警铃系统等需要手动程式编制的产品上。
具体介绍
1.红色、蓝色系列(BS 系列,BP 系列):
这款主要的主 要特点是颜色比较鲜艳, 本体比较打,拨动推扭用 手直接拨动起来很方便, 也比较有手感。这款的脚 间 距 只 有 一 种 2.54mm
还有就是s的要好方便焊接的时候用波峰焊或者回流焊时不会因为温度过高而使得开关容易坏掉
简介
拨码开关(也叫 DIP 开关,拨动开关,超频开关,地址 开关,拨拉开关,数码开关,指拨开关)是一款用来操作控 制的地址开关,采用的是0/1的二进制编码原理。通俗的 说也就是一款能用手拨动的微型的开关,所以也通常叫指 拨开关的也很多。
类型:
拨码开关很多款型号,按照脚位来区分有直插式(DIP) 和贴片式(SMD)之分,按照 拨动的方式来分有平拨跟侧拨之分,按照脚间距有2.54mm 和1.27mm 脚间距之分,按照颜 色有黑色,红色,蓝色的区别。根据状态来说还有两态跟三态之分。根据位数来说正常是都 是1-10位、12位等11个位数。其实细分下来,还有很多种。
3.IC 型侧拨系列(NPH 系列,NPS 系列):
这款 IC 型的也是 相 对 BP 系 列 来 对 比 的。主要区别也是本体 比较小,脚间距还是一 样的2.54mm,形状跟 IC 一样。主要用于机器 内部,不外露在外面 的。还有就是这款通常采用的颜色是黑色,不过也有用红色的,采用材料要比 BP/BS 的要 好,方便焊接的时候用波峰焊或者回流焊时不会因为温度过高,而使得开关容易坏掉。具体 尺寸如图:NPH 系列为直插系列,NPS 系列为贴片些列。具体具体尺 具体
实验二 查表程序实现LED数字显示
实验二查表程序实现LED数字显示一、实验要求通过拨码开关表示16进制数0—F,利用LED数码管显示该数字。
包括硬件电路和程序设计。
二、实验目的理解8段LED数码管的显示原理和LED显示的转化方法,学习查表程序的设计。
三、实验原理图2-1 8段LED数码管显示原理和笔画分布由电路图2-2可以看出,这里需要通过传送指令将P1口拨码开关的状态读入累加器A,利用查表指令转换为LED数码管的显示笔画代码,再传送到P2口驱动数码管。
所谓显示代码就是根据该数字的笔画确定LED数码管中8个笔画段a—h中的哪些段点亮,如数字1要求点亮笔画b和c。
我们可以根据数字与笔画的对应关系列出各数字的笔画代码真值表如表2-1所示,在每个数字需点亮的笔画处填入1,不需要点亮的位填入0,然后转换为16进制数就是该数字的显示代码。
若采用共阳极LED,则由于是0点亮,显示代码也就不同,笔画真值表与表2-1相反。
显然,若各笔画连接的口线不同,显示代码也不同。
图2-2 通过LED数码管显示数字电路图表2-1 LED笔划显示真值表(共阴)有了代码表,还需要通过查表程序将数字转换为显示代码。
查表程序一般是将表格中数据顺序放置在程序存储器的某个区域中,形成一数据表。
程序中需要查表时,将表格首地址送入数据指针DPTR,即使DPTR指向表格首地址,在A中放入待查表格项的序号,例如要显示2,利用“MOVC A,@A+DPTR”指令,即以(A+DPTR)为地址,将数据表中第2字节的表格项数据5BH取出放入A,从而实现查得2的显示代码5BH,然后送端口P2驱动笔画段显示出数字2。
四、实验步骤1.在Proteus ISIS中设计硬件电路(参考图2-2)(1)选择电路元器件并放入原理图编辑区:单片机:AT89C52。
一位共阴极数码管:7SEG-COM-CAT-GRN。
8位拨码开关:DIPSWC_8。
接地:Ground(Terminal模型中)。
(2)参考图2-2完成原理图。
四位拨动开关控制一位数码管显示
课程设计说明书课程名称:通信电子线路设计题目:四位拨动开关控制一位数码管显示院系:电子信息与电气工程学院学生姓名:学号:专业班级:指导教师:2012年 5 月18 日课程设计任务书设计题目四位拨动开关控制一位数码管显示学生姓名所在院系电子信息与电气工程学院专业、年级、班设计要求:1.具有电源开关及指示灯,有复位按键;2.用DIP开关的低四位为输入,控制输出端数码管显示器的输出。
实现如下功能:上电后默认为“8”,调整4位DIP开关按二进制输入,按确定键后数码管显示对应的数字“0”-“F”。
学生应完成的工作:学生应完成的工作:1)通过单片机原理课程设计,使之较系统地、全面地掌握单片机应用系统的基本设计方法,设计步骤,熟悉和掌电路参数的计算。
2)多位同学共同研究设计出最佳方案。
3) 通过查阅手册和文献资料,培养学生分析和解决实际问题的能力与技巧。
4) 进一步熟悉软件的正确使用方法,原理图设计。
5) 学会撰写课程设计总结报告。
6) 培养严肃认真的工作作风和严谨的科学态度。
参考文献阅读:[1] 张毅刚.单片机原理及应用.北京:高等教育出版社,2009.11[2] 杜树春.单片机C语言和汇编语言混合编程实例详解.北京:北京航空航天大学出版社,2006.6[3] 谢嘉奎.电子线路(第四版).北京:高等教育出版社,2004.[4] 臧春华.电子线路设计与应用.北京:高等教育出版社,2005.工作计划:5月7日至11日――――原理图设计 5月12日至13日――――程序设计5月14日至16日――――电路安装 5 月17日――――——电路调试5月18日――――设计验收、设计报告任务下达日期:2012年 5 月7 日任务完成日期:2012年 5 月18 日指导教师(签名):学生(签名):四位拨动开关控制一位数码管显示摘要:以AT89S52芯片为核心,辅以必要的电路,设计了一个简易的控制电路,它由5V直流电源供电,用DIP开关的低四位为输入,控制输出端数码管显示器的输出。
数码管控制显示说明
数码管控制显示一、数码管控制电路结构1、段码、位码均由P0口输出,采用总线模式连接。
2、RP1为P0口上拉电阻。
3、74LS07为反相器。
4、74LS08为与门。
5、74HCT574分别作为段码与位码的八路D型触发器。
(功能等同于74HC377)工作原理为:当CP为由低电平到高电平时,D0输出到Q0(即Q状态为D的状态);当CP为低电平时,Q输出端保持不变。
OE为使能端,必须为低电平时,才会有输出(即D→Q)。
6、引脚控制:CS1:接P1.5CS2:接P1.4WR:接P1.7P0~P7:接D0~D7二、控制程序举例1、基本的数字显示功能#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit wr=P1^7;sbit cs1=P1^5;sbit cs2=P1^4;#define LEDdata P0void delay(uint x) //1秒延时函数{uint i,j;for(i=x;i>0;i--)for(j=115;j>0;j--);}void display(){cs1=0;cs2=1; //选择段码缓存LEDdata=0xc0; //输出段码wr=1;wr=0; //取缓冲区数据对应段码数据,并保持不变cs1=1;cs2=0; //选择位码缓存LEDdata=0xfe; //输出位码数据,显示第1个wr=1;wr=0; //}void main(){while(1){cs1=cs2=0; //选择两个触发器LEDdata=0xff; //实现初始的清屏操作wr=1;wr=0;display(); //调用显示函数}}2、采用动态显示八个数字#include <REG52.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define LEDdata P0sbit wr=P1^7;sbit cs1=P1^5;sbit cs2=P1^4;uchar code LEDcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//0-9,- uchar buf[8]={7,6,5,4,3,2,1,0}; //定义的显示缓冲区void delay(uint i) { while(i--); } //公用延时函数,约10uSvoid display(){uchar i,j=0xfe;buf[0]=0;buf[1]=1;buf[2]=2;buf[3]=3;buf[4]=4;buf[5]=5;buf[6]=6;buf[7]=7;for(i=0;i<8;i++){cs1=0;cs2=1; //选择段码锁存器缓存LEDdata=LEDcode[buf[i]];wr=1;wr=0; //取缓冲区数据对应段码数据cs1=1;cs2=0; //选择位码缓存LEDdata=j;wr=1;wr=0; //取位码编码delay(100); //延时1mSj=_crol_(j,1); //改变位编码cs1=cs2=0; //同时选择两个锁存器LEDdata=0xff;wr=1;wr=0; //同时关闭所有数码管显示}}void main(){while(1){display(); //调用显示函数}}3、控制数字显示的变化(开机检测画面)#include <REG52.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define LEDdata P0sbit wr=P1^7;sbit cs1=P1^5;sbit cs2=P1^4;uchar code LEDcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//0-9,- uchar buf[8]={7,6,5,4,3,2,1,0};//定义的显示缓冲区uchar code LEDcode1[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};void delay(uint i) { while(i--); } //公用延时函数,约10uSvoid display(){uchar i,j=0xfe;buf[0]=0;buf[1]=1;buf[2]=2;buf[3]=3;buf[4]=4;buf[5]=5;buf[6]=6;buf[7]=7;for(i=0;i<8;i++){cs1=0;cs2=1;//选择段码锁存器缓存LEDdata=LEDcode[buf[i]];wr=1;wr=0;//取缓冲区数据对应段码数据cs1=1;cs2=0;//选择位码缓存LEDdata=j;wr=1;wr=0;//取位码编码delay(100);//延时1mSj=_crol_(j,1);//改变位编码cs1=cs2=0;//同时选择两个锁存器LEDdata=0xff;wr=1;wr=0;//同时关闭所有数码管显示}}void main(){uchar i;cs1=cs2=0;//同时选择位、段码缓存IC LEDdata=0xff;wr=1;wr=0;//关闭显示for(i=0;i<8;i++){cs1=0;cs2=1;//选择段码缓存ICLEDdata=LEDcode1[buf[i]];wr=1;wr=0;//取缓冲区数据对应段码数据cs1=1;cs2=0;//选择位码缓存ICLEDdata=0x00;wr=1;wr=0;//位码全点亮delay(50000);//延时50mscs1=cs2=0;//同时选择位、段码缓存ICLEDdata=0xff;wr=1;wr=0;//关闭显示}while(1){display();//调用显示函数}}。
数码管、按键的使用
数码管、按键的使用1、程序结构程序分为三个部分:按键处理、拨码开关和数码管显示。
结构如下:程序结构示意图按键处理放到主线程里面,控制显示什么数据,以及对数据进行操作。
数码管显示(以及LED显示)放到定时中断里面,只负责对数码管数据缓冲区的显示2、按键处理按键有四个(S2-S5)。
在主线程里面对所有键进行扫描,确认按键成功后,执行相应功能。
设端口输入为P,num,用于去抖动和连加/减,N为常量按键处理流程图S2:对激活数据(由拨码开关确定)进行加1,长按连加。
S5:对激活数据(由拨码开关确定)进行减1,长按连减。
3、拨码开关拨码开关(DIP5-8)要完成:确定什么数据送入数码管显示缓冲区(LedCount[8]),确定当前激活什么数据的第几位。
具体如下:●DIP8=0 处理IP显示以及变化(用到DIP6、DIP7、DIP8)●DIP8=1 显示MAC地址(用到DIP6、DIP7、DIP8)说明:DIP8区别IP与MAC①显示IP时:DIP7、DIP6编码对应激活IP地址的四字节。
②显示MAC时:显示MAC地址时最左边两个数码管不是地址信息,三字节地址信息由右边六个数码管显示第一个数码管:0 后面六个数码管显示前三字节MAC地址1 后面六个数码管显示后三字节MAC地址第二个数码管:熄灭4、数码管显示由于数码管公用“段线”(即同一时刻所有数码管数字一样),所以控制“位线”(数码管使能控制位)让数码管轮流显示。
设置整型变量flag取值1-8。
定时刷新显示。
具体流程为:数码管显示流程图5、程序的实现。
数码管二进制和十六进制字符编码表
一、数码管显示字符表一个数码管有八段:a,b,c,d,e,f,g,dp(小数点),即由八段发光二极管组成。
因为发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管);故可分共阳极(公共端接高电平或+5V电压)和共阴极(共低电平或接地)两种数码管。
其中每个段均有0(不导通)和1(导通发光)两种状态,但共阳极数码管和共阴极数码管显然是不同的。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
对于共阳数极码管:各段选为低电平(即0接地时)选中各数码段, 位选为高电平(即1)选中数码管。
对于共阴极数码管:各段选为高电平(即1接+5V时)选中各数码段,位选为低电平(即0)选中数码管。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
字母显示:共阳极的数码管0~f的段编码:unsigned char code table[]={ //共阳极0~f数码管编码0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0x88,0x83,//8~b0xc6,0xa1,0x86,0x8e //c~f};共阴极的数码管0~f的段编码是:unsigned char code table[]={//共阴极0~f数码管编码0x3f,0x06,0x5b,0x4f, //0~30x66,0x6d,0x7d,0x07, //4~70x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71 //c~f };。
通过编码开关(旋转编码器)控制数码管的加减一我爱单片机
通过编码开关(旋转编码器)控制数码管的加减一我爱单片机赞助商链接//直上调试好的程序看看能否换个M币哈哈!//通过编码开关(旋转编码器)控制数码管的加减一#include<AT89X52.H>#define uchar unsigned char#define uint unsigned int#define cycle 1 //定义动作周期,编码器旋转多少格有效#define NULL 0 //定义编码器不动作时的还回值#define E_RIGHT 0x0e //定义右旋转还回值#define E_LEFT 0x0f //定义左旋转还回值/*=====数码管位及按键定义=====*/sbit dula=P2^6; //数码管段选,锁存器控制信号sbit wela=P2^7; //数码管位选,锁存器控制信号sbit PINA = P1^0; //定义IOsbit PINB = P1^1;uchar WheelNow,WheelOld,RightCount,LeftCount;/*=====0-9=====A-G=====*/uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//数码管显示编码unsignedsled_bit_table[]={0x5f,0x6f,0x77,0x7b,0x7d,0x7e,0xff};/*定义点亮的数码管与数组的关系*//*=====四个数码管显示数据存放处=====*/uchar one,two,three,four;uint wc=0;/*=====函数定义=====*/ void delay(uint x);void display(void);//void key();void led_analyze(uint i);/*====延时函数=====*/ void delay(uint x){uint i;for(i=0;i<x;i++);}/*====显示函数=====*/ void display(void){//送段码dula=0;P0 =a[one];dula=1;dula=0;//数码管位选wela=0;P0=sled_bit_table[0]; //开显示wela=1;wela=0;delay(200); //调用键盘扫描wela=0;P0=sled_bit_table[6];wela=1;wela=0; //关显示dula=0;P0=a[two];dula=1;dula=0;//数码管位选wela=0;P0=sled_bit_table[1]; //开显示wela=1;wela=0;delay(200); //调用键盘扫描wela=0;P0=sled_bit_table[6];wela=1;wela=0; //关显示dula=0;P0=a[three];dula=1;dula=0;//数码管位选wela=0;P0=sled_bit_table[2]; //开显示wela=1;wela=0;delay(200); //调用键盘扫描wela=0;P0=sled_bit_table[6];wela=1;wela=0; //关显示dula=0;P0=a[four];dula=1;dula=0;//数码管位选wela=0;P0=sled_bit_table[3]; //开显示wela=1;wela=0;delay(200); //调用键盘扫描wela=0;P0=sled_bit_table[6];wela=1;wela=0; //关显示}/*====分解显示数据=====*/void led_analyze(uint i){i=i%10000;four=i/1000; // 千位three=(i/100)%10; // 百位two=(i%100)/10; // 十位one=(i%100)%10; // 个位}//===================================== ============uchar WheelRight(){LeftCount=0;RightCount++;if (RightCount>=cycle){RightCount=0;return(E_RIGHT);}elsereturn(NULL);}//===================================== ================uchar WheelLeft(){RightCount=0;LeftCount++;if (LeftCount>=cycle){LeftCount=0;return(E_LEFT);}elsereturn(NULL);}//===================================== ============================uchar EncoderProcess(){uchar keytmp;PINA = 1;PINB = 1;WheelNow=WheelNow<<1;if (PINA==1) WheelNow=WheelNow+1; // 读 PINAWheelNow=WheelNow<<1;if (PINB==1) WheelNow=WheelNow+1; // 读 PINBWheelNow=WheelNow & 0x03; // 将 WheelNow 的 2 - 7 位清零,保留 0 - 1 两个位的状态.if (WheelNow==0x00) return(NULL); //当 PINA 和 PINB 都为低电平时退出,低电平区不做处理keytmp=WheelNow;keytmp ^=WheelOld; // 判断新读的数据同旧数据if (keytmp==0) return(NULL); // 新读的数据同旧数据一样时退出.if (WheelOld==0x01 && WheelNow==0x02){ // 是左旋转否WheelOld=WheelNow;return(WheelLeft()); //左旋转}elseif (WheelOld==0x02 && WheelNow==0x01){ // 是右旋转否WheelOld=WheelNow;return(WheelRight()); //右旋转}WheelOld=WheelNow; // 保存当前值return(NULL); // 当 PINA 和 PINB 都为高电平时表示编码器没有动作,退出}//===================================== ===================================== void inc(){wc++;if(wc>9999) wc=0;//如果WG大于9999则将它清零led_analyze(wc);} // 在此处设置断点看 num 加的变化//===================================== ===============================void dec(){wc--;if(wc>9999) wc=9999;led_analyze(wc);} // 在此处设置断点看 num 减的变化//===================================== ====================================== void main(){while (1){switch(EncoderProcess()){case E_RIGHT: inc(); break;case E_LEFT: dec(); break;}display();}}。
4位拨动开关控制数码管显示系统设计 (2)
课程设计任务书4位拨动开关控制数码管显示系统设计摘要:以AT89S52单片机为核心,通过7805、桥堆、拨动开关等器件设计一个控制电路,加以时钟、复位、电源模块等必要的电路,用汇编语言编写控制数码管显示的程序,实现由四位拨动开关控制共阳极数码管显示系统的设计。
该系统由5V直流电源供电,利用拨动开关的低四位为输入,控制输出端数码管显示器的输出。
该系统实现以下功能:通电后数码管默认显示为“8”,调整4位拨动开关按二进制输入,按确定键后数码管显示对应的数字“0”-“F”。
关键词:单片机;拨动开关;共阳极数码管;复位目录1.设计背景 (1)1.1单片机设计背景 (1)1.2设计目的 (1)2.设计方案 (2)2.1方案一 (2)2.2方案二 (2)2.3 方案三 (2)3.方案实施 (3)3.1整体设计 (3)3.2电源电路设计 (4)3.3时钟电路设计 (5)3.4复位电路设计 (5)3.5软件设计 (6)3.6电路仿真 (7)3.7实物制作 (7)4.结果与讨论 (8)4.1结果 (8)4.2结论 (8)5.收获与致谢 (10)6.参考文献 (11)7.附件 (12)7.1软件程序 (12)7.2元器件清单 (15)7.3电路原理图 (16)7.4实物图 (17)1. 设计背景1.1单片机设计背景单片机具有人机对话功能,开关、键盘是实现人机对话的主要输入设备,也是最常用的设备,通过它能发出各种控制指令和数据到单片机。
目前单片机渗透到我们生活的各个领域。
最基本的例如:自动控制领域的机器人、智能仪表、医疗器械等。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的精英阶层。
1.2设计目的通过所学的理论基础知识完成一个单片机的最小系统即四位拨动开关控制数码管显示系统。
借以增强我们理论联系实际的能力,从而更好的掌握单片机的硬件特性以及汇编语言的程序设计,提高我们的实际动手能力和设计能力。
2.1方案一这个案使用单片机P1口,由4位拨码开关从P1口低四位输入,高四位输出,经74LS247译码器部分送往共阳极数码管显示,P3口接刷新电路,每次跳动薄码开关都需要刷新电路。
数码管显示拨码开关编码报告
编号:单片机控制应用实训说明书题目:数码管显示拨码开关编码院(系):机电工程学院专业:机械制造工程学生姓名:卢仙娇、苗玉龙、石善辉学号:0901120703、0901120707、0901120711指导教师:范勇2012年1月13日《数码管显示拨码开关编吗》设计报告目录一、设计题目 (2)二、设计内容与要求 (2)三、设计目的意义 (2)3.1设计目的 (2)3.2设计意义 (2)四、系统硬件电路图 (3)4.1Proteus软件简介以及仿真电路图 (3)4.2 Protel99SE简介以及所绘图形 (4)五、程序流程图与源程序 (8)5.1主程序流程图 (9)5.2子程序流程图 (9)5.3源程序 (10)六、系统功能分析与说明 (11)6.1 8051单片机介绍 (11)6.2单片机系统设计步骤 (18)七、设计体会 (19)八、参考文献 (20)一、设计题目数码管显示拨码开关编码二、设计内容与要求用8051单片机控制系统显示拨码开关所设置的编码000~255。
三、设计目的意义3.1 设计目的1、了解单片机系统中实现LED动态显示的原理及方法;2、详细了解8051芯片的性能及编程方法;3、了解单片机系统基本原理,了解单片机控制原理;4、掌握AT89C51输入/输出接口电路设计方法;5、掌握AT89C51程序控制方法;6、掌握单片机汇编编程技术中的设计和分析方法;7、掌握使用PROTEUS软件进行仿真的方法。
8、学会使用并熟练掌握电路绘制软件Protel99SE;9、掌握电路图绘制及PCB图布线技巧。
3.2 设计意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
34利用拨码开关控制数码管进行十六进制数字显示说明书
中北大学课程设计说明书学生姓名:胡修勇学号:1106024234学院: 仪器与电子学院专业: 微电子科学与工程题目: 利用拨码开关控制数码管进行十六进制数字显示指导教师:李圣昆职称: 讲师2014 年6 月22 日目录1.课程设计目的 (1)2.课程设计内容和要求 (1)3.设计方案及其实现 (1)3.1设计思路 (1)3.2工作原理及原理图 (1)3.3模块功能描述 (2)3.4仿真结果 (3)3.5实验箱验证情况 (4)4.课程设计总结 (8)5.参考文献 (8)1.课程设计目的(1)学习操作数字电路设计实验开发系统,掌握液晶显示器的工作原理及应用。
(2)掌握组合逻辑电路、时序逻辑电路的设计方法。
(3)学习掌握可编程器件设计的全过程。
2.课程设计内容和要求1.学习掌握拨码开关控制模块、数码管的工作原理及应用;2.熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑;3.仿真所编写的程序,模拟验证所编写的模块功能;4.下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;5.整理设计内容,编写设计说明书。
3.设计方案及其实现3.1设计思路由于七段数码管(外加小数点)是共阴极的,可以用七个电平驱动数码管的显示。
通过对不同管脚的点亮,使数码管显示16进制的每个数字。
可以用四个拨码开关组合成4位二进制对应BCD码以表示16进制。
当四位BCD码变化时,在输出端输出相应的高低电平以驱动七段数码管的显示。
3.2工作原理及原理图七段共阴极数码管由数码管由abcdefg七段组成,分别对不同的引脚写高电平可以点亮。
在输入端输入相应的bcd码,在输出端就会产生相应的电平以驱动数码管的显示。
由于只需要16个数的显示。
那么拨码开关只需用四个就可以实现16个数字的表示。
工作原理图如下:七段数码管如下图所示:由图知,如果要显示数字“0”,只需点亮abcdef段,对应的输出端电平为1111110.要显示数字“1”,只需点亮bc段,对应的输出端电平为0110000…如果要显示字母“A”,只需点亮abcefg段,对应的输出端电平为1110111.如果要显示字母“b”,只需点亮cdefg段,对应的输出端电平为0011111.同理可以显示其他数字和字母。
数码管显示拨码开关编码报告
编号:单片机控制应用实训说明书题目:数码管显示拨码开关编码院(系):机电工程学院专业:机械制造工程学生姓名:卢仙娇、苗玉龙、石善辉学号:0901120703、0901120707、0901120711指导教师:范勇2012年1月13日《数码管显示拨码开关编吗》设计报告目录一、设计题目 (2)二、设计内容与要求 (2)三、设计目的意义 (2)3.1设计目的 (2)3.2设计意义 (2)四、系统硬件电路图 (3)4.1Proteus软件简介以及仿真电路图 (3)4.2 Protel99SE简介以及所绘图形 (4)五、程序流程图与源程序 (8)5.1主程序流程图 (9)5.2子程序流程图 (9)5.3源程序 (10)六、系统功能分析与说明 (11)6.1 8051单片机介绍 (11)6.2单片机系统设计步骤 (18)七、设计体会 (19)八、参考文献 (20)一、设计题目数码管显示拨码开关编码二、设计内容与要求用8051单片机控制系统显示拨码开关所设置的编码000~255。
三、设计目的意义3.1 设计目的1、了解单片机系统中实现LED动态显示的原理及方法;2、详细了解8051芯片的性能及编程方法;3、了解单片机系统基本原理,了解单片机控制原理;4、掌握AT89C51输入/输出接口电路设计方法;5、掌握AT89C51程序控制方法;6、掌握单片机汇编编程技术中的设计和分析方法;7、掌握使用PROTEUS软件进行仿真的方法。
8、学会使用并熟练掌握电路绘制软件Protel99SE;9、掌握电路图绘制及PCB图布线技巧。
3.2 设计意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
34利用拨码开关控制数码管进行十六进制数字显示说明书
中北大学课程设计说明书学生姓名:胡修勇学号:1106024234学院: 仪器与电子学院专业: 微电子科学与工程题目: 利用拨码开关控制数码管进行十六进制数字显示指导教师:李圣昆职称: 讲师2014 年6 月22 日目录1.课程设计目的 (1)2.课程设计内容和要求 (1)3.设计方案及其实现 (1)3.1设计思路 (1)3.2工作原理及原理图 (1)3.3模块功能描述 (2)3.4仿真结果 (3)3.5实验箱验证情况 (4)4.课程设计总结 (8)5.参考文献 (8)1.课程设计目的(1)学习操作数字电路设计实验开发系统,掌握液晶显示器的工作原理及应用。
(2)掌握组合逻辑电路、时序逻辑电路的设计方法。
(3)学习掌握可编程器件设计的全过程。
2.课程设计内容和要求1.学习掌握拨码开关控制模块、数码管的工作原理及应用;2.熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑;3.仿真所编写的程序,模拟验证所编写的模块功能;4.下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;5.整理设计内容,编写设计说明书。
3.设计方案及其实现3.1设计思路由于七段数码管(外加小数点)是共阴极的,可以用七个电平驱动数码管的显示。
通过对不同管脚的点亮,使数码管显示16进制的每个数字。
可以用四个拨码开关组合成4位二进制对应BCD码以表示16进制。
当四位BCD码变化时,在输出端输出相应的高低电平以驱动七段数码管的显示。
3.2工作原理及原理图七段共阴极数码管由数码管由abcdefg七段组成,分别对不同的引脚写高电平可以点亮。
在输入端输入相应的bcd码,在输出端就会产生相应的电平以驱动数码管的显示。
由于只需要16个数的显示。
那么拨码开关只需用四个就可以实现16个数字的表示。
工作原理图如下:七段数码管如下图所示:由图知,如果要显示数字“0”,只需点亮abcdef段,对应的输出端电平为1111110.要显示数字“1”,只需点亮bc段,对应的输出端电平为0110000…如果要显示字母“A”,只需点亮abcefg段,对应的输出端电平为1110111.如果要显示字母“b”,只需点亮cdefg段,对应的输出端电平为0011111.同理可以显示其他数字和字母。