汽车单片机技术 课件 项目 2 出租车计价器显示_第1页
汽车单片机技术 课件 项目 2 出租车计价器显示_第2页
汽车单片机技术 课件 项目 2 出租车计价器显示_第3页
汽车单片机技术 课件 项目 2 出租车计价器显示_第4页
汽车单片机技术 课件 项目 2 出租车计价器显示_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数码管循环显示0~9本次课内容:1.基本任务(1)用1位七段LED数码管显示0-9中的任意一个数,编程,自行设计proteus仿真图,实现功能;编程,使用mini51开发板,实现功能。(2)用1位七段LED数码管循环显示0-9,编程,自行设计proteus仿真图,实现功能;编程,使用mini51开发板,实现功能。2.进阶任务任意两位七段LED数码管循环显示0-9,每个数显示1s,用mini51开发板实现功能。AT89S52单片机的P2口的P2.0~P2.7八个引脚,使其依次连接到一个共阴极LED数码管的a~h七个位段控制引脚上,数码管的公共端接地;1.基本任务Proteus仿真图的设计:认识数码管ABCDEFGDP单片机常用LED和LCD两种方式LED数码显示器价格低廉、体积小、功耗低、而且可靠性好,得到广泛使用。单个LED数码管的管脚结构如图所示数码管内部由8个LED(位段)组成;有7个条形LED和一个小圆点LED;当LED导通时,相应的线段或点发光;将这些LED排成一定图形,来显示数字0~9、字符A~F、H、L、P、R、U、Y、符号“—”及小数点“.”等。认识数码管ABCDEFGDPLED数码管可以分为共阴极和共阳极两种结构共阴极结构把所有LED阴极作为公共端(com)连接低电平(接地),通过控制每个LED的阳极电平使其发光或熄灭阳极为高电平LED发光,为低电平熄灭。如显示0时,把a、b、c、d、e、f端接高电平,其他各端接地。共阳极结构是把所有LED的阳极作为公共端(com)连起来,接高电平(如+5V),通过控制每一只LED的阴极电平来使其发光或熄灭,阴极为低电平LED发光,为高电平熄灭数码管引脚及内部结构管脚排列共阴数码管共阳数码管使用数码管注意事项必须注意的是,数码管内部没有电阻,在使用时需外接限流电阻如果不限流将造成发光二极管的烧毁;限流电阻的取值一般使流经发光二极管的电流在几个mA到十几mA,如果需要更亮一些,可以达到20mA。数码管的字型编码数码管要显示某个字符,必须使它的8个位段上加上相应的电平组合,即一个8位数据,这个数据就叫该字符的字型编码。编码规则如下图所示。共阴极和共阳极数码管的字型编码是不同的,共阴极和共阳极的字型编码是反相的,例如字符“0”:共阴极编码是3FH,二进制形式是00111111;共阳极编码是C0H,二进制形式是11000000,恰好是00111111的反码。D7

D6

D5

D4

D3

D2

D1

D0dpgfedcba一维数组

在C语言中,数组必须要先定义后使用。一维数组的定义方式为:

类型说明符数组名[整型表达式];类型说明符是数组中各个元素的数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,既数组的长度。例如:inta[9];

//定义整型数组a,有9个元素,下标从0到8。floatb[5];

//定义实型数组b,有5个元素,下标从0到4。charch[10];

//定义字符数组ch,有10个元素,下标从0到9。

一维数组的初始化

(1)在定义数组时,对数组的全部元素赋予初值。

例如:inta[5]={1,2,3,4,5};(2)只对数组的部分元素进行初始化。

例如:inta[5]={1,2};即a[0]=1,a[1]=2,后面三个元素的值全部是0.

(3)在定义数组时,对数组的全部元素不赋初值,则数组元素的值均被初始化为0.

(4)可以在定义时不指明数组元素的个数,而根据赋值部分由编码器自动确定。例如:unsignedcharTab[]={0x7F,0xBF,0xDF,0xEF};相当于定义了Tab[4]这样一个数组。一维数组

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义0~9十个数字的字形编码表,共阴极数码管有关键字code:将数组元素定义在程序存储器ROM中;没有关键字code:将数组元素定义在内部RAM中,即随机(数据)存储器;注意事项数组的类型是指构成数组的元素的类型;对于同一个数组,其所有元素的数据类型都是相同的数组名的书写规则应符合标识符的命名规则;不能与其它变量同名常量表达式可以是符号常量或常量表达式。常量表达式不能包含变量即不能对数组的大小作动态定义

两位数码管循环显示0~99本次课内容:基本任务(1)用两位数码管显示一个两位数,例如12.编程,自行设计proteus仿真图,实现功能;编程,使用mini51开发板,实现功能。(2)两位数码管循环显示0-99,编程,自行设计proteus仿真图,实现功能。2.进阶任务(1)设计一个0~99的秒表,包括电路设计和程序设计,按下按键开关,从0开始计时,最大计到99秒,之后一直在0-99秒之间循环计时。按键开关断开,停止计时。用proteus仿真图实现功能。(2)设计一个0~99的计数器,手动计数按钮按一下,计一个数,即对按下按键的次数进行计数,并通过两个数码管显示计数结果,最大计到99。画Proteus仿真图,关键词如下:加运算符“+”,减运算符“-”,乘运算符“*”与一般算数运算规则相同。除运算符“/”,分两种情况:(1)整除:两个整数相除,所得商舍去尾数,仅到整数部分。例如,3/6等于0,而不是0.5;(2)实除:参加运算的两个数中有一个数为实数,所得的商为实数,如3.0/6=0.5,3/6.0=0.5,3.0/6.0=0.5等。求余运算符“%”,要求两个对象均为整数,所得结果为两个操作对象整除后,取其余数,如3%6等于3,而6%3等于0.proteus仿真图实现显示一个两位数-程序proteus仿真图见该PPT第3页#include<AT89X52.H>sbitWE1=P2^0;sbitWE2=P2^1;sbitWE3=P2^2;sbitWE4=P2^3;unsignedcharnum;unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //定义0-9十个数字的字形编码表共阳极数码管voiddelay() //延时10ms{ unsignedchari,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } voidmain(){ num=79;while(1) { WE1=0;//开数码管1 P0=table[num/10]; //显示十位数

delay(); WE1=1;//关数码管1 delay();

WE2=0;//开数码管2 P0=table[num%10]; //显示个位数

delay(); WE2=1;//关数码管2 delay(); }

} MINI51开发板实现显示一个两位数-程序proteus仿真图实现循环显示0-99-程序proteus仿真图见该PPT第3页#include<AT89X52.H>unsignedcharnum;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义0-9十个数字的字形编码表共阴极数码管voiddelay10ms(void) //10ms延时函数 {unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--); } voidmain(){ num=0; P0=table[num/10]; //十位数码管显示0 P2=table[num%10]; //个位数码管显示0while(1) { if(P1_0==0) //判断按键是否按下

{ delay10ms(); //延时10ms,延时去抖

if(P1_0==0) //确定按键按下

{ num++; if(num==100) {num=0;} P0=table[num/10]; //显示十位

P2=table[num%10];//显示个位

while(P1_0==0); //等待按键释放

} } }}

计数器0-99-程序#include<AT89X52.H>sbitSW=P1^0;unsignedcharnum;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义0-9十个数字的字形编码表共阴极数码管voiddelay() //延时1s{ unsignedinti; unsignedcharj; for(i=0;i<1326;i++) for(j=0;j<249;j++); } voidmain(){ num=0; P0=0x00; //关闭十位数码管

P2=0x00; //关闭个位数码管

while(1) { if(SW==0) { P0=table[num/10]; //显示十位

P2=table[num%10];//显示个位

delay(); num++; if(num==100) {num=0;} } else{P0=0x00; //关闭十位数码管

P2=0x00; //关闭个位数码管

num=0;}

}}

0-99秒表-程序出租车计价器动态显示123.4本次课内容:基本任务(1)模拟出租车计价器显示价格123.4元,数码管显示。编程,使用mini51开发板,实现功能。2.进阶任务(1)模拟出租车计价器显示价格123.4元,LCD1602液晶屏显示。编程,设计proteus仿真电路,实现功能。编程,使用mini51开发板,实现功能。(2)LCD1602液晶显示高铁车次和到站时间(第1行显示“G60arrivaltime”,第2行居中显示“15:11”)。编程,设计proteus仿真电路,实现功能。编程,使用mini51开发板,实现功能。数码管引脚及内部结构管脚排列共阴数码管共阳数码管数码管的字型编码数码管要显示某个字符,必须使它的8个位段上加上相应的电平组合,即一个8位数据,这个数据就叫该字符的字型编码。编码规则如下图所示。画Proteus仿真图,关键词如下:加运算符“+”,减运算符“-”,乘运算符“*”与一般算数运算规则相同。除运算符“/”,分两种情况:(1)整除:两个整数相除,所得商舍去尾数,仅到整数部分。例如,3/6等于0,而不是0.5;(2)实除:参加运算的两个数中有一个数为实数,所得的商为实数,如3.0/6=0.5,3/6.0=0.5,3.0/6.0=0.5等。求余运算符“%”,要求两个对象均为整数,所得结果为两个操作对象整除后,取其余数,如3%6等于3,而6%3等于0.proteus仿真图实现显示一个两位数-程序proteus仿真图见该PPT第3页#include<AT89X52.H>sbitWE1=P2^0;sbitWE2=P2^1;sbitWE3=P2^2;sbitWE4=P2^3;unsignedcharnum;unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //定义0-9十个数字的字形编码表共阳极数码管voiddelay() //延时10ms{ unsignedchari,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } voidmain(){ num=79;while(1) { WE1=0;//开数码管1 P0=table[num/10]; //显示十位数

delay(); WE1=1;//关数码管1 delay();

WE2=0;//开数码管2 P0=table[num%10]; //显示个位数

delay(); WE2=1;//关数码管2 delay(); }

} MINI51开发板实现显示一个两位数-程序proteus仿真图实现循环显示0-99-程序proteus仿真图见该PPT第3页#include<AT89X52.H>unsignedcharnum;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义0-9十个数字的字形编码表共阴极数码管voiddelay10ms(void) //10ms延时函数 {unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--); } voidmain(){ num=0; P0=table[num/10]; //十位数码管显示0 P2=table[num%10]; //个位数码管显示0while(1) { if(P1_0==0) //判断按键是否按下

{ delay10ms(); //延时10ms,延时去抖

if(P1_0==0) //确定按键按下

{ num++; if(num==100) {num=0;} P0=table[num/10]; //显示十位

P2=table[num%10];//显示个位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论