时钟程序 51单片机 时间可设定Word文档格式.docx

上传人:b****1 文档编号:3756584 上传时间:2023-05-02 格式:DOCX 页数:17 大小:18.43KB
下载 相关 举报
时钟程序 51单片机 时间可设定Word文档格式.docx_第1页
第1页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第2页
第2页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第3页
第3页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第4页
第4页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第5页
第5页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第6页
第6页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第7页
第7页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第8页
第8页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第9页
第9页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第10页
第10页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第11页
第11页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第12页
第12页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第13页
第13页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第14页
第14页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第15页
第15页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第16页
第16页 / 共17页
时钟程序 51单片机 时间可设定Word文档格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

时钟程序 51单片机 时间可设定Word文档格式.docx

《时钟程序 51单片机 时间可设定Word文档格式.docx》由会员分享,可在线阅读,更多相关《时钟程序 51单片机 时间可设定Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。

时钟程序 51单片机 时间可设定Word文档格式.docx

0x00,0x7F,0x09,0x09,0x09,0x01,//F17

0x00,0x3E,0x41,0x49,0x49,0x7A,//G18

0x00,0x7F,0x08,0x08,0x08,0x7F,//H19

0x00,0x00,0x41,0x7F,0x41,0x00,//I20

0x00,0x20,0x40,0x41,0x3F,0x01,//J21

0x00,0x7F,0x08,0x14,0x22,0x41,//K22

0x00,0x7F,0x40,0x40,0x40,0x40,//L23

0x00,0x7F,0x02,0x0C,0x02,0x7F,//M24

0x00,0x7F,0x04,0x08,0x10,0x7F,//N25

0x00,0x3E,0x41,0x41,0x41,0x3E,//O26

0x00,0x7F,0x09,0x09,0x09,0x06,//P27

0x00,0x3E,0x41,0x51,0x21,0x5E,//Q28

0x00,0x7F,0x09,0x19,0x29,0x46,//R29

0x00,0x46,0x49,0x49,0x49,0x31,//S30

0x00,0x01,0x01,0x7F,0x01,0x01,//T31

0x00,0x3F,0x40,0x40,0x40,0x3F,//U32

0x00,0x1F,0x20,0x40,0x20,0x1F,//V33

0x00,0x3F,0x40,0x38,0x40,0x3F,//W34

0x00,0x63,0x14,0x08,0x14,0x63,//X35

0x00,0x07,0x08,0x70,0x08,0x07,//Y36

0x00,0x61,0x51,0x49,0x45,0x43,//Z37

0x00,0x20,0x54,0x54,0x54,0x78,//a38

0x00,0x7F,0x48,0x44,0x44,0x38,//b39

0x00,0x38,0x44,0x44,0x44,0x20,//c40

0x00,0x38,0x44,0x44,0x48,0x7F,//d41

0x00,0x38,0x54,0x54,0x54,0x18,//e42

0x00,0x08,0x7E,0x09,0x01,0x02,//f43

0x00,0x18,0xA4,0xA4,0xA4,0x7C,//g44

0x00,0x7F,0x08,0x04,0x04,0x78,//h45

0x00,0x00,0x44,0x7D,0x40,0x00,//i46

0x00,0x40,0x80,0x84,0x7D,0x00,//j47

0x00,0x7F,0x10,0x28,0x44,0x00,//k48

0x00,0x00,0x41,0x7F,0x40,0x00,//l49

0x00,0x7C,0x04,0x18,0x04,0x78,//m50

0x00,0x7C,0x08,0x04,0x04,0x78,//n51

0x00,0x38,0x44,0x44,0x44,0x38,//o52

0x00,0xFC,0x24,0x24,0x24,0x18,//p53

0x00,0x18,0x24,0x24,0x18,0xFC,//q54

0x00,0x7C,0x08,0x04,0x04,0x08,//r55

0x00,0x48,0x54,0x54,0x54,0x20,//s56

0x00,0x04,0x3F,0x44,0x40,0x20,//t57

0x00,0x3C,0x40,0x40,0x20,0x7C,//u58

0x00,0x1C,0x20,0x40,0x20,0x1C,//v59

0x00,0x3C,0x40,0x30,0x40,0x3C,//w60

0x00,0x44,0x28,0x10,0x28,0x44,//x61

0x00,0x1C,0xA0,0xA0,0xA0,0x7C,//y62

0x00,0x44,0x64,0x54,0x4C,0x44,//z63

0x00,0x00,0x60,0x60,0x00,0x00,//.64

0x00,0x00,0x36,0x36,0x00,0x00,//:

65

0x00,0x00,0x41,0x22,0x14,0x08,//>

66

0x00,0x00,0x00,0x2f,0x00,0x00,//!

67

0x00,0x00,0x07,0x00,0x07,0x00,//"

68

0x00,0x14,0x7f,0x14,0x7f,0x14,//#69

0x00,0x24,0x2a,0x7f,0x2a,0x12,//$70

0x00,0x62,0x64,0x08,0x13,0x23,//%71

0x00,0x36,0x49,0x55,0x22,0x50,//&

72

0x00,0x00,0x05,0x03,0x00,0x00,//'

73

0x00,0x00,0x1c,0x22,0x41,0x00,//(74

0x00,0x00,0x41,0x22,0x1c,0x00,//)75

0x00,0x14,0x08,0x3E,0x08,0x14,//*76

0x00,0x08,0x08,0x3E,0x08,0x08,//+77

0x00,0x00,0x00,0xA0,0x60,0x00,//,78

0x00,0x08,0x08,0x08,0x08,0x08,//-79

0x00,0x40,0x40,0x40,0x40,0x40,//_80

0x00,0x20,0x10,0x08,0x04,0x02,///81

0x00,0x00,0x7F,0x41,0x41,0x00,//[82

0x00,0x00,0x41,0x41,0x7F,0x00,//]82

0x00,0x04,0x02,0x01,0x02,0x04,//^84

};

/*-------------------------------------

wr_LCD_byte:

通过SPI端口向LCD5110写入数据

输入参数:

dat(byte):

写入的数据

cmd(0、1):

指令0,数据1

-------------------------------------*/

voidWr_LCD_byte(u8dat,u8cmd)

{

unsignedchari;

SCE=0;

DC=cmd;

for(i=0;

i<

8;

i++)

{

if(dat&

0x80)

SDIN=1;

else

SDIN=0;

dat=dat<

<

1;

SCLK=0;

SCLK=1;

}

DC=1;

SCE=1;

SDIN=1;

}

/*---------------------------

set_LCD_XY:

设置光标位置

X(0-83)、Y(0-5)

---------------------------*/

voidSet_LCD_XY(u8X,u8Y)

Wr_LCD_byte(0x40|Y,0);

Wr_LCD_byte(0x80|X,0);

/*------------------

clr_LCD:

LCD5110清屏

------------------*/

voidClr_LCD(void)

unsignedcharc,r;

Set_LCD_XY(0,0);

for(r=0;

r<

6;

r++)

for(c=0;

c<

84;

c++)

{

Wr_LCD_byte(0x00,1);

}

}

/*-------------------------------------------

wr_LCD_chr:

显示8*16大小的半角字符

输入函数:

col(0-9):

显示位置-列

row(0-5):

显示位置-行

ch:

(0-39):

字符位置(位于数组chr中)

-------------------------------------------*/

voidWr_LCD_chr(u8col,u8row,u8ch)

Set_LCD_XY(col*6,row);

i++)

Wr_LCD_byte(chr[ch*6+i],1);

/*----------------------

LCD_init:

LCD5110初始化

----------------------*/

voidLCD_Init(void)

Wr_LCD_byte(0x21,0);

//初始化LCD,功能设定使用扩充指令

Wr_LCD_byte(0xc8,0);

//设定液晶偏置电压

Wr_LCD_byte(0x20,0);

//使用基本指令

Wr_LCD_byte(0x0C,0);

//设定显示模式,正常显示

voiddelayms(unsignedintm)//延时程序

unsignedinti;

while(--m)

372;

i++);

/*------------------------------------------------

键盘扫描程序

------------------------------------------------*/

ucharkeyscan(void)//键盘扫描函数,使用行列反转扫描法

ucharcord_h,cord_l;

//行列值中间变量

P3=0x0f;

//行线输出全为0

cord_h=P3&

0x0f;

//读入列线值

if(cord_h!

=0x0f)//先检测有无按键按下

delayms(10);

//去抖

=0x0f)

P3=cord_h|0xf0;

//输出当前列线值

cord_l=P3&

0xf0;

//读入行线值

return(cord_h+cord_l);

//键盘最后组合码值

}return(0xff);

//返回该值

#defineSETUPCTRL0xF7

#definePLUSCTRL0xFB

#defineNONE0xFD

#defineMENUCTRL0xFE

ucharscreen[6][14]={0};

//6×

14列屏幕内容数组

uchartime1Counter=0;

//定时器1计数器

uintdpyCounter=0;

//用于控制光标处闪烁

ucharhour=23;

//小时初始化

ucharminute=59;

//分钟初始化

ucharsecond=0;

//秒初始化

ucharcol;

ucharrow=2;

//显示在第3行

ucharsetupFlag=0;

//设置标志

sbitLED0=P0^0;

sbitLED1=P0^1;

sbitLED2=P0^2;

sbitLED3=P0^4;

sbitLED=P0^7;

定时器1初始化子程序

voidInit_Timer1(void)//定时50ms

TMOD|=0x10;

//使用模式1,16位定时器

TH1=(65536-50000)/256;

//给定初值,定时器计数50ms溢出

TL1=(65536-50000)%256;

EA=1;

//总中断打开

ET1=1;

//定时器中断打开

TR1=1;

//定时器开关打开

定时器1中断子程序

voidTimer1_isr(void)interrupt3using2

//重新赋值

if(1==setupFlag)//设置时钟时

{

time1Counter=0;

//定时器1计数器要清零

return;

}

time1Counter++;

//定时器1计数器加1

if(20==time1Counter)//1s更新一次

time1Counter=0;

//定时器1计数器清零

second++;

//秒加1

if(60==second)

second=0;

minute++;

if(60==minute)

{

minute=0;

hour++;

if(24==hour)

hour=0;

}

screen[row][5]=hour/10+2;

//更新小时显示内容

screen[row][6]=hour%10+2;

screen[row][8]=minute/10+2;

//更新分钟显示内容

screen[row][9]=minute%10+2;

screen[row][11]=second/10+2;

//更新秒显示内容

screen[row][12]=second%10+2;

外部中断0子程序

voidExternal_isr(void)interrupt0using1

ucharhourH;

ucharhourL;

ucharminuteH;

ucharminuteL;

ucharctrl;

LED=0;

ctrl=P2;

//按键从P2口输入

switch(ctrl)

caseSETUPCTRL:

//按下设置键

LED3=0;

if(0==setupFlag)

{

setupFlag=1;

col=4;

dpyCounter=0;

col++;

if(7==col)//第7列已显示“:

if(10==col)//以完成设置

setupFlag=0;

//设置标志清零

break;

casePLUSCTRL:

//按下加1键

LED2=0;

if(1==setupFlag)

{

switch(col)//光标所在列数

case5:

//小时十位处

hour+=10;

if(hour>

23)

hour%=10;

break;

case6:

//小时个位处

hourH=hour/10;

hourL=hour%10;

hourL++;

if(2==hourH)

{

if(4==hourL)

hourL=0;

}

else

if(10==hourL)

hour=hourH*10+hourL;

case8:

//分钟十位处

minute+=10;

if(minute>

59)

minute%=10;

case9:

//分钟个位处

minuteH=minute/10;

minuteL=minute%10;

minuteL++;

if(10==minuteL)

minuteL=0;

minute=minuteH*10+minuteL;

default:

}

caseNONE:

LED1=0;

caseMENUCTRL:

LED0=0;

default:

while(!

(0xFF==ctrl))//等待按键释放

voidmain()

ucharr,c;

Init_Timer1();

//初始化定时器1

EX0=1;

//开外部中断0

IT0=0;

//设置低电平可引起外部中断0

LCD_Init();

//LCD初始化

Clr_LCD();

//LCD清屏

screen[row][0]=31;

//T

screen[row][1]=46;

//i

screen[row][2]=50;

//m

screen[row][3]=42;

//e

screen[row][7]=65;

//:

screen[row][10]=65;

//计算小时显示的内容

//计算分钟显示的内容

screen[row

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2