用单片机的P1.0~P1.6控制注塑机的七道工序,用七个发光二极管的 亮灭来模拟各工序的状态,低电平有效,设定每道工序延时时间,。延时到进行工序转换,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,报警采用中断方式,P2.3为报警声音输出。编写程序模拟一时序控制装置,要求开机后第一秒钟 LED1,LED3亮,第二秒钟LED2,LED4亮,第三秒钟LED5,LED7亮,第四秒钟LED6,LED7亮,第五秒钟LED1,LED3,LED5,LED7亮,第六秒钟LED2,LED4,LED6,LED7亮,第七秒钟七个二极管全亮,第八秒钟全灭,以后又从头开始,LED1,LED3亮,然后LED2,LED4亮,一直循环下去。如P3.3口有报警信号则报警,并停止工序运行。
程序有个小问题,就是每次输入外部中断(键盘),总是要按P3.4和P3.3两个键才可以响警报,求前辈指导。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^4;
sbit k2=P3^3;
sbit al=P2^3;
uchar num=0,num1=0;
void delayms(uint xms)
{
uint i,j;
for(i = xms;i > 0;i --)
for(j = 110;j > 0;j --);
}
void display(uchar num2)
{
switch(num2)
{
case 0:
P1=0xfa;
break;
case 1:
P1=0xf5;
break;
case 2:
P1=0xaf;
break;
case 3:
P1=0x9f;
break;
case 4:
P1=0xaa;
break;
case 5:
P1=0x95;
break;
case 6:
P1=0x80;
break;
case 7:
P1=0xff;
break;
}
}
void main()
{
if(!k1)
{
TMOD=0x90;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
EX1=1;
IT1=0;
while(1)
{
delayms(100);
display(num);
}
}
}
void T1_Alarm() interrupt 2
{
EX1=0;
delayms(100);
display(7);
while(!k2)
{
al=0;
delayms(100);
al=1;
delayms(100);
}
EX1=1;
}
void T0_Time() interrupt 3
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num1++;
if(num1>=20)
{
num1=0;
num++;
if(num>=8)
num=0;
}
}
大家帮我看看这个89C52单片机程序,一个小问题
EA=1;ET1=1;TR1=1;EX1=1;IT1=0;把这个放主函数最开始的地方
单片机89c52的一段红外线对码程序,不理解是怎么把32个二进制码写入ird...
首次有脉冲时,清零irtime,置startflag。之后等待头码,只有当满足脉宽要求后,才视为有效头码,头码脉宽写入irdata[0]中。接下来每一个脉宽都依次写入irdata数组并且i累加。33个数据(包括头码)全部写完后,置ok标志位,并且i清零。
89C52单片机网球计分程序, 差一点点解不通, 麻烦大大们帮帮忙
显示的时候,先显示十位 red_mark \/ 10 ,再显示个位 red_mark % 10 显示A时,只要显示 tab[10] 就行了,有一位不显示,也就是显示 tab[11]if(key_red_add==1) \/\/红队加分{ key_red_add=0; if(red_mark==40 && blue_mark == 50) blue_mark = 40; else if(red_...
89c52单片机蜂鸣器程序编程
回答:#include "reg52.h" typedef unsigned char u8; \/\/因为是单片机,所以资源占用越少越好,这里不要用int sbit fengming = P1^5; void delay (u8 i) \/\/延时函数,i=1时大概延时10us,以此类推,蜂鸣器一般是 i<100 { while (i--) ; \/\/空操作循环 } void main ( ) { while (1) \/\/...
怎样用stc89c52单片机控制蜂鸣器发出音乐的c语言程序?
include\\r\\n#include\\r\\n\/\/本例采用89C52,晶振为11.0592MHZ\\r\\n\/\/关于如何编制音乐代码,其实十分简单,各位可以看以下代码.\\r\\n\/\/频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;\\r\\n\/\/所以拿出谱子,试探编吧!\\r\\nsbitBeep=P1^5;\\r\\n\\r\\nunsignedcharn=0;\/\/n为节拍常数...
单片机AMTEL89C52烧录后 部分Hex代码都是FF和母板不符合
出现这种问题,可能是你编程是没有按照硬件电路图来编程。你只按书上的写是不会成功的。你把电路图发给我看看也许我可以帮你。
求写程序!89C52单片机,按按键1点亮LED,按按键2熄灭LED,两个按键另一...
求写程序!我的是89C52单片机,想用两个按键和一个LED来实现,按下按键1点亮LED,按下按键2熄灭LED,两个按键另一端是接5V,LED另一端也是接5V。最好配上原理图。感激不尽 提醒一下:两个按键另一端接5V地!!!电路参考如下:代码参考如下:include<reg52.h> sbit LED = P2^7;define ON0 ...
图是89C52单片机控制共阴极四位数码管显示时间,这电路是怎么工作的...
数码管(四位)1、由于单片机IO口的驱动能力有限,在单片机和数码管中间增加了缓冲器 这样可以有效的保护单片机,提高了驱动能力。2、接法:四位数码管有四个选择端,保证统一时间只A-G字段,只对一个数码管有效。3、点亮数码管,通过选取不同的选择端,选择好某一位数码管,通过A-G字段点亮。
用89c52单片机写一个交通灯程序。没有LED 用发光二极管 、、
include "reg51.h" \/\/#define uint unsigned int#define uchar unsigned char#define ON 0 \/\/0的时候灯亮#define OFF 1 \/\/1的时候灯亮\/\/管脚定义\/\/南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒\/\/东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒sbit PortDX_Yellow = P1^0; \/...
求大神一个关于89c52单片机用S0键来启动和停止流水灯的程序,在这里先感...
\/\/键控流水灯 include "REG52.H"define DataGPIO P1\/\/显示端口 define FLOWTIME 100\/\/修改此值,改变流水速度 sbit KEY = P2^0;\/\/按键 bit Start_flag =0;\/\/流水灯控制 bit Flow_flag =0;\/\/流水 unsigned char Cnt =0;\/\/流水灯计数器 unsigned char KEY_Cnt=0;\/\/按键识别计数...