標(biāo)題:
單片機(jī)stc89c52 lcd1602 9999秒倒計(jì)時(shí) 可按鍵控制
[打印本頁]
作者:
lx20000904
時(shí)間:
2020-2-11 20:05
標(biāo)題:
單片機(jī)stc89c52 lcd1602 9999秒倒計(jì)時(shí) 可按鍵控制
kr51開發(fā)板 stc89c52 lcd1602 廢話不多說 看代
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^0;//H數(shù)據(jù),L命令
sbit lcden=P2^2;//高脈沖使能,使能脈寬最小150ns
sbit rw=P2^1;
uchar code table[]= "welcome to use";
uchar code table1[]="press the key";
uchar code table3[]="Time remaining";
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
uchar qian;
uchar bai;
uchar shi;
uchar ge;
int num=9999;//變量控制時(shí)間
int a=0;
int c=0;
int d=0;//這三個(gè)變量請讀者自行體會(huì)作用
void anjian();//按鍵函數(shù)聲明
/********************************************************************
* 名稱 : delay(uchar x)
* 功能 : 延時(shí)函數(shù)
* 輸入 : x
* 輸出 : 無
***********************************************************************/
void delay(uchar x)
{ uint y;
for(;x>0;x--)
{
for(y=110;y>0;y--)
{};
}
}
/********************************************************************
* 名稱 : lcdwrcom(uchar cdat)
* 功能 : LCD1602寫數(shù)據(jù)到LCD1602
* 輸入 : cdat
* 輸出 : 無
***********************************************************************/
void lcdwrdata(uchar dat)
{
// dat = ((dat&0x01)<<7)|((dat&0x02)<<5)|((dat&0x04)<<3)|((dat&0x08)<<1)|((dat&0x10)>>1)|((dat&0x20)>>3)|((dat&0x40)>>5)|((dat&0x80)>>7);
rs=1;//寫數(shù)據(jù)時(shí)RS拉高
lcden=1;
P0=dat;
delay(6);
lcden=0;
delay(6);
}
/********************************************************************
* 名稱 : lcdwrcom(uchar cdat)
* 功能 : LCD1602寫命令到LCD1602
* 輸入 : cdat
* 輸出 : 無
***********************************************************************/
void lcdwrcom(uchar cdat)//寫指令數(shù)據(jù)到LCD
{
// cdat = ((cdat&0x01)<<7)|((cdat&0x02)<<5)|((cdat&0x04)<<3)|((cdat&0x08)<<1)|((cdat&0x10)>>1)|((cdat&0x20)>>3)|((cdat&0x40)>>5)|((cdat&0x80)>>7);
rs=0;//寫指令時(shí)RS拉低
lcden=1;
P0=cdat;//
delay(6);//不加此延時(shí)將導(dǎo)致不能寫入指令,但能寫入顯示數(shù)據(jù)
lcden=0;
delay(6);
}
/********************************************************************
* 名稱 : lcd_init()
* 功能 : LCD1602初始化
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void lcd_init()
{
lcdwrcom(0x38);//0x38設(shè)置顯示模式為:16X2 顯示,5X7 點(diǎn)陣,8 位數(shù)據(jù)接口
lcdwrcom(0x0c);//打開顯示光標(biāo)閃爍
lcdwrcom(0x06);
lcdwrcom(0x01);
}
void display(int numdis)//顯示時(shí)間函數(shù)
{
qian=numdis/1000;
bai=(numdis%1000)/100;
shi=(numdis%100)/10;
ge=numdis%10;
}
void init()//定時(shí)器初始化
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
復(fù)制代碼
LCD1602 (1).zip
2020-2-11 20:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.44 KB, 下載次數(shù): 26, 下載積分: 黑幣 -5
此為c文件,直接燒錄就好
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1