用PROTEUS对单片机进行仿真的方法与实例
#INCLUDE "P12F675.INC"
W_TEMP
SW
TEMP
MAIN
LOOP
ADC
电路中所使用的元件见表3。
名称 | 元件 | 种类(Category) | 子种类(Sub-category) |
单片机 | PIC16F675 | Microprocessor ICs | PIC12 Family |
电阻器 | RES | Resistors | Generic |
可变电阻器 | POT-LIN | Resistors | Variable |
三极管 | 2N5415 | Transistors | Bipolar |
按钮开关 | BUTTON | Switches & Relays | Switches |
发光二极管 | LED-RED | Optoelectronics | LEDs |
单节电池 | CELL | Miscellaneous |
绘制仿真电路图时添加直流电压表和上例中选择示波器类似,先左键选择模型选择工具栏中的 图标,再选择DC VOLTMETER即可。

RP1的滑动触点向上调节,电压表的读数会逐渐上上升,当读数大于3V时,会停止充电,发光二极管VD1熄灭,电压表的读数恢复为2.5V,这时即使我们把RP1 滑动触点调到中点以下也不会重新充电,只有按一下复位键S1才会重新充电。
下面用AVR单片机ATmega8设计一个电机调速控制器,使其定时/计数器T/C1工作在PWM模式,作为PWM脉宽调制器。
在ICCAVR编译器中输入下列程序:
#include
#define uchar unsigned char
char k;
void DelayMs(char i)
{
}
#pragma interrupt_handler INT_0:2
void INT_0(void)
{
}
#pragma interrupt_handler INT_1:3
void INT_1(void)
{
}
void main(void)
{
}
电路中所使用的元件见表4。
表4
名称 | 元件 | 种类(Category) | 子种类(Sub-category) |
单片机 | ATmega8 | Microprocessor ICs | AVR Family |
电阻器 | RES | Resistors | Generic |
三极管 | 2N3054 | Transistors | Bipolar |
按钮开关 | BUTTON | Switches & Relays | Switches |
电池 | BATTERY | Miscellaneous | |
直流电机 | MOTOR | Electromechanical |

当按下S1时,PB1输出PWM信号占空比减小,电机速度减小;当按下S2时,PB1输出PWM信号占空比增加,电机速度增加。从示波器上可以看到PWM信号占空比在调节时的变化。
#include
unsigned char n,i;
unsigned long int m,t;
sbit S1=P0^0;
sbit S2=P0^1;
sbit S3=P0^2;
sbit S4=P0^3;
sbit S5=P0^4;
sbit S6=P0^5;
sbit S7=P0^6;
sbit S8=P0^7;
sbit VD1=P1^0;
sbit VD2=P1^1;
sbit VD3=P1^2;
sbit VD4=P1^3;
sbit VD5=P1^4;
sbit VD6=P1^5;
sbit VD7=P1^6;
sbit VD8=P1^7;
sbit SOUND=P3^0;
sbit START=P3^1;
void delay(t) //延时子程序
{
}
void main() //主程序
{
}
表5
名称 | 元件 | 种类(Category) | 子种类(Sub-category) |
单片机 | AT89C51 | Microprocessor ICs | 8051 Family |
电阻器 | RES | Resistors | Generic |
三极管 | 2N2905 | Transistors | Bipolar |
共阳数码管 | 7SEG-COM-ANODE | Optoelectronics | 7-Segment Displays |
扬声器 | SPEAKER | Speakers & Sounders |

评论