[计算机硬件及网络]c语言在测量和控制中的应用总

上传人:繁星 文档编号:88339353 上传时间:2019-04-24 格式:PPT 页数:68 大小:4.41MB
返回 下载 相关 举报
[计算机硬件及网络]c语言在测量和控制中的应用总_第1页
第1页 / 共68页
[计算机硬件及网络]c语言在测量和控制中的应用总_第2页
第2页 / 共68页
[计算机硬件及网络]c语言在测量和控制中的应用总_第3页
第3页 / 共68页
[计算机硬件及网络]c语言在测量和控制中的应用总_第4页
第4页 / 共68页
[计算机硬件及网络]c语言在测量和控制中的应用总_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《[计算机硬件及网络]c语言在测量和控制中的应用总》由会员分享,可在线阅读,更多相关《[计算机硬件及网络]c语言在测量和控制中的应用总(68页珍藏版)》请在金锄头文库上搜索。

1、C语言在测量和控制中的应用,邵长友 13407609549,自动化教研室 3407,第一讲 概述,1.实时测量系统程序设计。,2.实时通讯系统程序设计。,3.实时控制系统程序设计。,C语言在控制领域的应用:,第一讲 概述,1.实时测量系统程序设计。,2.实时通讯系统程序设计。,3.实时控制系统程序设计。,C语言在控制领域的应用:,工业PC 嵌入式系统 PLC 智能仪表,第一讲 概述,嵌入式系统的交叉编译,第一讲 概述,Keil C51 集成开发环境,PROTEUS 电子设计开发与仿真平台,HEX目标文件,Keil,Keil,新建工程,Keil,新建工程对话框,Keil,选择器件对话框,从概念到

2、完成,在Proteus中, 从原理图设计、系统仿真到PCB设计一气呵成。真正实现了从概念到产品的完整设计。,ISIS原理图设计与仿真,ARES线路板设计,实物,Proteus,简单例子:流水灯,#include void Delay1ms(unsigned int count) unsigned int i,j; for(i=0;iLEDIndex); if(LEDIndex=7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(100); ,简单例子:流水灯,#include void Delay1ms(un

3、signed int count) unsigned int i,j; for(i=0;icount;i+) for(j=0;j120;j+); main() unsigned char LEDIndex = 0; bit LEDDirection = 1; ,while(1) if(LEDDirection) P1 = (0x01LEDIndex); if(LEDIndex=7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(100); ,. . .,实验报告 (电子版发送到,期末打印上交),实验题目:上下

4、来回循环的流水灯设计和仿真 实验目的:掌握单片机并口的使用方法 实验主要步骤: (程序清单,仿真原理图(截图) 实验结果: 实现的功能说明、截图 心得体会: 实验过程中遇到的问题及解决方法: 通过实验,还有哪些问题需要解决?,文档命名:1_学好姓名周次 1_200904205119孔岳3.doc,C语言在测量和控制中的应用,邵长友 13407609549,自动化教研室 3407,第二讲 51单片机并口的应用,封装和引脚,端口线、电源线、控制线三类,逻辑符号,逻辑符号,微处理器核、片内外设,单片机的内部基本组成,并口 P0、P1、P2、P3,P0有所不同 P2=0x01(00000001B) P

5、2=0x02(00000010B) P2=0x04(00000100B) P2=0x08(00001000B) P2=0x10(00010000B) P2=0x20(00100000B) P2=0x40(01000000B) P2=0x80(10000000B),并口 P0、P1、P2、P3,可以进行位寻址 sbit LED4=P24; P2.4 引脚 LED=1; LED=0;,并口 电平仿真测试,测试程序,每输出一次都延时 P2=0x01(00000001B) P2=0x02(00000010B) P2=0x04(00000100B) P2=0x08(00001000B) P2=0x10(

6、00010000B) P2=0x20(00100000B) P2=0x40(01000000B) P2=0x80(10000000B),并口 电平仿真测试,测试程序,#include #define CYCLE 30000 main() int i; while(1) P2=0x01; /(00000001B) for(i=0;iCYCLE;i+); P2=0x02; /(00000010B) for(i=0;iCYCLE;i+); P2=0x04; /(00000100B) for(i=0;iCYCLE;i+); P2=0x08; /(00001000B) for(i=0;iCYCLE;i+

7、); P2=0x10; /(00010000B) for(i=0;iCYCLE;i+); P2=0x20; /(00100000B) for(i=0;iCYCLE;i+); P2=0x40; /(01000000B) for(i=0;iCYCLE;i+); P2=0x80; /(10000000B) for(i=0;iCYCLE;i+); P2=0xff; for(i=0;iCYCLE;i+); for(i=0;iCYCLE;i+); P2=0x00; for(i=0;iCYCLE;i+); ,实训1 :从左到右的流水灯设计和仿真,实验题目:从左到右的流水灯设计和仿真 实验目的:掌握单片机并口

8、的使用方法和proteus中总线的画法,接电源,能否将LED阳极接P0口,阴极接地?,intrins.h:内部函数描述: 函数名: _crol_,_cror_ 功能:字节数据的循环移位,实训1 :从左到右的流水灯设计和仿真,intrins.h 函数原型: extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); 举例: unsigned char x=0xf0, y; / 0xf0=1111 0000B y= _c

9、ror_ (x, 2); / y为0x3c=0011 1100B,实训1 :从左到右的流水灯设计和仿真,拓展,把从左到右的流水灯 修改成 左右来回点亮的流水灯,如何修改程序? 能否用一个开关控制灯的闪亮方式,P2=_crol_(P2,1); /P2 的值向左循环移动,实训1 :从左到右的流水灯设计和仿真,实训2 : LED 模拟交通灯,说明: 东西向绿灯亮若干秒,黄灯闪烁5 次后红灯亮。 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5 此后变红灯。 东西向变绿灯,如此重复。,实训: 2 LED 模拟交通灯,实训: 2 LED 模拟交通灯,实训: 2 LED 模拟交通灯,A:东西 B:

10、南北,实训: 2 LED 模拟交通灯,实训: 2 LED 模拟交通灯,能否在此基础上加一个倒计时牌,拓展,第三讲 单片机系统中的LED数码显示,第三讲 单片机系统中的LED数码显示,LED显示器的结构与原理,按位取反 阳代码阴代码 阳代码阴代码,第三讲 单片机系统中的LED数码显示,Proteus中的单个绿色LED模型,7SEG-COM-AN-GRN,7SEG-COM-CAT-GRN,第三讲 单片机系统中的LED数码显示,Proteus中的单个绿色LED模型,7SEG-COM-AN-GRN,7SEG-COM-CAT-GRN,第三讲 单片机系统中的LED数码显示,Proteus中的4位红色LED

11、模型,7SEG-MPX4-CA(阳) 7SEG-MPX4-CC(阴),阳和阴图形一样,第三讲 单片机系统中的LED数码显示,Proteus中的4位红色LED模型,7SEG-MPX4-CC(阴),第三讲 单片机系统中的LED数码显示,单个数码管循环显示09,单个数码管循环显示09的程序,#include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff ; vo

12、id DelayMS(uint x) uchar t; while(x-) for(t=120;t0;t-); void main() uchar i=0; P0=0x00; while(1) P0=DSY_CODEi; i=(i+1)%10;/*显示0-9*/ DelayMS(200); ,/主程序 void main() uchar i=0; P0=0x00; while(1) P0=DSY_CODEi; i=(i+1)%10; / 范围 010,故对 10 取余 DelayMS(300); /1秒 ,#include #include #define uchar unsigned cha

13、r #define uint unsigned int sbit key1=P30; sbit key2=P31; sbit key3=P32; sbit key4=P33; uchar code DSY_CODE= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff ; void DelayMS(uint x) uchar t; while(x-) for(t=120;t0;t-); uchar key() uchar key_value=0xff; P3=0xff; if(key1 ,单个数码管循环显示键值,单个数码管循环

14、显示键值,按键处理函数,主函数,单个数码管循环显示键值,/主程序 void main() uchar key_value=0; P0=0x00; while(1) key_value=key(); if(key_value!=0xff) P0=DSY_CODEkey_value; DelayMS(200); ,第四讲 多位LED的动态扫描显示,第四讲 多位LED的动态扫描显示,第四讲 多位LED的动态扫描显示,第四讲 多位LED的动态扫描显示,三极管的作用,第四讲 多位LED的动态扫描显示,第四讲 多位LED的动态扫描显示,#include #include #define uchar uns

15、igned char #define uint unsigned int uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90;/段码表 /延时 void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+); ,/主程序 void main() uchar i,wei=0x80; while(1) for(i=0;i8;i+) P0=0xff; /初始值 P0=DSY_CODEi; /发送段码 wei=_crol_(wei,1); P2=wei; DelayMS(2); /发送位码时间很短 ,第四讲 多位LED显示拨码开关的值,第四讲 多位LED显示拨码开关的值,void main() uchar k,number,x; P0=0xff; P2=0x00; while(1) number=P1; k=0; while(number!=0) x=number%10; P2=0x01k; P0=DSY_CODEx; DelayMS(1); P0=0xff; k+; number=number/10; ,第四

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号