当前位置: 首页 > wzjs >正文

网上哪个网站教做西点学前心理学课程建设网站

网上哪个网站教做西点,学前心理学课程建设网站,微信代运营方案,福田蒙派克图片今天学的东西挺多的,包括:自己设计的小应用,矩阵键盘,矩阵键盘密码锁,控制按键led流水灯,定时器时钟 (那个视频真的煎熬,连续两个1小时的简直要命,那个时钟也是听的似懂…

今天学的东西挺多的,包括:自己设计的小应用,矩阵键盘,矩阵键盘密码锁,控制按键led流水灯,定时器时钟

(那个视频真的煎熬,连续两个1小时的简直要命,那个时钟也是听的似懂非懂....)

小应用

这个是朋友问我能不能用51单片机实现类似红绿灯的效果,我大体做了一下,到周末回顾的时候还会进行填充(每周末会先复习前面的知识,包括之前没有弄懂的地方,如果时间不够就不学新知识了,也会利用已经学过的知识尝试创建小的应用,巩固学过的知识)

#include <REGX52.H>
#include "Delay.h"
#include "Nixie.h"
//设置红绿灯的等待时间为45s,由于设备限制仅
//实现红灯部分
void main()
{while(1){unsigned int time=45;P2_7=0;while(time>=10){int a,b;a=time/10;b=time%10;Nixie(1, 0xFF); Nixie(2, 0xFF); Nixie(1,a);Nixie(2,b);time--;Delay(1000);}while(time>=0){Nixie(2,time);time--;if(time<=5){P2_7=1;Delay(500);P2_7=0;Delay(500);}}}
}

没搞明白为什么数码管没有达到红绿灯那种常亮的效果,一直在闪....

矩阵键盘

矩阵键盘由于内部电路的设计是先列后行进行设置。

先对p1初始化,设置为0表示选中当前列,若是当前列的某一行的按键被按下,就显示这个数字。

在同一时刻只能选中一个按钮

​
#include <REGX52.H>
#include "Delay.h"
/*** @brief  矩阵键盘读取按键键码* @param  无* @retval KeyNumber 按下按键的键码值如果按键按下不放,程序会停留在子函数,松手瞬间,返回按键键码没有按键按下时,返回0*/
unsigned char MatrixKey()
{unsigned char KeyNumber=0;P1=0xFF;P1_3=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}P1=0xFF;P1_2=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}P1=0xFF;P1_1=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}P1=0xFF;P1_0=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}return KeyNumber;}​

矩阵键盘

这个是实现键盘对应键位显示对应的数字

如果不加if判断,会一直显示00,但实际上是显示了被按下的按键的数字的,只是在循环体里面进行的比较快,被刷新成了0,肉眼就看不出来了

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
void main()
{LCD_Init();LCD_ShowString(1,1,"MatrixKey");while(1){KeyNum=MatrixKey();if(KeyNum){LCD_ShowNum(2,1,KeyNum,2);}}
}

矩阵键盘密码锁

这应该算是一个小项目了吧。

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned int Password,Count;
void main()
{LCD_Init();LCD_ShowString(1,1,"Password:");while(1){KeyNum=MatrixKey();if(KeyNum){if(KeyNum<=10)//如果s1-s10按键按下,输入密码{if(Count<4)//如果输入次数小于4{Password*=10;//密码左移一位Password+=KeyNum%10;//获取一位密码Count++;//计次加一}LCD_ShowNum(2,1,Password,4);//更新显示}if(KeyNum==11)//如果s11按键按下,确认{if(Password==2345)//如果密码等于正确密码{LCD_ShowString(1,14,"OK ");Password=0;//密码清零Count=0;//计次清零LCD_ShowNum(2,1,Password,4);//更新显示}else{LCD_ShowString(1,14,"ERR");Password=0;//密码清零Count=0;//计次清零LCD_ShowNum(2,1,Password,4);//更新显示}}if(KeyNum==12)//如果s12按键按下,回退(优化直接删除){Password/=10;Count--;LCD_ShowNum(2,1,Password,4);//更新显示}}}
}

时钟

时钟的内部实现还是比较复杂的,这个可能看视频听的比较迷糊,自己私下可以看使用手册的原理图帮助理解。

这个TMOD设值的方法挺巧的

计数器65535溢出,1次是一微妙,所以设置的初值是64535,使它每次清零是一毫秒

计数器一共八位,TH0是高位TL0是地位

#include <REGX52.H>
/*** @brief  定时器0初始化* @param  * @retval */void Timer0Init()
{//TMOD=0x01;//0000 0001TMOD &= 0xF0;//把TMOD的低四位清零,高四位保持不变TMOD |= 0x01;//把TMOD的最低为置一,高四位保持不变TL0 = 0x18;	//设置定时初值TH0 = 0xFC;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时ET0=1;EA=1;PT0=0;
}
/*定时器中断函数模板
void Timer0_Routine() interrupt 1
{static unsigned int T0Count;TL0 = 0x18;		//设置定时初值TH0 = 0xFC;		//设置定时初值T0Count++;if(T0Count>=1000){T0Count=0;}
}
*/

控制按键led流水灯

#include <REGX52.H>
#include	"Timer0.h"
#include "Key.h"
#include <INTRINS.H>unsigned char KeyNum,LEDMode;
void main()
{P2=0x0FE;Timer0Init();while(1){KeyNum=Key();if(KeyNum){if(KeyNum==1){LEDMode++;if(LEDMode>=2)LEDMode=0;}}}
}
void Timer0_Routine() interrupt 1
{static unsigned int T0Count;TL0 = 0x18;		//设置定时初值TH0 = 0xFC;		//设置定时初值T0Count++;if(T0Count>=1000){T0Count=0;if(LEDMode==0)P2=_crol_(P2,1);if(LEDMode==1)P2=_cror_(P2,1);}
}

定时器时钟

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "Timer0.h"unsigned char Sec=55,Min=59,Hour=23;
void main()
{LCD_Init();Timer0Init();LCD_ShowString(1,1,"Clock:");LCD_ShowString(2,1,"  :  :");while(1){LCD_ShowNum(2,1,Hour,2);LCD_ShowNum(2,4,Min,2);LCD_ShowNum(2,7,Sec,2);}}
void Timer0_Routine() interrupt 1
{static unsigned int T0Count;TL0 = 0x18;		//设置定时初值TH0 = 0xFC;		//设置定时初值T0Count++;if(T0Count>=1000){T0Count=0;Sec++;if(Sec>=60){Sec=0;Min++;if(Min>=60){Min=0;Hour++;if(Hour>=24)Hour=0;}}}
}

江协老师讲的东西都很细致,很明白,虽然时间很长,但是有着弹幕先辈的陪伴还是能坚持下来的

http://www.dtcms.com/wzjs/816455.html

相关文章:

  • 震旦网站谁做的sem推广是什么意思呢
  • 怎么做ps4的视频网站wordpress更新文章收录
  • 网站建设你的选择wordpress获取最新发布列表
  • 服务器的wordpress怎么外网访问网站seo模块
  • 小学网站模板下载一起做网店官方网站
  • 网站页面设计稿模板王网页模板
  • 网页设计作品欣赏网站个人年终工作总结报告
  • 网站建设合同网站建设公司中国人去菲律宾做网站赌钱会抓吗
  • 做网站的专业叫啥wordpress文章添加版权
  • 合肥企业网站建设哪个好网站没有管理员权限设置
  • 网站维护多久能好amh wordpress 后台404
  • 网站开发公司挣钱吗二维码样式大全制作
  • 最早做视频播放网站煎蛋wordpress二次开发
  • 建站seo课程2003系统建网站
  • 哪些网站是用响应式布局做的网站建设方案文本模板
  • 手机网站的优势免费淘宝客网站模板
  • 公司做网站费用怎么记账西安微信网站
  • 公司企业网站建设教程找客户的十大方法
  • 宣城网站建设iis 设置网站权限
  • 网址网站注册官方网址
  • 网站上传大马后怎么做手机助手
  • 外贸建站推广工作总结汉中门户网官网
  • 网站空间购买时选择什么脚本语言wordpress首页加载图片慢
  • 可以做自己的单机网站滁州网站建设工作室
  • 青海网站推广策划方案wordpress模板 官网
  • 网站开发项目的前端后端数据库在上海哪个网站比较好
  • 领域网站建设做网站美工
  • 国外网页设计欣赏网站网站主持人制作网站代言人
  • 移动ui设计 网站代理网站备案表
  • tomcat做静态网站湖南建设c证查询网站