2012~~单片机C语言程序设计实训100例-基于8051+Proteus仿真(第2版)

2020-01-14 19:00发布

2.JPG (78.24 KB, 下载次数: 2) 下载附件 单片机C语言程序设计实训100例-基于8051+Proteus仿真(第二版) 封面 2012-11-21 16:18 上传

第1章  8051单片机C语言程序设计概述        1
------------------------------------------------------------------------------------------------------------
1.1  8051单片机引脚        1
1.2  数据与程序内存        5
1.3  特殊功能寄存器        6
1.4  外部中断、定时器/计数器及串口应用        8
1.5  有符号与无符号数应用、数位分解、位操作        9
1.6  变量、存储类型与存储模式        11
1.7  关于C语言运算符的优先级        13
1.8  字符编码        15
1.9  数组、字符串与指针        16
1.10  流程控制        18
1.11  可重入函数和中断函数        19
1.12  C语言在单片机系统开发中的优势        20

第2章  Proteus操作基础        21
------------------------------------------------------------------------------------------------------------
2.1  Proteus操作界面简介        21
2.2  仿真电路原理图设计        22
2.3  元件选择        25
2.4  调试仿真        29
2.5  Proteus与Vision 3的联合调试        29
2.6  Proteus在8051单片机应用系统开发的优势        30

第3章  基础程序设计        32
------------------------------------------------------------------------------------------------------------
3.1  闪烁的LED        32
3.2  双向来回的流水灯        34
3.3  花样流水灯        36
3.4  LED模拟交通灯        38
3.5  分立式数码管循环显示0~9        40
3.6  集成式数码管动态扫描显示        41
3.7  按键调节数码管闪烁增减显示        44
3.8  数码管显示4×4键盘矩阵按键        46
3.9  普通开关与拨码开关应用        49
3.10  继电器及双向可控硅控制照明设备        51
3.11  INT0中断计数        53
3.12  INT0及INT1中断计数        55
3.13  TIMER0控制单只LED闪烁        58
3.14  TIMER0控制数码管动态管显示        62
3.15  TIMER0控制8×8LED点阵屏显示数字        65
3.16  TIMER0控制门铃声音输出        68
3.17  定时器控制交通指示灯        70
3.18  TIMER1控制音阶演奏        72
3.19  TIMER0、TIMER1及TIMER2实现外部信号计数与显示        75
3.20  TIMER0、TIMER1及INT0控制报警器与旋转灯        77
3.21  按键控制定时器选播多段音乐        79
3.22  键控看门狗        82
3.23  双机串口双向通信        84
3.24  PC与单片机双向通信        90
3.25  单片机内置EEPROM读/写测试        95

第4章  硬件应用        99
------------------------------------------------------------------------------------------------------------
4.1  74HC138译码器与反向缓冲器控制数码管显示        100
4.2  串入并出芯片74HC595控制数码管显示四位数字        103
4.3  用74HC164驱动多只数码管显示        106
4.4  并串转换器74HC165应用        110
4.5  用74HC148扩展中断        112
4.6  串口发送数据到2片8×8点阵屏滚动显示        115
4.7  数码管BCD解码驱动器CD4511与DM7447应用        117
4.8  62256RAM扩展内存        119
4.9  用8255实现接口扩展        121
4.10  可编程接口芯片8155应用        124
4.11  串行共阴显示驱动器控制4+2+2集成式数码管显示        129
4.12  14段与16段数码管演示        133
4.13  16键解码芯片74C922应用        136
4.14  1602字符液晶工作于8位模式直接驱动显示        139
4.15  1602液晶显示DS1302实时时钟        148
4.16  1602液晶屏工作于8位模式由74LS373控制显示        153
4.17  1602液晶屏工作于4位模式实时显示当前时间        155
4.18  1602液晶屏显示DS12887实时时钟        159
4.19  时钟日历芯片PCF8583应用        167
4.20  2×20串行字符液晶屏显示        174
4.21  LGM12864液晶屏显示程序        177
4.22  TG126410液晶屏串行模式显示        184
4.23  Nokia7110液晶屏菜单控制程序        192
4.24  T6963C液晶屏图文演示        199
4.25  ADC0832 A/D转换与LCD显示        211
4.26  用DAC0832生成锯齿波        215
4.27  ADC0808 PWM实验        217
4.28  ADC0809 A/D转换与显示        220
4.29  用DAC0808实现数字调压        221
4.30  16位A/D转换芯片LTC1864应用        223
4.31  I2C接口存储器AT24C04读/写与显示        225
4.32  I2C存储器设计的中文硬件字库应用        233
4.33  I2C接口4通道A/D与单通道D/A转换器PCF8591应用        237
4.34  I2C接口DS1621温度传感器测试        241
4.35  用兼容I2C接口的MAX6953驱动4片5×7点阵显示器        246
4.36  用I2C接口控制MAX6955驱动16段数码管显示        250
4.37  I2C接口数字电位器AD5242应用        254
4.38  SPI接口存储器AT25F1024读/写与显示        257
4.39  SPI接口温度传感器TC72应用测试        264
4.40  温度传感器LM35全量程应用测试        268
4.41  SHT75温湿度传感器测试        272
4.42  直流电机正、反转及PWM调速控制        278
4.43  正反转可控的步进电机        281
4.44  ULN2803驱动点阵屏仿电梯数字滚动显示        284
4.45  液晶显示MPX4250压力值        286
4.46  12864LCD显示24C08保存的开机画面        289
4.47  用M145026与M145027设计的无线收发系统        293
4.48  DS18B20温度传感器测试        296
4.49  1-Wire式可寻址开关DS2405应用测试        303
4.50  MMC存储卡测试        307

第5章  综合设计        316
------------------------------------------------------------------------------------------------------------
5.1  带日历时钟及温度显示的电子万年历        316
5.2  用8051+1601LCD设计的整型计算器        321
5.3  电子秤仿真设计        328
5.4  1602液晶屏显示仿手机键盘按键字符        332
5.5  用24C04与1602液晶屏设计的简易加密电子锁        336
5.6  1-Wire总线器件ROM搜索与多点温度监测        341
5.7  高仿真数码管电子钟设计        356
5.8  用DS1302与12864LCD设计的可调式中文电子日历        360
5.9  用T6963C液晶屏设计的指针式电子钟        366
5.10  T6963C液晶屏中文显示温度与时间        370
5.11  T6963C液晶屏曲线显示ADC0832两路A/D转换结果        372
5.12  温度控制直流电机转速        374
5.13  用74LS595与74LS154设计的16×16点阵屏        377
5.14  用8255与74LS154设计的16×16点阵屏        379
5.15  红外遥控收发仿真        381
5.16  GP2D12红外测距传感器应用        388
5.17  三端可调正稳压器LM317应用测试        395
5.18  数码管显示的K型热电偶温度计        399
5.19  交流电压检测与数字显示仿真        403
5.20  用MCP3421与RTD-PT100设计的铂电阻温度计        407
5.21  可接收串口信息的带中英文硬字库的80×16 LED点阵屏        414
5.22  模拟射击训练游戏        422
5.23  GPS仿真        427
5.24  温室监控系统仿真        431
5.25  基于Modbus总线的数据采集与开关控制系统设计仿真        437

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
ourdev00001
2020-01-15 01:30
本帖最后由 ourdev00001 于 2012-11-21 17:57 编辑

直流电机正反转及PWM调速控制.DSN

3.JPG (139.35 KB, 下载次数: 0)

下载附件

2012-11-21 16:36 上传



1        //-----------------------------------------------------------------
2        //  名称: 直流电机正/反转及PWM调速控制
3        //-----------------------------------------------------------------
4        //  说明: 本例SW1的3个挡位用于设置电机正、反转及停转,K1、K2用于控制
5        //                 电机PWM调速,在进行相应操作时,对应的LED被点亮。
6        //
7        //-----------------------------------------------------------------
8        #include <reg51.h>
9        #include <intrins.h>
10        #define INT8U        unsigned char
11        #define INT16U        unsigned int
12        #define S1_ON() (P3 & (1<<5)) == 0x00         //正转
13        #define S2_ON() (P3 & (1<<6)) == 0x00         //停转
14        #define S3_ON() (P3 & (1<<7)) == 0x00         //反转
15        #define Forward                0                                        //正转指示灯
16        #define Stop                1                                        //停转指示灯
17        #define Backward        2                                        //反转指示灯
18        sbit M_DIR = P1^0;                                                 //方向控制
19        sbit M_PWM = P1^1;                                                //PWM调速控制
20        sbit Key_INC = P3^0;                                        //加速键
21        sbit Key_DEC = P3^1;                                        //减速键
22        //-----------------------------------------------------------------
23        // 延时函数
24        //-----------------------------------------------------------------
25        void delay_us(INT16U x) { for(; x>0; x--) _nop_(); }
26        //-----------------------------------------------------------------
27        // 主程序
28        //-----------------------------------------------------------------
29        void main()
30        {
31                int speed = 200;                                        //默认初始速度
32                while (1)
33                {        if (S2_ON())                                        //切换到S2位置时表示停转
34                        {        P0 = ~(1<<Stop);                        //停转指示灯亮
35                                M_DIR = 0; M_PWM = 0;                //控制停转
36                                continue;                                        //跳过下面的代码,提前入下一个循环
37                        }
38                        //方向控制
39                        if (S1_ON())                                        //S1合上为正向
40                        {        M_DIR = 0;        P0 = ~(1<<Forward); }
41                        else       
42                        if (S3_ON())                                        //S3合上为反向
43                        {        M_DIR = 1;        P0 = ~(1<<Backward); }
44                        //按键调速控制
45                        if(Key_INC == 0) speed = speed < 400 ?        speed + 1 : 400;
46                        if(Key_DEC == 0) speed = speed > 0         ?        speed - 1 : 0;
47                        //PWM调速控制信号输出
48                        M_PWM = 1;        delay_us(speed);
49                        M_PWM = 0;        delay_us(400 - speed);
50                }
51        }

一周热门 更多>