|
手把手教你使用PIC单片机点亮7段数码管(C语言版)——站长原创,如需引用请注明出处 七段数码管在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等等,具有显示醒目、直观的优点,它作为一种应用十分普遍的显示器件,可以在各种各样的设备上见到,例如图1就是某数字表头显示时候的效果图。它很适合用在对价格、亮度等条件比较敏感,同时基本上只要求显示数字量的时候,所以在数据显示,定时控制等场合用得很多。数码管也叫LED数码显示器,其实是由多个LED排列封装而成,图2给出了一些常见的数码管的实物图,其中以上看到的数码管都是由8个LED组合而成的,当然也有其它类型的。
首先,让我们先来对相关理论知识进行一番了解。如图片左上角,是我们51试验板的4位数码管;那这些数码管是怎样来显示1,2,3,4……数字呢?别着急,我们一起慢慢来学。 7段数码管的段排列和内结构见下图:
我们的增强型PIC实验板用的都是共阳极扫描型数码管。那什么是共阳极呢;就是他们的公共端接正极;还有一种是共阴极的数码管,那么他们的公共端是接负极的。扫描型的意思是,几位的数码管的段选都是并联着的。 现在来看看增强型PIC实验板数码管部分的硬件原理图。
上面理论说了一大堆,我们从这里开始动手喽:)我们的任务是要让六个数码管显示数字“0”——“9”字样,时间间隔为1秒。 const unsigned char display_numb[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90}; void delay_1ms(void) void main(void) delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); #include<pic.h> 语句用来加载PIC库文件, 数组display_numb用来定义数字“0”--“9”的字形码,如下表所示:
注意: 0为点亮 1 为灭 我们把他从高往低排列为二进制,例如2,就是10100100, 用计算器转换为16进制就是A4.我们在单片机里为了把16进制和10进制有所区别,就把16进制后面跟一个H。 void delay_1ms(void) 是延时1ms的函数,void delay_ms(unsigned int time) 是延时X毫秒的函数,具体为多少毫秒由形参time变量决定,如我们执行函数 delay_ms(1000); 即表示为延时1000毫秒=延时1秒的时间。语句“TRISC=0X00;”用来设置RC口的输入、输出状态,在此我们设置为输出;语句“TRISA=0X00;”用来设置RA口的输入、输出状态,在此我们设置为输出。while(1) 是死循环语句,即周而复始地执行{ }内的语句体,如我们现在的程序中的作用即是不停地执行 delay_ms(x); PORTC=display_numb[x]; 这两类语句,即给RC口送一个字形码,延时1秒钟后,又给RC口赋予一个新的字形码,在我们从实验结果上看来就是数码管在不停地显示“0”——“9”这些数字。 下面是以上程序在执行过程中,数码管显示的部分瞬间效果图:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
专业生产 智能家居控制系统 GSM远程遥控开关 串口继电器控制盒 GPRS MODEM 单片机开发板 电子制作散件套件 我们专注于智能家居控制系统,GPRS数据采集系统,物联网智能控制方向 晶控电子----让我们的生活更美好 品质更卓越 生活更智能 联系地址:浙江省杭州市登云路428号 浙江时代电子市场4楼852室 邮政编码:310011 Email:hificat@163.com 电话:0571-88009850 56789853 销售:1号线 技术支持:2号线 传真:3号线 智能家居:4号线 代理招商:5号线 销售QQ:1198450005 杭州晶控电子有限公司 版权所有 2003-2012 HANGZHOU KinCony ELECTRONICS CO.,LTD 网站备案:浙ICP备11001927号 |