
#include <reg51H>
sbit P3_5 =P3^5;
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode[second/10];
P2=dispcode[second%10];
}
}
先用其它软件(如windows记事本,MASM)写好程序,保存后打开Proteus,在工具栏的Source中选择Add/Remove
Source
files,在跳出的对话框中单击New就可以选择你编的程序了,Code
Generation
tool
选ASEM51就OK了,接下来就能仿真了,前提是放入了单片机,随便选一片就可以的
1、首先先在proteus画出仿真图,方便仿真程序。
2、接着来编写程序,先来写入头函数。
2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写。
3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义。
4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向。
5、检查没有错误,编译一下,就可以进行仿真了。
看情况是那个按钮不对吧,重新找一下,重新放一个,见下图,都正常亮的呀。
proteus仿真,如图,为什么仿真后我点开关,继电器不动作呢?
这个仿真电路的继电器是可以动作的,没有问题的,是你的仿真图画的有问题吧,有三处怎么多了结点呢,是怎么画的?如下图画红圈的三处?
正确的仿真图,继电器的动作,如下图所示。
proteus中BUTTON按下后不能d起是怎么回事
BUTTON旁边有个圆点,你只要对准它按,这就不能d起来了,不对准它按就可以d上来啦
单片机Proteus仿真复位电路问题,按键无法复位
用Proteus仿真时,单片机的复位引脚是不起作用的,因引脚都不起作用,那按键就无法复位了,是不能通过给RST引脚加高电平进行复位的。
其实,那复位电路和外部晶振电路都可以省掉的。
见下图,复位引脚接到VCC上,对于实物应该是处于复位状态吧,单片机是不能工作的,可是,在仿真图上什么作用也没有。
Proteus仿真中 开关不起作用是怎么回事?
你的程序好乱好复杂。你看看我的简单的点亮一个灯。
#include reg51h
sbit LED = P0^0;//位 *** 作,定义标志位,位变量
void main()
{
while(1)
{
LED=0;
}
}
你的程序那句P0=SBUF,那SBUF是多少啊?如果要按键控制的话,那你的按键是接在P37对吧,假设按键按下P37引脚的电平是低电平,那程序可以改为:
#include reg51h
sbit LED = P0^0;//位 *** 作,定义标志位,位变量
sbit SBUF=P3^7;
void delay(unit16 x)
{
unit16 i,j;
for(i=x;i0;i--)
for(j=144;j0;j--);
}
void main()
{
SBUF=1;
while(1)
{
if(SBUF==0) /按键按下/
{
delay(200); /延时/
if(SBUF==1) /按键松开/
LED=0;
delay(200);
}
LED=1;
delay(200);
}
}
proteus中开关怎么不能按下
方法如下:
按键开关符号为 BUTTON
在器件选择界面,关键字一栏中输入即可
打开Proteus86软件。
_慊鞑说ダ_ile——找到New Project——鼠标左键单击。修改工程名字和工程路径——单击next直到finished并完成建立工程——在键盘上按字母P或者找到工作区的P按钮——跳出搜索元器件界面——输入STM32F103R6——RES和LED-RED找到对应的器件——鼠标左键双击。在工作区——完成STM32电路连接——并双击StM32F103R6——设置晶振为8M——并设置Proteus电源——避免运行出现错误。
_roteus 88是由英国Lab Center Electronics公司出品的一款专业的EDA工具软件(电路仿真软件)。它为用户提供了一整套完善的电路仿真以及PCB设计流程解决方案,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。proteus处理器模型支持8051、HC11、
#include<reg51h>
#define Tpwm 0xfc18//PWM周期对应的计数值1ms,基于12MHz晶振
unsigned int duty[]={0,/0/
0xff9c/100us/,0xff38/200us/,0xfed4/300us/,\
0xfe70/400us/,0xfe0c/500us/,0xfda8/600us/,\
0xfd44/700us/,0xfce0/800us/,0xfc7c/900us/,\
0xfc18/1000us/};//PWM高电平时间
unsigned char i=0;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit PWMOUT = P2^0;
sbit PWMIN1 = P2^1;
sbit PWMIN2 = P2^2;
bit flag = 1;//PWM输出电平状态,1为输出高电平时间,0为输出低电平时间
void delay10ms(int n);
void main(void)
{
PWMOUT = 0;//初始化L293D ,停止电机
PWMIN1 = 0;
PWMIN2 = 1;
EA = 1; //开总中断
IT0 = 1; //中断方式为跳变
IT1 = 1;
EX0 = 1; //打开外部中断0
EX1 = 1; //打开外部中断1
ET0 = 1; //开定时器0中断允许
TMOD = 0x01; //设置定时方式
while(1) //等待中断
{
/在此可以实现其它任务/
}
}
//10ms延时函数
void delay10ms(int n)
{
int i=0,j;
while(n--)
{
for(i=0;i<10;i++)
{
for(j = 0; j < 125; j++);
}
}
}
void keySpeeddownISR() interrupt 0 //按键中断服务程序
{
EA = 0; //关中断
delay10ms(2); //延时消抖
if (!P32) //确认按键按下,滤除键盘抖动干扰
{//减少PWM高电平时间
if(i>0)
i--;
if((TR0=1) && (i == 0))
{
TR0 = 0;
PWMOUT = 0;
}
}
EA = 1;
}
void keySpeedupISR() interrupt 2 //按键中断服务程序
{
EA = 0; //关中断
delay10ms(2); //延时消抖
if (!P33) //确认按键按下,滤除键盘抖动干扰
{//增加PWM高电平时间
if(i<=10)
i++;
if((TR0 == 0) && (i > 0))
{//启动PWM,电机顺时针旋转
PWMIN1 = 0;
PWMIN2 = 1;
PWMOUT = 1;
TH0 = duty[i]>>8;
TL0 = duty[i]&0xff;
TR0 = 1;
flag = 1;
}
}
EA = 1;
}
void T0ISR() interrupt 1 //定时器0中断服务程序
{
EA = 0; //关中断
if(flag)
{//高电平时间结束,输出低电平补齐PWM周期
PWMOUT = 0;
TH0 = (65535-(duty[i]-Tpwm))>>8;
TL0 = (65535-(duty[i]-Tpwm))&0xff;
flag = 0;
}else
{//周期结束
PWMOUT = 1;
TH0 = duty[i]>>8;
TL0 = duty[i]&0xff;
flag = 1;
}
EA = 1;
}
仅供参考。学单片机还需自己多多思考和练习
1打开proteus,在原理图界面点击P按钮,进入元器件选择界面;
2在器件查找界面,关键词输入KEY,点enter键查找,然后选择Switches&Relays,就得到四个搜索结果;3单击查找结果,即可在右侧查看元器件符号,双击可添加元器件到器件栏;4以下是查找到的四种矩阵键盘,分别是计算器键盘、简易计算器键盘、电话键盘以及一个44键盘,如果没有你需要的,也可以自己使用单独的BUTTON按键连接。4×4矩阵键盘由4条行线和4条列线组成,行线接P30-P33,列线接P34-P37,按键位于每条行线和列线的交叉点上。
以上就是关于利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管全部的内容,包括:利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管、在用proteus做仿真时怎么把程序放到单片机里面、c51单片机怎么用两个按键控制两个数码管的加减,加到99就好,求程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)