仿真示意图:

单片机程序:

#include  <REG51.H>
#include  <intrins.h>
#include  <math.h>
#define   uchar unsigned char
#define   uint unsigned int

sbit RS=P2^6;
sbit E=P2^7;
sbit key0=P2^0;
sbit key1=P2^3;
sbit pluse=P3^2;
float data_ad;
float time_0;
float distance=1000;
float speed=0;
unsigned char count;   //定义变量统计中断累计次数
float s,m,h;   //定义变量储存秒、分钟和小时
uchar FirstFlag;
void shuchu(void);
void _delay_ms(uchar z)
{
  uint x,y;
  for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}

void wr_commamd_lcd1602( uchar data_lcd1602)
{     
  E=0;
  RS=0;
  P0=data_lcd1602;
  E=1;
  E=0;
  _delay_ms(15);
}

void wr_data_lcd1602( uchar data_lcd1602)
{
  E=0;
  RS=1;
  P0=data_lcd1602;
  E=1;
  E=0;
  _delay_ms(10);
}

void lcd1602_init( )
{
  wr_commamd_lcd1602(0x01);
  wr_commamd_lcd1602(0x02);
  wr_commamd_lcd1602(0x06);
  wr_commamd_lcd1602(0x0F);
  wr_commamd_lcd1602(0x14);
  wr_commamd_lcd1602(0x3c);
  wr_commamd_lcd1602(0xc0);
}

void init_timer()
{
    TMOD=0x01;                //使用定时器T0的模式1
    TH0=0XFC;    //定时器T0的高8位设置初值
    TL0=0X18;    //定时器T0的低8位设置初值
    EA=1;                     //开总中断
    ET0=1;                    //定时器T0中断允许
    TR0=1;                    //启动定时器T0
    EX0=1;

count=0;              //中断次数初始化为0
    s=0;                  //秒初始化为0
    m=0;                  //分钟初始化为0
    h=0;                  //小时初始化为0
}

void main( )

  uchar data_test=123;
  uint  flag1;
  flag1=0;
  key0=0;
  key1=0;
  init_timer();
  lcd1602_init( );//液晶初始化

while(1)
  {

}

}

void shuchu()
 {
 uint  i,j;
      time_0=m+s/1000;
       speed=(distance/time_0);
      wr_commamd_lcd1602(0xc0);//设定光标位置
      wr_data_lcd1602('T');//D
      wr_data_lcd1602('=');//=

i=time_0/1;
      wr_data_lcd1602(0x30+i);//整数  1.234
      wr_data_lcd1602('.');//小数点
      i=time_0*10;
      i=i%10;
      wr_data_lcd1602(0x30+i);//0.1
      i=time_0*100;
      i=i%10;
      wr_data_lcd1602(0x30+i);//0.01
      i=speed*1000;
      i=i%10;
      wr_data_lcd1602(0x30+i);//0.001  
      
//      wr_data_lcd1602(0x00);//空格
      //wr_data_lcd1602(0x00);//空格
      wr_data_lcd1602('v');//v
      wr_data_lcd1602('=');//=
      j=(int)speed/1000;
      wr_data_lcd1602(0x30+j);//整数  1.234
      i=((int)speed/100)%10;
      wr_data_lcd1602(0x30+i);//整数  1.234
      i=((int)speed/10)%10;
      wr_data_lcd1602(0x30+i);//整数  1.234
      i=((int)speed%10);
      wr_data_lcd1602(0x30+i);//整数  1.234
      wr_data_lcd1602('.');//小数点
      i=speed*10;
      i=i%10;
      wr_data_lcd1602(0x30+i);//0.1
      i=speed*100;
      i=i%10;
      wr_data_lcd1602(0x30+i);//0.01
//      i=speed*1000;
//      i=i%10;
//      wr_data_lcd1602(0x30+i);//0.001  
}

void T()  interrupt 0
{

FirstFlag++;
   while(pluse==0);
   if(FirstFlag >= 2)
    {
        FirstFlag = 0;
        shuchu();

}

}

/*******************************************************
函数功能:定时器T0的中断服务函数
********************************************************/
 void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器
  {

if(FirstFlag == 1)
    {
                s++;      //秒加1                 
          if(s==1000)   //如果计满60秒
             {
              s=0;     //秒清0
              m++;     //分钟加1
            }
          if(m==60)    //如果计满60分
           {
               m=0;   //分钟清0 
//               h++;    //小时加1
            }
//         if(h==99)  //如果计满24小时
//           {
//               h=0;   //小时清0
//           }
       TH0=0XFC;   //定时器T0高8位重新赋初值
        TL0=0X18;   //定时器T0低8位重新赋初值        
  }

}

想要源文件请到资料中下载(名称定时器仿真)

简易PROTUES的定时器仿真相关推荐

  1. 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)

     资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...

  2. 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真

    51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...

  3. 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)

    本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...

  4. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  5. 基于AT89C52单片机的简易电子琴设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.20 ...

  6. 简易数字电压表设计 单片机 仿真 ADC0809

    课程设计题二十九:简易数字电压表设计  设计要求:  1. 利用ADC0809设计一个简易数字电压表,要求可以测量0~5V之间8路输入电压 值,电压值由4位LED数码管显示,并在数码管上轮流显示或单路 ...

  7. protues VSM 图形仿真帮助

    2.2 graphs tutorial 2.2.1 介绍 本教程的目的是通过简单的放大器电路向您展示如何使用Proteus VSM执行基于图形的仿真.它会逐步引导您完成以下任务: 放置图形,探针和生成 ...

  8. 厨房定时器c语言程序,基于51单片机的厨房定时器仿真+源代码

    #include sbit fmq = P2^5; //凤鸣器 sbit mo_shi= P3^2; sbit jia=P3^3; sbit jian=P3^4; sbit qi_dong=P3^5; ...

  9. 基于51单片机的简易电容值测量仪proteus仿真设计

    51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...

  10. 基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解)

    基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解) 视频演示 1.主要功能 2.仿真 3. 程序 4. 设计报告 5.资料清单&下载链接 仿真图proteus 8.9 程序编译 ...

最新文章

  1. I00031 Look-and-say sequence
  2. 我的机器学习和深度学习绘图模板.pptx
  3. 53-java中的queue
  4. 06 矩阵计算【动手学深度学习v2】
  5. 2sin30°在python中如何表示_如何在python中实现以下派生公式?
  6. MySql字符串函数使用技巧
  7. fedora virtualbox 挂载USB设备
  8. GCC依赖库顺序问题
  9. 从编译器角度分析C语言中数组名和指针的区别
  10. 构建与服务器的JDK版本不同,导致服务器不能工作
  11. 深度学习:神经风格转移
  12. DEM数据下载,拼接,裁剪
  13. Android APP 全局字体替换-思源黑体
  14. 开发者的固化思维及解决办法
  15. ajax参数该怎么传递?ajax参数传递
  16. VS2019配置WinPcap开发
  17. (一百三十五)Android O探索WLAN扫描(WIFI SCAN ALWAYS)
  18. 2021 企业架构(EA)状态调查报告
  19. 得到《三体》听书笔记
  20. 私域社交电商一站式解决方案,软件开发+供应链服务支持一件代发

热门文章

  1. 【2022最新Java面试宝典】—— Nginx面试题(23道含答案)
  2. 互联网日报 | 蚂蚁集团成立整改工作组;万达完成开业45座万达广场年度目标;T3出行日订单突破100万...
  3. Cisco iOS的两种配置文件(思科命令的保存)
  4. 富士康计划将苹果生产线转移到越南,是什么原因呢?
  5. 流媒体 - UVC 协议
  6. 身份证地址码码表MySQL
  7. hadoop+hbase安装
  8. windows 安装 win32 win32com模块
  9. window 上 shell 连接工具
  10. 读《About Face 4 交互设计精髓》9