用51单片机仿真计数器,用c语言写程序,LCD1602显示,具体要求:按键按下开始计时,按键再次按

 我来答
热心市民MrZ
2017-05-12 · 超过34用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:31.2万
展开全部
#include<reg52.h>
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_E_ = P2^2;
sbit KEY1   = P2^3;

void Delay_ms(unsigned char time)
{
    unsigned char i;
    while(time--)
    {
        for(i=0;i<125;i++);
    }
}
void LCD1602_WriteByte(unsigned char value,bit dataTypedef)
{
    LCD_RS = dataTypedef;
    LCD_RW = 0;
    P0     = value;
    LCD_E_ = 1;
    Delay_ms(5);
    LCD_E_ = 0;
}
void LCD1602_Init()
{
    LCD1602_WriteByte(0x38,0);
    Delay_ms(10);
    LCD1602_WriteByte(0x01,0);
    Delay_ms(10);    
    LCD1602_WriteByte(0x06,0);
        Delay_ms(10);
        LCD1602_WriteByte(0x0c,0);
        Delay_ms(10);
        
}
bit Pause;
void KEY_Testing()
{
    static bit sw;
    static unsigned char qd;
    KEY1 = 1;
    if(!KEY1)
    {
        if(!sw)qd++;
        if(qd>10)
        {
            qd = 0;
            sw = 1;
            if(!KEY1)Pause=~Pause;
        }
    }
    else
    sw = qd = 0;
}
unsigned char CountNumber;
void main()
{
    LCD1602_Init();
    TMOD = 0x01;
    TR0  = 1;
    ET0  = 1;
    EA   = 1;
    while(1)
    {
        LCD1602_WriteByte(0x85,0);
        LCD1602_WriteByte((CountNumber/100)+48,1);
        LCD1602_WriteByte((CountNumber/10%10)+48,1);
        LCD1602_WriteByte((CountNumber%10)+48,1);
    }
}
void Timer0_Routine()interrupt 1
{
    static unsigned int count;
    TH0 = 0xfc;//12MHZ
    TL0 = 0x18;
    KEY_Testing();
    if(!Pause)
    {
        count++;
        if(count>=1000)
        {
            count=0;
        }
    }
}

///如有问题,可再咨询
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机原理及其应用是一门研究将计算机和数字电子技术应用于具体实践中的学科,主要包括单片机的结构、工作原理、指令系统、汇编语言程序设计、C语言程序设计、嵌入式系统及其开发环境、抗干扰技术、数模与模数转换技术、单片机应用系统的开发等内容。单片机... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式