程序的总体功能就是按一下P37口所接的键盘就在数码管上加1 直至计数至99 数码管的数值清零 注释如下:
#include <AT89X51H> //头文件
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
//共阴极数码管的码值 依次为从0到9
unsigned char Count;
void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
Count=0; //计数值初始化
P0=table[Count/10]; //取计数值十位数字
P2=table[Count%10];// 取计数值个位数字
while(1)
{
if(P3_7==0) //判断是否有键按下
{
delay10ms(); //延时用于消抖
if(P3_7==0) //再次判断是否有键按下
{
Count++; //有键按下则Count值加1
if(Count==100)
{
Count=0; //Count计数至100则清零
}
P0=table[Count/10]; //取计数值十位数字
P2=table[Count%10]; //取计数值个位数字
while(P3_7==0); //松手检测
}
}
}
}
我把关键的部分都注释了,相信你应该没有什么问题了,再有问题的话我们再交流!
主程序:
void main (void)
{
bit flag=0;
uchar pluse;//脉冲个数
TMOD=0X50;
TH1=(65536-100)/256;
TL1=(65536-100)%256;
ET1=1;
EA=1;
TR1=1;
while(1)
{display(pluse);}
}
中断程序:
void timer1(void) interrupt 3
{
if(flag==0)//计数满了
{
P1^7=1;
TMOD=0X10;//转成内部定时
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
flag=1;
}
else //定时时间到
{
P1^7=0;
TMOD=0X50;//转成外部计数
TH1=(65536-100)/256;
TL1=(65536-100)%256;
pluse++;
flag=0;
}
}
单片机程序求注释#include <reg52h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include <intrinsh>// 有了他下面这些关键字随便用
/ _crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空 *** 作8051 NOP 指令
0 1 2 3 4 5 6 7 8 9
uchar code smg_du[]={0x28,0xe1,0x32,0xa2,0x54,0xa1,0x21,0xea,0x20,0xa0,
a b c d e f g //数组有code存在ROM没code保存在内存
0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //数码管段选定义
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};//数码管位选定义
uchar dis_smg[8] = {0};
uchar smg_i = 4; //显示数码管的个位数
sbit beep = P2^3; //蜂鸣器IO口定义
bit flag_lj_en; //按键连加使能
bit flag_lj_3_en; //按键连3次连加后使能 加的数就越大了
uchar key_time,key_value; //用做连加的中间变量
bit key_500ms ;
bit flag_300ms ;
uchar menu_1; //菜单设计的变量
uint t_high = 20; //上限报警值
sbit hx711_dout=P2^7;
sbit hx711_sck=P2^6; //hx711模块端口选择
long weight;
unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
uint temp,qi_weight;
bit chaozhong_flag;
bit leiji_flag;
uchar flag_200ms ;
#define GapValue 4370
uint temp,qi_weight;
bit chaozhong_flag;
bit leiji_flag;
/1ms延时函数/
void delay_1ms(uint q)//无符号整形参数q
{
uint i,j; //定义无符号整形变量i和j
for(i=0;i<q;i++) //变量i从0加到q
for(j=0;j<120;j++); //变量j从0加到120
}
/数码显示函数/
void display()
{
static uchar i; //申请无符号字符变量i
i++;
if(i >= smg_i)//如果大于等于smg i向下执行
i = 0; 变量i清0
P1 = 0xff; //消隐 单片机p1口发送11111111
P3 = smg_we[i]; //位选 数组i送入单片机P3口
P1 = dis_smg[i]; //段选 数组i的内容送到p1口
}
/定时器0初始化程序/
void t
以上就是关于单片机程序全部的内容,包括:单片机程序、单片机程序、单片机程序求注释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)