Private Sub Form_Load()
Tmr1Interval = 1000
Tmr1Enabled = True
Tmr2Interval = 500
Tmr2Enabled = False
With Lbl1
FontName = "宋体"
FontBold = True
FontSize = 2175 '字号=二号
BackColor = vbWhite
Alignment = vbCenter
BorderStyle = 1
End With
Lbl2Caption = "闹钟时间:"
Text1Text = ""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '如果按了回车
Tmr2Enabled = True
Lbl2Caption = "闹钟时间:" & Text1Text
End If
End Sub
Private Sub Tmr1_Timer()
Lbl1Caption = Format(Time, "Long Time")
End Sub
Private Sub Tmr2_Timer()
Dim t As Date
Static c As Boolean
t = CDate(Text1Text)
If t < Time Then
c = Not c
If c Then Lbl1BackColor = vbRed Else Lbl1BackColor = vbWhite
End If
End Sub
如果你用的是4M的晶振的话。
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
TMR是Totalmixedration英文首字母的缩写,中文译作全混合日粮。TMR始于20世纪60年代,是根据反刍动物不同生长阶段对粗蛋白、能量、粗纤维、矿物质和维生素等营养素的需求,设计日粮配方并用特制的搅拌机将粗饲料、精饲料、矿物质、维生素和其他饲料添加剂按照适当的比例充分混合成营养相对平衡的日粮。目前,这种饲喂技术在以色列、美国、意大利、加拿大等国已经普遍使用,我国现正在逐渐推广使用。
使用TMR有许多优点,概括起来主要有以下几个方面:
一是全混合日粮由于各组分比例适当,且混合均匀,避免奶牛挑食,维持瘤胃pH稳定,防止瘤胃酸中毒,有利于瘤胃健康。
二是全混合日粮综合考虑了不同阶段营养需求,同时为反刍动物提供均衡的蛋白质、能量、纤维等营养需求,有利于发挥动物的生产潜能,提高生产性能。
三是养分平衡、混合均匀的饲料有利于瘤胃内环境的相对稳定,提高微生物的活性,使蛋白质和碳水化合物的利用趋于同步,提高了饲料的利用效率。
四是充分利用饲料资源。适口性差、消化率低的饲料资源,通过TMR技术可以较好地添加到全混合日粮中,减少浪费。
五是专用设备的使用,可以节省劳力,提高劳动效率,降低劳动力成本,提高经济效益。
六是简化饲喂程序,减少饲养的随意性,提高奶业生产的专业化程度。
推广应用TMR也存在一些限制因素:一是需要专门的粗饲料切短设备和专门的混合设备。二是原料的营养成分和水分发生变化时,需要及时进行检查,以保证养分的充足和平衡。三是为满足不同生长阶段营养需求,必须分群饲养,会对动物产生一定程度的应激,同时增加劳动强度。
共阳共阴只是你在选COM端时给其高低电平的问题无关大雅
我给一段PIC单片机的程序让你参考一下,如果你看懂的话应该能做出来了
#include <pich>
#include <mathh>
//此程序实现计时秒表功能,时钟显示范围0000~9999秒,分辨度:001秒
unsigned char s0,s1,s2,s3;
//定义001 秒、01 秒、1秒、10秒计时器
unsigned char s[4];
unsigned char k ,data ,sreg;
unsigned int i;
const table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
//带小数点的显示段码表
void tmint()
{
T0CS=0; //TMR0工作于定时器方式
PSA=1; //TMR0不用分频
T0IF=0; //清除TMR0的中断标志
T0IE=1; //TMR0中断允许
}
//spi显示初始化子程序
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;
SSPSTAT=0xC0;
//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送。与"74HC595,当其
//SCLK从低到高跳变时,串行输入寄存器"的特点相对应
TRISC=0xD7; //SDO引脚为输出,SCK引脚为输出
TRISA5=0; //RA5引脚置为输出,输出显示锁存信号
}
//系统其它部分初始化子程序
void initial()
{
TRISB1=0;
TRISB2=0;
TRISB4=1;
TRISB5=1; //设置与键盘有关的各口的输入输出方式
RB1=0;
RB2=0; //建立键盘扫描的初始条件
}
//SPI传输数据子程序
void SPILED(data)
{
SSPBUF=data; //启动发送
do {
;
}while(SSPIF==0);
SSPIF=0;
}
//显示子程序,显示4位数
void dispaly()
{
RA5=0; //准备锁存
for(k=4;k>0;k--)
{
data=s[k-1];
if(k==3) data=table0[data];//第二位需要显示小数点
else data=table[data];
SPILED(data); //发送显示段码
}
for(k=0;k<4;k++)
{
data=0xFF;
SPILED(data); //连续发送4个DARK,使显示好看一些
}
RA5=1; //最后给锁存信号,代表显示任务完成
}
//软件延时子程序
void DELAY()
{
for(i = 3553; --i ;) continue;
}
//键扫描子程序
void KEYSCAN()
{
while(1){
while(1)
{
dispaly(); //调用一次显示子程序
if ((RB5==0)||(RB4==0)) break;
}
DELAY(); //若有键按下,则软件延时
if ((RB5==0)||(RB4==0)) break;//若还有键按下,则终止循环扫描,返回
}
}
//等键松开子程序
void keyrelax()
{
while(1){
dispaly(); //调用一次显示子程序
if ((RB5==1)&&(RB4==1)) break;
} //为防止按键过于灵敏,每次等键松开才返回
}
//系统赋值初始化子程序
void inizhi()
{
s0=0x00;
s[0]=s0;
s1=0x00;
s[1]=s1;
s2=0x00;
s[2]=s2;
s3=0x00;
s[3]=s3; //s0=s1=s2=s3=0,并放入显示缓冲数组中
sreg=0x00; //tmr0中断次数寄存器清0
}
//中断服务程序
void interrupt clkint(void)
{
TMR0=0X13; //对TMR0写入一个调整值。因为写入TMR0后接着的
//两个周期不能增量,中断需要3个周期的响应时间,
//以及C语言自动进行现场保护要消耗周期
T0IF=0; //清除中断标志
CLRWDT();
sreg=sreg+1; //中断计数器加1
if(sreg==40) //中断次数为40后,才对S0,S1,S2,S3 *** 作
{
sreg=0;
s0=s0+1;
if(s0==10){
s0=0 ;
s1=s1+1;
if(s1==10){
s1=0 ;
s2=s2+1;
if(s2==10){
s2=0;
s3=s3+1;
if(s3==10) s3=0 ;
}
}
}
}
s[0]=s0;
s[1]=s1;
s[2]=s2;
s[3]=s3;
}
//主程序
main()
{
OPTION=0XFF;
tmint(); //TMR0初始化
SPIINIT(); //spi显示初始化
initial(); //系统其它部分初始化
di(); //总中断禁止
while(1) {
inizhi(); //系统赋值初始化
KEYSCAN(); //键扫描,直到开始键按下
keyrelax(); //等键松开
ei(); //总中断允许
TMR0=0X08;
KEYSCAN(); //键扫描直到停止键按下,在键扫描时有显示
keyrelax() ; //等键松开
di(); //总中断禁止
KEYSCAN(); //键扫描到清0键按下,在键扫描时有显示
keyrelax() ; //等键松开
}
}
这种温度传感器和单片机是以它自己独有的一种串行通信方式来进行的。基本上所有的串行通信在进行期间都不允许中断掉去干其他事情。 数据传输过程中一旦中断,中断后即使你的现场保护的很好,也白费。因为数据是一个位一个位传的,在向传感器发数据或者命令的时候,它只要一个完整的8位传完后对方才能知道你所发的是什么数据。并且传感器给你数据的时候,它可不管你此时是否中断了 ,它只是一口气发送完,你要就收,不要拉倒。
所以,读传感器的时候,绝对不可以中断干其他事情,只有对传感器发完指令,然后接受完传感器送来的数据后,才能进行中断等其他 *** 作。
另外,我对你使用CCP1做捕捉功能却还用定时器0及其中断不是太理解。因为用捕捉的话,是应该开定时器1的,而且定时器1的中断不需要开,定时器只是给一个计数的功能。就是说,当外部有脉冲进来时候,打开定时器1,定时器1开始计数。当收到下一个脉冲的时候,ccp1模块自动停止计数,根据你设置进行中断(CCP中断,不是定时器1的中断)。然后你可以再中断服务子程序里读取TMR1H和TMR1L送到CCPR1H和CCPR1L里面的数据。就是两个脉冲之间的时间差(其实是两个脉冲之间间隔了N个时钟周期)。所以跟TRM0中断没有什么关系。
以上就是关于VB中,求一个程序。全部的内容,包括:VB中,求一个程序。、PIC16f877 如何用TMR0 TMR1写出1秒的延时程序 C语言的、奶牛饲喂Tmr有什么好处等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)