久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7552|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

LCD1602倒計(jì)時(shí)程序?qū)懥艘话氩粫?huì)寫(xiě)了,請(qǐng)求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 yujianli 于 2016-1-8 20:53 編輯

課設(shè)作業(yè),控制要求是:20S倒計(jì)時(shí)顯示在1602上,時(shí)間到后蜂鳴器響10S。要求倒計(jì)時(shí)時(shí)間和蜂鳴器響應(yīng)延時(shí)時(shí)間都顯示在1602上。
自己寫(xiě)了一般的程序,寫(xiě)的很爛...液晶屏數(shù)據(jù)和命令的函數(shù)都寫(xiě)了,倒計(jì)時(shí)這個(gè)怎么實(shí)現(xiàn),數(shù)碼管的倒計(jì)時(shí)會(huì)一些,可是要怎么顯示在1602上,請(qǐng)大神們幫個(gè)忙!
#include<reg51.h>
//定義
#define uchar unsigned char
#define uint unsigned int

void init();
void set_POS(uchar);
void write_command(uchar);
void write_data(uchar);

sbit BUZZER=P1^0;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
bit busy_check();

uchar data TIME1_str[16]={"                "};   //第一行倒計(jì)時(shí)間
uchar data TIME2_str[16]={"                "};          //第二行延時(shí)
//延時(shí)函數(shù)
void delayMS(uint n)
{
   uint x,y;
    for(x=n;x>0;x--)
         for(y=110;y>0;y--);
}
//顯示函數(shù),在LCD上顯示字符串
void display_str(uchar* str,uchar lineno)
{
   uchar k;
   set_POS(lineno);
   for(k=0;k<16;k++)
   write_data(str[k]);
}
//1602測(cè)忙
bit busy_check()
{
        bit Result;
        RS=0;
        delayMS(5);
        RW=1;
        delayMS(5);
        LCD_EN=1;
        delayMS(5);
        Result=(bit)(P0&0x80);
        delayMS(5);
        EN=0;
        delayMS(5);
        return Result;
}
//寫(xiě)指令
void write_command(uchat cmd)
{
        while(busy_check())        ;
        delayMS(5);
        RS=0;
        delayMS(5);
        RW=0;
        delayMS(5);
        EN=0;
        delayMS(5)
        P0=com;
        delayMS(5);
        EN=1;
        delayMS(5);
        EN=0;
        delayMS(5);
}
//寫(xiě)數(shù)據(jù)
void write_data(uchar dat)
{
        while(busy_check());
        delayMS(5);
        RS=1;
        delayMS(5);
        RW=0;
        delayMS(5);
        EN=0;
        delayMS(5);
        P0=dat;
        delayMS(5);
        EN=1;
        delayMS(5);
        EN=0;
        delay=0;
}
void init()
{
    delayMS(5);
        write_command(0x38);
        delayMS(5);
        write_command(0x0c);
        delayMS(5);
        write_command(0x06);
        delayMS(5);
        write_command(0x01);
        delayMS(5);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:90857 發(fā)表于 2016-1-9 00:32 | 只看該作者
已解決了~
回復(fù)

使用道具 舉報(bào)

板凳
ID:1 發(fā)表于 2016-1-9 04:01 | 只看該作者

怎么解決的 能分享一下嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:102500 發(fā)表于 2016-1-9 13:19 | 只看該作者
可以用數(shù)組,,然后判斷,,選擇數(shù)組里面的其中以為,,逐個(gè)來(lái),,,也可以用左移右移的辦法
回復(fù)

使用道具 舉報(bào)

5#
ID:90857 發(fā)表于 2016-1-9 21:13 | 只看該作者
其實(shí)也挺簡(jiǎn)單的,顯示函數(shù)更新就可以,程序如下:
#include<STC12C5A60S2.h>
//定義
#define uchar unsigned char
#define uint unsigned int

void init();
void set_POS(uchar);
void write_command(uchar);
void write_data(uchar);

sbit BUZZER=P2^5;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
bit busy_check();

uchar data BUF1_str[16]={"                "};   //第一行倒計(jì)時(shí)間
uchar data BUF2_str[16]={"                "};          //第二行延時(shí)
uint sec,min,rl_sec,rl_min,cnt=0,START=0;
//延時(shí)函數(shù)
void delayMS(uint n)
{
   uint x,y;
    for(x=n;x>0;x--)
         for(y=110;y>0;y--);
}
//顯示函數(shù),在LCD上顯示字符串
void display_str(uchar* str,uchar lineno)
{
   uchar k;
   set_POS(lineno);
   for(k=0;k<16;k++)
   write_data(str[k]);
}
//1602測(cè)忙
bit busy_check()
{
        bit Result;
        RS=0;
        delayMS(5);
        RW=1;
        delayMS(5);
        EN=1;
        delayMS(5);
        Result=(bit)(P0&0x80);
        delayMS(5);
        EN=0;
        delayMS(5);
        return Result;
}
void write_command(uchar cmd)
{
        while(busy_check())        ;
        delayMS(5);
        RS=0;
        delayMS(5);
        RW=0;
        delayMS(5);
        EN=0;
        delayMS(5);
        P0=cmd;
        delayMS(5);
        EN=1;
        delayMS(5);
        EN=0;
        delayMS(5);
}
//寫(xiě)數(shù)據(jù)
void write_data(uchar dat)
{
        while(busy_check());
        delayMS(5);
        RS=1;
        delayMS(5);
        RW=0;
        delayMS(5);
        EN=0;
        delayMS(5);
        P0=dat;
        delayMS(5);
        EN=1;
        delayMS(5);
        EN=0;
        delayMS(5);
}
void init()
{
    delayMS(5);
        write_command(0x38);
        delayMS(5);
        write_command(0x0c);
        delayMS(5);
        write_command(0x06);
        delayMS(5);
        write_command(0x01);
        delayMS(5);
}
void set_POS(uchar position)
{
        write_command(position|0x80);
}
  //初始化定時(shí)器0
void inittimer0(void)
{
  TMOD=0X01;//定時(shí)器寄存器配置
  TH0=(65535-50000)/256;//定時(shí)50000us=50ms
  TL0=(65535-50000)%256;
  TR0=1;//啟動(dòng)定時(shí)器0
  ET0=1;
  EA=1;//開(kāi)總中斷
}
void main()
{
        inittimer0();//初始化定時(shí)器0
        delayMS(10);
        init();//初始化LCD
       
                BUF1_str[6]='T';
                BUF1_str[7]='I';
                BUF1_str[8]='M';
                BUF1_str[9]='E';

                BUF2_str[3]='W';
                BUF2_str[4]='A';
                BUF2_str[5]='R';
                BUF2_str[6]='N';
                BUF2_str[7]='I';
                BUF2_str[8]='N';
            BUF2_str[9]='G';
                min=0;sec=20;rl_min=0;rl_sec=10;
                START=1;
        while(1)
        {
                BUF1_str[11]=min%100/10+'0';
                BUF1_str[12]=min%10+'0';
                BUF1_str[13]=':';
                BUF1_str[14]=sec%100/10+'0';
                BUF1_str[15]=sec%10+'0';
               
                BUF2_str[11]=rl_min%100/10+'0';
                BUF2_str[12]=rl_min%10+'0';
                BUF2_str[13]=':';
                BUF2_str[14]=rl_sec%100/10+'0';
                BUF2_str[15]=rl_sec%10+'0';
               
          display_str(BUF1_str,0x00);//第一行顯示更新
          display_str(BUF2_str,0x40);//第二行顯示更新
        }
}
//定時(shí)器0中斷函數(shù)
timer0() interrupt 1
{
  TR0=0;
  TH0=(65535-50000)/256;//50000us=50ms
  TL0=(65535-50000)%256;
        if(START==1)//繼電器開(kāi)啟倒計(jì)時(shí)開(kāi)始
        {
    cnt++;
    if(cnt>=20)//20*50ms=1s
    {
      cnt=0;
            sec--;
            if(sec==0)
            {
                                sec=59;
                          min--;
                                if(min>250)
                                {
                                        START=2;
                                        sec=0;
                                        min=0;
                                        BUZZER=0;//開(kāi)啟蜂鳴器
                                        cnt=0;
                                }
                  }
                }
  }
        if(START==2)//繼電器延時(shí)倒計(jì)時(shí)開(kāi)始
        {
    cnt++;
    if(cnt>=20)
    {
      cnt=0;
            rl_sec--;
            if(rl_sec==0)
            {
                                rl_sec=59;
                          rl_min--;
                                if(rl_min>250)
                                {
                                        START=0;
                                        rl_sec=0;
                                        rl_min=0;
                                        BUZZER=1;//關(guān)閉蜂鳴器
                                }
                  }
                }
  }
TR0=1;
}
回復(fù)

使用道具 舉報(bào)

6#
ID:141378 發(fā)表于 2016-12-13 19:26 | 只看該作者
yujianli 發(fā)表于 2016-1-9 21:13
其實(shí)也挺簡(jiǎn)單的,顯示函數(shù)更新就可以,程序如下:
#include
//定義

謝謝  樓上
回復(fù)

使用道具 舉報(bào)

7#
ID:154563 發(fā)表于 2016-12-13 22:48 來(lái)自手機(jī) | 只看該作者
很好   謝謝幫助
回復(fù)

使用道具 舉報(bào)

8#
ID:356686 發(fā)表于 2018-6-22 19:02 來(lái)自手機(jī) | 只看該作者
樓主,能把原理圖分享一下嗎?
回復(fù)

使用道具 舉報(bào)

9#
ID:111634 發(fā)表于 2018-6-23 08:09 | 只看該作者
實(shí)例96  能預(yù)置初值的倒計(jì)時(shí)秒表
Proteus仿真一下,確認(rèn)有效。
實(shí)例96 能設(shè)置初值的倒計(jì)時(shí)秒表.rar (40 KB, 下載次數(shù): 31)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,電路與程序真實(shí)可靠可信可行,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

10#
ID:418347 發(fā)表于 2018-11-5 16:14 | 只看該作者
請(qǐng)問(wèn)樓主,if(rl_min>250)這里大于250 什么意思啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产91丝袜在线18 | 九九亚洲 | 亚洲成av人影片在线观看 | 欧美一级片在线播放 | 午夜影院在线免费观看视频 | 国产激情精品一区二区三区 | 亚洲a视频 | 久久久久精 | 久久久久久久91 | 亚洲三区在线观看 | 久久久国产精品视频 | 成人片免费看 | 国产福利视频导航 | 中文字幕在线观看成人 | 四虎永久免费影院 | 国产精品美女www爽爽爽 | 国产精品自产拍在线观看蜜 | 亚洲精品一区中文字幕乱码 | 99久久精品国产一区二区三区 | 欧美男人的天堂 | 国产一区二区三区在线视频 | 色婷婷综合久久久中字幕精品久久 | 夜夜草天天草 | 黄色一级大片在线观看 | 亚洲精品福利视频 | 亚洲日韩中文字幕 | 欧美日韩一区二区三区四区 | 成人在线中文字幕 | 日本高清视频在线播放 | 中文字幕在线看第二 | 日韩欧美在线视频 | 中文字幕一区二区三区四区 | 国产免费a | 91精品国产91综合久久蜜臀 | 午夜精品久久 | 亚洲日韩中文字幕一区 | 午夜免费视频 | www.4虎影院| 欧美片网站免费 | 国产精品高清一区二区三区 | 久久人爽|