单片机课程设计例题4-3位二进制译码器流水灯汇编

合集下载

单片机流水灯实验范文

单片机流水灯实验范文

实验二单片机并口简单应用(流水灯)实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、流水灯硬件电路如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。

发光二极管连接成共阳极结构。

发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。

因此,通过程序控制74LS164的Q0端。

Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。

图4-1 流水灯电路图2、单片机流水灯程序设计由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。

(1)控制三极管导通程序控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。

第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。

为1,三极管截止。

两种方法的程序流程如图4-2所示。

图4-2 流水灯位选信号控制(2)产生流水灯效果程序三极管导通后,就可以从P0口输出数据控制发光二极管。

P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。

程序流程图如图4-3所示。

图4-3 流水灯程序流程图实验内容/*********************************功能:流水灯(间隔200ms)**********************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LEDDIN=P2^3; //位声明sbit LEDCLK=P3^4;void delay_1ms(uchar z);//函数声明void delay_50ms(uchar t);void mian(){uchar i;for(i=0;i<7;i++)//关闭数码管{LEDDIN=1;LEDCLK=0;LEDCLK=1;}LEDDIN=0;LEDCLK=0;LEDCLK=1; //产生一个脉冲,使三极管导通P0=0xfe;delay_50ms(4); //延时200mswhile(1){P0=_crol_(P0,1);delay_50ms(4);}}void delay_1ms(uchar z)//延时1ms{uint x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}void delay_50ms(uchar t)//延时50ms{uint j;for(;t>0;t--)for(j=6245;j>0;j--);}实验思考题1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。

单片机课程设计例题1-流水灯

单片机课程设计例题1-流水灯

+5V R9 10K C1 4.7u C3 30p C2 30p Y1 12MHz
9 18 19
图4­5 流水灯电路图
3. 电路元件使用介绍
n n
n n n n
(1)发光二极管简介 发光二极管(LED)是一种能直接将 是一种能直接将 +5V 电能转化为光能的显示器件 电能转化为光能的显示器件,当内 部有电流通过时,它就会发光 它就会发光。常 R 见的发光二极管有发红色的 见的发光二极管有发红色的、绿色 的、黄色的等。 LED 作用: 将电能转化为光能(电 将电能转化为光能 —光) 工作条件: 图4­6 LED点亮电路图 工作电流Ig :一般为5~ ~20mA 发光二极管压降Vg:一般为 一般为1.5~ 2.0V之间
n n n n n n n n n n n
(2)限流电阻R阻值的计算与选取 阻值的计算与选取: 图4-6是LED点亮电路图, ,电源按在单片机应用电 路的电源考虑,电源电压选 电源电压选+ 5 V, R为限流电阻。 因Ig为5~20mA、管压降 管压降Vg为1.5~2.0V 根据欧姆定律可得: R= (Vcc - Vg)/ Ig; 则Rmin最小值时,Ig应最大 应最大,管压降Vg也最大 Rmax最大值时,Ig应最小 应最小,管压降Vg也最小 所以有: Rmin=(5-2)V/20mA=3/20KΩ=150Ω 2)V/20mA=3/20KΩ=150Ω Rmax=(5-1.5)V/5mA=3.5/5KΩ=700Ω 1.5)V/5mA=3.5/5KΩ=700Ω 限流电阻R取值范围:150Ω< 150Ω< R < 700Ω。这里选 700Ω 取R为330欧姆,发光二极管工作电流约 发光二极管工作电流约10mA。
5.程序仿真

可控流水灯设计(单片机课程设计报告)汇编语言编写

可控流水灯设计(单片机课程设计报告)汇编语言编写

单片机课程设计报告题目:可控流水灯摘要单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。

这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

对可控流水灯设计通过编写代码实现8个LED灯5种流水灯显示方式。

在设计中主要采用80C51这款芯片作为控制主体,用发光二极管来作为显示灯,用按钮来切换流水灯的发光方式同时外接一个七段显示发光二极管来显示流水灯的发光模式。

系统通过P2口外接8个发光二极管,P1口接3个按键,一个按键进行方式选择,数码管显示方式编号;用两个键来控制流水灯流动的速度。

数码管接在80C51的P0口上,而流水灯的放光二极管经过排阻接在P2口上。

设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。

关键词单片机80C51发光二极管流水灯目次1 引言 (1)2 课题综述 (1)2.1课题来源与意义 (1)2.2面临的问题 (1)3 系统设计 (1)3.1总体设计 (1)3.2模块设计 (2)3.3硬件设计 (5)4 代码编写 (6)5 系统调试 (7)6 系统运行结果与分析 (8)结论 (9)致谢 (10)参考文献 (11)附录 (12)1 引言单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。

现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。

2 课题综述2.1课题来源与意义随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。

单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑控制的主力军。

流水灯设计

流水灯设计

数电课程设计一课程课题:流水灯设计二课程任务:设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下: -1,5亮,其余灭,右移三次后全灭-4,8亮,其余灭,左移三次后全灭-4,5亮,其余灭,各向两边移三次后全灭-1,8亮,其余灭,各向中间移三次后全灭三课程设计原理:①译码器74139 将Y10N-Y23N 分别命名为led1-led8,利用2-4译码,采用A1,B1,A2,B2分别控制,Y10N-Y23N 为低电平时led 等亮,否则灭。

根据设计任务,结合译码器,可得到循环状态图为:②计数器74169计数器74169 译码器74139序列信号产生74194由于led1-led4和led5和led8的移动方向不尽相同,故采用两个计数器来控制,以led1-led4为例,A1,B1由Q0,Q1决定,则通过UP/DN 可控制Q0,Q1是由00-01-10-11,还是由11-10-01-00,即灯的移动方向。

结合灯的移动方向,取led1-led4的控制端UP/DN为s1,led5-led8的为s2,则s1应为1001序列,s2为1010序列。

③序列产生74194利用74x194产生序列信号s1,s2,来控制下一段的计数器的升降UP/DN,进而控制灯的循环顺序。

功能表:四课程设计方案:①电路图:②仿真波形:学习数电以来,都是一些题目化问题的设计,但这次课程设计却和实际联系紧密,牵扯到很多芯片的原理,链接,是一次很好的实践,原理图的设计是理论与实践的交叉点,原理图设计好之后,我们可以利用仿真软件进行仿真,这样便可以验证我们设计的正确性;积累了经验并且熟练地掌握了软件的基本使用方法和一些快捷键的用途,并体会到数电和实际生活的联系,是不错的开始。

51单片机经典流水灯汇编程序

51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计流水灯汇编程序8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#01111111B ;最下面的LED点亮LCALL DELAY ;延时1秒MOV P1,#10111111B ;最下面第二个的LED点亮LCALL DELAY ;延时1秒MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#11101111BLCALL DELAYMOV P1,#11110111BLCALL DELAYMOV P1,#11111011BLCALL DELAYMOV P1,#11111101BLCALL DELAYMOV P1,#11111110BLCALL DELAYMOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250msPUSH PSW ;现场保护指令(有时可以不加)MOV R4,#2L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)DJNZ R2 ,L1 ; 中层循环:256次DJNZ R4 ,L3 ;外层循环:2次POP PSWRETEND51单片机汇编程序集(二)2008年12月12日星期五 10:27辛普生积分程序内部RAM数据排序程序(升序)外部RAM数据排序程序(升序)外部RAM浮点数排序程序(升序)BCD小数转换为二进制小数(2位)BCD小数转换为二进制小数(N位)BCD整数转换为二进制整数(1位)BCD整数转换为二进制整数(2位)BCD整数转换为二进制整数(3位)BCD整数转换为二进制整数(N位)二进制小数(2位)转换为十进制小数(分离BCD码)二进制小数(M位)转换为十进制小数(分离BCD码)二进制整数(2位)转换为十进制整数(分离BCD码)二进制整数(2位)转换为十进制整数(组合BCD码)二进制整数(3位)转换为十进制整数(分离BCD码)二进制整数(3位)转换为十进制整数(组合BCD码)二进制整数(M位)转换为十进制整数(组合BCD码)三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7;二进制整数(2位)转换为十进制整数(分离BCD码);入口: R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD21 : MOV NCNT,#00HMOV R2,#00HIBD211 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV @R0,AINC R0INC NCNTMOV A,R3ORL A,R4JNZ IBD211MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(2位)转换为十进制整数(组合BCD码);入口: R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD22 : MOV A,R0PUSH AMOV R7,#03HCLR AIBD221 : MOV @R0,AINC R0DJNZ R7,IBD221POP AMOV R0,AMOV R7,#10HIBD222 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV B,#03HIBD223 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD223POP AMOV R0,ADJNZ R7,IBD222RET;二进制整数(3位)转换为十进制整数(分离BCD码) ;入口: R2,R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD31 : CLR AMOV NCNT,AIBD311 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV @R0,AINC R0INC NCNTMOV A,R2ORL A,R3ORL A,R4JNZ IBD311MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(3位)转换为十进制整数(组合BCD码) ;入口: R2,R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD32 : MOV A,R0PUSH AMOV R7,#04HCLR AIBD321 : MOV @R0,AINC R0DJNZ R7,IBD321POP AMOV R0,AMOV R7,#18HIBD322 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV B,#04HIBD323 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD323POP AMOV R0,ADJNZ R7,IBD322RET第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程收藏该程序运行结果为个位数码管轮流现实0,1,2,3,4,5,6,7,8然后十位数码管轮流现实0,1,2,3,4,5,6,7,8反复循环P1.0,P1.1, P1.2,P1.3, P1.4,P1.5, P1.6,P1.7, 依次点亮然后轮流点亮小喇叭不停发出滴答声:注意该程序配套为我站的倚天版开发套件:如果是标准版:因他的数码管接法不同。

流水灯汇编程序 (4)

流水灯汇编程序 (4)

流水灯汇编程序介绍流水灯是一种常见的电子显示装置,通过多个灯泡(或LED)按照一定的节奏依次亮起和熄灭,形成一个像水流一样流动的效果。

本文档介绍了一种汇编语言编写的流水灯程序。

硬件环境本程序使用单片机作为控制设备,需要以下硬件环境:•单片机开发板•LED灯泡(或LED灯带)•连接线软件环境本程序使用汇编语言编写,需要以下软件环境:•汇编语言开发环境(如Keil等)•单片机烧录工具(如ST-Link等)程序功能该流水灯程序通过控制不同IO口的电平,实现了多个LED 灯按照一定的节奏依次点亮和熄灭的效果。

具体的实现逻辑如下:1.初始化IO口:将用于连接LED的IO口配置为输出模式,并初始化电平为低电平。

2.循环控制:进入一个无限循环,以持续驱动流水灯的效果。

3.逐个点亮:依次将每个LED对应的IO口电平设置为高电平,达到点亮效果。

4.延时控制:通过延时操作,控制每个LED点亮的持续时间。

5.逐个熄灭:依次将每个LED对应的IO口电平设置为低电平,达到熄灭效果。

6.延时控制:通过延时操作,控制每个LED熄灭的间隔时间。

通过不断的逐个点亮和熄灭操作,就能够实现流水灯的效果。

根据实际需要,可以调整延时时间,来改变流水灯的速度和亮暗程度。

汇编代码ORG 0x00 ; 程序入口地址; 定义IO口对应的物理地址LED_BASE EQU 0x50000000 ; LED基地址LED0_OFF EQU 0 ; LED0关闭偏移量LED1_OFF EQU 4 ; LED1关闭偏移量LED2_OFF EQU 8 ; LED2关闭偏移量LED3_OFF EQU 12 ; LED3关闭偏移量; 定义延时函数DelayLDR R1, =1000000 ; 设置延时时间,根据实际需要调整DelayLoopSUBS R1, R1, #1 ; 计数器减1BNE DelayLoop ; 若计数器不为0,则跳转继续延时BX LR ; 延时结束,返回; 主程序入口Main; 初始化IO口LDR R0, =LED_BASE ; 加载IO口基地址STR R0, [R0, #LED0_OFF] ; 设置LED0为输出模式 STR R0, [R0, #LED1_OFF] ; 设置LED1为输出模式 STR R0, [R0, #LED2_OFF] ; 设置LED2为输出模式 STR R0, [R0, #LED3_OFF] ; 设置LED3为输出模式; 循环控制Loop; 逐个点亮STR R0, [R0, #LED0_OFF] ; LED0点亮BL Delay ; 延时一段时间STR R0, [R0, #LED1_OFF] ; LED1点亮BL Delay ; 延时一段时间STR R0, [R0, #LED2_OFF] ; LED2点亮BL Delay ; 延时一段时间STR R0, [R0, #LED3_OFF] ; LED3点亮BL Delay ; 延时一段时间; 逐个熄灭STR R0, [R0, #LED0_OFF] ; LED0熄灭BL Delay ; 延时一段时间STR R0, [R0, #LED1_OFF] ; LED1熄灭BL Delay ; 延时一段时间STR R0, [R0, #LED2_OFF] ; LED2熄灭BL Delay ; 延时一段时间STR R0, [R0, #LED3_OFF] ; LED3熄灭BL Delay ; 延时一段时间B Loop ; 跳转到循环开始的位置END ; 程序结束使用方法1.将上述汇编代码保存为一个以.asm为后缀的文件,如led.asm。

流水灯循环电路课程设计数电课程设计

流水灯循环电路课程设计数电课程设计

课程设计任务书1、主要内容设计一种利用发光二极管作为彩灯指示,实现发光二极管依次点亮形成移动的光点,并不断循环的彩灯循环控制电路,要求可以实现彩灯循环的变化规律可以调节。

(1)学会分析、设计和测试用555定时器构成的多谐振荡器。

(2)熟悉译码器和中规模集成计数器的工作原理。

(3)利用译码器和计数器设计彩灯控制电路,实现不同的闪烁效果2、基本要求(1)实现16个LED灯循环点亮。

(2)LED灯的闪烁按一定的规则变化,可通过输入开关设置闪烁规律。

3、参考文献[1]康华光《电子技术基础数字部分(第五版)》高等教育出版社[2] 陈汝全《电子技术常用器件应用手册》机械工业出版社[3]谢自美《电子线路设计安装调试》华东科技大学出版社[4]包兴、胡明《电子器件导论》北京理工大学出版社[5]阎石《数字电子技术基础》高等教育出版社实验时间: xxx 年x 月xx日至 xxx年 x月 x日指导教师: xxx 系(或教研室)主任:xxx课程名称数电课程设计指导教师 xxx 院(系)电气工程与自动化学院专业班级 xxx学生姓名 xxx 学号 xxxxx 设计日期 2014.8.25课程设计题目流水灯循环电路课程设计一.设计要求及主要技术指标1.1 设计要求(1)、根据技术指标要求确定电路形式,分析工作原理,计算元件参数。

(2)、列出所用元器件清单并购买。

(3)、安装调试所设计的电路,使之达到设计要求。

(4)、记录实验结果。

(5)、撰写设计报告。

1.2 主要技术指标(1)实现16个LED灯循环点亮。

(2)LED灯的闪烁按一定的规则变化,可通过输入开关设置闪烁规律。

1.3设计目的设计一种利用发光二极管作为彩灯指示,实现发光二极管依次点亮形成移动的光点,并不断循环的彩灯循环控制电路,要求可以实现彩灯循环的变化规律可以调节。

(1)学会分析、设计和测试用555定时器构成的多谐振荡器。

(2)熟悉译码器和中规模集成计数器的工作原理。

单片机—流水灯实验(汇编版)

单片机—流水灯实验(汇编版)

实验一流水灯实验一、实验目的1、实验目的:1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计由于发光LED平均电流为5mA时亮度较好,而单片机端口电压约为5V,故所需电阻为1K。

四、系统软件设计说明:1、4键顺时针,2、4键逆时针,3、6键复位。

Led从按键触发时的位置开始反向。

/*******流水灯实验*******/ORG 0000HORG 0030H/*********主程序*********/MAIN: LCALL FLASH ;调用使12个led闪烁MOV R0,#000H ;设置R0初值,R0确定是以P2囗,还是P3囗为起始LCALL LWR ;调用流水灯程序/******按键处理程序******/KEY: MOV R2,P2 ;保存按键时P2的值MOV R3,P3 ;保存按键时P3的值LCALL KEY1 ;扫描是否有按键按下JNZ KEY2 ;若有按键按下则转到KEY2RET ;没按键按下则退出/********扫描按键********/KEY1: MOV P0,#0FFHCLR P3.6CLR P3.7MOV A,P0ORL A,#01FH ;将A的低五位赋值为1CPL A ;取反,A为0则无按键按下,A不为0则有按键按下LJMP KEY4/********按键消抖********/KEY2: LCALL DY2 ;消抖LCALL KEY1 ;再检查是否有按键按下JNZ KEY3 ;的确有则转去处理RET/******确定按键功能******/KEY3: CJNE A,#020H,LK1LCALL LWR0RETLK1: CJNE A,#040H,LK2LCALL LWL0RETLK2: MOV P2,#0FFHMOV P3,#0FFHLJMP MAINKEY4: RET/**********闪烁**********/FLASH: MOV R0,#03H ;设定闪烁的次数FLASH1: M OV P2,#0FFHMOV P3,#0FFHLCALL DY1MOV P2,#000HMOV P3,#000HLCALL DY1DJNZ R0,FLASH1MOV P2,#0FFHMOV P3,#0FFH/*******顺时针流水灯******/LWR: MOV R2,#0FEH ;起始初值MOV R3,#0FBH ;起始初值LWR0: CJNE R0,#000H,LWR2 ;判断从P2起始,还是P3起始LWR1: MOV A,R2 ;设定循环初值LWR11: MOV P2,ALCALL DY1LCALL KEYMOV A,R2 ;恢复A值RL ACJNE A,#0FEH,LWR11MOV P2,#0FFH ;消除D8的延时INC R0MOV R3,#0FBHLWR2: MOV A,R3LWR21: MOV P3,ALCALL DY1LCALL KEYMOV A,R3RL ACJNE A,#0BFH,LWR21MOV P3,#0FFH ;消除D12的延时DEC R0MOV R2,#0FEHLJMP LWR1/*******逆时针流水灯******/LWL0: CJNE R0,#001H,LWL2LWL1: MOV A,R3LWL11: MOV P3,ALCALL DY1LCALL KEYMOV A,R3RR ACJNE A,#0FDH,LWL11MOV P3,#0FFH ;消除D12的延时DEC R0MOV R2,#07FHLWL2: MOV A,R2LWL21: MOV P2,ALCALL DY1LCALL KEYMOV A,R2RR ACJNE A,#07FH,LWL21MOV P2,#0FFH ;消除D8的延时INC R0MOV R3,#0DFHLJMP LWL1/**********LED延时**********//*说明:延时所用的三条令,stc10f08xe中与常用的51单片机中的指令执行时间不同*/DY1: MOV R7,#22 ;延时时间:{2+[2+(2+250*4+4)*100+4]*22+4}/ 11.0592DY11: MOV R6,#100 ; =2213338/11.0592DY12: MOV R5,#250 ; =0.200014sDJNZ R5,$ ; ≈0.2sDJNZ R6,DY12 ;DJNZ R7,DY11 ;RET/**********按键消抖延时**********//*说明:延时所用的三条令,stc10f08xe中与常用的51单片机中的指令执行时间不同*/DY2: MOV R7,#100 ;延时时间:[2+(2+250*4+4)×110+4]/11.0592 DY21: MOV R6,#250 ; =110666*/11.0592DJNZ R6,$ ; =10.0067msDJNZ R7,DY21 ;RETEND五、实验过程中遇到的问题及解决方法1、循环过程发光二极管D1—D8与D9—D12之间怎么衔接?当在D1—D8运行时用CJNE指令检测是否为D8,若是就跳到D9—D 13,跳回与逆时针循环时同理。

单片机课程设计例题4-3位二进制译码器流水灯

单片机课程设计例题4-3位二进制译码器流水灯

6.习题
n
①P2.0~P2.2为输入端,P1.0 P1.0为输出端,编写程序实现三 输入与非门功能。 ②P2.0~P2.2为输入端,P1.1 P1.1为输出端,编写程序实现三 输入或非门功能。
n
n
n
5.程序仿真
n
再Keil集成开发环境中,输入上述源程序并命名为 输入上述源程序并命名为lm4-41.c,建立名为lm4-4-1的工程并将 的工程并将lm4-4-1.c加入工程中, 经编译、链接后进入调试状态 链接后进入调试状态,打开P1、P2窗口,单击工 具栏运行按钮,再分别单击P2 P2口的P2.2~P2.0引脚位,使 3个引脚呈现000、001、…… …… 111状态,观察P1口对应的低 电位引脚应分别为P1.0 、P1.1 P1.1…… P1.7。图4-22(a) P2窗口是仿真译码器输入为101 101的状态,图4-22(b)P1窗 口P1.5低电平,所接LED6被点亮 被点亮。
N key=0x05 Y N key=0x06 Y N 第8灯亮 灯亮,其余灭
n n n n n n n n n n
n
(2)C语言程序 #include <regx51.h> void main (void) { unsigned char key; do { P2 = P2 | 0x07; key = P2 & 0x07; switch (key)
P1 = 0xFE; break; P1 = 0xFD; break; P1 = 0xFB; break; P1 = 0xF7; break; P1 = 0xEF; break; P1 = 0xDF; break; P1 = 0xBF; break; P1 = 0x7F; P1 = 0x7F;

彩灯流水电路设计

彩灯流水电路设计
3.观察发光二极管(简称 LED)的状态。 4.检验是否成功,完成实验。
五、数据记录:
数据记录请检查附页
指导教师批阅意见:
成绩评定:
预习 操作及记录 (20分) (40 分)
数据处理 20 分
Hale Waihona Puke 结果与讨论 10 分思考题 10 分
总分
1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2
三、实验仪器:
1.DLE-2 数字电路实验箱
2.器件
74LS90
十进制计数器
74LS161 4 位二进制同步计数器
74LS138 3 线—8 线译码器
74LS04
六反向器
74LS20
双四输入与非门
1
四、实验内容和步骤:.
任务一:
1.将一片 3 线—8 线译码器 74LS161 和 74LS138 插入 RXB-1B 数字电路实验箱的 IC 空插座中,按图接线。
74LS138 是 3-8 线译码器,它能接受来自 74LS161 输入端来的三位 2 进制信号。 通过连接时钟,将在 LED 上持续不断的看到暗灯右移,即计数器从 0000 到 0111 状态。
任务二中,
74LS90 是异步十进制计数器,将 Q3 接入 RA、RB 接高电平,CP1 接 Q0 完成输出端十 进制里的逢 8 重新计数。通过接 74LS138 是 3-8 线译码器,完成彩灯设计。
一、实验目的
1.掌握彩灯流水电路的特点及设计方法; 2.进一步认识前面所学芯片的逻辑功能图;
二、实验原理:
这是设计 实验,实验用到 的芯片都在以前学 习过的,通过学 习了的知识,我们 用计数器 计数,逢 8 进位,重新计数,输出端连接译码器,再接在 LED 显示灯上,完成设计。

单片机-流水灯的程序

单片机-流水灯的程序
程序分析:
#include<reg51.h> sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void delay (unsigned char x);
其中void表示这 个函数执行完后 不返回任何数据。 ()内无任何东西, 所以这是个无参 数的函数。 Delayms是函数名。
1
2
3
4
5
6
2)带参数函数的用位定义实现流水灯(8位二极管循环点亮)
编程思路: a) 先点亮第一盏灯,延时点亮第二盏, 依次延时8盏灯全部点亮。 b) 当8盏灯全部点亮时,熄灭8盏灯。 c) 进入循环。
循环移动
循环左移 最高位移入最低位,其它依次向左移动一位。C语言中 没有专门的指令,通过移位指令和简单逻辑运算来实现循环左移,或直接利用C51库中自带的函数-crol-实现。
循环右移 最低位移入最高位,其它位依次向右移一位,C语言中没有专门的指令,通过移位指令与简单的逻辑运算可以实现循环右移,或专门利用C51库中自带函数-cror-实现
方法二:利用总线控制实现流水灯(8位二极管循环点亮)
相关知识 二进制和十六进制之间的相互转换
二进制
十六进制
二进制
十六进制
0000
0
0100
4
0001
1
0101
5
0010
2
0110
6
0011
3
0111
7
二进制
十六进制
二进制

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全1、单片机AT89C51的P2 口接8个发光二极管,让这8 个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如此循环。

参考程序:ORG 0000Hstart: MOV P1,#0HCALL delayMOV P1,#0FFHCALL delayCALL delayLJMP startdelay:MOV R7,#200d2: MOV R6,#250d1: DJNZ R6,d1DJNZ R7,d2RETEND;200*250 次*2*1us=1000ms=1s个发光二极管能够双灯左移之后再双灯右移,形成霹雳灯的效果,如此循环 5 次后全灭,延时0.5S 灯右移,形成霹雳灯的效果,如此循环5 次后全灭。

延时0.5S。

参考程序1:ORG 0000HMOV A,#11111100Bstart:MOV P1,ACALL delayRL ARL AINC R0CJNE R0,#4,startMOV R0,#00Hs:RR ARR AMOV P1,ACALL delayINC R0CJNE R0,#4,sMOV R0,#00HLJMP startdelay: MOV R5,#100 k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3DJNZ R6,k2DJNZ R5,k1RETEND参考程序2:ORG 0000HMOV R0,#5start:MOV P2,#11111100B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11001111B MOV P2,#00111111BMOV P2,#00111111BMOV P2,#11001111B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11111100B CALL delay0_5s DJNZ R0,start MOV P2,#0FFH SJMP $delay0_5s:MOV R7,#20d3: MOV R6,#200 d2: MOV R5,#250 d1: NOPNOPDJNZ R5,d1DJNZ R6,d2DJNZ R7,d3RETEND3、单片机AT89C51的P2 口接8个发光二极管,让这8 个发光二极管先交互闪烁 5 次,然后双灯左移之后再双灯右移,如此循环,形成流水灯的效果,延时0.5S。

流水灯(电路和汇编)-Proteus和Keil仿真演示实例

流水灯(电路和汇编)-Proteus和Keil仿真演示实例

示例要求:在80C51单片机的P2 口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。

在KEIL 51中编程序,形成HEX文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。

第1 篇: PROTEUS电路设计1、打开PROTEUS的ISIS软件,如图1所示。

新建电路图文件,将文件保存到E:\projectio (新建文件夹projectio)下面,文件基本名为io,扩展名默认。

图1 ISIS窗口图2、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图2所示。

图2元件选择窗口Root sheet 1IF在元件选择对话框的 keywords 窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元 件,添加元件到图3的device 列表栏。

在这里依次添加元件单片机 80C51、电阻RES 、电容CAP 、按键BUTTON 、晶振CRYSTAL 、发光二极管 LED-RED ,如图3所示。

3、选择devices 元件列表中的元件放到工作窗口, 注意放置在工作窗口合适的位置,在元件放置时可对元件进4所示。

电源(POWER )与地(GROUND ):(右键-放置-终端里选)。

Fil* JJi ** Edit Ts&lt Vetixn 肆紛h 命af” U 俺峙 Litrsrv 1 也Svct K*lp国W;踞輕丨==■■-!□] x|行移动、旋转等操作;如图 图3添加元件的device 列表栏配輔證 S I?) K I S E I EIF記汨益器心 呼Tn •冒l-H-一 -4、连接导线,如图5所示。

连接后存盘。

Pile V] ew Edit l^els Dess EHScfirct Betur Latr KT ?" IflEwlute Svster M<lp|D I ^S 虚id 旨3|[囱書]舟 命迫旦塹口|]叭c x %e.^z z■ ■狀 ]ls tnsi iasH.^10^71^连接元件图5、 在Keil 软件中设计软件程序,形成 HEX 文件(具体过程见第 2篇Keil 软件编程)。

数电大作业流水灯 (2)

数电大作业流水灯 (2)
3、各个单元电路的功能与分析
○1 74LS163 四位二进制计数器
这里采用 74LS163 构成模 4 计数器,状态由 00 → 01 → 10 → 11 循环。 L1(东西绿):当 00 时亮,其她状态时不亮。 L2(东西黄):当 01 时亮,其她状态时不亮。 L3(东西红):当 10、11 时亮,00、01 时不亮。 L4(南北绿):当 10 时亮,其她状态时不亮。 L5(南北黄):当 11 时亮,其她状态时不亮。 L6(南北红):当 00、01 时亮,10、11 时不亮。 电路可以这样实现:
5、整体电路仿真及结果分析
○1 电路仿真
数电大作业流水灯
用逻辑分析仪对译码器输出端进行高低电平显示,得到以下结果:
○2 结果分析
Y0-Y7 输出波形如上图所示,由于 Y0-Y7 高低电平的变化,所以指示 灯会闪烁变化,但必须脉冲频率最好在 1KHz 以下,以便人眼能够识别,计 数器产生 000-111 脉冲输入 74LS138 的输入端,实现 Y0-Y7 的选通,从而实 现上述功能,每个灯亮的时间为 0、014s。
○4 4511 芯片驱动器
4511 芯片驱动器就是一种常用的七段数码管译码器驱动器,使输入的二 进制数在数码管上以十进制数显示,主要驱动共阴数码管,其引脚图如下图 所示。
数电大作业流水灯
○5 共阴极数码管
在本电路中的作用主要就是显示目前就是几号灯亮,便于观测。其原理 图如下:
采用 4511 七段显示译码器,显示第几个灯在闪烁,信号从 A0A1A2A3 输 入,a,b,c,d,e,f,g,分别接数码管的 ABCDEFG,连接数码管与 4511 还需要限流电 阻 220 数码管驱动电路如下
6、不同的思路的流水灯电路 因为流水灯每次只有一个灯亮,且亮灯的方向就是逐步移动有规律

单片机流水灯汇编语言源代码大全(六款流水灯汇编语言源代码)

单片机流水灯汇编语言源代码大全(六款流水灯汇编语言源代码)
源代码:
ORG 0
MOV R1,#3
LOOP1:MOV R0,#8
MOV A,#11111110B
LOOP2:MOV P0,A
RL A
CALL D200MS
DJNZ R0,LOOP2
DJNZ R1,LOOP1
MOV A,#00000000B
MOV P0,A
MOV P2,#0FFH
LOOP:MOV A,P2
ORG 0000H
JMP main
ORG 0003H
JMP int_0
main:
SETB IT0
SETB EX0
SETB EA
MOV A,#11111110B
s:RL A
MOV P2,A
CALL delay
JMP s
delay:
MOV R7,#100
d3:MOV R6,#200
d2:MOV R5,#250
ORG 0000H
MOV R0,#11111110B
start:MOV A,#11111110B
MOV P2,A
s:CALL delay
RL A
MOV P2,A
CALL delay
CJNE A,#01111111B,s
MOV A,R0
MOV P1,A
RL A
MOV R0,A
JMP start
delay:MOV R5,#100
CPL A
MOV P0,A
JMP LOOP
D200MS:
MOV R7,#250
D1:MOV R6,#200
D2:MOV R5,#2
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1

单片机学习编程之流水灯篇OK

单片机学习编程之流水灯篇OK

第一章单片机的基础学习第一个实验 LED发光二极管的左移右移(D1到D8依次)点亮二极管点亮的原理图如下。

实际上是接在P1口。

原理图说明:发光二极管阴极接单片机,让电流流入单片机,因为单片机输出电流小,点不亮发光二极管。

发光二极管点亮电流为5 mA至20mA。

编程说明:(1)做一个LED的左移右移,有硬件电路可知,输出“0”才能使LED亮。

开始时P1.0亮,——P1.1亮——P1.2亮….——P1.7亮——P1.0亮,重复循环点亮LED。

(2)延时时间的设计:石英晶体为12MHz,1个机器周期为1微秒,采用单片机每走一步指令需要的时间来延时。

✧延时时间子程序(10.002毫秒)Delay: MOV R4,#20 ;2个机器周期,2微秒D1: MOV R5,#248 ;2个机器周期,2微秒DJNZ R5,$ ;2个机器周期,2*248微秒DJNZ R4,D1 ;2个机器周期,2*20微秒RET这个延时子程序:20*(498+2)+2=10002个机器周期=10.002毫秒。

✧延时时间子程序(200毫秒)Delay: MOV R3,#20 ; 200微秒D1:MOV R4,#20 ;10微秒D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RET(3)汇编程序源代码注意:向电脑上编辑程序时注意标点符号要在英文的格式下输入。

ORG 00HMAIN: MOV A,#0FFHCLR CMOV R2,#08H;左移点亮发光二极管LOOP: RLC A ;带进位左移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP;左移、轮流点亮发;光二极管;左移点亮发光二极管后,再右移点亮发光二极管MOV R2,#07HLOOP1: RRC A ;带进位右移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP1JMP MAIN; 返回到初始位置;设置延时时间DELAY: MOV R3,#20D1: MOV R4,#20D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND(4)C程序源代码#include <reg51.h>void Delay()//延时子程序{ int i,j;for(i=0;i<=255;i++)for(j=0;j<=255;j++);}void main(){unsigned int i;unsigned int temp;P1=0xff;while(1){temp=0x01;for(i=0;i<8;i++){P1=~temp;逐位取反Delay();temp=temp<<1;}}}(4)实验结果图(注意学习板上的JJ_P1连接器连上)第二个实验采用定时器来设置延时时间(方式0)说明:(1)开始时p1.0亮,延时0.2秒后左移至p1.1亮,如此左移7次后至,再延时0.2秒右移至p1.6亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式0下工作;采用查询的方式(3)程序源代码ORG 00HMOV TMOD,#00H /***设置定时器的工作方式***/START: CLR CMOV A,#0FFHMOV R2,#08 /***设置循环次数***/LOOP: RLC A /***带进位左循环累加器,点亮发光二极管***/ MOV P1,A /***设置定时器定时时间***/MOV R3,#100CALL DELAYDJNZ R2,LOOP /***点亮了八个发光二极管吗,没有继续***/MOV R2,#07LOOP1: RRC AMOV P2,AMOV R3,#100CALL DELAYDJNZ R2,LOOP1JMP START/***通过单片机内部的定时器设置定时时间***/DELAY: SETB TR0 /***启动定时器***/AGAIN: MOV TL0,#(8192-2000) MOD 32MOV TH0,#(8192-2000) / 32LOOP2: JBC TF0,LOOP3 ;通过查询的方式来判断时间定时器的计时JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RET;非中断END(4)实验结果图第三个实验采用定时器来设置延时时间(方式1)(1)开始时p1.0亮,延时0.2秒后左移至p2.1亮,如此左移7次后至,再延时0.2秒右移至p1.7亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式1下工作;采用查询的方式(3)源程序代码ORG 00HMOV TMOD,#01HSTART: CLR CMOV A,#0FFHMOV R2,#08LOOP: RLC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOPMOV R2,#07LOOP1: RRC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOP1JMP STARTDELAY: SETB TR0AGAIN: MOV TL0,#0F0HMOV TH0,#0D8HLOOP2: JBC TF0,LOOP3JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RETEND附录资料:红外发射器的原理图AT89S52下载器的原理图。

单片机课程设计花样流水灯

单片机课程设计花样流水灯

基于单片机的花样流水灯的设计随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁。

LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。

但目前市场上各式样的LED灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进行改进。

流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

流水灯控制可用多种方法实现,但对现代可编程控制器而言,利用移位寄存器实现最为便利。

通常用左移寄存器实现灯的单方向移动;用双向移位寄存器实现灯的双向移动。

本案例利用价格低廉的AT89C51系列单片机控制基色LED灯泡从而实现丰富的变化。

关键词:AT89C51,LED灯,单片机,花样流水灯The design of water lamp based on SCMWith the continuous improvement of people's living environment and landscaping, in many cases you can see the changing color neon lights flashing. LED lamp lighting because of its rich color, low cost and simple control features and has been widely used to decorate the streets with lights and city buildings has become a fashion. However, LED light controller on the market most of each design with full hardware circuit, the circuit structure is complex, single function, so that once the production of finished products only in accordance with a fixed pattern shiny, can not be based on different occasions require different time periods adjust the dynamic parameters of the lighting time, mode, blink frequency. This lantern controller structures tend to have too many chips, circuit complexity, power consumption and other shortcomings. In addition, from the point of view functional effects, lighting patterns and styles less monotonous, lack of user operability, the impact of lighting effects. Therefore it is necessary to improve the existing lantern controller.Is a series of light water according to certain rules like water continuously flashing. Light water control is an application of the programmable controller, which controls the thinking in the field of industrial control technology is also applicable. Light water control a variety of methods are available, but the modern programmable controller, the use of shift registers to achieve the most convenient. Usually registers in one direction left to move the lamp; achieve two-way mobile lamps with bi-directional shift register. In this case the use of inexpensive microcontroller AT89C51 series LED bulbs to achieve a rich color variation.Keywords: AT89C51, LED lights, microcontroller, synchronized light water目录1绪论........................................................................................................................... 错误!未定义书签。

流水灯仿真 原理图与程序(汇编+C语言)

流水灯仿真 原理图与程序(汇编+C语言)

简单流水灯仿真(入门级实验)实验介绍:简单流水灯实验是通过单片机控制几个发光二极管(常见控制8个)的点亮状态,形成一个流动的效果,所以称为流水灯实验。

流水灯实验是闪烁灯实验的进阶,也属于入门级实验。

流水灯效果在普遍应用于路边的广告牌以及各式的霓虹灯。

实验目的:该实验的主要目的是通过流水灯效果的控制,熟悉单片机I/O接口的使用。

学习移位指令(汇编语言:RR、RL,C语言:_crol_、_cror_)的使用方法。

仿真原理图:在仿真软件Proteus中绘制仿真仿真原理图如上图所示。

(注意事项:在仿真过程中,电阻R2~R9的大小要合适,太大LED将无法点亮。

仿真时如果想使用P0口,则需要添加上拉电阻。

注意发光二极管的极性,如果发光二极管接反了,则无法点亮。

)程序HEX代码如下::03000000020832C1:0C083200787FE4F6D8FD75810702081DF0:10080000E4FFFEE4FDFC0DBD00010CBC03F8BDE8F7:0C081000F50FBF00010EEF64644E70E7AE:01081C0022B9:10081D0075A0FEAFA07801EF08800123D8FDF5A0EB:05082D0012080080EE3E:00000001FF程序HEX使用方法:1)新建txt文档2)将HEX代码复制到txt文档中,保存3)将该txt文档另存为“程序名.hex”,例如:pro.hex 4)在仿真软件中打开即可实现仿真。

汇编语言代码以及C语言代码如下:汇编语言代码1(移位方法):ORG 0HJMP MAINORG 30HMAIN:MOV A,#0FEHX1:MOV P2,ACALL DELAYRL AJMP X1DELAY:MOV R2,#20X3:MOV R3,#40X2:MOV R4,#250DJNZ R4,$DJNZ R3,X2DJNZ R2,X3RETEND汇编语言代码2(直接赋值方法):ORG 0HJMP MAINORG 30HMAIN:MOV P2,#0FEHCALL DELAYMOV P2,#0FDHCALL DELAYMOV P2,#0FBHCALL DELAYMOV P2,#0F7HCALL DELAYMOV P2,#0EFHCALL DELAYMOV P2,#0DFHCALL DELAYMOV P2,#0BFHCALL DELAYMOV P2,#7FHCALL DELAYJMP MAINDELAY:MOV R2,#20X3:MOV R3,#40X2:MOV R4,#250DJNZ R4,$DJNZ R3,X2DJNZ R2,X3RETEND注意:对于指令“MOV A,#0FEH”中,“#”后面的数字“0”不可以省略。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P3.5/T1 15
7 P1.6
P3.6/WR 16
8 P1.7
P3.7/RD 17
9 RST 18 XTAL1
ALE/PROG 30
PSEN 29
+5V
19 XTAL2
EA/VPP 31
图4­19三位二进制译码器电路图
SW3 SW2 SW1
+5V R10 R11 R12
3.相关知识
(1)译码 译码是编码的相反过程。能实现译码功能的逻辑电路叫 做译码器。它是一种多个输入端和多个输出端电路。 二进制译码器是将二进制代码的各种状态,按其原意 “翻译”成对应的输出信号的电路。3位二进制译码,输入 端用A2、A1、A0表示,Y0、Y1……Y7是8个输出端,分 别代表十进制数0、1……7的8个数字,见图4­20。
n (2)C语言程序
n #include <regx51.h>
n void main (void)
n{
n unsigned char key;
n do
n{
n
P2 = P2 | 0x07;
n
key = P2 & 0x07;
n
switch (key)
n
q{
case 0x00 :
n
n
case 0x01 :
0
1
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
0
1
1
1
0
0
0
0
0
0
0
1
n 从真值表可以写出表达式为 :
n Y0=
Y1=A0
n Y2=A1
Y3=A1 A0
n Y4=A2
Y5=A2 A0
n Y6=A2 A1
Y7=A2 A1 A0
Hale Waihona Puke 4.程序设计(1)流程图
n (3)程序说明
n 从P口读入数据前要先向P口写数据“1”,因只用到P2口低 3位所以使用语句P2=P2|0x07;,确保低3位为输入状态。
n 语句key = P2 & 0x07;使用了按位“与”运算,屏蔽掉 P2寄存器的高5位保留了低3位的数值。
n 将读入的开关状态的key值作为switch语句的表达式,当 表达式的值为真时,对P1口执行输出操作,使对应的引脚 电位变低,点亮发光二极管。
5.程序仿真
n 再Keil集成开发环境中,输入上述源程序并命名为lm4-41.c,建立名为lm4-4-1的工程并将lm4-4-1.c加入工程中, 经编译、链接后进入调试状态,打开P1、P2窗口,单击工 具栏运行按钮,再分别单击P2口的P2.2~P2.0引脚位,使 3个引脚呈现000、001、……111状态,观察P1口对应的低 电位引脚应分别为P1.0 、P1.1…… P1.7。图4-22(a) P2窗口是仿真译码器输入为101的状态,图4-22(b)P1窗 口P1.5低电平,所接LED6被点亮。
6.习题
n ①P2.0~P2.2为输入端,P1.0为输出端,编写程序实现三 输入与非门功能。
n ②P2.0~P2.2为输入端,P1.1为输出端,编写程序实现三 输入或非门功能。
图4­20
(2)真值表: 3位二进制译码器真值表如表4-3所示, A2~A0为3位 输入, Y0~Y7为8位输出,高电平有效。对应输入信 号任意一种状态,仅有一个输出状态有效而其它状态 均无效。
输入
输出
A2
A1
A0
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
+5V C1 4.7u
R9 10K
C2 30p
Y1 12MHz
C3 30p
39 P0.0
P2.0 21 10k x 3
38 P0.1
P2.1 22
37 P0.2
P2.2 23
36 P0.3
P2.3 24
35 P0.4
P2.4 25
开始
读P2口
key=0x00 N
Y
key=0x01 N
Y
key=0x02 N
Y
key=0x03 N
Y
key=0x04
N
Y
key=0x05
N
Y
key=0x06
Y
N
第8灯亮,其余灭
第1灯亮,其余灭 第2灯亮,其余灭 第3灯亮,其余灭 第4灯亮,其余灭 第5灯亮,其余灭 第6灯亮,其余灭 第7灯亮,其余灭
34 P0.5
33 P0.6 32 P0.7
IC1 AT89S51
P2.5 26 P2.6 27 P2.7 28
1 P1.0
P3.0/RXD 10
2 P1.1
P3.1/TXD 11
3 P1.2
P3.2/INT0 12
4 P1.3 5 P1.4
P3.3/INT1 13 P3.4/T0 14
6 P1.5
单片机课程设计
例题4—3位二进制译码器
4.2.4例题4—3位二进制译码器
n 判断输入键值实现的3位二进制译码器 n 1.教学目的: n (1)了解译码器常识 n (2)能独立用单片机实现3位二进制译码器功
能 n (3)培养用单片机解决数字电路问题的能力
2.电路图
+5V 330 x 8
R8 R7 R6 R5 R4 R3 R2 R1
n
n
case 0x02 :
n
n
case 0x03 :
n
n
case 0x04 :
n
n
case 0x05 :
n
n
case 0x06 :
n
n
default:
n
}
n}
n while (1);
n}
P1 = 0xFE; break; P1 = 0xFD; break; P1 = 0xFB; break; P1 = 0xF7; break; P1 = 0xEF; break; P1 = 0xDF; break; P1 = 0xBF; break; P1 = 0x7F;
相关文档
最新文档