基于单片机(c语言控制的)流水灯程序设计及proteus仿真图
流水灯在Proteus下的仿真实现
流水灯在Proteus下的仿真实现重庆邮电大学微处理器与嵌入式系统设计课程实验报告实验名称:流水灯在Proteus下的仿真实现学期:2014-2015学年第2学期班级:学号:学生姓名:任课教师:实验教室:二〇一五年〇四月十四日【实验名称】流水灯在proteus下的仿真实现实验要求:1、基本要求:4个流水灯循环闪烁,1、3、2、4流水灯交替闪烁;2、扩展要求:8个流水灯依次闪烁,1、3、5、7、2、4、6、8流水灯交替闪烁,流水灯逐渐亮1、1-2、1-3、1-4、1-5、1-6、1-7、1-8。
实验目的:1、熟悉proteus 软件,了解proteus 软件的结构组成和功能,掌握 Proteus软件在单片机仿真中的应用,为开发、调试单片机应用系统做准备;2、熟练掌握 isis 环境中电路图的绘制;3、熟悉keil c51软件的程序设计方法;4、掌握keil c51软件与proteus软件联合仿真调试的方法。
实验方法:1、通过proteus软件绘制出由单片机和LED构成的仿真电路;2、通过keil软件编写控制单片机并点亮LED的程序;3、将keil生成的hex文件导入proteus中的单片机中,实现仿真。
4、观察仿真现象。
实验步骤:1、打开软件:双击ISIS 7 Professional 图标,随后就进入了 Proteus ISIS 集成环境。
2、添加元器件:单击pick from libraries,通过搜索栏搜索所需元件(如:AT89C52、LED),根据元件预览区域的显示,双击所需元件,元件则出现在原理图编辑环境的元件列表区。
用同样方法找出原理图所需全部元件。
3、放置元器件:在元件列表区单击所需放置的元件,将鼠标置于图形编辑窗口该对象的欲放位置,单击鼠标左键,该对象完成放置。
同样方法放置原理图所需全部元件。
4、放置电源和地:选择terminal mode选择电源和地,以放置元器件相同的放法放置电源和地。
流水灯(电路和汇编)-Proteus和Keil仿真演示实例知识讲解
流水灯(电路和汇编)-P r o t e u s和K e i l仿真演示实例示例要求:在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 元件选择窗口在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图3的device列表栏。
在这里依次添加元件单片机80C51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED,如图3所示。
图3 添加元件的device列表栏3、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作;如图4所示。
电源(POWER)与地(GROUND):(右键-放置-终端里选)。
图4 放置元件图4、连接导线,如图5所示。
连接后存盘。
图5 连接元件图5、在Keil软件中设计软件程序,形成HEX文件(具体过程见第2篇Keil软件编程)。
保存软件项目到电路文件相同的文件夹E:\projectio下。
6、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。
这里是同一个文件夹下面的shili.hex文件。
如图6所示。
图6 下载程序到单片机7、单击仿真运行按钮play,运行程序。
《单片机C语言程序设计实训100例—基于8051+Proteus仿真
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
单片机流水灯的Protues仿真
单片机流水灯的Protues仿真摘要本文详细介绍了利用Proteus仿真软件仿真单片机流水灯实验的具体操作和调试过程,叙述了Proteus仿真软件的使用方法,对学习Proteus 的仿真有一定的指导意义。
关键词Protues;AT89C51;仿真1电路的基本功能在单片机P0口接有8个发光二极管,要求8个发光二极管每次点亮一个二极管,按照相同的时间间隔从左向右,即从P0.0到P0.7依次点亮,然后再返回P0.0依次循环,如图1所示。
2 硬件电路的构建实现流水灯电路功能的主体元件是89C51单片机,需在protues电路窗口中绘制如图2所示的单片机流水灯电路原理图,首先启动protues软件中的protues ISIS模块,单击文件菜单中的“新建”“新建设计”“另存为”在弹出的对话框中输入“流水灯”,并选择文件的路径,再单击确定按钮,即在指定文件夹建立名为“流水灯.DSN”文件。
在Protues主界面中单击“”图标,然后单击“”按钮,在弹出的“Pick devices”窗口里按照表1中的路径选择相应的元件并单击,将所选元件添加到元件列表,再选中元件放置到绘图区,重复以上操作将所需元件逐一添加到绘图区,通过编辑元件,修改元件的参数并调整好各元件位置,按下工具栏中的“”按钮,将两个元件用导线连接起来,依次操作,建立如图2所示的电路图[1]。
3程序设计及装载3.1程序的设计通过电路功能的分析,结合单片机电路图,设计出单片机工作流程图如图3所示,再根据流程图写出源程序,演示程序及说明如下:3.2程序的装载在Protues主界面中单击“源代码”菜单下的“添加/删除源文件”在弹出的“添加/移除源代码”对话框如图4所示,“目标处理器栏”选择“U1-AT89C51”,“代码生成工具”栏选择“ASEM51”,然后单击新建,在弹出的对话框文件名栏中输入“liushuideng.ASM”,单击“打开”按钮,返回“添加/移除源代码”对话框,单击“确定”按钮,返回Protues主界面,单击“源代码”菜单,选择“liushuideng.ASM”选项,打开source Editor窗口,将设计好的汇编程序粘贴到窗口中,单击“保存”按钮,关闭该窗口。
基于单片机(c语言控制的)流水灯程序设计及proteus仿真图-推荐下载
P1=0xff; delay(300);
//1~8 号灯依次闪烁
// 8~1 号灯依次闪烁
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
第4讲 Proteus硬件仿真(单片机控制LED流水灯)
其功能特点 (1)原理布图 (2)PCB自动或人工布线 (3)SPICE电路仿真
※ 生动的仿真显示:用色点显示引脚的数字电平,导线以不 同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、 按钮)的使用可以使仿真更加直观、生动;
※ 高级图形仿真功能(ASF):基于图标的分析可以精确分
析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、
噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;
4
四大功能模块
(3)独特的单片机协同仿真功能(VSM) ※ 支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、
PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、 MSP430等,CPU类型随着版本升级还在继续增加,如即将支持 CORTEX、DSP处理器;
12
Proteus的使用-跑马灯实例学习
双击“AT89C52”,则可将“AT89C51”添加至对象选择器窗 口。 同样方式:选择
发光二极管LED-YELLOW 瓷片电容CAP 电解电容器CAP-ELEC 电阻RES 晶振CRYSTAL 按钮BUTTON
13
Proteus的使用-跑马灯实例学习
②放置元器件 放置元器件至图形编辑
点击“Start/Stop Debug ,然后按 Proteus的仿真按钮,观察结果
20
(完整版)PROTEUS仿真100实例
(完整版)PROTEUS仿真100实例《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include#include#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include#include#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0 xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x 00,0x81,0xc3,0xe7,0xff,0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0 x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xf f,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0 xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xf b,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0 xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff };uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x 9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x 00,0x81,0xc3,0xe7,0xff,0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0 x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xf f,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xd f,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0 xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc 0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例
名称:花样流水灯 说明:16 只 LED 分两组 按预设的多种花样变换显示 */ #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0[]= { 0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; uchar code Pattern_P2[]= { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
流水灯(电路和汇编)-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< 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 软件编程)。
简单的51单片机花样流水灯C语言源代码
简单的51单片机花样流水灯C语言源代码#include //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void Delayms(uint x){ //定义延时函数uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void main(){uint i;uchar temp;while(1){temp=0x01; //8个流水灯逐个闪动for(i=0;i<8;i++){P0=~temp;Delayms(50);temp<<=1;}temp=0x80; //8个流水灯反向逐个闪动for(i=0;i<8;i++){P0=~temp;Delayms(50);temp>>=1;}temp=0xfe; //8个流水灯依次全部点亮for(i=0;i<8;i++){P0=temp;Delayms(50);temp<<=1;}temp=0x7f; //8个流水灯依次反向全部点亮for(i=0;i<8;i++){P1=temp;Delayms(50);temp>>=1;}}}//此程序的作者向往未来#include#include#define uint unsigned int #define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};uchar code table2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; uchar code table3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};uchar code table4[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff}; uchar code table5[]={0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff};uchar code table6[]={0x7e,0x3c,0x18,0x00, 0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1();void lsd2();void lsd3();void lsd4();void lsd5();void lsd6();void lsd7();void lsd8();void lsd9();void lsd10();void lsd11();void lsd12();main(){while(1){lsd1();lsd2();lsd3();lsd4();lsd5();lsd6();lsd7();lsd8();lsd9();lsd10();lsd11();lsd12();}}void delay(uchar x) //延时函数{uint i,j;for(i=x;i>0;i--)for(j=250;j>0;j--);}void lsd1() //lsd1 单个流水灯双程模式1 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++) //仅单个灯亮从上往下流{a=_crol_(a,1);P0=a;delay(z);}P0=0xff;a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=_crol_(a,1);P2=a;delay(z);}P2=0xff;a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=_crol_(a,1);P3=a;delay(z);}P3=0xff;a=0xfe;P1=a;delay(z);for(l=0;l<7;l++){a=_crol_(a,1);P1=a;delay(z);}a=0xbf;P1=a;delay(z);for(l1=0;l1<6;l1++) //l1==6 仅单个灯亮从下往上流{a=_cror_(a,1);P1=a;delay(z);}a=0x7f;P3=a;delay(z);for(k1=0;k1<7;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xff;a=0x7f;P2=a;delay(z);for(j1=0;j1<7;j1++) {a=_cror_(a,1);P2=a;delay(z);}P2=0xff;a=0x7f;P0=a;delay(z);for(i1=0;i1<7;i1++) {a=_cror_(a,1);P0=a;}P0=0xff;}void lsd2() //lsd2 两个灯流水双程模式1 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i++){a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;P2=0xfe;delay(z);P0=0xff;a=0xfc;P2=a;delay(z);for(j=0;j<6;j++){a=_crol_(a,1);P2=a;}P2=0x7f;P3=0xfe;delay(z);P2=0xff;a=0xfc;P3=a;delay(z);for(k=0;k<6;k++) {a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;P1=0xfe;delay(z);P3=0xff;a=0xfc;P1=a;delay(z);for(l=0;l<6;l++) {a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;delay(z);delay(z);a=0x7f;P1=a;delay(z);a=a>>1;P1=a;delay(z);for(l1=0;l1<6;l1++) {a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;P3=0x7f;delay(z);P1=0xff;a=0x3f;P3=a;delay(z);for(k1=0;k1<6;k1++) {a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;P2=0x7f;delay(z);P3=0xff;a=0x3f;P2=a;delay(z);for(j1=0;j1<6;j1++){a=_cror_(a,1);P2=a;delay(z);}P2=0xfe;P0=0x7f;delay(z);P2=0xff;a=0x3f;P0=a;delay(z);for(i1=0;i1<6;i1++){a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=0xff;delay(z);}void lsd3() //lsd3 两个灯流水双程模式2 {uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i++) //_crol_与_cror_混合使用{a=_crol_(a,1);P0=a;delay(z);}P0=0x7f;a=0x7f;P2=a;delay(z);P0=f;a=a>>1;P2=a;delay(z);for(j=0;j<6;j++){a=_cror_(a,1);P2=a;delay(z);}P2=0xfe;a=0xfe;P3=a;delay(z);P2=f;a=a<<1;P3=a;delay(z);for(k=0;k<6;k++) {a=_crol_(a,1);P3=a;delay(z);}P3=0x7f;a=0x7f;P1=a;delay(z);P3=f;a=a>>1;P1=a;delay(z);for(l=0;l<6;l++) {a=_cror_(a,1);P1=a;delay(z);}P1=0xfe;delay(z);P1=f;delay(z);a=0xfe;delay(z);a=a<<1;P1=a;delay(z);for(l1=0;l1<6;l1++) //l1==6 {a=_crol_(a,1);P1=a;delay(z);}P1=0x7f;a=0x7f;P3=a;delay(z);P1=f;a=a>>1;P3=a;for(k1=0;k1<6;k1++){a=_cror_(a,1);P3=a;delay(z);}P3=0xfe;a=0xfe;P2=a;delay(z);P3=f;a=a<<1;delay(z);for(j1=0;j1<6;j1++) {a=_crol_(a,1);P2=a;delay(z);}P2=0x7f;a=0x7f;P0=a;delay(z);P2=f;a=a>>1;P0=a;delay(z);for(i1=0;i1<6;i1++) {a=_cror_(a,1);P0=a;delay(z);}P0=0xfe;delay(z);P0=f;delay(z);}void lsd4() //lsd4{uchar a,i,j,k,l,l1,k1,j1,i1;P0=a;delay(z);for(i=0;i<7;i++){a=a<<1; //单个灯依次点亮所有灯,从上往下P0=a;delay(z);}a=0xfe;P2=a;delay(z);for(j=0;j<7;j++){a=a<<1;P2=a;delay(z);}a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=a<<1;P3=a;delay(z);}a=0xfe;P1=a;for(l=0;l<7;l++){a=a<<1;P1=a;delay(z);}for(l1=0;l1<8;l1++) //l1==8{P1=table1[l1]; //单个灯依次熄灭所有灯,从下往上delay(z);}for(k1=0;k1<8;k1++){P3=table1[k1];delay(z);}for(j1=0;j1<8;j1++){P2=table1[j1];delay(z);}for(i1=0;i1<8;i1++){P0=table1[i1];delay(z);}}void lsd5() //lsd5{uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i++){a=a<<1;P0=a;delay(z);}for(j=0;j<8;j++) //单个灯依次点亮所有灯,从下往上{P2=table2[j];delay(z);}a=0xfe;P3=a;delay(z);for(k=0;k<7;k++){a=a<<1;P3=a;delay(z);}for(l=0;l<8;l++){P1=table2[l];delay(z);}for(l1=0;l1<8;l1++) //单个灯依次熄灭所有灯,从上往下{P1=table3[l1];delay(z);}for(k1=0;k1<8;k1++){P3=table1[k1];delay(z);}for(j1=0;j1<8;j1++) //单个灯依次熄灭所有灯,从上往下{P2=table3[j1];delay(z);}for(i1=0;i1<8;i1++){P0=table1[i1];delay(z);}}void lsd6() //每组为单位同亮同灭从左向右再向左{P0=0x00;delay(z);P0=0xff;P2=0x00;delay(z);P2=0xff;P3=0x00;delay(z);P3=0xff;P1=0x00;delay(z);P3=0x00;P1=0xff;delay(z);P2=0x00;P3=0xff;delay(z);P0=0x00;P2=0xff;delay(z);P0=0xff;delay(z);}void lsd7() //lsd7 全亮全灭{uchar i;for(i=0;i<2;i++){P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(z);P0=0xff;P1=0xff;P2=0xff;P3=0xff;delay(z);}}void lsd8() //每组仅两个灯,从中间往两边再往中间{uchar i;for(i=0;i<8;i++){P0=table4[i];P1=table4[i];P2=table4[i];P3=table4[i];delay(z);}}void lsd9() //每组两个灯引亮所有灯再引灭,从中间带两边再到中间{uchar i;for(i=0;i<8;i++){P0=table5[i];P1=table5[i];P2=table5[i];P3=table5[i];delay(z);}}void lsd10(){uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i++) //仅单个灯亮从上往下流{a=_crol_(a,1);P0=a;P1=a;P2=a;P3=a;delay(z);}for(j=0;j<7;j++) //仅单个灯亮从上往下流{a=_cror_(a,1);P0=a;P1=a;P2=a;P3=a;delay(z);}P0=f;P1=f;P2=f;P3=f;delay(z);void lsd11() {uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i++) {a=a<<1;P0=a;P1=a;P2=a;P3=a;delay(z);}for(j=0;j<8;j++) {P0=table1[j];P1=table1[j];P2=table1[j];P3=table1[j]; delay(z);}}void lsd12()uchar a,i,j,k,l;a=0xfe;P0=a;P1=a;delay(z);for(i=0;i<7;i++) {a=a<<1;P0=a;P1=a;delay(z);}a=0x7f;P2=a;P3=a;delay(z);for(j=0;j<7;j++) {a=a>>1;P2=a;P3=a;delay(z);}for(k=0;k<8;k++) {P2=table3[k];P3=table3[k]; delay(z);}for(l=0;l<8;l++) {P0=table1[l];P1=table1[l]; delay(z);}while(1);}。
单片机流水灯实验电路图+仿真
八、实验中的问题
1.程序编译问题
初始编程时出现语法错误,后修正
2、循环显示出现问题,循环不能持续。修改程序延时,及数码移位程序片段。
2、在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可
五、C语言源程序
#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
uchar code DIS_SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
for(cnt = 0; cnt < 8; cnt++) {//点亮数码管0-7
P2 = 0;
P0 = DIS_SEG7[DISP[cnt]];
P2 = ~DIS_BIT[cnt];
delay1ms(1);
}
ttt = DISP[0];
DISP[0] = DISP[1];
DISP[1] = DISP[2];
单片机实验
项目____拉幕式数码显示_______
学号___1204180217_____
专业__能源工程及其自动化__
班级____02____________
姓名___邵鹏程_________
一、实验目的
1,对单片机进一步了解熟悉
2,掌握数码管显示技术及编程
3,巩固理论知识及
二、实验内容
用51单片机8位控制数码管,在数码管上显示“01234567”,并能循环显示。
三、实验原理图
四、程序设计方法
1、动态数码显示技术;如何进行动态扫描,由于一次只能让一个数码管显示,因此,要显示8位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显式的时间大约在1ms到4ms之间,所以为了保证正确显示,必须每隔1ms,就得刷新一个数码管。而这刷新时间我们采用单片机的定时/计数器来控制,每定时1ms对数码管刷新一次。
[附]单片机Proteus仿真-流水灯
1)编译器设置 单击菜单【Source】(源代码)→【Define Code Generation Tools】,设置结果如图
2)编译源程序,生成目标代码文件 单击菜单【Source】(源
代码)→【Bulid All】(编译全部)。如果出现错误则修改;无
错误则生成目标代码“.HEX”文件。
基于PROTEUS的单片机仿真
嵌入式系统与接口技术
北京理工大学光电学院 2018-9-10
1
基于PROTEUS的单片机仿真
基于PROTEUS的单片机仿真
循环点亮发光二极管程序仿真
说明:要点亮一个发光二极 管,必须在其两端加上足够 的电压,一般为5V,而且二 极管必须要正向接法,同时 还要加上限流电阻。 【例】用51系列单片机的I/O 口点亮发光二极管。
3.1 添加目标代码到电路 2)选择要添加的目标代码文件,单击“打开”按钮,目标代码 就添加到了电路中。
最后按 “确定”
22
基于PROTEUS的单片机仿真
3 单片机电路的仿真与调试
3.2 电路调试
全速启动仿真
23
基于PROTEUS的单片机仿真
3 单片机电路的仿真与调试
3.2 电路调试
Led灯点亮 24
由上图可知,若要使灯点亮,
根据发光二极管点亮条件,只
要P2.0引脚输出为低电平即可,
即P2.0=0。
2
基于PROTEUS的单片机仿真
1 单片机电路的建立
1.1 51系列单片机应用电路图(流水灯)
3
基于PROTEUS的单片机仿真
1 单片机电路的建立
1.2 元器件的选取
在桌面上选择【开始】→【程序】→“Proteus 7 Professional”,单击蓝色图标“ISIS 7 Professional” 打开应用程序。ISIS Professional的编辑界面如图
(完整word版)基于单片机仿真软件proteus的流水灯实验报告
单片机原理》实验报告题目:流水灯设计姓名:刘伟学号:1042157110专业:10 计科特色班院系:信息工程学院指导老师:史先桂完成时间:2014 年 4 月19 日安徽新华学院教务处制一、实验目的1、熟练掌握单片机仿真软件proteus 使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、帮助学生养成良好实验习惯。
二、实验内容单片机仿真软件proteus 上实现8个发光LED “流水”的现象,实现两个流水灯情况:1、先奇数灯亮,再偶数灯亮;2、实现流水灯从两边向中间亮,再从中间到两边亮。
并通过编写程序控制流水现象。
三、实验说明依照实验的硬件电路原理,在单片机仿真软件proteus 上进行硬件电路的模拟,然后进行实验。
在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。
四、实验环境硬件:pc 机;软件:单片机仿真软件proteus。
五、实验原理图六、实验参考程序#include<reg52.h>#include<intrins.h>void delay_ms(int n){int i,j;for(i=0;i<n;i++)for(j=0;j<110;j++);void main(){int i, num; unsigned char p1; unsigned char p0, p; while(1) {for(i=0; i<3; i++) // 间隔500ms 先奇数亮再偶数亮,循环三次{P1=0xaa; P0=p1; delay_ms(500);// 延时n 毫秒P1=0x55;P0=p1; delay_ms(500);}p1= 0xfe;num=3;while(num-- > 0) // 一个灯上下循环三?{ for(i=0; i<8; i++) {P0=p1; delay_ms(100); p1=_cror_(p1,1);}}//两个分别从两边往中间流动三?p1= 0xfe;p0= 0x7f;num=3;while(num-- > 0){for(i=0; i<4; i++) //让LED 灯从两边向中间点亮{p1=_crol_(p1,1);p0=_cror_(p0,1); p=p1&p0;delay_ms(100);P1=p;P0=p;// p1= 0xef;p0= 0xf7;num=3;while(num-- > 0){for(i=0; i<4; i++){p1=_crol_(p1,1);p0=_cror_(p0,1); p=p1&p0; delay_ms(100);P1=p;P0=p;}}//8 个全部闪烁3 次? num=3;while(num-- > 0){p1=0;delay_ms(500);p1=1; delay_ms(500);}break;}}模拟演示图:1)模拟单片机的偶数灯亮2)模拟单片机的奇数灯亮3)模拟单片机流水灯从两边到中间亮4)模拟单片机流水灯从中间到两边亮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机(c语言控制的)流水灯程序设计及proteus仿真图
89c51与8个发光二极管相连流水控制
一、不同花样的控制源程序代码:
/*#include<reg51.h>
#define uchar unsigned char;
uchar
ledtab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0 xbf,0x7f};
void delay(int n)
{while(n--);}
main()
{
int i;
while(1)
{
for(i=0;i<8;i++)
{
P1=ledtab[i];
delay(20000);
} //1~8号灯依次闪烁 for(i=0;i<8;i++)
{
P1=ledtab[7-i];
delay(2000);
} // 8~1号灯依次闪烁 }
}
*/
/*#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void main()
{
uint i;
uchar a;
P1=0xfe;
while(1)
{ a=P1;
for(i=1;i<=10;i++)
{delay(300);
P1=0xff;
delay(300);
P1=a;
}
P1=_crol_(P1,1);
}
}
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
*/ //依次闪烁10次后,循环点亮
/* #include<reg51.h>
#include<intrins.h>
#define uint unsigned int
void delay(uint z);
void main()
{
while(1){
P1=0xf0;
delay(1000);
P1=0x0f;
delay(1000);
}
}
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
*/ //4个一组,每隔0.5秒交替闪烁点亮
二、总体的连线图(proteus)
三、对应的各种仿真:
1. //1~8号灯依次闪烁
2. // 8~1号灯依次闪烁
3. //依次闪烁10次后,循环点亮
4. //4个一组,每隔0.5秒交替闪烁点亮。