长春理工大学光电信息学院电赛程序Word格式文档下载.docx
- 文档编号:22079935
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:40
- 大小:23.11KB
长春理工大学光电信息学院电赛程序Word格式文档下载.docx
《长春理工大学光电信息学院电赛程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《长春理工大学光电信息学院电赛程序Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
;
ucharcodetable3[]="
TIME:
"
ucharcodetable5[]="
TheLetteris:
"
ucharcodetable4[]="
Temperatureis:
ucharcodetable6[]="
ThePicis:
uchartable1[7];
uchark,a,num;
/********************************************************************
*名称:
Delay()
*功能:
延时,延时时间为10ms*del
*输入:
del
*输出:
无
***********************************************************************/
voidDelay(uintdel)
{
uinti,j;
for(i=0;
i<
del;
i++)
for(j=0;
j<
1827;
j++)
;
}
voiddelay3(intms)
while(ms--)
{
uchary;
for(y=0;
y<
100;
y++);
}
voiddelayMs(uinta)
uinti,j;
for(i=a;
i>
0;
i--)
for(j=100;
j>
j--);
voiddelay0(ucharx)//x*0.14MS
unsignedchari;
while(x--)
for(i=0;
13;
i++){}
voiddelay(void)
{
unsignedchari,j;
i<
20;
i++)
j<
250;
j++);
voiddelay1(ucharx)
{ucharj;
while((x--)!
=0)
{for(j=0;
125;
j++)
{;
enable(uchardel)
1602命令函数
输入的命令值
voidenable(uchardel)
P0=del;
RS=0;
RW=0;
E=0;
delay0
(1);
E=1;
write(uchardel)
1602写数据函数
需要写入1602的数据
voidwrite(uchardel)
RS=1;
L1602_init()
1602初始化,请参考1602的资料
voidL1602_init(void)
enable(0x01);
enable(0x38);
enable(0x0c);
enable(0x06);
enable(0xd0);
L1602_char(ucharhang,ucharlie,charsign)
改变液晶中某位的值,如果要让第一行,第五个字符显示"
b"
,调用该函数如下
L1602_char(1,5,'
b'
)
行,列,需要输入1602的数据
voidL1602_char(ucharhang,ucharlie,charsign)
uchara;
if(hang==1)a=0x80;
if(hang==2)a=0xc0;
a=a+lie-1;
enable(a);
write(sign);
voidwrite_data(uchardate)
RS=1;
P0=date;
delay3(5);
E=1;
E=0;
L1602_string(ucharhang,ucharlie,uchar*p)
改变液晶中某位的值,如果要让第一行,第五个字符开始显示"
abcdef"
L1602_string(1,5,"
abcdef;
voidL1602_string(ucharhang,ucharlie,uchar*p)
while
(1)
if(*p=='
\0'
)break;
write(*p);
p++;
voidwriteString(uchar*str,ucharlength)
uchari;
for(i=0;
i<
length;
write_data(str[i]);
/*********************************************************/
voidbeep()//蜂鸣器响一声函数
for(i=0;
i++)
delay0(4);
BEEP=!
BEEP;
//BEEP取反
}
BEEP=1;
//关闭蜂鸣器
delay1(250);
//延时
voiddisplay(unsignedchari)
//P2=0x7f;
//选通最有端的数码管显示
//P0=table[i];
//显示i参数传来的字型码
enable(0xc0);
write_data(0x30+i);
}
v_RTInputByte()
往DS1302写入1Byte数据
ucDa写入的数据
voidv_RTInputByte(ucharucDa)
ACC=ucDa;
T_RST=1;
for(i=8;
i>
0;
T_IO=ACC0;
T_CLK=1;
T_CLK=0;
ACC=ACC>
>
1;
uc_RTOutputByte()
从DS1302读取1Byte数据
*返回值:
ACC
ucharuc_RTOutputByte(void)
1;
T_IO=1;
ACC7=T_IO;
return(ACC);
v_W1302(ucharucAddr,ucharucDa)
往DS1302写入数据
ucAddr:
DS1302地址,ucDa:
要写的数据
*返回值:
voidv_W1302(ucharucAddr,ucharucDa)
T_RST=0;
T_CLK=0;
v_RTInputByte(ucAddr);
//写地址
_nop_();
v_RTInputByte(ucDa);
//写1Byte数据
T_CLK=1;
uc_R1302(ucharucAddr)
读取DS1302某地址的数据
DS1302地址
ucDa:
读取的数据
ucharuc_R1302(ucharucAddr)
ucharucDa;
//写地址,命令
ucDa=uc_RTOutputByte();
//读1Byte数据
return(ucDa);
v_BurstW1302T
往DS1302写入时钟数据(多字节方式)
pSecDa:
时钟数据地址格式为:
秒分时日月星期年控制
*8Byte(BCD码)1B1B1B1B1B1B1B1B
voidv_BurstW1302T(uchar*pSecDa)
v_W1302(0x8e,0x00);
//控制命令,WP=0,写操作
v_RTInputByte(0xbe);
//0xbe:
时钟多字节写命令
i--)//8Byte=7Byte时钟数据+1Byte控制
v_RTInputByte(*pSecDa);
//写1Byte数据
pSecDa++;
v_BurstR1302T(uchar*pSecDa)
读取DS1302时钟数据
秒分时日月星期年
*7Byte(BCD码)1B1B1B1B1B1B1B
voidv_BurstR1302T(uchar*pSecDa)
v_RTInputByte(0xbf);
//0xbf:
时钟多字节读命令
*pSecDa=uc_RTOutputByte();
v_BurstW1302R(uchar*pReDa)
往DS1302寄存器数写入数据(多字节方式)
pReDa:
寄存器数据地址
voidv_BurstW1302R(uchar*pReDa)
v_W1302(0x8e,0x00);
v_RTInputByte(0xfe);
for(i=31;
i--)//31Byte寄存器数据
v_RTInputByte(*pReDa);
pReDa++;
v_BurstR1302R(uchar*pReDa)
读取DS1302寄存器数据
voidv_BurstR1302R(uchar*pReDa)
v_RTInputByte(0xff);
*pReDa=uc_RTOutputByte();
v_Set1302(uchar*pSecDa)
设置初始时间
初始时间地址。
初始时间格式为:
*7Byte(BCD码)1B1B1B1B1B1B1B
voidv_Set1302(uchar*pSecDa)
ucharucAddr=0x80;
for(i=7;
v_W1302(ucAddr,*pSecDa);
//秒分时日月星期年
ucAddr+=2;
v_W1302(0x8e,0x80);
//控制命令,WP=1,写保护
v_Get1302(ucharucCurtime[])
读取DS1302当前时间
ucCurtime:
保存当前时间地址。
当前时间格式为:
*7Byte(BCD码)1B1B1B1B1B1B1B
voidv_Get1302(ucharucCurtime[])
ucharucAddr=0x81;
7;
ucCurtime[i]=uc_R1302(ucAddr);
//格式为:
dectobcd(uchardec)
DEC码转换为BCD码
dec码
bcd码
uchardectobcd(uchardec)
ucharbcd;
bcd=0;
while(dec>
=10)
{
dec-=10;
bcd++;
bcd<
<
=4;
bcd|=dec;
returnbcd;
bcdtodec(ucharbcd)
BCD码转换为DEC码
ucharbcdtodec(ucharbcd)
uchardata1;
data1=bcd&
0x0f;
//取BCD低4位
bcd=bcd&
0x70;
//剔除BCD的最高位和低4位。
data1+=bcd>
3;
//用位移代替乘法运算
returndata1;
Write_DS1302Init()
往DS1302中写入数据。
最开始显示的数据就是在这里设置的。
**********************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 长春 理工大学 光电 信息 学院 赛程
![提示](https://static.bdocx.com/images/bang_tan.gif)