企业网站备案座机号,浙江设计公司,怎样在网做旅游网站,爱奇艺的网站是用什么做的想要学习单片机必须要准备单片机开发板一块#xff0c;和单片机C语言版本的书籍#xff0c;我会把每天录制视频的源代码到头条#xff0c;并且录制相同文章名字视频到西瓜视频#xff0c;如果你再学习独立按键这一块有不明白的地方可以点开我的头像#xff0c;进入我的主页…想要学习单片机必须要准备单片机开发板一块和单片机C语言版本的书籍我会把每天录制视频的源代码到头条并且录制相同文章名字视频到西瓜视频如果你再学习独立按键这一块有不明白的地方可以点开我的头像进入我的主页点击视频观看学习。目前视频录制了9个左右没学过的结合书本结合我的视频都可以学会。话不多说先上今天的仿真效果图然后下面是本仿真图的源代码如果有错误请大神指教。#include //头文件把芯片的数据地址编译成C语言可以调用的句子。#define uchar unsigned char //宏定义 把后面的长句 给他们一个新定义实现同样的功能。#define uint unsigned int //宏定义 把后面的长句 给他们一个新定义实现同样的功能。sbit dulaP2^0; //把p2.0给他一个新名字叫dula 用于数码管锁存器段选位置sbit welaP2^1;//把p2.1给他一个新名字叫wela 用于数码管锁存器位选的位置sbit key1P3^0; //同样的给按键1和按键2分别找两个串行口来对接。sbit key2P3^1;uchar code table[]{0x3f,0x06,0x5b,0x4f, //定义的一个数码管的编码表。 0x66,0x6d,0x7d,0x07, //阴极数码管 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};void delayms(uint); //延时子程序void display(uchar,uchar); //显示子程序void keyscan(); //独立按键子程序uchar num,shi,ge,num1; //定义四个无符号字符void main() //主程序 { TMOD0x01; //中断确定工作方式和选择定时器0 TH0(65536-45872)/256; //装初值 TL0(65536-45872)%256; //对这一块不太明白的可以看我上一个视频 EA1; //开启总的中断 ET01; 开启定时器/计数器寄存器中断 开启中断具体定时器中断 while(1) //循环式判断 { keyscan(); // 调用按键子程序对按键子程序进项不断地扫描 display(shi,ge);//调用显示子程序对显示子程序进行不断地刷新显示 }}void display(uchar shi,uchar ge) //显示子函数并且调用形式参数{ P00x00; //为了在仿真电路让P0口没有其他的数据来影响段选显示的/阴极数码管高电平有效。让数码管变得干净。 dula1; //锁存器开 P0table[shi]; 把十位的数字送到P0 dula0; //锁存器关闭// 段选位置 P00XFF; //低电平有效让位选的位置变得干净。 wela1; //位选锁存器开启。//低电平有效。 P00xfe;//送入位选的 选位。 wela0; 位选锁存器关闭。 delayms(5); /延时5毫秒。 P00x00; dula1; P0table[ge]; dula0; P00xff; wela1; P00xfd; //选择数码管的第一个位置 来显示数字 wela0; delayms(5);} void delayms(uint xms) //延时子程序 { uint i,j; //定义两个无符号字符 for(ixms;i0;i--) for(j110;j0;j--); } void keyscan() //今天的重点按键扫描子程序 { if(key10) //判断按键1 有没有按下 { delayms(10); //延时10毫秒延时去抖动 if(key10) //在判断一次按键1有没有按下 {while(!key1); //等待按键释放如果没有释放那么按键始终等于0也就是低电平。按键按下去了TR0~TR0; //定时器的开启与关闭开启 开始计数关闭就会暂停 } } if(key20) //判断按键2是否按下 { delayms(10); //延时去抖动 if(key20) //再次判断 { num10;// num1是送给数码管的数值0-60根据定时器变化的值。while(!key2);//判断按键2时候松开没有松开始终等于低电平。 } } } void T0_time() interrupt 1 //定时器的子程序 { TH0(65536-45872)/256; //重装初值这一块如果听不懂可以去看上个视频。 TL0(65536-45872)%256;num;if(num20) //定时器每次50毫秒这里加个20次的循环用来凑足1秒钟。{ num0; num1; if(num160) //给num1进行每一秒钟数值变化送数值。 num10;shi num1/10; //求模的数送到shi ge num1%10;} }