欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機使用1062lcd設置的電子時鐘源代碼
[打印本頁]
作者:
來了666
時間:
2018-11-22 20:43
標題:
單片機使用1062lcd設置的電子時鐘源代碼
單片機使用1062lcd設置的電子時鐘。
第一行顯示字符
第二行顯示時間
適用于初學者和一些學生。
在文件里面有源文件C文件以及hex燒錄程序。
大家可以看一看。
單片機源程序如下:
#include<reg51.h>
#include<string.h> //strcat():合并字符串
#define uchar unsigned char
#define uint unsigned int
#define GPIO_KEY P1
sbit E=P2^7; //1602使能引腳
sbit RW=P2^5; //1602讀寫引腳
sbit RS=P2^6; //1602數據/命令選擇引腳
uchar table1[]="zhangwenhua2017210484"; //The time is
//注意修改后的長度
uchar str1[2]="12"; //second
uchar str2[2]="12"; //minute
uchar str3[2]="07"; //hour
uint KEY_VALUE;
uint second,minute,hour; //時鐘顯示數值
uint tag; //中斷計時指標
void intTostring(uint num,uchar temp[2]);
void clock() //時鐘進制函數
{
if(second == 60){minute++;second=0;}
if(minute == 60){hour++;minute=0;}
if(hour == 24){hour=0;}
//數字->字符串的轉換
intTostring(second,str1);
intTostring(minute,str2);
intTostring(hour,str3);
// time 已經存儲了時間
}
void delayms(uint del) //延時1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=110;j++);
}
void writecmd(uchar com) //寫指令
{
E=0;
RS=0;
RW=0;
P0=com;
delayms(2);
E=1;
delayms(2);
E=0;
}
void writedata(uchar dat)//寫數據
{
E=0;
RS=1;
RW=0;
P0=dat;
delayms(2);
E=1;
delayms(2);
E=0;
}
void init(void) //初始化
{
delayms(15);
writecmd(0x38);
delayms(5);
writecmd(0x38);
delayms(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
void intTostring(uint num,uchar temp[2])// 一定要注意這里的字符串長度。
{
uint ge,shi;
shi = num/10;
ge = num%10;
temp[0] = shi+48;//利用ASCLL編碼轉換
temp[1] = ge+48;
}
void display()
{
uchar j;
uchar i;
writecmd(0x80); //告訴液晶在哪個地方顯示 (設置地址指針)//80H+00
for(j=0;j<11;j++) //有11個字符,要循環11次
{
writedata(table1[j]); //The time is
delayms(5);
}
writecmd(0x80+0x40); //再設置第二行的起始位置
//時鐘顯示
for(i=0;i<2;i++)writedata(str3[i]);
writedata(':');
for(i=0;i<2;i++)writedata(str2[i]);
writedata(':');
for(i=0;i<2;i++)writedata(str1[i]);
delayms(5);
//end
}
void main()
{
TMOD = 0x02; //設置T0為自動重裝初值的工作方式
TL0 = 0x06;// 12Mhz晶振 --> 1us,此處取250us作為一次中斷所用時間, 那么4000次中斷就算一秒。
TH0 = 0x06;// 自動重裝初值,不影響精度
EA = 1;
ET0 = 1;
TR0 = 1;
init();
while(1){
display();
clock();
}
}
//利用定時器0計時
void T0_time() interrupt 1
{
if(tag == 4000)
{
tag = 0;
second++;
}
tag++;
}
復制代碼
所有資料51hei提供下載:
電子時鐘.rar
(2.45 KB, 下載次數: 13)
2018-11-22 20:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1