[整理版]proteus仿真单片机实例
- 格式:doc
- 大小:62.50 KB
- 文档页数:4
《基于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++);}}//主程序{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此后变红灯,东西向变绿灯,如此重复。
基于proteus的51单片机仿真实例九、51单片机的最小工作系统1、前面我们已经利用proteus和keil c51建立了第一个仿真实例,并通过仿真运行验证了我们的实例的正确性。
现在我们已经了解了proteus和keil c51的基本操作。
2、但是毕竟是初学单片机,对于我们前面编写的程序所实现的功能可就是一头雾水,不知所云了。
那么接下来我们就了解一下51单片机的知识吧3、先来简单说说怎么学习单片机。
前面已经说过,单片机是一种软件和硬件紧密结合的技术,对于一个单片机应用系统来说,硬件电路是单片机系统运行的基础和保障,软件程序是单片机系统的灵魂。
相对于人来说,人的身体、四肢是一个硬件系统,大脑就是软件系统,只有通过大脑发出指令,身体的各个部分才会做出相应的动作,但是如果手被绑住了,大脑即使发出让手去拿一个杯子的指令,手也无法完成这个指令。
所以软件和硬件需要相互结合才能够去完成一项任务。
1)就像我们新买了一台电视机一样,买回来后我们会首先了解一下这个电视机的功能特点,看一下遥控器的说明书,给电视机加上电源和天线(或有线电视信号线),然后按照说明书的使用方法来一步一步熟悉和操作电视机。
单片机的学习也一样,我们接触到一种单片机后,首先要了解这种单片机的功能和性能特点,然后才能进行相应的开发设计。
怎么来了解一种单片机呢?单片机厂家提供的数据手册是第一手也是最准确的资料。
但是很多数据手册是英文的,对于我们很多人来说,看起来会比较吃力。
不过幸运的是,现在很多资料都已经被翻译过来了。
我们到网上搜索一下,会搜索到很多的中文数据手册和应用实例,所以网络现在已经成为我们学习的一个非常重要的工具和平台了。
2)单片机的结构是十分复杂的,我们打开一个单片机的数据手册,会发现前面里面到处充斥着结构图和理论知识的介绍,相信对于一个新手来说,看数据手册不到10分钟就想放弃。
但是很多人说,这些是最基础的,必须要理解和掌握。
确实,这些东西我们必须精通,但是是不是一开始就要完全精通这些呢?大可不必。
实验一:单片机仿真初步(二)-Proteus的使用用来仿真的单片机电路,如下图所示:电路的核心是单片机A T89C52,晶振X1和电容C1、C2构成单片机时钟电路,单片机的P1口接8个发光二极管,二极管的阳极通过限流电阻接到电源的正极。
特别注意:下面文中所有值为1K的电阻都修正成100 可以考虑把红色发光二极管换成黄色发光二极管一、新建一个设计。
单击“File”中“New Design……”,在Proteus中打开了一个空白的新电路图纸。
二、将需要用到的元器件加载到对象选择器窗口。
单击对象选择器按钮如图所示:弹出“Pick Devices”对话框,在“Category”下面找到“Mircoprocessor ICs”选项,鼠标左键点击一下,在对话框的右侧,我们会发现这里有大量常见的各种型号的单片机。
找到AT89C52,双击“AT89C52”。
这样在左侧的对象选择器就有了A T89C52这个元件了。
如果知道元件的名称或者型号我们可以在“Keywords”输入AT89C52,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如下图所示:在“Results”的列表中,双击“A T89C52”即可将AT89C52加载到对象选择器窗口内。
晶振CRY:无极性电容CAP:有极性电容CAP POL:红色发光二极管LED-RED:电阻RES经过前面的操作我们已经将A T98C52、晶振等元件加载到了对象选择器窗口内。
在对象选择器窗口内鼠标左键点击“AT89C52”会发现在预览窗口看到AT89C52的实物图,且绘图工具栏中的元器件按钮处于选中状态。
我们在点击“CRYSTAL”、“LED-RED”也能看到对应的实物图,按钮也处于选中状态,如图所示:三、将元器件放置到图形编辑窗口。
在对象选择器窗口内,选中A T89C52,如果元器件的方向不符合要求可使用预览对象方向控制按钮进行操作。
如用按钮对元器件进行顺时针旋转,用按钮对元器件进行逆时针旋转,用按钮对元器件进行左右反转,用按钮对元器件进行上下反转。
以下是一个基于8051单片机和Proteus仿真环境的C语言程序设计实例:实例1:点亮LED灯
在这个例子中,我们将使用C语言编写一个简单的程序来控制8051单片机的一个I/O引脚,使其驱动一个LED灯。
c代码:
要使用Proteus进行仿真,你需要按照以下步骤操作:
1. 打开Proteus软件,创建一个新的设计工程。
2. 在元件库中搜索并添加相应的8051单片机型号(如AT89C51)和LED 元件到工作区。
3. 根据实际硬件连接,正确配置单片机的引脚和LED的连接。
4. 右键单击单片机元件,选择“Edit Component”打开编辑窗口。
5. 在“Program File(s)”区域,点击右侧的浏览按钮,选择你的C语言源文件(如上述的main.c)。
6. 点击“OK”关闭编辑窗口,然后点击工具栏上的“Play”按钮开始仿真。
在仿真过程中,你应该能看到LED灯被点亮,这表明你的C语言程序已经在Proteus环境中成功运行。
以上只是一个基础的例子,实际的"单片机C语言程序设计实例100例--基于8051+Proteus仿真"会包含更复杂和多样化的应用场景,包括定时器/计数器
应用、中断处理、串口通信、ADC/DAC转换、液晶显示等等。
每个实例都会详细介绍程序设计思路、代码实现以及如何在Proteus中进行仿真调试。
通过这些实例的学习和实践,你可以逐步掌握8051单片机的C语言编程技巧和Proteus仿真环境的使用方法。
实验1 PROTUES环境及LED闪烁实验1.实验任务做一个闪烁灯:在P1.0端口上接一个发光二极管D1,使D1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒,重复循环。
2.电路原理图3.程序设计内容(1)延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大多是微秒级。
实验要求的闪烁时间间隔为0.2秒,所以在执行某一指令时,需要插入延时程序,来达到实验的要求。
延时子程序如下:DELAY: MOV R5, #20D1: MOV R6, #20D2: MOV R7, #248DJNZ R7, $DJNZ R6, D2DJNZ R5, D1RET(2)输出控制如上图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
实验2 外部中断实验1.实验任务设计一个交通灯正常工作程序,并在有意外情况发生的情况下,能自动中断进入到中断服务程序运行,进行紧急事故处理,处理完成后能回到正常工作程序继续运行。
如原理图所示,P1接一位数码管用于显示时间,P2端口接东西方向和南北方向红绿灯,P3.2接一个按钮用于模拟一个外部中断源,当正常工作时,东西方向绿灯亮8秒,然后南北方向绿灯亮9秒;当模拟中断源发出中断信号时,东西和南北红灯亮5秒后返回正常工作程序。
(注:这里数码管选用了共阳极的数码管)数码管的段选码如下表所示:2.电路原理图3.程序设计内容(1)从proteus库中选取元器件:单片机AT89C51、磁片电容CAP、电解电容CAP-ELEC,晶振CRYSTAL、电阻RES、数码管7SEG-COM-CAT-GRN,按钮BUTTON,发光二极管等。
(2)设计延时程序。
实验3 T0波形发生器实验1.实验任务(1)首先用AT89C51单片机定时器/计数器0的定时功能构成一方波发生器,实现周期为400us的方波输出,如图所示,P3.5,p3.7是两个波形输出端,分别输出反相波形,两路波形输入虚拟示波器的A通道和B通道,用示波器观察方波的周期是否是400us。
(完整版)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此后变红灯,东西向变绿灯,如此重复。
基于proteus的51单片机仿真实例八十三-PROTEUS技术交流区-PROTE...proteus, 单片机, 实例, 仿真1、SPI总线器件与单片机的连接需要3跟线:时钟线SCK,数据线MOSI(主机发送,从机接收)和MISO(主机接收,从机发送)。
X5045是一种集合了看门狗、电压监控和串行EEPROM三种功能于一身的器件。
上电复位功能:在系统上电时产生一个足够长时间的复位信号,以确保单片机正常工作前,系统电路已处于稳定状态。
看门狗功能:如果在规定的时间内单片机没有在CS引脚产生规定的电平变化(喂狗信号),芯片内的看门狗电路将产生复位信号。
利用该功能,可让单片机死机后自动复位并开始工作。
电压检测:当电源电压下降到一定的值后,虽然单片机仍能工作,但可能已经不能稳定工作了,此时X5045将产生复位信号,直到电压恢复正常后,才能正常工作。
串行EEPROM:X5045自带512字节的数据存储空间,数据可掉电保存。
2、x5045的引脚及功能CS/WDI:片选输入端。
低电平时选中该芯片SO:串行数据输出端,数据在sck的下降沿输出WP:写保护端,该脚接地,写操作被禁止,接高电平,所有功能正常VSS:电源地SI:串行数据输入端,数据在sck的上升沿写入(高位在前)SCK:串行时钟端,RESET:复位输出端,用于电源监测和看门狗超时输出VCC:电源3、使用方法1)上电复位:当器件通电并超过规定值时,X5045内部的复位电路将会产生一个约200ms的复位脉冲,使单片机正常复位。
2)电压检测:工作过程中,X5045能不断检测VCC端的电压,在电压下降到一定值后,将产生一个复位脉冲,使单片机停止工作,这个复位脉冲一直有效,直到VCC下降到1V以下,整个系统停止工作。
如果VCC在下降后又升高,则当超过规定值后200ms,复位信号消失,单片机可以继续工作。
3)看门狗定时器:看门狗定时器电路通过检测WDI端的输入来判断单片机工作是否正常,在规定的时间内,单片机必须在WDI端口产生一个由高到低的电平变化。
《单片机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 intvoid 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){{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 unsignedchar#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此后变红灯.东西向变绿灯.如此重复。
172例-Proteus仿真设计-单片机毕业设计项目汇总(合集)电子类毕业设计分享001【Proteus仿真设计】基于51单片机智能模拟电梯设计Proteus仿真C语言程序资料14-083 002【Proteus仿真设计】基于51单片机智能S型热电偶高温测量设计Proteus仿真资料14-133003【Proteus仿真设计】基于51单片机智能十字路口交通灯设计Proteus仿真C语言资料14-135004【Proteus仿真设计】基于51单片机智能电子密码锁设计Proteus仿真C语言程序资料14-143005【Proteus仿真设计】基于51单片机智能温度控制器设计Proteus仿真C语言程序资料14-161006【Proteus仿真设计】基于51单片机智能音乐盒音乐播放器设计Proteus仿真资料14-197 007【Proteus仿真设计】基于51单片机智能光控窗帘设计Proteus仿真C语言程序资料14-204 008【Proteus仿真设计】基于51单片机智能交通灯设计Proteus仿真C语言程序资料14-208 009【Proteus仿真设计】基于纯模拟电路220V充电器仿真Multisim仿真设计资料14-362010【Proteus仿真设计】基于纯模拟电路拨码开关控制数码管显示Multisim仿真资料16-009 011【Proteus仿真设计】基于51单片机智能恒温箱设计Proteus仿真C语言程序资料16-085 012【Proteus仿真设计】基于51单片机智能红外视力保护坐姿设计Proteus仿真资料16-510013【Proteus仿真设计】基于AVR16单片机的多功能数据采集设计Proteus仿真程序资料16-579014【Proteus仿真设计】基于51单片机智能数字温度计设计Proteus仿真C语言程序资料16-672015【Proteus仿真设计】基于51单片机智能CO温度报警风扇设计Proteus仿真C语言资料17-037016【Proteus仿真设计】基于AVR16单片机智能八键电子琴设计Proteus仿真程序资料17-039 017【Proteus仿真设计】基于51单片机智能门铃设计Proteus仿真C语言程序资料17-090018【Proteus仿真设计】基于51单片机太阳能风能锂电池路灯设计Proteus仿真资料17-111019【Proteus仿真设计】基于51单片机智能温湿度光照控制设计Proteus仿真程序资料17-120020【Proteus仿真设计】基于51单片机智能红外遥控器设计Proteus仿真C语言程序资料17-125021【Proteus仿真设计】基于51单片机智能超声波盲人报警器设计Proteus仿真资料17-139 022【Proteus仿真设计】基于51单片机智能自动化定氮仪设计Proteus仿真程序资料17-184 023【Proteus仿真设计】基于51单片机智能大棚花卉生长检测设计Proteus仿真资料17-205 024【Proteus仿真设计】基于51单片机智能太阳能电池板清洁设计Proteus仿真资料17-207025【Proteus仿真设计】基于51单片机智能点阵LED广告系统设计Proteus仿真程序资料17-210026【Proteus仿真设计】基于51单片机智能太阳能追光设计Proteus仿真C语言程序资料17-217027【Proteus仿真设计】基于51单片机智能电子称HX711设计Proteus仿真程序资料17-246 028【Proteus仿真设计】基于51单片机智能可燃气报警ADC0809设计Proteus仿真资料17-261 029【Proteus仿真设计】基于51单片机智能电动机保护装置震动设计Proteus仿真资料17-296 030【Proteus仿真设计】基于51单片机智能模拟电梯设计Proteus仿真C语言程序资料17-307031【Proteus仿真设计】基于51单片机智能数字电压表设计Proteus仿真C语言程序资料17-333032【Proteus仿真设计】基于51单片机智能铁路信号机设计Proteus仿真C语言程序资料17-351033【Proteus仿真设计】基于51单片机智能大气质量检测设计Proteus仿真程序资料17-361 034【Proteus仿真设计】基于51单片机智能皮带传输位置控制设计Proteus仿真资料17-362 035【Proteus仿真设计】基于51单片机智能交流电频率检测设计Proteus仿真程序资料17-367 036【Proteus仿真设计】基于51单片机智能物料搬运设计Proteus仿真程序资料17-371 037【Proteus仿真设计】基于51单片机智能锅炉温度控制设计Proteus仿真程序资料17-375038【Proteus仿真设计】基于51单片机智能光控路灯设计Proteus仿真C语言程序资料17-406039【Proteus仿真设计】基于51单片机智能台灯设计Proteus仿真C语言程序资料17-432 040【Proteus仿真设计】基于51单片机智能数控可调电源设计Proteus仿真程序资料17-475 041【Proteus仿真设计】基于51单片机智能刹车控制系统设计Proteus仿真程序资料17-547042【Proteus仿真设计】基于51单片机智能光照度计ADC0832设计Proteus仿真程序资料17-557043【Proteus仿真设计】基于51单片机智能光照度计PCF8591设计Proteus仿真程序资料17-557044【Proteus仿真设计】基于51单片机智能热水器DS18B20设计Proteus仿真程序资料18-636 045【Proteus仿真设计】基于51单片机智能台灯节能照明灯设计Proteus仿真程序资料18-652 046【Proteus仿真设计】基于51单片机室内人体红外感应灯设计Proteus仿真程序资料18-677 047【Proteus仿真设计】基于51单片机智能温度检测系统设计Proteus仿真程序资料18-706 048【Proteus仿真设计】基于51单片机智能遮阳篷窗户衣架设计Proteus仿真程序资料18-742049【Proteus仿真设计】基于51单片机智能加湿器控制设计Proteus仿真C语言程序资料18-752050【Proteus仿真设计】基于51单片机智能步进电机控制设计Proteus仿真程序资料18-754 051【Proteus仿真设计】基于51单片机智能豆浆机控制设计Proteus仿真程序资料18-779 052【Proteus仿真设计】基于51单片机智能太阳能充电控制设计Proteus仿真程序资料18-787 053【Proteus仿真设计】基于51单片机智能全自动洗衣机设计Proteus仿真程序资料18-798 054【Proteus仿真设计】基于51单片机智能出租车计价器设计Proteus仿真程序资料18-856 055【Proteus仿真设计】基于51单片机智能火灾报警器烟雾设计Proteus仿真程序资料18-863056【Proteus仿真设计】基于51单片机智能心率计检测设计Proteus仿真C语言程序资料18-928057【Proteus仿真设计】基于51单片机数控直流稳压电源设计Proteus仿真程序资料18-983058【Proteus仿真设计】基于51单片机直流电机红外测速设计Proteus仿真程序资料18-1111059【Proteus仿真设计】基于51单片机智能火灾报警设计Proteus仿真C语言程序资料18-1127060【Proteus仿真设计】基于51单片机太阳能锂电池路灯光照设计Proteus仿真资料18-1148 061【Proteus仿真设计】基于51单片机汽车防疲劳驾驶瞌睡报警设计Proteus仿真资料19-055 062【Proteus仿真设计】基于51单片机智能洗衣机设计Proteus仿真资料19-071-不带浸泡063【Proteus仿真设计】基于51单片机智能洗衣机设计Proteus仿真资料19-071-带浸泡064【Proteus仿真设计】基于51单片机智能热释红外报警器设计Proteus仿真程序资料19-099065【Proteus仿真设计】基于51单片机智能电子血压计设计Proteus仿真C语言程序资料19-103066【Proteus仿真设计】基于51单片机智能温湿度检测粮仓控制设计Proteus仿真资料19-105 067【Proteus仿真设计】基于51单片机智能热敏电阻温度计设计Proteus仿真程序资料19-198 068【Proteus仿真设计】基于51单片机智能空调设计Proteus仿真C语言程序资料19-277 069【Proteus仿真设计】基于51单片机智能鞋柜仿真设计Proteus仿真C语言程序资料19-287 070【Proteus仿真设计】基于51单片机智能动车烟雾报警器设计Proteus仿真程序资料19-291 071【Proteus仿真设计】基于51单片机智能停车场管理车位引导设计Proteus仿真资料19-353 072【Proteus仿真设计】基于51单片机智能步进电机正反转转速设计Proteus仿真资料19-365 073【Proteus仿真设计】基于51单片机智能核辐射脉冲检测设计设计Proteus仿真资料19-373 074【Proteus仿真设计】基于51单片机智能窗户控制系统设计Proteus仿真C程序资料19-414 075【Proteus仿真设计】基于51单片机红外洗手器干手烘干设计Proteus仿真程序资料19-499 076【Proteus仿真设计】基于51单片机智能超市无人售货售卖机设计Proteus仿真资料19-519 077【Proteus仿真设计】基于51单片机智能无线数字温度计设计Proteus仿真程序资料19-536 078【Proteus仿真设计】基于51单片机智能交通信号灯设计Proteus仿真C语言程序资料19-569079【Proteus仿真设计】基于51单片机智能太阳能蓄电池路灯设计Proteus仿真资料19-621080【Proteus仿真设计】基于51单片机智能电机PWM调速霍尔设计Proteus仿真程序资料19-664081【Proteus仿真设计】基于51单片机智能GSM红外防盗报警器设计Proteus仿真资料19-707 082【Proteus仿真设计】基于51单片机智能HX711电子称设计Proteus仿真程序资料19-710 083【Proteus仿真设计】基于51单片机智能病床呼叫设计Proteus仿真C语言程序资料19-744 084【Proteus仿真设计】基于51单片机智能家居甲醛检测设计Proteus仿真程序资料19-829 085【Proteus仿真设计】基于51单片机智能台灯设计Proteus仿真C语言程序资料19-830 086【Proteus仿真设计】基于51单片机智能自行车智能辅助设计Proteus仿真程序资料19-895 087【Proteus仿真设计】基于51单片机智能PM2.5报警器设计Proteus仿真程序资料19-897 088【Proteus仿真设计】基于51单片机智能八路无线抢答器设计Proteus仿真程序资料19-899089【Proteus仿真设计】基于51单片机智能万年历系统设计Proteus仿真C语言程序资料19-914090【Proteus仿真设计】基于51单片机智能电子琴系统设计Proteus仿真C语言程序资料19-938091【Proteus仿真设计】基于51单片机智能超声波测距系统设计Proteus仿真程序资料19-939 092【Proteus仿真设计】基于51单片机智能超声波测距报警设计Proteus仿真程序资料19-955 093【Proteus仿真设计】基于51单片机智能火灾报警系统设计Proteus仿真程序资料19-965094【Proteus仿真设计】基于51单片机智能脉搏心率计设计Proteus仿真C语言程序资料19-980095【Proteus仿真设计】基于51单片机智能空调设计Proteus仿真C语言程序资料19-993096【Proteus仿真设计】基于51单片机智能多路超声波报警设计Proteus仿真程序资料19-1024097【Proteus仿真设计】基于51单片机智能音乐盒花样流水灯设计Proteus仿真资料19-1032098Matlab仿真图程序智能车牌识别除雾系统设计仿真资料20-055099【Proteus仿真设计】基于51单片机智能泵站供水仿真设计Proteus仿真程序资料20-116 100【Proteus仿真设计】基于51单片机智能仿自然风风扇设计Proteus仿真程序资料20-497 101【Proteus仿真设计】基于51单片机智能纱线张力检测设计Proteus仿真程序资料20-558102【Proteus仿真设计】基于MSP430F149单片机智能压力变送器设计Proteus仿真资料20-573103【Proteus仿真设计】基于51单片机智能单相无功补偿控制器设计Proteus仿真资料20-605 104【Proteus仿真设计】基于51单片机智能工频交流电参数测量设计Proteus仿真资料20-639 105【Proteus仿真设计】基于51单片机智能污水监测采集设计Proteus仿真程序资料20-652106【Proteus仿真设计】基于51单片机智能温度控制仪设计Proteus仿真C语言程序资料20-669107【Proteus仿真设计】基于51单片机智能紫外线强度检测仪设计Proteus仿真资料20-672108【Proteus仿真设计】基于STM32单片机智能交通灯红绿灯设计Proteus仿真程序资料21-013109【Proteus仿真设计】基于NE555多谐振荡器温度热敏电阻报警设计Proteus仿真资料21-016110【Proteus仿真设计】基于51单片机智能大棚温湿度报警检测设计Proteus仿真资料21-031 111【Proteus仿真设计】基于STM32单片机智能单相电频率检测设计Proteus仿真资料21-077 112【Proteus仿真设计】基于51单片机智能电子称重压力检测设计Proteus仿真资料21-186113【Proteus仿真设计】基于51单片机智能指纹密码锁设计Proteus仿真C语言程序资料21-200114【Proteus仿真设计】基于51单片机智能数控可调电源设计Proteus仿真程序资料21-260 115【Proteus仿真设计】基于51单片机智能大棚浇花浇水土壤设计Proteus仿真资料21-471 116【Proteus仿真设计】基于51单片机智能太阳能光伏充电器设计Proteus仿真资料21-681117【Proteus仿真设计】基于51单片机智能函数信号发生器设计Proteus仿真程序资料21-699118【Proteus仿真设计】基于51单片机智能函数信号发生器设计Proteus仿真程序资料21-804 119【Proteus仿真设计】基于51单片机远程智能大棚设计Proteus仿真C语言程序资料21-807 120【Proteus仿真设计】基于51单片机智能空气PM2.5检测设计Proteus仿真程序资料21-845121【Proteus仿真设计】基于51单片机智能贪吃蛇游戏设计Proteus仿真C语言程序资料21-850122【Proteus仿真设计】基于51单片机智能无线环境检测设计Proteus仿真程序资料21-862123【Proteus仿真设计】基于51单片机智能多功能LED显示广告屏设计Proteus仿真资料21-868124【Proteus仿真设计】基于51单片机智能太阳能路灯设计Proteus仿真C语言程序资料21-887125【Proteus仿真设计】基于51单片机智能控制分时测温仪设计Proteus仿真程序资料21-902 126【Proteus仿真设计】基于51单片机智能自动寻光小车设计Proteus仿真言程序资料21-933127【Proteus仿真设计】基于51单片机智能交通灯数码管设计Proteus仿真资料22-090报警128【Proteus仿真设计】基于51单片机智能交通灯数码管设计Proteus仿真资料22-090无报警129【Proteus仿真设计】基于51单片机智能汽车防盗系统设计Proteus仿真程序资料23-021130【Proteus仿真设计】基于51单片机智能光照度计PCF8591设计Proteus仿真程序资料23-025131【Proteus仿真设计】基于STM32单片机智能热电偶锅炉恒温箱设计Proteus仿真资料23-083132【Proteus仿真设计】基于51单片机智能蓄电池充电器过充放设计Proteus仿真资料23-105 133【Proteus仿真设计】基于51单片机地铁闸机门控制自动检票设计Proteus仿真资料23-157 134【Proteus仿真设计】基于51单片机智能蓄电池容量检测电压设计Proteus仿真资料23-165 135【Proteus仿真设计】基于51单片机智能台灯控制热释设计Proteus仿真程序资料23-186136【Proteus仿真设计】基于51单片机智能台灯控制设计Proteus仿真C语言程序资料23-211137【Proteus仿真设计】基于STM32单片机智能无线手机充电器设计Proteus仿真资料23-214 138【Proteus仿真设计】基于51单片机智能音乐喷泉频谱音乐盒设计Proteus仿真资料23-219 139【Proteus仿真设计】基于51单片机锂电池电压流容量检测设计Proteus仿真资料23-250 140【Proteus仿真设计】基于51单片机步进电机正反转转速控制设计Proteus仿真资料23-265 141【Proteus仿真设计】基于51单片机智能蓄电池容量检测报警设计Proteus仿真资料23-268 142【Proteus仿真设计】基于51单片机智能三段式电流保护系统设计Proteus仿真资料23-278 143【Proteus仿真设计】基于51单片机煤气天然气CO检测报警设计Proteus仿真资料23-284 144【Proteus仿真设计】基于51单片机智能无线篮球计分器设计Proteus仿真程序资料23-290 145【Proteus仿真设计】基于51单片机风能太阳能锂电池充电器设计Proteus仿真资料23-311 146【Proteus仿真设计】基于51单片机智能声音噪音检测设计Proteus仿真程序资料23-320 147【Proteus仿真设计】基于51单片机智能自行车码表霍尔里程设计Proteus仿真资料23-324148【Proteus仿真设计】基于51单片机智能16键电子琴乐谱音箱设计Proteus仿真资料23-325149【Proteus仿真设计】基于51单片机智能声光控灯楼道灯设计Proteus仿真程序资料23-326 150【Proteus仿真设计】基于51单片机智能酒精浓度检测报警设计Proteus仿真资料23-327 151【Proteus仿真设计】基于51单片机红外遥控定时开关插座设计Proteus仿真资料23-328 152【Proteus仿真设计】基于51单片机电子打铃定时闹铃万年历设计Proteus仿真资料23-329 153【Proteus仿真设计】基于51单片机红外计数器商场统计人数设计Proteus仿真资料23-330154【Proteus仿真设计】基于51单片机智能温控风扇PWM调速设计Proteus仿真程序资料23-331155【Proteus仿真设计】基于51单片机智能出租车计价器计费设计Proteus仿真资料23-332 156【Proteus仿真设计】基于51单片机智能篮球计积分器计时器设计Proteus仿真资料23-333157【Proteus仿真设计】基于51单片机智能八路抢答器报警设计Proteus仿真程序资料23-334158【Proteus仿真设计】基于51单片机智能电子密码锁设计Proteus仿真C语言程序资料23-335159【Proteus仿真设计】基于51单片机智能计算器矩阵键盘设计Proteus仿真程序资料23-341 160【Proteus仿真设计】基于51单片机智能台灯设计Proteus仿真C语言程序资料23-342 161【Proteus仿真设计】基于51单片机智能烟雾温度报警风扇设计Proteus仿真资料23-344 162【Proteus仿真设计】基于51单片机智能热释红外报警器设计Proteus仿真程序资料23-345 163【Proteus仿真设计】基于51单片机智能窗帘窗户设计Proteus仿真C语言程序资料23-347 164【Proteus仿真设计】基于51单片机智能热敏电阻体温计设计Proteus仿真程序资料23-348 165【Proteus仿真设计】基于51单片机锂电池电压电量电流检测设计Proteus仿真资料23-349166【Proteus仿真设计】基于纯模拟电路交通灯倒计时显示故障设计Multisim仿真资料23-350167【Proteus仿真设计】基于STM32单片机智能热电偶设计Proteus仿真C语言程序资料23-351168【Proteus仿真设计】基于51单片机智能土壤湿度温湿度设计Proteus仿真程序资料23-352 169【Proteus仿真设计】基于51单片机智能光控窗帘窗户设计Proteus仿真程序资料23-354 170【Proteus仿真设计】基于51单片机智能环境监测设计Proteus仿真C语言程序资料23-355171【Proteus仿真设计】基于51单片机智能密码存储柜设计Proteus仿真C语言程序资料23-372172【Proteus仿真设计】基于51单片机超声波测距倒车雷达报警设计Proteus仿真资料23-469。
基于proteus的51单片机仿真实例四、第一个proteus仿真实例现在来做第一个基于proteus的仿真实例,同时也了解、熟练一下proteus的使用方法1、打开proteus的智能原理图输入系统ISIS,进入工作环境,2、这个实例中,我们建立如下的电路图。
下面就开始一步一步的实现这个目标吧。
3、单击菜单栏“文件”--“新建设计”选项,弹出模板选择窗口,如下图所示,选择默认模板“DEFAULT”,选择“OK”按钮,即可创建一个新的设计文件。
4、文件创建成功后,要养成立即保存的习惯。
点击“保存”选项,选择保存的路径和文件名。
5、元件的选取。
操作步骤如下图6、点击“P”按钮后,弹出元器件选择对话框。
元器件的选取有两种方法:输入关键字查找、在分类元件中查找。
如下图所示7、添加单片机,在关键字文本框中输入“at89c51”,然后从搜索结果中选择所需要的型号,如下图所示。
选中元件后双击该元件名,该元件就被自动添加到对象选择器。
8、添加电阻。
输入关键字“resistors 470r”,搜索结果栏中将显示所有的匹配元件。
在这里我们选择参数为470R,0.6W的电阻,双击元件名将其添加到对象选择器中。
用同样的方法添加10K电阻(0.6W)到对象选择器中。
9、添加发光二极管。
输入关键字“led-yellow”,在搜索结果栏中选择所需的发光二极管,双击将其放入对象选择器。
10、添加晶振。
输入关键字“cycrtal”,结果搜索栏内只有一种晶振类型,双击将其加入对象选择器。
11、添加电容。
添加33P电容:输入关键字“capacitors”,在搜索结果栏内列出了各种类型的电容,接着输入“33pF”。
则列出各种33pF的电容,选择耐压为50V的电容,双击将其加入对象选择器。
添加10U电容,输入关键字“capactions 10u”,选择“50V radial electrolytic”(圆柱形电解电容),双击将其添加到对象选择器。
1. INT0,INT1中断计数原理图:程序:#include <reg51.h>sbit k3=P3^4;sbit k4=P3^5;unsigned char code led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; unsigned char code seg_code[]={0x20,0x10,0x08,0x04,0x02,0x01};unsigned char led_buffer[]={0,0,0,0,0,0};unsigned int count_a=0,count_b=0;void delay(unsigned int x){unsigned char t;while(x--)for(t=0;t<120;t++);}void display(){unsigned char i;led_buffer[2]=count_a/100;led_buffer[1]=count_a%100/10;led_buffer[0]=count_a%10;if(led_buffer[2]==0){led_buffer[2]=10;if(led_buffer[1]==0)led_buffer[1]=10;}led_buffer[5]=count_b/100;led_buffer[4]=count_b%100/10; led_buffer[3]=count_b%10;if(led_buffer[5]==0){led_buffer[5]=10;if(led_buffer[4]==0)led_buffer[4]=10;}for(i=0;i<6;i++){P2=seg_code[i];P1=led_code[led_buffer[i]];delay(1);}}void main(){IT0=1;IT1=1;PX0=1;IE=0x85;while(1){k3=1;k4=1;if(k3==0) count_a=0;if(k4==0) count_b=0;display();}}void int0() interrupt 0{count_a++;}void int1() interrupt 2{count_b++;}2. INT0中断计数原理图:程序:#include <reg51.h>unsigned char code led_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char led_buffer[]={0,0,0};unsigned count=0;sbit key=P3^6;void display(){led_buffer[2]=count/100;led_buffer[1]=count%100/10;led_buffer[0]=count%10;if(led_buffer[2]==0){led_buffer[2]=10;if(led_buffer[1]==0)led_buffer[1]=10;}P0=led_code[led_buffer[0]];P1=led_code[led_buffer[1]];P2=led_code[led_buffer[2]];}void main(){IE=0x81;IT0=1;while(1){key=1;if(key==0)count=0;display();}}void int0() interrupt 0 {count++;}3.LED点阵原理图:程序:#include <reg51.h>sbit led1=P0^0;sbit led2=P0^1;void delay(long dly){while(dly--);}void main(){SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;RI=0;while(1){if(RI==1){RI=0;switch(SBUF){case 'A':led1=~led1;led2=1;break;case 'B':led1=1;led2=~led2;break;case 'C':led1=~led1;led2=~led2;break;}}else led1=led2=1;delay(1000);}}4.串行通信(MAX232芯片)原理图:程序:#include <reg51.h> sbit led1=P0^0;sbit led2=P0^1;void delay(long dly) {while(dly--);}void main(){SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;RI=0;while(1){if(RI==1){RI=0;switch(SBUF){case 'A':led1=~led1;led2=1;break;case 'B':led1=1;led2=~led2;break;case 'C':led1=~led1;led2=~led2;break;}}else led1=led2=1;delay(1000);}}5.MAX7221芯片原理图:程序:#include <reg51.h>#include <intrins.h>sbit DIN=P2^0;sbit CSB=P2^1;sbit CLK=P2^2;unsigned char code buffer[]={2,0,1,5,10,5,10,9};void delay(long dly){while(dly--);}void write(unsigned char addr,unsigned char dat){unsigned char i;CSB=0;for(i=0;i<8;i++){CLK=0;addr<<=1;DIN=CY;CLK=1;_nop_();_nop_();CLK=0;}for(i=0;i<8;i++) {CLK=0;dat<<=1;DIN=CY;CLK=1;_nop_();_nop_();CLK=0;}CSB=1;}void initialise(){write(0x09,0xff); write(0x0a,0x07); write(0x0b,0x07); write(0x0c,0x01);}void main(){unsigned char i; initialise();delay(10);for(i=0;i<8;i++)write(i+1,buffer[i]); while(1);}6. T0控制LED实现二进制计数原理图:程序:#include <reg51.h>void main(){TMOD=0x05;TR0=1;TH0=0x00;TL0=0x00;while(1){P1=TH0;P2=TL0;}}8. 按键控制LED循环原理图:程序:#include <reg51.h>#include <intrins.h>void delay(unsigned int x){while(x--);}void move_led(){if((P1&0x10)==0) P0=_cror_(P0,1);else if((P1&0x20)==0) P0=_crol_(P0,1);else if((P1&0x40)==0) P2=_cror_(P2,1);else if((P1&0x80)==0) P2=_crol_(P2,1);}void main(){unsigned char key;P0=0xfe;P2=0xfe;P1=0xff;key=0xff;while(1){if(key!=P1){key=P1;move_led();delay(15000); }}}9.按键控制数码管显示原理图:程序:#include <reg51.h>unsigned char code led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; unsigned char code led_seg[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsigned char led_buffer[]={0,10,10,10,10,10,10,10};void delay(unsigned int x){unsigned char t;while(x--) for(t=0;t<120;t++);}void led_display(){unsigned char i;for(i=0;i<8;i++){P2=led_seg[i];P0=led_code[led_buffer[i]];delay(2);}}void main(){unsigned char i,key_val,key_count=0;P0=0xff;P1=0xff;P2=0x00;while(1){led_display();key_val=P1;switch(key_val){case 0xfe:key_count++;if(key_count>8) key_count=8;led_buffer[key_count-1]=key_count;break;case 0xfd:if(key_count>0) led_buffer[--key_count]=10;if(key_count==0) led_buffer[0]=0;break;case 0xfb:led_buffer[0]=0;for(i=1;i<8;i++)led_buffer[i]=10;key_count=0;}while(P1!=0xff)led_display();}}10.报警器原理图:程序:#include <reg51.h>sbit SOUNDER=P1^0;sbit BUTTON=P1^7;void delay(unsigned int x){while(x--);}void alarm(unsigned char t){unsigned char i,j;for(i=0;i<200;i++){SOUNDER=!SOUNDER;for(j=0;j<t;j++);delay(15);}}void main(){SOUNDER=0;while(1){BUTTON=1;if(BUTTON==1){alarm(90);alarm(120);}}}。
[整理版]proteus仿真单片机实例
用器和存储器、断点和单步模式Proteus一部分是智能原理图输入系统引言Keil C51 运行可提供单片机体积小Proteus进行编译,编译成功后生成30的多种元件库,超过 ISIS,重量轻,进入仿真软件的主界面,如图等多种系列的处理器。
IAR C-SPY,Keil,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多ISIS(Intelligent Schematic Input System)8000data.hex,也可以仿真模拟数字混合电路。
种模拟、数字元器件。
可以按照设计的要求选择、MPLAB文件。
Protues 等开发工具的源程序进行调试的功包含强大的调试工具,具有对寄存1 所示。
主界面分为菜单栏,工具3.2 绘制电路图,编写和虚拟系统模型 data.c文件,能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化不同生产厂家的元器件。
此外,对于元器件库中没有的元件,设计者也可以通过软件自己创VSM(Virtual Model System)利栏,模型显示窗口,模型选择区,元件列表区等。
种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。
以单;另一部分是高级布线及编辑软件 ARES(Adv-Ancd Routing 进行仿真。
建。
,nd Editing Software) 片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。
在嵌入式系统的中,开除拥有丰富的元器件外, 2.2 Proteus PCB 也就是PCB. ProteusProteus 2.1 Proteus VSM还提供了
各种虚拟仪器,如常用的电流表,电压表,的PCB设计除了有自动布线仿真功能外,还集成了的仿真 Proteus可以仿真模拟电路及发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。
利用示波器,计数数字电路PCB设计,支持多达/定时/频率计,16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行SPI调试器等虚拟终端。
支持图形化的分析功能等。
ProteusProteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。
特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真PCB设计。
3. 基于Protesus的简单数据采集系统。
8051 2.Proteus, PIA3.1 ,介绍AVR软件的编写, ARMProteus 是英国本例题采用可调电阻调节电压值作为模拟信号的输入量,通过Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成A/D转换芯片:AD0808把模拟信号转换为数字量传送到单片机的P1口,并在P0口把转换的结果显示出来。
软件的编写可以在Keil C51 环境下进行,芯片的型号选择AT89C51
ADC0808图1 ISIS启动界面芯片,一个四位七段数码显示器,一个可变电阻,详见表通过左侧的工具栏区的 P(从库中选择元件)命令,在1。
表Pick devices1 元器件清单芯片,窗口中选择系统所需元器件,还可以选择元件的类别,生产厂家等。
本例所需主要元器件有:AT89C51
选择元器件后连接图2所示电路。
“Program可以直接在图电路连接完成后,选中2 电路原理图
File”“Clock栏中选择已经生成的Freque Microproccessor ICsAT89C51ncy”后进行频率设定,设定单片机的单击鼠标左键,打开data.hex类的芯片的引脚与实际的芯片基本相同,文件,把在“EditKeil Component”电路,复位电路可以省略。
编写的程序导入时钟对话窗口如图频率为Proteus12MHz3 ,然后唯一的差别是隐去了所示,。
在单击“OK”按钮保存设计。
至此,就可以进行单片机的仿真。
GND和VCC引脚,系统默认的是把它们分别连接到地和 +5V直流电源。
故在电路连线时可以不考虑电源和地的连接。
为了快速进行仿真,系统所需的时钟
图 3 单片机属性的设定 3.3 Proteus仿真结果单片机的仿真结果图如图4,模拟信号经A/D转换后,结果送入单片机,再在数码管上显示;通过调节可调电阻的阻值,可以得到不同的显示结果。
仿真结果表明,系统达到了预先的设计要求。
在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表示低电平。
通过方快颜色的变化可以很方便地知道每个管脚电平的变化,从而能对系统的运行有更直观的了解,这对程序的调试有很大的帮助。
图4 仿真结果 4(结束语本文结合一个简单的数据采集系统详细说明了Proteus在单片机开发中的应用。
可以看出,Proteus功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。
能快速地进行单片机仿真,加快系统开发的过程,降低开发成本。