- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8 80C51的C语言程序设计
* * 定时计数器编程示例 【例2】 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 1、计算计数初值X: N=t/ Tcy =10×10^-3/1×10^-6=10000 计数器初值应为2^16-10000。即应将2^16 -(10000/256)送入TH0中,2^16-(10000%256)送入TL0中。 2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H 3、程序清单(见下页) * * #include “reg51.h” sbit P10 = P1^0; void timer0(void)interrupt 1 { P10 = ! P10; TH0 = -(10000/256); TL0 = -(10000%256); } void main(void) { TMOD = 0x01; P10 = 0; TH0 = -(10000/256); TL0 = -(10000%256); EA = 1; ET0 = 1; TR0 = 1; while(1); } 数码管动态显示 七段数码管大家用过多次,它其实和跑马灯电路没有区别,只不过排成了“8”字形; 根据将发光二极管正极或负极作为公共端的不同,分为共阳和共阴,两者编码相反,注意区分。 【例3】 四位共阴 四位共阳 数码管动态显示 共阴数码管编码表 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0 1 2 3 4 5 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , 6 7 8 9 A B 0x39 , 0x5e , 0x79 , 0x71 , 0x00 C D E F 无显示 ,//共阳数码管编码如下(0-15) uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; 数码管动态显示 数码管动态显示 程序见实例 * * A/D转换接口编程示例 【例4】 ADC0809与单片机的接口电路如图。 * * # include “reg51.h” # include “absacc.h” # define uchar unsigned char # define IN0 XBYTE[0x7ff8] sbit ad_busy = P3^3; * * void ad0809(uchar idata *x) { uchar i; uchar xdata * ad_adr; ad_adr = IN0; for(i = 0;i 8;i ++) { * ad_adr = 0; /*启动转换*/ i = i; /*延时等待*/ i = i; while(ad_busy ! =0); x[i] = * ad_adr; /*存转换结果*/ ad_adr ++; /*下一通道*/ } } * * void main(void) { static uchar idata ad[10] ; ad0809(ad); } * * 80C51的C语言程序设计 单片机C语言概述 1 C51的数据类型与运算 2 C51流程控制语句 3 C51的指针类型 4 C51的函数 5 C51编程实例 6 * * 1 单片机C语言概述 1.1 C51程序开发过程 编译器能自动完成变量的存储单元的分配 对常用功能模块和算法编制相应的函数,方便移植 采用C51的优点 C语言具有良好的可读性、可移植性和基本的硬件操作能力 。 C51程序开发过程 编写源程序 建立工程,加入源程序 编译生产目标程序 仿真调试、写存储器 * * * * 1.2 C51程序结构 #include reg52.h #include stdio.h void delayms(unsigned); void main(void) { unsigned char i; P1=0x01; do { for (i=0;i=7;i++) { delayms(5000); P1=P11; if(P1==0x0){P1=0x01;} }
文档评论(0)