求一动态显示程序 如0到99的显示 可以用proteus仿真。

求一动态显示程序 如0到99的显示 可以用proteus仿真。,第1张

#include <reg52.h>      //头文件

#include<绝洞intrins.h>  //头文件    _nop_()

void sm(unsigned long ms)/****************************声明****************************/

void delay(void)   /****************************声明****************************/

sbit P21=P2^1 //  打开段选

sbit P20=P2^0   // 打开位选

bit f=0//设定标志

timer2() interrupt 5 /**************************中断**************************/

{

static unsigned char t

TF2=0

t++

if(t==30) //预置值0x1000,溢出30次就是1秒钟,晶振22118400HZ

{

t=0

f=1//每次长时间的溢出就置一个标记?

}

}

void sm(unsigned long ms)/*****************************数码管扫描**************************/

{

unsigned char 派卖q,r=0  //定义

unsigned char l[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //数组0,9,8,7,6,5,4,3,2,1

unsigned char xx[]={0,0}

unsigned char y[]={0x80,0x40}  //数码管位选

xx[0]=ms%10//得出个位数值

xx[1]=ms/10%10// 得出十位数值

for(q=0q<2) //循环扫描

{

q++   // q加加

r++     // r加加

if(r==2)   //

r=0      //

P1=y[r]    //

P21=1        //打开位选  让显示个位还是十位

delay()    尘宏逗 //  延时

P21=0    //关闭位选

P20=1  // 打开段选 让显示数字几

P1=l[xx[r]] //

delay()  //延时

P1=0xff   //数码管短暂清零

delay()  //延时

P20=0   // 关闭段选

}

}

void delay(void)   /*******************************延时*************************/

{

unsigned char i //定义i

for(i=0i<255i++)//不断的加法运算

{

_nop_()    /*延时*/

}

}

void main(void) /*****************************主程序******************************/

{

unsigned long a=0

RCAP2H =0x10 //

RCAP2L =0x00

TR2=1   //启动定时器

ET2=1    //打开定时器2中断

EA=1     //打开总中断

while(1)//让程序不断循环

{

if(f)//发现标记进入处理

{

f=0//清除标记

a++ //

if(a==99)//

a=0 //

}

sm(a)//

}

}

1、首先打开matlab软件,点击Simulink按钮打开Simulink仿真环境(需要一点时间)

2、打开Simulink后,主界面如下所示:

3、点击Simulink界面中的File/New/Model,建立并保存模型文件:

4、薯枣仔在Simulink的左侧资源栏拖拽控件到model文件内并设置岩祥连线,

5、检查系统框图无误后点击运行按钮,大概几秒后仿真结束:

6、双击图中的示波器就可以查看系统仿数汪真输出


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

原文地址:https://54852.com/yw/12469740.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存