51单片机8x9矩阵键盘+数码管+74HC595+Proteus仿真
51单片机8x9矩阵键盘+数码管+74HC595+Proteus仿真51单片机8x9矩阵键盘+数码管+74HC595+Proteus仿真
这是在《51单片机8x8矩阵键盘+数码管+74HC595+Proteus仿真》基础之上新增一路对扫描P0端口自身的8个IO进行检测,所以就有了8x9=72个按键矩阵输入检测。
Proteus仿真
实现原理
扫键流程:①先检测扫描端口P0,检测自身的8个IO口,是否被拉低,检测完自身;之后,②再对’进行P1口进行扫键,②与8x8扫键流程一样了。
实例代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 ...
51单片机8个IO口检测64个按键,数码管显示(Proteus仿真)初稿
51单片机8个IO口检测64个按键,数码管显示(Proteus仿真)初稿8个IO口检测64个按键,数码管显示(Proteus仿真)初稿
讲解篇:《8个IO口检测64个按键,算法实现和心法要点讲解定稿》
番外篇《8个IO口检测64个按键,按键自锁控制方式》
采用AT89C51
Proteus仿真
实例代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491 ...
51单片机+L293D控制直流电机起保停和PWM调速
51单片机+L293D控制直流电机起保停和PWM调速 51单片机+L293D控制直流电机起保停和PWM调速
仿真演示
*程序源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119#include"reg51.h"#define uint unsigned int#define uchar unsigned charsbit IN0=P2^0;//电机驱动引脚1sbit IN1=P2^1;//电机驱动引脚2sbit E=P2^2;//电机使能引脚sbit key0=P1^0;//pwm增调节引脚sbit key1=P ...
51单片机+L293D控制直流电机起保停+数码管PWM调速显示
51单片机+L293D控制直流电机起保停+数码管PWM调速显示51单片机+L293D控制直流电机起保停+数码管PWM调速显示
PWM速度10级可调
采用L293D驱动
数码管显示PWM当前占空比
可优化的地方是数码管可以采用其他驱动芯片来驱动,提高驱动能力和减少单片机的IO口占用,例如74LS138译码器来驱动,前面几篇文章有写到采用数码管驱动芯片来做示例的可以参照。
仿真演示
程序代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134#inc ...
51单片机+L293D控制直流电机起保停正反转
51单片机+L293D控制直流电机起保停正反转51单片机+L293D控制直流电机起保停正反转
仿真效果图
程序代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <STC89C5xRC.H>#define EN1 P22#define D1 P20#define D2 P21#define button\_Z P10#define buttun\_R P11#define button\_T P12void zhengzhuan();void fanzhuang();void ting();void buttonscan();void main (){ while(1) { buttonscan(); }}void zhengzhuan(){ EN1=1; D1=1; D2=0;}void fanzhuang(){ EN1=1; D1=0; ...
51单片机+TM1638+DS3231驱动数码管按键切换显示时间和日期
51单片机+TM1638+DS3231驱动数码管按键切换显示时间和日期51单片机+TM1638+DS3231驱动数码管按键切换显示时间和日期
Proteus仿真
AT89C52、8位共阴数码管、DS3231、
注意事项
在仿真前,需要将文件夹下的动态链接库TM1638.dll拷贝到Proteus安装目录下的D:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\MODELS里面,注意自己Proteus安装路径,我这里的粘贴的路径只是示范。
将LIBRARY文件目录下的USERDVC.IDX和USERDVC.LIB拷贝到D:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY里面。
实例代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535 ...
51单片机单个数码管0-9循环秒计数
51单片机单个数码管0-9循环秒计数51单片机单位数码管0-9循环秒计数
🎬Proteus仿真演示:
🔖硬件电路搭建器件:AT89C52、74HC595、单位共阴数码管、74HC245、`
Proteus仿真:0 -9数字显示流水。
📝实例代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556/\*\*\*\*\*\*\*\*\*51单片机单位数码管0-9循环秒计数\*\*\*\*\*\*\*\*\*\*\*/#include <reg51.H>#define uint unsigned int#define uchar unsigned charsbit HC595_DIO = P1^0;sbit HC595_SCLK = P1^1;sbit HC595_RCLK = P1^2;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0 ...
51单片机定时器初值计算以及初值计算软件
51单片机定时器初值计算以及初值计算软件 51单片机定时器初值计算以及初值计算软件
不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题
51单片机定时器初值计算部分
时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振频率的倒数。
eg:12M晶振的单片机,时钟周期=振荡周期=1/12 us。
机器周期:定义为完成一项基本操作所需要的时间,称为机器周期。
51单片机中1个机器周期由6个状态周期组成,也就是12个时钟周期=12 x 1/12 us =1 us
一个机器周期的时间是1us,如果要延时1ms就是1000个机器周期.
定时器/计数器有4种工作方式
– 方式0:2^13 – 方式1:2^16 – 方式2:2^8 – 方式3:双8位
计数器的初值X = 计数器最大计数值M - 预装载值
计数器最大计数值M,就是根据工作方式0-3的选择不同而决定的最大计数值。
10MS定时器初值的计算:
晶振12M
12MHz除12为1 ...
51单片机对DS1302(实时时钟芯片)的仿真
51单片机对DS1302(实时时钟芯片)的仿真 51单片机对DS1302(实时时钟芯片)的仿真
仿真效果
源代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 ...
Proteus仿真STC51单片机流水灯注意事项
Proteus仿真STC51单片机流水灯注意事项 Proteus仿真STC51单片机流水灯
Proteus在绘制仿真STC单片机原理图是,注意Led灯一定要接限流电阻,不然,只能依次点亮3盏灯,后面的就不亮了。我开始搭建电路的时候图方便就省略掉了添加限流电阻,一开始一头雾水,程序代码应该没有问题,折腾了我好久,不知道是不是软件的一个bug。避免后面看到的人采坑。
代码
1234567891011121314151617181920212223#include <reg52.h> void delay\_ms(unsigned int n);void main (){unsigned char i; while(1){ P3 = 0XFF;for(i=0;i<8;i++){ P3 = P3<<1; delay\_ms(500); }}}//延时n毫秒void delay\_ms(unsigned int n)//@12MHz晶振{ unsigned int i=0, ...
