单片机程序编写 1602动态显示

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MIAN?1602
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?C_INITSEG
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
uchar p,num,shi,fen=5,miao;
uchar table1[]=" -- -- ";
uchar table2[]=" ";
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
RS=0;
P0=com;
delay(1);
EN=1;
delay(1);
EN=0;
}
void write_dat(uchar dat)
{
RS=1;
P0=dat;
delay(1);
EN=1;
delay(1);
EN=0;
}
void init()
{
RW=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(p=0;p<16;p++)
{
write_dat(table1[p]);
delay(1);
}
write_com(0x80+0x40);
for(p=0;p<16;p++)
{
write_dat(table2[p]);
delay(1);
}
}
void chaifen_show()
{
uchar miaoshiwei,miaogewei,
fenshiwei,fengewei,shishiwei,shigewei;
miaoshiwei=miao/10;
miaogewei=miao%10;
fenshiwei=fen/10;
fengewei=fen%10;
shishiwei=shi/10;
shigewei=shi%10;
write_com(0x80+14);
write_dat(0x30+miaoshiwei);
write_dat(0x30+miaogewei);
write_com(0x80+10);
write_dat(0x30+fenshiwei);
write_dat(0x30+fengewei);
write_com(0x80+6);
write_dat(0x30+shishiwei);
write_dat(0x30+shigewei);
}
void mian()
{
init();
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(num==10)
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
chaifen_show();
}

}

}
void timero() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}

第1个回答  2016-10-28
void mian() //这里写错了,应该是
void main()

高手指导一下:编写程序单片机报警并且用1602液晶显示。如何调用?_百度...
这个是经过编译成功的程序,看看什么样:include "1602.h"include "def.h"\/***端口定义***\/ define uchar unsigned char define uint unsigned int unsigned char code String1[] ="The first alarm ";unsigned char code String2[] ="The second alarm";unsigned char code String3[]...

1602显示屏显示第一行和第二行数字怎么输入程序
1、首先我们打开KeilμVision编译器,新建一个工程,然后保存在硬盘上的位置。2、其次导入51单片机的头文件以及LCD1602的头文件。创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。3、最后最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无限循环...

...用单片机和4*4矩阵键盘输入数字并在LCD1602上显示出来的C语言程序...
sbit E=P2^7;\/\/1602使能引脚 sbit RW=P2^6;\/\/1602读写引脚 sbit RS=P2^5;\/\/1602数据\/命令选择引脚 \/ 名称 : Delay_1ms()功能 : 延时子程序,延时时间为 1ms * x 输入 : x (延时一毫秒的个数)输出 : 无 \/ void Delay_1ms(uint i)\/\/1ms延时 { uchar x,j;for(j=0;j<i;j++...

用51单片机控制1602液晶显示10进制数字~~
WriteAddress(0x03); \/\/写地址,从第1行第4列开始显示 i=0; \/\/从字符数组的第1个元素开始显示 while(string[i]!='\\0') \/\/只要没有显示到字符串的结束标志'\\0',就继续 {WriteData(string[i]); \/\/将第i个字符数组元素写入LCDi++; \/\/指向下一个数组元素 }WriteAddress(0x46); \/\/写地址,将第二...

高手指导一下:编写程序单片机报警并且用1602液晶显示。...
sbit lcden=P2^6;\/\/使能端 sbit lcdrs=P2^4;\/\/数据命令端 sbit lcdrw=P2^5;\/\/读写选择端 uchar SecondLine[]=" 自己写东西进来,如:NBA ";\/\/他们两个用于液晶显示的数组 uchar FirstLine[]=" 同上 ";void delay(uchar z){ uchar x,y;for(x=z;x>0;x--)for(y=...

51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号
1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。2、导入51单片机的头文件以及LCD1602的头文件。3、创建一个延时函数,可以传入想要具体延时的时长,...

这是用单片机控制的1602液晶显示 程序,我检查不出错误来,可就是实现...
把延时啦长点就好了,这个问题经常遇见,把每次写命令和写数据的时间延时长一点就OK了!

51单片机开发板中的1602如何实现依次滚动不相同的屏幕显示???
1602的两行32个字符是相互独立的,每一个位置的字符都有一个地址,第一行的16个地址是00H到0FH,第二行的地址是40H到4FH。往哪地址上写入,哪个字符才改变。这样想滚动就得不停的改写,比如你想让第二行显示混动的1 2 3 4 5 6 7 8 — — — — — — — —,你就得做一个16次...

想做一个基于51单片机按键计数用LCD1602显示的编程0-99
void 1602_display(uchar temp)\/\/液晶显示一个8 位二进制数 { uchar A1,A2,A3;A1=temp\/100;\/\/分离百位、十位、个位 A2=temp\/10%10;A3=A2t%10;write_com(0x80);\/\/第1行,第1字 write_date(A1+0x30);Delay1ms(1);write_date( A2+0x30);Delay1ms(1);write_date(A3+0x30);Delay...

1602显示的代码问题,我单片机不好,求高手指点
1602显示屏支持显示两行16列的字符 你的if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;设置字符显示在第二行还是第一行,前一个语句是显示在第一行,0x80是液晶屏第一行的首地址 同理后面一句字符显示在第二行,0xc0是第二行的首地址 a = a + lie - 1;这条语句确定字符显示...

相似回答