#include <AT89X52.H>
#define uint unsigned int           //宏定义无符号整型数据
#define uchar unsigned char         //宏定义无符号字符型数据
sbit key1=P3^6;                        //按键
sbit led=P1^0;                     //灯
sbit ledc=P1^1;                        //灯
uchar Cntus=0,Cnt10ms=0,Cnt1s=0,Cnt1min=0;//中断计时变量bit stop=0;                          //停止标志
void display();                     //显示程序声明
void keyscan();                     //按键扫描程序声明/**************************************
1602液晶
**************************************/
sbit RS = P2^5;
sbit RW = P2^6;
sbit E  = P2^7;/**********************************************************
函数说明: 延时程序
**********************************************************/
void delay(uchar t)
{uint j;uchar i;for(i=0;i<t;i++)for(j=0;j<1000;j++);
}
/**************************************
短延时
**************************************/
void delay5ms()
{uchar i,v,k;for(i=1;i>0;i--)for(v=168;v>0;v--)for(k=22;k>0;k--);
}
/**************************************
写指令
**************************************/
void lcd_Write_com(uchar com)
{RS=0;                 //定义指令寄存器RW=0;                 //写允许P0=com;                   //写指令delay5ms();    E=1;       //片选端上拉delay5ms();  E=0;       //下降沿锁存
}
/**************************************
写数据
**************************************/
void lcd_write_date(uchar date)
{RS=1;                 //定义数据寄存器RW=0;                 //写允许P0=date;              //写数据delay5ms();    E=1;       //片选端上拉delay5ms();  E=0;       //下降沿锁存
}
/**************************************
显示程序
**************************************/
void dis_lcd1602(uchar x,uchar y,uchar dat)
{uchar add;if(y==1)   add=(0x80+x);if(y==2)   add=(0xc0+x);lcd_Write_com(add);      //写指令lcd_write_date(dat);   //写数据
}
/**************************************
液晶初始化
**************************************/
void lcd1602_init()
{lcd_Write_com(0x38);   //设置8位格式,2行,5*7lcd_Write_com(0x01);   //清屏lcd_Write_com(0x0c);    //整体显示,关光标,不闪烁lcd_Write_com(0x06);    //设定输入方式,增量不移位lcd_Write_com(0x80);   //初始坐标
}
/**************************************
液晶显示汉字程序
**************************************/
void hz_lcdDis(uchar x,uchar y,uchar *p) //汉字显示
{uchar i=0,temp;if(x)temp = 0x40;   else temp = 0;for(i=y;*p!='\0';i++,p++){lcd_Write_com(i|0x80+temp);lcd_write_date(*p);delay5ms();           }
}
/**************************************
液晶显示数字程序
**************************************/
void  num_lcdDis(uchar X,uchar Y,uint num,uchar n)
{uint i=0,temp,hang;    n +=1;if(X)hang = 0x40;else hang = 0;for(i=(n-1);i>0;i--){       lcd_Write_com((i+Y-1)|0x80+hang);     //从个位开始显示temp = num%10+0x30;lcd_write_date(temp);   delay5ms(); num/=10;                    }
}void  num_lcdDis1_1(uint num)//input 电压 整数部分
{uint i,temp,x;    x=5;for(i=0;i<2;i++){     x--;  lcd_Write_com(0x80+x);   //写指令temp = num%10+0x30;lcd_write_date(temp);//   写数据num/=10;                     }
}
/**************************************
液晶显示数字程序
**************************************/
void  num_lcdDisx(uchar X,uchar Y,uint num,uchar n)
{uint i=0,temp,hang;    n +=1;if(X)hang = 0x40;else hang = 0;for(i=(n-1);i>0;i--){       lcd_Write_com((i+Y-1)|0x80+hang);//从个位开始显示temp = num%10+0x30;lcd_write_date(temp);    delay5ms(); num/=10;                    }
}
/***********按键扫描程序****************/
void keyscan()
{static uint count2=0,count1=0;   //计数变量          static bit key_sign=0;         //按键自锁标志if(key1==0)                       //检测按键为0{   delay(50);if(key1==0){count1++;stop=!stop;}//计数延时消抖}else {count1=0;                   //计数变量清0}
}
/***********定时器初始化程序****************/
void Timer0Init(void)               //2.5毫秒@11.0592MHz
{TMOD = 0x01;                  //设置定时器模式TL0 = 0x00;                       //设置定时初值TH0 = 0xF7;                        //设置定时初值TR0 = 1;                       //定时器0开始计时EA=1;                            //开总中断ET0=1;                           //开定时器0中断
}
/***************主程序****************/
void main()
{int cm=0;Timer0Init();                 //定时器初始化lcd1602_init();//液晶初始化hz_lcdDis(0,0,"Timer system");  //启动电源hz_lcdDis(1,7,":  :");      //欢迎你led=1;while(1){// Cnt1min       Cnt1s             Cnt10ms num_lcdDis(1,5,Cnt1min,2);num_lcdDis(1,8,Cnt1s,2);num_lcdDis(1,11,Cnt10ms,2);if(Cnt1min>9){led=0;}keyscan();                    //按键扫描}
}

链接:https://pan.baidu.com/s/1vc0IVv36AMXIhARJMVuBBg
提取码:cg6p

基于51单片机的6位毫秒百分秒级秒表倒计时器proteus仿真相关推荐

  1. 基于51单片机红外遥控人体感应自动车库门控制设计(程序+Proteus仿真+原理图+PCB图+参考论文+开题报告+任务书等)

    一.硬件方案 单片机的红外遥控人体感应自动门控制系统设计的实现主要有电源5V供电.单片机最小系统.红外感应遥控模块,红外一体接收头,按键电路,步进电机驱动电路,指示灯电路组成.. 二.设计功能 1.如 ...

  2. 基于51单片机的智能家居防盗系统人体红外热释电 proteus仿真原理图程序设计

    硬件设计 原理图: 仿真图: 程序设计 //程序头函数 #include <reg52.h> //宏定义 #define uint unsigned int #define uchar u ...

  3. 基于51单片机的万年历可显示农历带闹钟整点报送功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示当前时间 2.按键可切换页面,显示农历,显示闹钟设置 3.当时间到达设定闹钟时间时,蜂鸣器报警 4.具备整点报时功能 原 ...

  4. 基于51单片机的智能红外遥控防雨晾衣架 雨滴光强检测系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前雨滴/光强/温湿度/晾衣架状态 2.支持手动/自动两种模式 3.自动模式下,当雨滴<5/光强<80同时满 ...

  5. 基于51单片机的高速汽车列车汽车速度测量及报警装置proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示测量车速,同时蓝牙串口上报速度测量结果 2.红外避障模块1触发,启动测速定时器,红外避障模块2触发,停止定时器,完成测速 ...

  6. 基于51单片机霍尔转速测量温度电机保护PWM调速设计proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示温度,PWM档位值和当前转速 2.可通过按键控制电机启动,停止,正转,反转,加速,减速 3.温度超过50℃蜂鸣器报警,且 ...

  7. 基于51单片机的智能窗户烟雾浓度雨滴检测无线wifi控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602实时显示当前环境温湿度,烟雾浓度,室外是否下雨 2.按键可设定烟雾浓度,环境温湿度阈值,雨滴检测阈值 3.当环境适宜时,打开窗户 ...

  8. 基于51单片机电子秒表倒计时器proteus仿真 汇编程序 数码管显示LCD1602显示

    刚刚咱们讲了电子秒表用的是C语言,接下来咱们再讲一讲用汇编. 硬件设计 电路图1: 数码管显示:时间清零:启动计时:暂定计时:继续计时: 电路图2 程序设计 TLOW EQU 78H THIGH EQ ...

  9. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

最新文章

  1. 事物传递机制、应用、加载时机
  2. php 不同数据库的调用方法,php连接不同数据库的几种方法
  3. 随想录(科技企业中股票和融资)
  4. chrome自定义背景_Android Chrome自定义标签
  5. html验证码功能如何实现原理,基于JS实现一个随机生成验证码功能
  6. jquery.blockUI.2.31.js 弹出层项目介绍
  7. TLPI UNIX linux系统编程手册源代码运行
  8. pdf编辑工具linux,7个Ubuntu下的PDF编辑工具
  9. 技术总监面试有什么技巧
  10. 解决SSLHandshakeException :sun.security.validator.ValidatorException: PKIX path building failed:
  11. Java开发面试简历这么写,命中率达70%
  12. 大数据面试总结《二十》--优秀简历的编写
  13. Spatial Attention
  14. 2020CCF BDCI 企业非法集资风险预测-线上0.848(水哥的baseline),在此基础已做到线上0.848,排名前1%(参赛队伍3000+))。
  15. html获取cookie数据,cookies数据是什么意思?
  16. 【Qt界面个性化】大杀器——qss
  17. 云米冰箱“失智”,问题不止“小米依赖症”
  18. 【百度美化 Stylus】百度搜索 卡片美化高斯模糊 Baidu CSS Stylus Stylish
  19. 第20课 Altium Designer20(AD20)+VESC6.4实战教程:更改Type-C封装 (北冥有鱼)
  20. Windows下使用PuTTY连接AWS

热门文章

  1. vscode 拉取不到新创的远程分支
  2. JavaScript: 原型链继承(原理解析 + 代码实现 + 结构图解)
  3. lodash中数组删除常用的api
  4. 关于移动版饥荒与电脑版饥荒的存档移植
  5. 解决flutter The proxy server URL extracted from HTTP_PROXY or HTTPS_PROXY
  6. docker下gitlab安装、配置、汉化(完整版)
  7. java getday_java日期时间处理小结
  8. 其实,不用逼迫,人们也想结婚
  9. Linux--自有服务
  10. 易云股份推出CDN加速服务,极速稳定高性价比