单片机程序做批注,谢谢
发布网友
发布时间:2023-10-08 21:31
我来回答
共2个回答
热心网友
时间:2024-09-22 17:19
看你代码片段
write_com();应该是写入命令
0x80 0x90 0x88 0x98 对应的是命令值 这个芯片文档里找
write_dat();应该是写数据 写入的数据是tab1[16] tab2[16] tab3[16] tab4[16] 这四个数组里的数据,每个数组里有16个字节的数据,write_dat每次写入1个字节,循环16次写入完1个数组
delay(1);延迟函数
EnDisplay就是个标识用的变量
所以上面代码大概意思应该就是
当f不等于7和8时 按照指定命令格式写入tab1 tab2 tab3 tab4里的数据,并将标识变量EnDisplay置0
当f等于7或8 并且 EnDisplay等于0时 写入命令0x01 EnDisplay置1; 写入命令0x80 并写入数据 2个字节 分别a_shi/10+0x30、a_shi%10+0x30
当f等于7或8 并且 EnDisplay不等于0时 写入命令0x80 并写入数据 2个字节 分别a_shi/10+0x30、a_shi%10+0x30
这里0x30应该是 ‘0’这个字符的Ascii码 一般 数字+0x30 用于把0~9整型数字转换成对应的字符
所以a_shi应该是一个2位数字
a_shi/10:取a_shi的十位
a_shi%10:取a_shi的个位
所以
a_shi/10+0x30:取a_shi的十位 并转换成对应的数字字符
a_shi%10+0x30:取a_shi的个位 并转换成对应的数字字符
热心网友
时间:2024-09-22 17:19
//一般人恐怕无法回答这个问题,我这里正好有这个程序,所以稍加注释
if(f!=7&&f!=8)
{
write_com(0x80);//LCD写第一行地址
for(i=0;i<16;i++)
{
write_dat(tab1[i]);//显示“"时间温度显示 ”
}
write_com(0x90);//第二行地址
for(i=0;i<16;i++)
{
write_dat(tab2[i]);//显示“公历:20”
}
write_com(0x88);//第三行地址
for(i=0;i<14;i++)
{
write_dat(tab3[i]);//显示“时间:”
delay(1);
}
write_com(0x98);//第四行地址
for(i=0;i<12;i++)
{
write_dat(tab4[i]);显示“室内温度:”
}
EnDisplay=0;
}
else
{
if(EnDisplay==0)
{
write_com(0x01);//关显示
EnDisplay=1;
}
write_com(0x80);
write_dat(a_shi/10+0x30);//显示年的十位数
write_dat(a_shi%10+0x30);//显示年的个位数
追问你好还有全文的注释吗