*本例程采用AD0804芯片,硬件电路:cs片选端接P2.3,WR写数据端写P3.6,RD读数据端接P3.7,锁存端接P2.6脚,数码管位选端分别接P3.2 ,P3.3,P3.4,段选端接P1口*/
#include//头文件
#define uint unsigned int//宏文件
#define uchar unsigned char//宏文件
uchar num;//变量
void delay3(uint z);//延时定义
void dissy();//延时函数定义
sbit ge=P3^2;//个位定义
sbit shi=P3^3;//十位定义
sbit bai=P3^4;//百位定义
sbit ad_cs=P2^3;//片选端
sbit ad_wr=P3^6;//写数据端
sbit ad_rd=P3^7;//读数据端
sbit pian=P2^6;//锁存器片选
void add();//ad转换子函数
void delay(uint i);//延时子函数申明
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e
};//数组
/************主函数**********/
void main()
{
while(1)
{
add();//调用AD转换子函数
dissy();//数码管显示子函数
}
}
/************AD转换子函数**********/
void add()//AD转换子函数
{
uchar i;
ad_cs=1;//将片选关闭
ad_cs=0;//将片选打开
ad_wr=1;//写数上升沿
ad_wr=0;//写数下降沿
ad_wr=1;//写数上升沿
P1=0xff;//送数到P0口
ad_rd=1;//读数上升沿
delay(25);//延时一会儿
ad_rd=0;//读数下降沿
//////**************因为AD转换时间周期长,我现在的数码管没有采用锁存器,AD转换时间大于显示时间,所以显示时会闪烁,解决此问题方法是,连续调用了显示子程序七次,这样显示时就和AD转换时一至,显示出来的数就不闪了********************//////
for(i=0;i<7;i++) //调用7次,相当于delay(255)
void dissy();
//////**********************************//////
num=P1;//将数给计数器num
}
/************显示子函数**********/
void dissy()//显示子函数
{
P0=table[num/100];//百位显示数据
bai=0;//百位打开
delay(14);//延时一会
bai=1;//关闭百位
P0=table[num%100/10];//十位显示数据
shi=0;//十位打开
delay(14);//延时一会
shi=1;//关闭十位
P0=table[num%10];//百位显示数据
ge=0;//关闭十位
delay(14);//延时一会
ge=1;//关闭十位
}
/**************延时子函数*************/
void delay(uint i)//延时函数
{
uint j,k;//定义变量
for(j=i;j>0;j--)//外循环
for(k=30;k>0;k--);//内循环
}
关键字:单片机 AD转换 数码管显示
引用地址:
基于单片机的AD转换的数码管显示程序
推荐阅读最新更新时间:2024-03-16 13:09
PIC系列单片机应用设计与实例
一.引言 在微 控制器 (Microcontroller)应用领域日益广泛的今天,各个领域的应用也向微控制器厂商提出了更高要求,希望速度更快、功耗更低、体积更小、价格更廉以及组成系统时所需要的外围器件更少;随着越来越多的各种非电子工程技术人员的应用需求,他们想把微控制器作为嵌入式部件应用到自己熟悉的领域中,还提出简单易学易用的要求。用户的需求就是厂商的市场和动力,老的半导体厂商顺应潮流不断推出新品种,新的半导体厂商则后来居上,把越来越多的外围接口器件集成到片内,功能越来越强、性能越来越高。迄今至少也有35家国外半导体厂商的微控制器进入中国市场。在这众多的五彩缤纷的微控制器中,美国Microchip技术公司的PIC系
[单片机]
51单片机容易忽略的东西
P0口将作为总线的低8位地址线和8位数据线使用 P2口将作为总线的高8位地址线使用 如果十六进制数以字母ABCDEF中的某一个开头,必须在前面加一个0.譬如,MOV P1, #0BFH ORG 00H 表示的是伪指令,作用帮助汇编器汇编指令,并不是单片机指令的一部分,因此伪指令不占用存储器空间。这段代码的含义是从程序存储器的00H开始执行程序。 一段小程序,循环闪烁小灯 ORG 00H START: MOV P1, #00H CALL DELAY MOV P1, #0FFH CALL DELAY JMP START DELAY: MOV R3, #50 D1: MOV R4, #20 D2: MOV R5, #
[单片机]
Mouser开售ST 的STM32H7系列微控制器
专注于引入新品的全球电子元器件授权分销商贸泽电子 ( Mouser Electronics ) 即日起开始备货 STMicroelectronics (ST) 的 STM32H7 系列微控制器。此高性能STM32H7微控制器采用与Arm®平台安全架构 (PSA) 框架相同的安全理念,并将这些理念与STM32系列的增强型安全功能和服务完美融合,提升互联智能设备防护性能。 贸泽备货的 ST STM32H7 微控制器内置带有双精度浮点运算单元 (FPU) 的32位Arm Cortex®-M7 内核、高达2MB闪存和1MB RAM。此微控制器集成硬件真随机数生成器 (TRNG) 和先进密码加密处理器等硬件安全功能,可简化嵌入式应
[电源管理]
单片机应用电路板的故障诊断方法及实现
1 引 言 单片机以其体积小、功耗低、应用灵活、性价比高等优势,广泛地应用在仪表、家用电器智能化和工业控制等领域。在我军新型电子装备中,单片机的应用也很普遍。当这些装备出现故障时,可利用机内自检程序将故障定位到印制电路板。因此,电路板的性能测试及故障诊断就成为装备维修工作中的重点。我们在研制电子装备通用自动测试系统时,将PCB的测试,尤其是带单片机的PCB(简称CPU板)的故障诊断作为难题之一来研究。CPU板的测试和诊断与普通数字电路板有相同之处,也有其自身的特点,因为CPU板是总线结构的PCB板,其总线结构中的总线器件(如:RAM、ROM等)随着程序指令的进行而完成不同的功能,管脚数据信息随着程序的执行不断变化,一般采用仿真方
[单片机]
PIC单片机C语言延时程序和循环子程序
很多朋友说C中不能精确控制延时时间,不能象汇编那样直观。 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来。 一般的我们都用 for(x=100;--x;){;}此句等同与x=100;while(--x){;}; 或for(x=0;x 100;x++){;} 来写一个延时函数。 在这里要特别注意:X=100,并不表示只运行100个指令时间就跳出循环。 可以看看编译后的汇编: x=100;while(--x){;} 汇编后: movlw 100 bcf 3,5 bcf 3,6 movwf_delay l2 decfsz _delay goto l2 return 从代码可以看出总的
[单片机]
51单片机三种模拟串口的设计方案解析
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续的时间,波特率越高,持续的时间越短。如波特率为9600BPS
[单片机]
单片机C语言教程:附录2 AT89C51特殊功能寄存器列表
附录二 AT89C51特殊功能寄存器列表(适用于同一架构的芯片) 带*号的特殊功能寄存器都是可以位寻址的寄存器
[单片机]
Luminary1美元入门级32位ARM微控制器
Luminary Micro公司近日宣布为其32位的Stellaris家族推出首批微控制器。该MCU的入门级售价仅1美元,同时也是首款在硅芯片中采用了ARM Cortex-M3处理器的MCU产品。此次推出的Stellaris产品包括LM3S101和LM3S102。 基于Stellaris微控制器的应用系统能够实现20倍的指令集兼容性能,跨越了20MHz Stellaris微控制器至千兆级的Cortex-A8处理器解决方案。 除Stellaris MCU外,Luminary还提供了开发套件,包括主板和子卡、外围驱动程序库、文档、原理图以及实例程序、全部电缆和跳线器等配件。开发套件还含有完整的评估软件与ARM硬件开发工具,以及集成
[新品]