简易PROTUES的定时器仿真
仿真示意图:
单片机程序:
#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的定时器仿真相关推荐
- 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)
资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...
- 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真
51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...
- 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)
本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...
- 【006】基于51单片机的简易电子计算器Proteus仿真设计
一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...
- 基于AT89C52单片机的简易电子琴设计与仿真
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.20 ...
- 简易数字电压表设计 单片机 仿真 ADC0809
课程设计题二十九:简易数字电压表设计 设计要求: 1. 利用ADC0809设计一个简易数字电压表,要求可以测量0~5V之间8路输入电压 值,电压值由4位LED数码管显示,并在数码管上轮流显示或单路 ...
- protues VSM 图形仿真帮助
2.2 graphs tutorial 2.2.1 介绍 本教程的目的是通过简单的放大器电路向您展示如何使用Proteus VSM执行基于图形的仿真.它会逐步引导您完成以下任务: 放置图形,探针和生成 ...
- 厨房定时器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; ...
- 基于51单片机的简易电容值测量仪proteus仿真设计
51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...
- 基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解)
基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解) 视频演示 1.主要功能 2.仿真 3. 程序 4. 设计报告 5.资料清单&下载链接 仿真图proteus 8.9 程序编译 ...
最新文章
- I00031 Look-and-say sequence
- 我的机器学习和深度学习绘图模板.pptx
- 53-java中的queue
- 06 矩阵计算【动手学深度学习v2】
- 2sin30°在python中如何表示_如何在python中实现以下派生公式?
- MySql字符串函数使用技巧
- fedora virtualbox 挂载USB设备
- GCC依赖库顺序问题
- 从编译器角度分析C语言中数组名和指针的区别
- 构建与服务器的JDK版本不同,导致服务器不能工作
- 深度学习:神经风格转移
- DEM数据下载,拼接,裁剪
- Android APP 全局字体替换-思源黑体
- 开发者的固化思维及解决办法
- ajax参数该怎么传递?ajax参数传递
- VS2019配置WinPcap开发
- (一百三十五)Android O探索WLAN扫描(WIFI SCAN ALWAYS)
- 2021 企业架构(EA)状态调查报告
- 得到《三体》听书笔记
- 私域社交电商一站式解决方案,软件开发+供应链服务支持一件代发