专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
我的单片机控制双向可控硅不能正常导通请大家看下~
2019-03-24 19:06
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
12755
3
1284
//程序功能1602液晶第一行显示"0123456789ABCDEF";第二行显示"!@#$%^&*()<>{}?+";
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs=P1^0;//H数据,L命令
sbit lcden=P1^1;//高脉冲使能,使能脉宽最小150ns
sbit kong=P1^2;
sbit ok=P1^3;
sbit jia=P1^4;
uchar code table1[]="error!";
uchar code table2[]="0123456789";
uchar code table3[]="SetSpeed:";
uchar code table4[]=" OK! ";
uchar code table5[]="Return.";
uchar pp=0;
uchar biaozhi=0;
uchar jishu=0;
uchar oksign=0;
uchar anjiang=0;
uchar dingshi=0;
uchar chufa=0;
void zhongduan_init(void)
{
IT0=1;
EX0=1;
TMOD=0x02;
ET0=1;
TH0=TL0=(256-200);
//EA=1;
}
void delay(uchar x)//1MS定时
{ uint y;
for(;x>0;x--)
{
for(y=123;y>0;y--)
{};
}
}
void lcdwrdata(uchar dat)
{ rs=1;//写数据时RS拉高
lcden=1;
P2=dat;
delay(6);
lcden=0;
delay(6);
}
void lcdwrcom(uchar cdat)//写指令数据到LCD
{ rs=0;//写指令时RS拉低
lcden=1;
P2=cdat;//
delay(6);//不加此延时将导致不能写入指令,但能写入显示数据
lcden=0;
delay(6);
}
void lcd_init()
{
lcdwrcom(0x38);//0x38设置显示模式为:16X2 显示,5X7 点阵,8 位数据接口
lcdwrcom(0x0c);//打开显示光标闪烁
lcdwrcom(0x06);//
lcdwrcom(0x01);//
}
void key(void)
{
jia=1;
ok=1;
if(anjiang==0)
{
if(jia==0)
{
jia=1;
if(jia==0)
{
delay(70);
if(jia==0)
jishu++;
}
}
}
if(ok==0)
{
ok=1;
if(ok==0)
{
delay(70);
if(ok==0)
oksign=1;
}
}
}
void lcd_dong(uchar aj,uchar ao)
{
uchar n=0;
static uchar xiaobiao=0;
if(jishu>5)
{
lcdwrcom(0x01);
lcdwrcom(0x00|0x80);
for(n=0;n<6;n++)
{
lcdwrdata(table1[n]);
//delay(30);
}
lcdwrcom(0x45|0x80);
for(n=0;n<7;n++)
{
lcdwrdata(table4[n]);
// delay(30);
}
jishu=0;
xiaobiao=1;
}
else
{
if(xiaobiao==0)
{
lcdwrcom(0x09|0x80);
lcdwrdata(table2[aj]);
//delay(100);
if(anjiang==0)
{
if(ao==1)
{
oksign=0;
anjiang=1;
lcdwrcom(0x45|0x80);
for(n=0;n<7;n++)
{
lcdwrdata(table5[n]);
// delay(30);
}
EA=1;
}
}
else if(anjiang==1)
{
if(ao==1)
{
oksign=0;
anjiang=0;
lcdwrcom(0x45|0x80);
for(n=0;n<7;n++)
{
lcdwrdata(table4[n]);
// delay(30);
}
kong=1;
EA=0;
}
}
}
else
{
jishu=0;
if(ao==1)
{
lcdwrcom(0x00|0x80);
for(n=0;n<9;n++)
{
lcdwrdata(table3[n]);
// delay(30);
}
xiaobiao=0;
oksign=0;
}
}
}
}
void main()
{ uchar n;
kong=1;
jishu=0;
zhongduan_init();
delay(200);
lcden=0;
lcd_init();
lcdwrcom(0x00|0x80);
for(n=0;n<9;n++)
{
lcdwrdata(table3[n]);
delay(100);
}
lcdwrcom(0x45|0x80);
for(n=0;n<7;n++)
{
lcdwrdata(table4[n]);
delay(100);
}
while(1)
{
/* if(biaozhi==1)
{
delay(3);
if(pp>=1)
kong=0;
}
delay(3);
kong=1;
biaozhi=0;*/
lcd_dong(jishu,oksign);
// if(anjiang==0)
key();
}
}
void guoling(void) interrupt 0
{
TR0=1;
//delay(10);
//kong=0;
//delay(9);
//kong=1;
//delay(1);
/*switch (jishu)
{
case 0: {kong=1;break;}
case 1: {delay(4);kong=0;delay(6);kong=1;break;}
case 2: {delay(3);kong=0;delay(7);kong=1;break;}
case 3: {delay(2);kong=0;delay(8);kong=1;break;}
case 4: {delay(1);kong=0;delay(9);kong=1;break;}
case 5: {kong=0;delay(10);kong=1;break;}
}*/
}
void us(void) interrupt 1 //200us
{
dingshi++;
if(dingshi==10)
{
kong=0;
}
//kong=0;
if(dingshi==45)
{
TR0=0;
dingshi=0;
kong=1;
}
}
复制代码
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
chunyang
2019-03-25 03:10
怎么个不能正常导通?简单的贴代码没有意义,详细描述你的设计目的和问题现象。
加载中...
查看其它3个回答
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>