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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3107|回復: 4
收起左側

用89C51單片機寫了一個LCD顯示時鐘

[復制鏈接]
ID:1017814 發表于 2022-5-10 15:20 | 顯示全部樓層 |閱讀模式
初學單片機,勿噴,請大俠指正,需要的直接復制拿走
protues仿真通過
#include <reg52.h>
#include "1602.h"
typedef unsigned char u8;
u8 n,second0,second1,minute0,minute1,hour0,hour1;
void timer0()
{
        TMOD=0X01;
        TH0=(65536-46483)/256;
        TL0=(65536-46483)%256;
        EA=1;          //開總中斷
        ET0=1;  //開定時器0中斷
        TR0=1;          //啟動定時器0
}
void main()
{
        LCD_init();
        timer0();
        while(1);
}
void interr() interrupt 1
{
        TH0=(65536-46483)/256;
        TL0=(65536-46483)%256;
        n++;
        if(n==20)         //1秒定時
        {
                 n=0;
                second0++;
        }
        if(second0==10)
        {
                 second0=0;
                second1++;
        }
        if(second1==6)
        {
                 second1=0;
                minute0++;
        }
        if(minute0==10)
        {
                 minute0=0;
                minute1++;
        }
        if(minute1==6)
        {
                 minute1=0;
                hour0++;
        }
        if(hour0==10)
        {
                 hour0=0;
                hour1++;
        }
        if(hour1==2 && hour0==4)
        {
                hour0=0;
                hour1=0;
        }
        w_cmd(0xc0);
        w_dat(hour1+0x30);                //時
        w_dat(hour0+0x30);
        if(n<10)
        {
                w_dat(':');       
        }else
        {
           w_dat(' ');
        }
        w_dat(minute1+0x30);        // 分
        w_dat(minute0+0x30);       
        if(n<10)
        {
                w_dat(':');       
        }else
        {
           w_dat(' ');
        }
        w_dat(second1+0x30);        //秒
        w_dat(second0+0x30);
}
//*************************************以下是1602.h文件****************************************************
#ifndef _1602_H_
#define _1602_H_
/*
1602液晶屏的操作
讀數據,寫數據,寫命令
定義引腳:P0口是數據,P2口是控制 
*/
sbit RS=P2^0;          //定義屏的模式管腳位
sbit RW=P2^1;          //定義屏的讀寫管腳位
sbit EN=P2^2;          //屏的使能位
sbit BUSY=P0^7;          

void wait()                //實際是判斷LCD是否忙,是否可進入讀寫狀態
{
        P0=0xff;
        do
        {
                RS=0;        //命令(狀態)模式
                RW=1;        //讀操作
                EN=0;        //使能關
                EN=1;        //使能開
        }while(BUSY==1);
        EN=0;
}
void w_dat(unsigned char dat)        //寫數據
{
        wait();
        EN=0;
        P0=dat;
        RS=1;           //數據模式
        RW=0;                //寫操作
        EN=1;           //使能開,數據進去了
        EN=0;           //使能關
}
void w_cmd(unsigned char cmd)  //寫命令函數
{
        wait();
        EN=0;
        P0=cmd;               
        RS=0;                //命令(狀態)模式
        RW=0;                //寫操作
        EN=1;                //使能開,命令進去了
        EN=0;                //使能關
}
//void w_string(unsigned char addr,unsigned char  *p)         //寫入字符串函數
//{
//         w_cmd(addr);        //寫入命令,讓屏從那里開始顯示
//
//        while(*p !='\0')        //循環字符串中的每個字符,直到結尾
//        {
//                 w_dat(*p++);       
//        }
//}
void LCD_init()         //LCD初始化函數
{
   w_cmd(0x38);           //16*2顯示,5*7點陣,8位數據接口
   w_cmd(0x0c);           //顯示器開、光標開、光標允許閃爍
   w_cmd(0x06);           //文字不動、光標自動右移
   w_cmd(0x01);           //清屏
}
#endif


20220510151356.jpg

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:16255 發表于 2022-5-11 17:07 | 顯示全部樓層
這個電路實際上是不能工作的。顯示屏的VEE被接地了,顯示屏會不顯示。
還有單片機的晶振、復位、ALE等都要安排上,不然單片機不工作。(用STC單片機可以不用考慮)
回復

使用道具 舉報

ID:1017814 發表于 2022-5-13 20:57 | 顯示全部樓層
樓上說的是,這個只是仿真,實際要用可調電阻才行,今天有空了,收到從網上購的1602屏,就試了,發現個問題,就是實物不能顯示,對比度也不行,所以就加上可調電阻,顯示對比度可以了。但還是不正常,后來
原因找到了,程序問題,就是使能口,延時少了,再加一句就行
每個EN=0之前加上 EN=1;,意思就是兩句EN=1;可以做到延時就行了。


評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1026852 發表于 2022-5-16 00:50 | 顯示全部樓層
優秀,這個我還做不來
回復

使用道具 舉報

ID:1012735 發表于 2022-5-16 07:51 | 顯示全部樓層
把中斷函數中的代碼 if(second0==10)及以下所有行,移入主函數的while()循環中執行,或許走時會更精確些。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产区视频在线观看 | 成人h视频在线 | a国产一区二区免费入口 | 亚洲成人一区二区三区 | 草b视频| 黄色网页在线观看 | 人妖一区 | 久久精品国产亚洲 | 亚洲电影专区 | av国产精品毛片一区二区小说 | 99在线资源 | 99这里只有精品视频 | 99精品一区 | 国产成人精品免高潮在线观看 | 成人一区在线观看 | 国产一区二区精品自拍 | 国产成人精品免费视频 | 日本一区二区三区四区 | 涩涩导航 | 在线观看免费国产 | 精品国产乱码久久久久久a丨 | 欧美日韩久久精品 | 日韩中文一区二区三区 | 久久久久久久国产 | 日韩精品视频在线 | 国产激情视频网站 | 狠狠爱综合网 | 日本一区不卡 | 夜夜艹天天干 | 国产欧美日韩久久久 | 91福利在线观看 | 99亚洲视频| 精品1区 | 日本黄色高清视频 | 久久久精品一区 | 欧美一区久久 | 国产欧美一区二区三区日本久久久 | 亚洲视频中文字幕 | 黄色免费在线观看网站 | 国产视频福利一区 | 日韩欧美精品在线播放 |