网上有关“c51单片机程序实例”话题很是火热,小编也是针对c51单片机程序实例寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

您好:手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,咨询加微信【】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的
http://www.boyicom.net/sheng/1.jpg
1.手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,通过添加客服微信 2.咨询软件加微信【】在"设置DD功能DD微信手麻工具"里.点击"开启". 3.打开工具.在"设置DD新消息提醒"里.前两个选项"设置"和"连接软件"均勾选"开启"(好多人就是这一步忘记做了) 4.打开某一个微信组.点击右上角.往下拉."消息免打扰"选项.勾选"关闭"(也就是要把"群消息的提示保持在开启"的状态.这样才能触系统发底层接口)

#include<reg51.h>

#define?uchar?unsigned?char

uchar?tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0到9

uchar?num,cnt,disn;

uchar?keyval,disk;

uchar?led[]={1,2,3,4};

void?dealdat(uchar?a)

{

led[0]=0;

led[1]=0;

led[2]=0;

led[3]=0;

led[a]=disk;

}

void?delay(unsigned?int?a)

{

unsigned?int?i,j;

for(i=0;i<a;i++)

for(j=0;j<1000;j++);

}

void?t0isr()?interrupt?1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

switch(num)

{

case?0:P2=0x01;break;

case?1:P2=0x02;break;

case?2:P2=0x04;break;

case?3:P2=0x08;break;

default:break;

}

P0=~tab[led[num]];

num++;

num&=0x03;

cnt++;

if(cnt>100)

{

cnt=0;

disn++;

disn%=4;

dealdat(disn);

}

}

uchar?kbscan(void)

{

unsigned?char?sccode,recode;

P3=0x0f;//发0扫描,列线输入

if?((P3?&?0x0f)?!=?0x0f)//有键按下

{

// delay(20);?//延时去抖动

if?((P3&0x0f)!=?0x0f)

{

sccode?=?0xef;//逐行扫描初值

while((sccode&0x01)!=0)

{

P3=sccode;

if((P3&0x0f)!=0x0f)

{

recode=(P3&0x0f)|0xf0;

return((~sccode)+(~recode));

?}

else

sccode=(sccode<<1)|0x01;

}

}

}

return?0;//无键按下,返回0

}

void?getkey(void)

{

unsigned?char?key;

key=kbscan();

if(key==0){keyval=0xff;return;}

switch(key)

{

case?0x11:keyval=7;break;

case?0x12:keyval=4;break;

case?0x14:keyval=1;break;

case?0x18:keyval=10;break;

case?0x21:keyval=8;break;

case?0x22:keyval=5;break;

case?0x24:keyval=2;break;

case?0x28:keyval=0;break;

case?0x41:keyval=9;break;

case?0x42:keyval=6;break;

case?0x44:keyval=3;break;

case?0x48:keyval=11;break;

case?0x81:keyval=12;break;

case?0x82:keyval=13;break;

case?0x84:keyval=14;break;

case?0x88:keyval=15;break;

default:keyval=0xff;break;

}

}

main()

{

TMOD=0x11;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TR0=1;

ET0=1;

EA=1;

while(1)

{

getkey();

if(keyval!=0xff)disk=keyval;

delay(10);

}

}

单片机开发与典型工程项目实例详解的目 录

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

#define Nack_number 10

/

#define LineObj1TempAddr 0x07 //目标温度,红外温度

#define LineObj2TempAddr 0x08

//eepom address ?EEPROM地址

#define TObjMaxAddr 0x00//测量范围上限设定

#define TObjMinAddr 0x01//测量范围下限设定

#define PWMCtrlAddr 0x02//PWM设定

#define TaRangeAddr 0x03//环境温度设定

#define KeAddr 0x04//频率修正系数

#define ConfigAddr 0x05//配置寄存器

#define SMbusAddr 0x0e//器件地址设定

#define Reserverd1Addr 0x0f//保留

#define Reserverd2Addr 0x19//保留

#define ID1Addr 0x1c//ID地址1

#define ID2Addr 0x1d//ID地址2

#define ID3Addr 0x1e//ID地址3

#define ID4Addr 0x1f//ID地址4

//************函数声明*****************************************************

void start(); //MLX90614发起始位子程序

void stop(); //MLX90614发结束位子程序

uchar ReadByte(void); //MLX90614接收字节子程序

void send_bit(void); //MLX90614发送位子程序

void SendByte(uchar number); //MLX90614接收字节子程序

void read_bit(void); //MLX90614接收位子程序

void delay(uint N); //延时程序

uint readtemp(void); //读温度数据

void init1602(void); //LCD初始化子程序

void busy(void); //LCD判断忙子程序

void cmd_wrt(uchar cmd); //LCD写命令子程序

void dat_wrt(uchar dat); //LCD写数据子程序

void display(uint Tem); //显示子程序

void Print(uchar *str); //字符串显示程序

//*************主函数*******************************************

void main()

{

uint Tem; //温度变量

SCK=1;

SDA=1;

delay(4);

SCK=0;

delay(1000);

SCK=1;

init1602(); //初始化LCD

while(1)

{

Tem=readtemp();//读取温度

cmd_wrt(0x01);//清屏

Print(" ?Temperature: "); //显示字符串 ?Temperature: 且换行

display(Tem);//显示温度

Print(" ^C");//显示摄氏度

delay(10000);//延时再读取温度显示

}

}

void Print(uchar *str)//字符串显示程序

{

while(*str!='\0')//直到字符串结束

{

dat_wrt(*str);//转成ASCII码 ?

str++; //指向下一个字符

}

}

//*********输入转换并显示*********

void display(uint Tem)

{

uint T,a,b;

T=Tem*2;

if(T>=27315) //温度为正

{

T=T-27315; //

a=T/100; //温度整数

b=T-a*100; //温度小数

if(a>=100) //温度超过100度

{

dat_wrt(0x30+a/100); //显示温度百位

dat_wrt(0x30+a%100/10); //显示温度十位

dat_wrt(0x30+a%10);//显示温度个位

}

else if(a>=10)//温度超过10度

{

dat_wrt(0x30+a%100/10); //显示温度十位

dat_wrt(0x30+a%10);//显示温度个位

}

else //温度不超过10度

{

dat_wrt(0x30+a);//显示温度个位

}

dat_wrt(0x2e);//显示小数点

if(b>=10) //温度小数点后第1位数不等于0

{

dat_wrt(0x30+b/10); //显示温度小数点后第1位数

dat_wrt(0x30+b%10); //显示温度小数点后第2位数

}

else //温度小数点后第1位数等于0

{

dat_wrt(0x30); //显示温度小数点后第1位数0

dat_wrt(0x30+b);//显示温度小数点后第2位数

}

}

else //温度为负

{

T=27315-T;

a=T/100;

b=T-a*100;

dat_wrt(0x2d);//显示负号

if(a>=10) //温度低于负10度

{

dat_wrt(0x30+a/10);//显示温度十位

dat_wrt(0x30+a%10);//显示温度个位

}

else //温度高于负10度

{

dat_wrt(0x30+a);//显示温度个位

}

dat_wrt(0x2e);//显示小数点

if(b>=10) //温度小数点后第1位数不等于0

{

dat_wrt(0x30+b/10);//显示温度小数点后第1位数

dat_wrt(0x30+b%10);//显示温度小数点后第2位数

}

else //温度小数点后第1位数等于0

{

dat_wrt(0x30); //显示温度小数点后第1位数0

dat_wrt(0x30+b);//显示温度小数点后第2位数

}

}

}

//************************************

void start(void) //停止条件是 SCK=1时,SDA由1到0

{

SDA=1;

delay(4);

SCK=1;

delay(4);

SDA=0;

delay(4);

SCK=0;

delay(4);

}

//------------------------------

void stop(void) //停止条件是 SCK=1时,SDA由0到1

{

SCK=0;

delay(4);

SDA=0;

delay(4);

SCK=1;

delay(4);

SDA=1;

}

//---------发送一个字节---------

void SendByte(uchar number)

{

uchar i,n,dat;

n=Nack_number; //可以重发次数

Send_again:

dat=number;

for(i=0;i<8;i++) //8位依次发送

{

if(dat&0x80) ? //取最高位

{

bit_out=1; //发1

}

else

{

bit_out=0; //发0

}

send_bit(); //发送一个位

dat=dat<<1; //左移一位

}

read_bit(); ? //接收1位 应答信号

if(bit_in==1) //无应答时重发

{

stop();

if(n!=0)

{

n--; //可以重发Nack_number=10次

goto Repeat; //重发

}

else

{

goto exit;//退出

}

}

else

{

goto exit;

}

Repeat:

start(); //重新开始

goto Send_again;//重发

exit: ; //退出

}

//-----------发送一个位---------

void send_bit(void)

{

if(bit_out==1)

{

SDA=1; ? //发1

}

else

{

SDA=0; ? //发0

}

_nop_();

SCK=1; ? //上升沿

delay(4);delay(4);

SCK=0;

delay(4);delay(4);

}

//----------接收一个字节--------

uchar ReadByte(void)

{

uchar i,dat;

dat=0; //初值为0

for(i=0;i<8;i++)

{

dat=dat<<1; //左移

read_bit(); //接收一位

if(bit_in==1)

{

dat=dat+1;//为1时对应位加1

}

}

SDA=0; //发送应答信号0

send_bit();

return dat; //带回接收数据

}

//----------接收一个位----------

void read_bit(void)

{

SDA=1; //数据端先置1

bit_in=1;

SCK=1; //上升沿

delay(4);delay(4);

bit_in=SDA; //读数据

_nop_();

SCK=0;

delay(4);delay(4);

}

//------------------------------

uint readtemp(void)

{

SCK=0;

start(); //开始条件

SendByte(0x00); //发送从地址00

SendByte(0x07); //发送命令

start(); //开始条件

SendByte(0x01); //读从地址00

bit_out=0;

tempL=ReadByte();//读数据低字节

bit_out=0;

tempH=ReadByte();//读数据高字节

bit_out=1;

err=ReadByte(); //读错误信息码

stop(); //停止条件

return(tempH*256+tempL);

}

//******************LCD显示子函数***********************

void init1602(void) //初始化LCD

{

cmd_wrt(0x01); //清屏

cmd_wrt(0x0c); //开显示,不显示光标,不闪烁

cmd_wrt(0x06); //完成一个字符码传送后,光标左移,显示不发生移位

cmd_wrt(0x38); //16×2显示,5×7点阵,8位数据接口

}

void busy(void) //LCD忙标志判断

{

flag=0x80; //赋初值 高位为1 禁止

while(flag&0x80)//读写操作使能位禁止时等待 继续检测

{

P0=0xff;

RS=0; //指向地址计数器

RW=1; //读

LCDE=1; //信号下降沿有效

flag=P0; //读状态位 高位为状态

LCDE=0;

}

}

void cmd_wrt(uchar cmd) //写命令子函数

{

LCDE=0;

busy(); //检测 读写操作使能吗

P0=cmd; //命令

RS=0; //指向命令计数器

RW=0; //写

LCDE=1; //高电平有效

LCDE=0;

}

void dat_wrt(uchar dat) //写数据子函数

{

busy(); //检测 读写操作使能吗

LCDE=0;

if(flag==16)

{

RS=0; //指向指令寄存器

RW=0; //写

P0=0xC0; //指向第二行

LCDE=1; //高电平有效

LCDE=0;

}

RS=1; //指向数据寄存器

RW=0; //写

P0=dat; //写数据

LCDE=1; //高电平有效

LCDE=0;

}

//------------延时--------------

void delay(uint n)

{

uint j;

for(j=0;j<n;j++)

{

_nop_();

}

}

1.1 单片机的应用和特点 1

1.1.1 单片机的应用 1

1.1.2 主流单片机的种类及特点 3

1.2 MCS-51系列单片机的内部结构 7

1.3 MCS-51单片机的引脚功能与时序 9

1.3.1 MCS-51系列单片机引脚说明 10

1.3.2 MCS-51单片机的时序 16

1.4 MCS-51单片机的存储器组织 17

1.4.1 程序存储器 18

1.4.2 数据存储器 19

1.4.3 特殊功能寄存器 21

1.5 单片机最小系统 24

1.5.1 单片机最小系统 24

1.5.2 彩灯控制器的设计 25

1.5.3 顺序控制器的设计 27

1.6 本章小结 29 2.1 单片机C语言宏配置介绍 30

2.1.1 处理器的配置 30

2.1.2 ID区域 31

2.1.3 EEPROM数据 31

2.2 单片机数据结构 31

2.2.1 类型限定词 32

2.2.2 常数 33

2.2.3 变量 34

2.2.4 构造数据类型 38

2.2.5 函数 46

2.2.6 中断 49

2.2.7 C语言和汇编语言的嵌套使用 53

2.2.8 伪指令 54

2.3 MPLAB IDE编译器简介 57

2.3.1 MPLAB工程管理器(MPLAB Project Manager) 57

2.3.2 MPLAB文本编辑器(MPLAB Editor) 57

2.3.3 MPLAB软件仿真器(MPLAB-SIM Simulator) 58

2.3.4 MPLAB在线仿真器(MPLAB-ICE Simulator) 58

2.4 MPLAB IDE的安装和使用 58

2.4.1 MPLAB IDE的安装要求 58

2.4.2 MPLAB IDE的使用 59

2.4.3 实例应用 59

2.4.4 MPLAB IDE中的工程 62

2.4.5 MPLAB IDE工程的编译 65

2.4.6 MPLAB IDE的软件仿真 66

2.5 MCC18基础 68

2.5.1 MCC18的安装目录浏览 68

2.5.2 MCC18的语言执行流程 70

2.5.3 MCC18举例 70

2.5.4 MCC18的编译环境 72

2.5.5 MCC18和单片机的比较 73

2.6 单片机的混合开发 74

2.6.1 C51和汇编语言的性能比较 74

2.6.2 C51和汇编语言的混合编程 74

2.7 本章小结 79 3.1 单片机应用系统设计的流程 80

3.2 单片机应用系统两设计原则 82

3.2.1 硬件系统设计原则 82

3.2.2 应用软件设计原则 83

3.3 单片机的选型 83

3.3.1 单片机选型的原则 83

3.3.2 单片机选型参考 85

3.3.3 开发工具的选择 86

3.4 系统常见故障与调试 87

3.5 本章小结 88 4.1 数字滤波算法 89

4.1.1 算术平均值滤波 90

4.1.2 滑动平均值滤波 92

4.1.3 防脉冲干扰平均值滤波 93

4.1.4 中值滤波 95

4.1.5 一阶滞后滤波 96

4.2 数字PID控制算法 97

4.2.1 位置式PID控制算法 98

4.2.2 增量式PID控制算法 100

4.2.3 积分分离的PID控制算法 102

4.2.4 变速积分PID控制算法 103

4.3 本章小结 104 5.1 键盘设计的组成和分类 105

5.1.1 键盘的物理结构 106

5.1.2 键盘的组成形式 106

5.2 键盘接口的工作过程和工作方式 111

5.2.1 键盘的抖动干扰和消除方法 111

5.2.2 盘接口的工作过程 112

5.2.3 键盘的工作方式 112

5.3 键位置的判别方法 113

5.4 键盘接口设计的储存芯片和

5.4 相关协议 114

5.4.1 键盘接口设计的储存芯片 114

5.4.2 AT24CXX系列的芯片及I2C协议 114

5.4.3 A93CXX系列的芯片及SPI协议 124

5.5 键盘接口实现的工程实例 132

5.5.1 矩阵键盘接口的工程实例 132

5.5.2 矩阵式中断扫描键盘的设计 137

5.5.3 二进制编码键盘接口的工程实例 139

5.6 重点与难点 141 6.1 交通灯顺序控制 143

6.1.1 硬件系统的设计 143

6.1.2 反向器74F06 145

6.1.3 控制字 145

6.1.4 程序设计 145

6.2 设计一种基于模糊理论的单片机控制交通路口调度系统 148

6.2.1 系统的总体设计 148

6.2.2 十字路口调度系统模糊控制器的设计 149

6.2.3 电路设计 151

6.2.4 车流量检测电路 154

6.2.5 系统主程序和模糊控制程序设计 155

6.2.6 系统显示程序设计 157

6.3 重点与难点 159 7.1 显示屏显示原理及串行通信基本概念 161

7.1.1 显示屏显示原理 161

7.1.2 串行通信 163

7.1.3 阵列式LED显示屏的实现 166

7.2 显示屏硬件电路设计 166

7.2.1 硬件电路介绍 168

7.2.2 外扩数据存储器电路 170

7.3 列式LED显示屏显示程序的171

7.3.1 汉字点阵数据的提取 171

7.3.2 显示主程序 174

7.3.3 串口中断处理程序 176

7.3.4 显示驱动函数 179

7.3.5 外部存储器读写程序 181

7.3.6 串口通信程序 181

7.3.7 文字显示特效程序 182

7.4 本章小结 191 8.1 IC卡基础 192

8.1.1 IC卡的分类 192

8.1.2 IC卡的标准 194

8.2 接触型IC卡读写系统的开发 194

8.2.1 IC卡读写系统的时序 195

8.2.2 IC卡读写系统的硬件连196

8.2.3 IC卡读写系统的软件系统 197

8.3 基于SLE4442加密卡读写系统的开发 201

8.3.1 SLE4442卡的介绍 201

8.3.2 SLE4442的模式 203

8.3.3 SLE4442的操作命令 205

8.3.4 SLE4442读/写系统的软硬件设计 208

8.4 重点与难点 215 9.1 无刷直流电机控制原理 216

9.1.1 无刷直流电机的组成 217

9.1.2 无刷直流电机的工作原理 217

9.1.3 无刷直流电机的控制方法 219

9.2 无刷直流电机的工作特性 220

9.3 直流无刷电机控制的应用实现 221

9.3.1 总体设计概述 221

9.3.2 直流无刷电机控制的硬件设计 222

9.3.3 直流无刷电机控制的软件设计 224

9.3.4 无刷直流电机速度闭环控制系统 227

9.4 本章小结 230 10.1 永磁同步电机的结构与分类 231

10.2 永磁同步电机的矢量控制 232

10.3 永磁同步电机控制 236

10.3.1 控制电路设计 237

10.3.2 光电隔离电路设计 238

10.3.3 功率电路设计 239

10.4 永磁同步电机控制的软件实现 239

10.4.1 电压SVPVM的DSPIC33f软件实现 241

10.4.2 转子位置检测 243

10.4.3 AD转换模块 245

10.5 本章小结 246 11.1 汽车行驶记录仪功能介绍 247

11.2 简易汽车行驶记录仪的设计 249

11.2.1 汽车行驶记录仪的考虑因素 250

11.2.1 MSP430 251

11.2.2 车模拟信号的采集 254

11.2.4 数字信号采集电路 255

11.2.5 SST39VF160芯片介绍 257

11.3 记录仪的软件设计 257

11.3.1 软件流程图 258

11.3.2 数据存储格式 259

11.3.3 SST39VF160存储器数据读写的实现 259

11.4 数据采集的程序实现 263

11.5 本章小结 264 12.1 USB-GPIB控制器简介 265

12.1.1 认识USB 266

12.1.2 GPIB 269

12.2 USB-GPIB控制器的硬件电路设计 271

12.2.1 器件的选择 272

12.2.2 USB-GPIB控制器电路设计 278

12.3 USB-GPIB控制器的软件程序的实现 287

12.3.1 USB单片机协议控制芯片与主机(计算机)的数据交互 288

12.3.2 USB协议控制芯片与GPIB控制器的数据交互 299

12.4 USB-GPIB控制器固件的调试与固化 300

12.4.1 USB-GPIB控制器固件的调试 301

12.4.2 USB-GPIB控制器固件程序的固化 302

12.5 本章小结 303 13.1 研究抗干扰技术的重要性 304

13.2 干扰的分类 305

13.2.1 按噪声产生的原因分类 306

13.2.2 按噪声传导模式分类 306

13.2.3 按噪声波形及性质分类 307

13.3 干扰的耦合方式 308

13.4 单片机系统可靠性的设计任务与方法 310

13.4.1 单片机系统可靠性设计的任务 310

13.4.2 可靠性设计一般方法 311

13.5 本章小结 313 14.1 无源滤波器抗干扰 314

14.1.1 电容滤波器 315

14.1.2 电感滤波器 316

14.1.3 RC低通滤波器 316

14.1.4 1LC低通滤波器 318

14.1.5 低通滤波器的结构选择 319

14.1.6 低通滤波器的平衡结构与串联形式 319

14.2 有源滤波器抗干扰 321

14.2.1 一级低通有源滤波器 321

14.2.2 二级低通有源滤波器 322

14.3 去耦电路 324

14.3.1 尖峰电流的形成原理 324

14.3.2 去耦电容的配置 325

14.3.3 光电隔离 326

14.3.4 继电器隔离 328

14.3.5 变压器隔离 328

14.3.6 布线隔离 329

14.4 接地技术 330

14.5 本章小结 334 15.1 概述 335

15.2 指令冗余技术 336

15.2.1 单字节指令冗余 337

15.2.2 重要指令冗余 337

15.3 软件陷阱技术 337

15.3.1 未使用的中断向量区设置陷阱 338

15.3.2 RAM数据区中设置陷阱 338

15.3.3 未使用的EPROM数据区设置陷阱 339

15.3.4 非EPROM单片机空间设置陷阱 339

15.3.5 运行程序区设置陷阱 339

15.4 看门狗技术 339

15.4.1 硬件看门狗技术 340

15.4.2 软件看门狗技术 342

15.5 本章小结 345

关于“c51单片机程序实例”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!