利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管

利用Proteus仿真软件设计一个具有按键清零功能的计时00-59的两位秒表时间的显示电路。利用两位LED数码管,第1张

#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就好,求程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9865736.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存