立即注册
登录
返回首页
uid:70976的个人空间
空间首页
主题
个人资料
论坛
问答区
单片机教程
单片机DIY
电子DIY
帮助
我的空间
好友
帖子
收藏
道具
勋章
任务
淘帖
群组
排行榜
留言板
wyl775078638
2018-7-4 17:16
五、 基于单片机的秒表系统设计
设计内容:1、设计精度为0.1S的秒表系统(40分)
2、设置启动、暂停、清零按钮(20分)
3、设计每一秒钟都有提醒功能(20分)
4、秒表的最长计时长度为9:59:59,超过此长度,报警。
有这个程序吗?和原理图吗
danpianji2018
2016-6-22 17:05
您好,我想请教一下,这个程序为什么会出现乱码?#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="my information";
uchar code table[][16]={{"1.YU WEN HUA"},{"2.ITO 2014412586"},{"3.MCS-51 EXP8"},{"4.LCD DISPLAY"}};
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
uchar num,key;
bit flag,flag1,flag2,flag3=0;
void V_display();
void H_display();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrw=0;
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrw=0;
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
uchar q;
lcden=0;
for(q=0;q<3;q++)
{
delay(15);
write_com(0x38);
}
write_com(0x38);
write_com(0x0e);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
}
void main()
{
init();
EA=1;EX0=1; EX1=1;IT0=1;IT1=1;
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;ET0=1;
while(1)
{
write_com(0x01);
write_com(0x80+0x01);
for(num=0;table1[num]!='\0';num++)
{
if(flag2) break;
write_data(table1[num]);
delay(300);
}
write_com(0x01);
flag1=flag=0;
if(flag2)
{
flag3=1;
flag2=0;
switch(key)
{
case 0xfe:V_display();
flag3=0;break;
case 0xfd:H_display();
flag3=0;break;
default:flag3=0;
}
}
}
}
void V_display()
{
uchar i,j,k;
write_com(0x01);
while(1)
{
for(i=0;i<4;i++)
write_com(0x80+0x00);
for(j=0;table
[j]!='\0';j++)
{
while(flag)
{
if(flag1) return;}
if(flag1) return;
write_data(table
[j]);
delay(200);
}
if(i>=3) k=0;
else k=i+1;
write_com(0x80+0x40);
for(j=0;table[k][j]!='\0';j++)
{
while(flag)
{
if(flag1) return;
}
if(flag1) return;
write_data(table[k][j]);
/*delay(200); */
}
delay(1000);
write_com(0x01);
}
}
void H_display()
{
uchar i,j;
write_com(0x01);
for(i=0;i<3;)
{
if(i<1)
write_com(0x80+0x01);
else
write_com(0x80+0x41);
for(j=0;table
[j]!='\0';j++)
{
while(flag)
{
if(flag1) return;}
if(flag1) return;
write_data(table
[j]);
delay(200);
}
if(i<1)
write_com(0x80+0x15);
else write_com(0x80+0x55);
for(j=0;table[i+1][j]!='\0';j++)
{
while(flag)
{
if(flag1) return;
}
if(flag1) return;
write_data(table[i+1][j]);
delay(200);
}
i=i+2;
}
while(1)
{
write_com(0x1c);
while(flag)
{
if(flag1) return;
}
if(flag1) return;
delay(200);
}
}
void INT0_SER () interrupt 0
{
if(flag3==1)
flag=!flag;
}
void T0_SER () interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
if(P3!=0xff)
{
delay(20);
if((P3!=0xff)&&(flag3==0)&&(INT0!=0)&&(INT1!=0))
{
key=P3;
flag2=1;
}
}
}
void INT1_SER() interrupt 2
{
if(flag3==1)
flag1=1;
}
51xingshou
2016-1-11 11:50
您好楼主 我是一个刚刚接触单片机的实习生 我看了您的关于《51单片机同时外扩RAM,ROM的具体实现及Keil的具体设置》的文章 我觉得很受用 可是我还是有点不懂 。我的QQ号是1003302094 或者您能给您的QQ吗 我想向您请教可以吗 谢谢
谦虚请教
2015-6-19 21:28
您好。我想问一下您的独立按键密码锁程序+流程图中延时函数用多大的晶振呢,希望您百忙之中帮小弟解决这个问题啊。拜托了
uid:70976
加为好友
打个招呼
发送消息
手机版
|
小黑屋
|
51黑电子论坛
|
管理员QQ:125739409;技术交流QQ群281945664
Powered by
单片机教程网
返回顶部