历史上的今天
返回首页

历史上的今天

今天是:2025年01月19日(星期日)

正在发生

2020年01月19日 | PIC单片机C语言程序设计实例之C语言if语句与LED数码管显示

2020-01-19 来源:elecfans

if 语句也称为条件语句,是C 语言中转移语句之一。在设计C 语言程序时,常常要根据某些条件以决定程序运行的流向,这时就需要if 语句来实现。任何if语句(包括else 部分),都可当作一条C 语句使用。


格式:if(表达式) 语句1

else             语句2

其中else 为选择项;即可有、可无的。所以条件语句,可分为两种;if 语句和if— else 语句。


式中的表达式为关系表达式或逻辑表达式以及由条件运算符(有关运算符将在后文介绍)构成的一种表达式。


功能:先计算if 中的条件表达式,其值为真(满足条件时),执行语句1 ;其值为假(不满足条件时),若有else,就执行语句2。


If 语句常用有几种形式:

⑴ if(条件表达式) 语句

该形式无选择项else。

例1 :if(a>b) c=b ;

∥满足条件a>b,将b 赋值给c

例2 :i f ( t t r = = 9 9 9 9 )ttr=0 ;

∥ 满足运算条件ttr==9999 ;将0 赋值给ttr

⑵ if(条件表达式) 语句1

else 语句2

例1 :if(a>b) c=b ;

∥满足a>b,将b 赋值给c

else c=a ;

∥ 不满足a>b 时, 将a 赋值给c

例2:若比较两个整量a、b,要求其大者送x,即可用if 语句实现;

⑶表达式赋值(简化式)的条件语句。读者在阅读一些书籍上的单片机C 语言程序时,会遇到条件语句的一种简化形式,其格式如下:

表达式1 ?表达式2 ;表达式3

如以上if 语句的形式⑵中的例2,即可简化为条件表达式的赋值语句;

If 语句尚有一些其他格式,这里暂略去。


3.LED数码管显示的硬件电路

在电子技术中,数码管显示(0~9)是最常见的显示技术。数码管显示时,可用LCD(液晶),也可用LED 数码管显示0~9 的数。这里首先介绍用PIC16F84A控制的数码管LED 的显示电路,如图3 所示。图3 是四位数码管的,也可以扩展更多的位或减少到一位数的显示。

PIC16F84A 的引脚④ 是低电平复位端,外接复位按钮K0和R1、二极管D0 以及电容C0组成的复位电路。引脚、脚外接晶振(4M)和电容C1、C2组成的单片机时钟电路。RA4 位(脚③)外接微动开关按键,其用途按图3 电路具体功能而定,如该电路用于计数,K1 可作起动计数作用;如该电路用作时钟,K1 可作时钟人工预置起始时刻用。


PIC16F84A 的PORTB 口,其中的RBO~BB6 位通过限流电阻R3~R9 与LED 数码管笔段码a、b、c、d、e、f、g 分别对应相连。PORTA 口的RA3、RA2、RA1 和RA0 通过电阻R10~R13与三极管(PNP 型)V4~V1 的基极相连。三极管的集电极分别与对应的数码管的供电端(⑧、③脚)相连。三极管的发射极都接到电源+5V 上。该三极管V4~V1 用于数码管LED 动态扫描时的电源开通信号。数码管上的符号DP 为数显时的小数点位,用户可按需要在其某位数码管的DP 上外接一只470Ω 电阻和LED(与电阻串联),用于四位数码管特征显示标记,如数码管计数时的百位段;记时的时位段等。


图3 电路的数码管LED,笔者选用共阳型数码管,其实物的引脚和内部电路如图4 所示。为了读者使用方便, 所以图3中的数码管LED 的电路是以实物结构绘制的。所述的图3 电路即将在后文的数码管LED 计数和时钟(包括可预置的时钟)派上用场。

4.LED数码管计数显示的软件流程

这里首先介绍利用四位LED 数码管计数(0~9999)的显示技术,因为计数是单片机中A/D 转换,时钟电路的基础。根据图3 提供的硬件电路,用C语言编写的4 位加计数器的程序流程,如图5 所示。从该流程图看出:C 语言程序是以函数功能要求编写的,所用的函数都应给予定义或声明,然后由主函数main 调用,以完成电路计数(0~9999)的功能。

5.LED数码管计数的C程序

根据图3 的硬件电路,用C 语言编写的0-9999 加计数器的源程序,命名为pic0.4.c,其程序清单如下:

说明:在上述的C 程序display(显示)函数中,其说明语句的无符号整形变量d,是一个重要的变量,由d 值决定了计数器每位显示值递增的时间。改变d 值,使d 值变大,每位递增的持续时间就长,这个特性,就是单片机计时(时钟)C 程序的基础。字段(SEG7)给每位赋值后的延时,只决定显示值亮、灭的时间,这个时间是供人眼观察数码管显示值的视觉效应(连续感)。


读者在阅读上述C 程序时,请参看注释的说明,以便理解编写LED 数码管计数(0~9999)程序的方法。在理解了上述程序之后,尽可能背诵上述程序,以便为后文中介绍的时钟程序、A/D 转换程序打下基础。

推荐阅读

史海拾趣

Denyo Europa Gmbh公司的发展小趣事

Denyo Europa Gmbh公司一直将产品质量视为企业的生命线。公司建立了严格的质量管理体系,从原材料采购到生产流程,再到产品检测,每一个环节都严格把关。公司还定期对员工进行质量意识培训,确保每一个员工都能深刻理解质量对于企业发展的重要性。这种对质量的执着追求,使公司的产品在市场上赢得了良好的口碑。

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc在市场定位和产品策略上表现出色。公司深入调研市场需求,发现高端电子设备市场对于高性能、高可靠性的组件有着旺盛的需求。于是,Capax Technologies Inc将产品定位为高端市场,专注于研发和生产高品质的电子组件。通过精准的市场定位和优质的产品,Capax Technologies Inc迅速在高端市场中占据了一席之地。

富之光(Fujicon)公司的发展小趣事

自成立以来,富致科技始终秉持创新精神,不断投入研发,引进美国最新的PPTC技术,并结合海内外技术专家的智慧,成功开发出多款高性能的自复式保险丝产品。这些产品凭借其出色的安全性能、稳定性和可靠性,迅速在市场上获得了认可。同时,富致科技积极拓展国内外市场,与众多知名企业和行业伙伴建立了长期稳定的合作关系,进一步巩固了其在PPTC保险丝领域的领先地位。

Codeco Corporation Of Vermont公司的发展小趣事

在国内市场取得成功后,Codeco开始将目光投向国际市场。他们积极拓展海外业务,与多家国际知名企业建立合作关系。通过参加国际展会、设立海外分支机构等方式,Codeco的产品逐渐打入国际市场,赢得了广泛的认可。这一过程中,Codeco不仅提升了品牌知名度,也积累了丰富的国际化运营经验。

BK Precision公司的发展小趣事

随着电子测量技术的不断发展,BK Precision开始将业务重心转向测试和测量仪器的研发与生产。工程师团队通过不懈努力,打破技术壁垒,成功开发出一系列高质量的测量仪器。这些产品在市场上取得了巨大的成功,BK Precision逐渐在电子量测产业中崭露头角。此外,公司还积极寻求与其他电子公司的合作,通过合并与收购等方式,不断拓展业务范围和市场份额。

GSR Technology Ltd公司的发展小趣事

在快速发展的同时,GSR Technology Ltd始终关注可持续发展和社会责任。公司积极推动绿色生产,采用环保材料和工艺,减少对环境的影响。同时,公司积极参与公益事业,为贫困地区提供技术支持和教育援助。此外,公司还加强知识产权保护,维护行业健康发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个类似公司在电子行业中的可能发展路径。实际情况可能因公司具体策略、市场环境等因素而有所不同。

问答坊 | AI 解惑

D题 线圈谐振调不出来

本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 采用了自己搭电路,27MHZ,信号能发出来,但是就是调不好谐振。电感测不出来啊。哎,太难。 高手有没有思路。  …

查看全部问答>

请问WINCE定制的终端系统如何识别U盘,要加入哪些组件才能识别U盘?

   我做了下面五步的工作: 1、添加Catalog->Core OS->Windows CE devices->Core OS Services->USB Host Support->USB Storage Class Driver 2、添加Catalog->Core OS->Windows CE devices->Core OS Services->File Systems and Data ...…

查看全部问答>

请大家推荐个带串口的pda。

请大家推荐个带串口的pda。 在仪表的Modbus通讯中,上位机可以是PLC、PC、PDA或智能手机。 最近需要找个pda作为仪表的上位机通讯。 要求是 1.带串口(作为上位机的通讯用) 2.可以安装程序。(通讯程序,这个需要编写。) 其他的就没有什么要 ...…

查看全部问答>

请问MCC18只认识4520不认识45k20怎么办?

编译器用的是MCC18-3.0 ,但是编译器不认识PIC18F45K20,只认识PIC18F4520。而且MCC18不认识所有带K的型号的PIC。 如果器件选择45K20,编译的时候报错,说不认识45K20这个处理器 如果器件选择4520,程序烧不进扳子。 各位碰到带K的型号是怎么办 ...…

查看全部问答>

wince asp 如何使用com,不会内存泄漏

我在asp中调用com, 会发生内存泄漏。 测试方法,是让打开含有com的页面,然后什么都不做,10分钟后再次操作的时候, 发现内存会有大约50K左右的增加。 所使用的com是测试用的,最最简单的哪一种(只有一个借口,还是空函数)。 所使用的asp代码 ...…

查看全部问答>

图像采集温度

我现在有一个摄像头和图像采集卡,两个配套的,而且带着驱动,但是所带的驱动不能每隔一段时间自动采集图像。我想编个程序能每隔几秒钟自动采集图像,各位大侠告诉我下我应该用什么程序编,我现在一点头绪都没有,谢谢你们,最好采集的图像能自动保 ...…

查看全部问答>

请问在WINCE下用何种开发工具最好?

请问在WINCE下用何种开发工具最好?…

查看全部问答>

请问:.tgz文件如何解压呀

:.tgz文件如何解压呀 找了半天都不行或…

查看全部问答>

CPLD/FPGA到底是如何实现它的控制目的的呢

请教各位高手 我现在已经初步学习了VHDL和CPLD/FPGA的设计软件了,可是还是没能弄清楚它是怎么对控制目标实现控制的,又是如何实现的呢?举例说,单片机是可以用KEIL编辑及编译C或是汇编控制程序正确后烧写到单片机芯片里去,通过单片机连接功能电 ...…

查看全部问答>

请问:能不能在pc机上模拟一定环境,做嵌入式开发呀

能不能在pc机上模拟一定环境,做嵌入式开发呀 再说我也没钱买那些东西呀…

查看全部问答>