当前位置:首页 > 经验 >

单片机编程100例(单片机编程入门自学100例)

来源:原点资讯(www.yd166.com)时间:2023-10-25 06:24:03作者:YD166手机阅读>>

} 15 K1-K4 控制数码管加减演示 /* 名称:K1-K4 控制数码管加减演示 说明:按下 K1 后加 1 计数,按下 K2 后减 1 计数,按下 K3 后清零。 */

#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //段码 uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //待显示的 3 位缓冲 uchar Num_Buffer[]={0,0,0}; //按键代码,按键计数 uchar Key_Code,Key_Counts=0; //延时 void DelayMS(uint x) {uchar i; while(x--) for(i=0;i<120;i ); } //显示函数 void Show_Counts_ON_DSY() { uchar i,j=0x01; Num_Buffer[2]=Key_Counts/100; Num_Buffer[1]=Key_Counts/10; Num_Buffer[0]=Key_Counts; for(i=0;i<3;i ) { j=_cror_(j,1); P0=0xff; P0=DSY_CODE[Num_Buffer[i]]; P2=j; DelayMS(1); } } //主程序 void main() { uchar i; P0=0xff; P1=0xff; P2=0x00; Key_Code=0xff; while(1) { Show_Counts_ON_DSY(); P1=0xff; Key_Code=P1; //有键按下时,数码管刷新显示 30 次,该行代码同时起到延时作用 if(Key_Code!=0xff) for(i=0;i<30;i ) Show_Counts_ON_DSY(); switch(Key_Code) { case 0xfe: case 0xfd: case 0xfb: if(Key_Counts<255) Key_Counts ; break; if(Key_Counts>0) Key_Counts--; break; Key_Counts=0; } Key_Code=0xff; }

}

16 4X4 矩阵键盘控制条形 LED 显示

单片机编程100例,单片机编程入门自学100例(13)

/* 名称:4X4 矩阵键盘控制条形 LED 显示 说明:运行本例时,按 下的按键值越大点亮的 LED 越多。 */ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //矩阵键盘按键特征码表 uchar code KeyCodeTable[]={0x11,0x12,0x14,0x18,0x21, 0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88}; //延时 void DelayMS(uint x) { uchar i; while(x--) for(i=0;i<120;i ); } //键盘扫描 uchar Keys_Scan() { uchar sCode,kCode,i,k; //低 4 位置 0,放入 4 行 P1=0xf0; //若高 4 位出现 0,则有键按下 if((P1&0xf0)!=0xf0) { DelayMS(2); if((P1&0xf0)!=0xf0) { sCode=0xfe; //行扫描码初值 for(k=0;k<4;k ) //对 4 行分别进行扫描 { P1=sCode; if((P1&0xf0)!=0xf0) { kCode=~P1; for(i=0;i<16;i ) //查表得到按键序号并返回 if(kCode==KeyCodeTable[i]) return(i); } else sCode=_crol_(sCode,1); } } } return(-1); } //主程序 void main() { uchar i,P2_LED,P3_LED; uchar KeyNo=-1; //按键序号,-1 表示无按键 while(1) { KeyNo=Keys_Scan(); //扫描键盘获取按键序号 KeyNo if(KeyNo!=-1) { P2_LED=0xff; P3_LED=0xff; for(i=0;i<=KeyNo;i ) //键值越大,点亮的 LED 越多 { if(i<8) P3_LED>>=1; else P2_LED>>=1; } P3=P3_LED; //点亮条形 LED P2=P2_LED; }

单片机编程100例,单片机编程入门自学100例(14)

} }

17 数码管显示 4X4 矩阵键盘按

键号 /* 名称:数码管显示 4X4 矩阵键盘按键号 说明:按下任意键时,数码管都会显示其键的序号,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。 */

#include<reg51.h> #define uchar unsigned char #define uint unsigned int //段码 uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00}; sbit BEEP=P3^7; //上次按键和当前按键的序号,该矩阵中序号范围 0~15,16 表示无按键 uchar Pre_KeyNo=16,KeyNo=16; //延时 void DelayMS(uint x) { uchar i; while(x--) for(i=0;i<120;i ); } //矩阵键盘扫描 void Keys_Scan() { uchar Tmp; P1=0x0f; //高 4 位置 0,放入 4 行 DelayMS(1); Tmp=P1^0x0f;//按键后 0f 变成 0000XXXX,X 中一个为 0,3 个仍为 1,通过异或把 3 个 1 变为 0,唯一的 0 变为 1 switch(Tmp) //判断按键发生于 0~3 列的哪一列 { case 1: KeyNo=0;break; case 2: KeyNo=1;break; case 4: KeyNo=2;break; case 8: KeyNo=3;break; default:KeyNo=16; //无键按下 } P1=0xf0; //低 4 位置 0,放入 4 列 DelayMS(1); Tmp=P1>>4^0x0f;//按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高 4 位转移到低 4 位并 异或得到改变的值 switch(Tmp) //对 0~3 行分别附加起始值 0,4,8,12 { case 1: KeyNo =0;break; case 2: KeyNo =4;break; case 4: KeyNo =8;break; case 8: KeyNo =12; } } //蜂鸣器 void Beep() { uchar i; for(i=0;i<100;i ) { DelayMS(1); BEEP=~BEEP; } BEEP=0; } //主程序 void main() { P0=0x00; BEEP=0; while(1) { P1=0xf0; if(P1!=0xf0) Keys_Scan(); //获取键序号 if(Pre_KeyNo!=KeyNo) { P0=~DSY_CODE[KeyNo]; Beep(); Pre_KeyNo=KeyNo; } DelayMS(100); } }

18 开关控制 LED

单片机编程100例,单片机编程入门自学100例(15)

/* 名称:开关控制 LED 说明:开关 S1 和 S2 分别控 · LED1 和 LED2。 */ #include<reg51.h> sbit S1=P1^0; sbit S2=P1^1; sbit LED1=P0^0; sbit LED2=P0^1; //主程序 void main() { while(1) { LED1=S1; LED2=S2; }

单片机编程100例,单片机编程入门自学100例(16)

栏目热文

51单片机教程郭天祥(郭天祥51单片机教程电子书)

51单片机教程郭天祥(郭天祥51单片机教程电子书)

虽然现在网上的硬件教学资源越来越多了,但是经典教程的地位仍然难以被撼动,郭天祥老师的经典教程《十天学会51单片机》不知成...

2023-10-25 06:08:21查看全文 >>

微信被盗被改了手机号码怎么办(如果微信被盗手机号被改了怎么办)

微信被盗被改了手机号码怎么办(如果微信被盗手机号被改了怎么办)

7月13日李奶奶一脸焦急地来到兴国县公安局均村派出所报案称自己的微信账号被盗微信绑定的手机号被更改微信钱包里有余额1万多...

2023-10-25 05:55:39查看全文 >>

新开号码无法注册微信(电信号码无法注册微信)

新开号码无法注册微信(电信号码无法注册微信)

本文内容来自于网络,若与实际情况不相符或存在侵权行为,请联系删除。本文仅在今日头条首发,搬运必究!微信,这款曾经仅面向手...

2023-10-25 06:26:18查看全文 >>

新号码已经注册了微信怎么办

新号码已经注册了微信怎么办

现在网上的花里胡哨的手机卡一大堆,办过的小伙伴们也是后续问题不断,昨天就有一个小伙伴私信葫芦弟,他说他新办理的手机卡注...

2023-10-25 06:09:44查看全文 >>

微信被盗手机号码被换了怎么办(微信号被盗且手机号码换了怎么办)

微信被盗手机号码被换了怎么办(微信号被盗且手机号码换了怎么办)

7月13日李奶奶一脸焦急地来到兴国县公安局均村派出所报案称自己的微信账号被盗微信绑定的手机号被更改微信钱包里有余额1万多...

2023-10-25 06:40:42查看全文 >>

51单片机入门教程免费(51单片机仿真软件有哪些)

51单片机入门教程免费(51单片机仿真软件有哪些)

本套教程共3节课程,熟悉这3节课程的话,你已经入门51单片机了。下面是内容正文单片机学习的第一步,什么是单片机最小系统?...

2023-10-25 05:53:15查看全文 >>

51单片机编程对照表(51单片机图形化编程)

51单片机编程对照表(51单片机图形化编程)

学习单片机// 实例 1:用单片机控制第一个灯亮#include<reg51.h> //包含 51单片机寄存...

2023-10-25 06:25:32查看全文 >>

郭天祥10天学会单片机(初学编程100个代码自学)

郭天祥10天学会单片机(初学编程100个代码自学)

虽然现在网上的硬件教学资源越来越多了,但是经典教程的地位仍然难以被撼动,郭天祥老师的经典教程《十天学会51单片机》不知成...

2023-10-25 06:37:16查看全文 >>

普中科技51单片机教程(普中科技51单片机咋用)

普中科技51单片机教程(普中科技51单片机咋用)

一、连接步骤1. 硬件连接插上普中PZ-51硬件仿真器,电脑的设备管理器出现该设备。如果没有出现,要留意USB线是否是有...

2023-10-25 06:07:20查看全文 >>

学习51单片机的教程(51单片机学习推荐)

学习51单片机的教程(51单片机学习推荐)

刚开始学习51单片机的时候,我是看郭天祥老师和开发板,现在我依然觉得非常适合零基础入门。大家的起点都一样,不懂电路,不懂...

2023-10-25 06:07:59查看全文 >>

文档排行