用51单片机设计3位led数码显示管作秒表00.0-99.0求设计电路与c语言程序
单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:
1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。
2、C是一门语言,由对应平台的编译器编译成对应平台汇编的程序,各平台的汇编不一样,当然编译器也不一样 DOS上的TC2 TC3 WINDOWS上的VC 8051的C51都有自已的编译器 。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。
3、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。
C51本质就是C,是为在单片机上使用C而出来的,如果C不牢固,还是多掌握一点C再学C51,不过新增的知识也不少,而且基本上跟C无关。
4、C只是一种高级语言。它除具有一般高级语言的功能特性外,它可以很好的操作底层的硬件接口。在C语言的基础上,如果你把一些单片机的端口或特殊功能寄存器加于定义,使之方便于在 写语句的时候,直接直观的编写。这样就差不多是单片机C语言。
C语言的特性差不多都可以用于单片机C语言,因为它们的编译机理都是一样的。
扩展资料:
C语言:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
单片机的C语言:
单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构,设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。
51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较广的单片机编程语言。
单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用
参考资料:
C语言-百度百科
单片机C语言-百度百科
单片机编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。
1.单片机的汇编语言
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响川可语言效率的特殊规定。例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。
2.单片机的C语言
单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算谏磨快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中栗用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:
对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。程序有规范的结构,可分为不同的函数。这种方式可便程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。
编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。
功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。
单片机C语言作为一种非常方便的语言而得到广泛的支持,(语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片翻U均不同较快地移植过来。
用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。
拓展资料
单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。
#define uchar unsigned char
#define uint unsigned int
#define dataport P1//P1直接驱动数码管的8个阳极
sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极
sbit wei2=P3^4;
sbit wei3=P3^5;
uint a=0;//中断次数计数,一次50ms,20次为1 秒
//共阴数码管七段码
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//延时子程序
void delay1ms(uint t)
{
uint i,j,k;
for(i=t;i>0;i--)
for(j=15;j>0;j--)
for(k=27;k>0;k--);
}
//显示子程序
void display(uint n)
{
uchar a1,a2,a3;
a1=n/100%10;
a2=n/10%10;
a3=n%10;
wei1=1;
dataport=TABLE[a1];
delay1ms(1);
wei1=0;
dataport=0x80|TABLE[a2];//这里多个小数点
delay1ms(1);
wei3=1;
dataport=TABLE[a3];
delay1ms(1);
wei3=0;
}
void init(void)
{
TMOD=0X01;
TH0=(655536-50000)/256;//定时50ms
TL0=(655536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1M0=0;
P1M1=0xff;//P1口设为推挽输出,驱动能力强
P3M0=0;
P3M1=0x38;//P3.3P3.4 P3.5口设为推挽输出
}
void main(void)//主程序
{
init();//初始状态设定
while(1)
{
display(a/2);//显示计数值,以十分之一秒为单位
}
}
void timer0(void)interrupt 1//中断子程序
{
TH0=(655536-50000)/256;
TL0=(655536-50000)%256;
a++;
if(a==1980)a=0;//1980次是99秒
}
用51单片机设计3位led数码显示管作秒表00.0-99.0求设计电路与c语言程 ...
define uchar unsigned char define uint unsigned int define dataport P1\/\/P1直接驱动数码管的8个阳极 sbit wei1=P3^3;\/\/再有三个管脚接3个三极管驱动数码管的阴极 sbit wei2=P3^4;sbit wei3=P3^5;uint a=0;\/\/中断次数计数,一次50ms,20次为1 秒 \/\/共阴数码管七段码 uchar TABLE[10]=...
用51单片机程序显示3位7段数码管,求具体程序
假设为共阴极数码管,驱动输入端接单片机P1口,共阴极接P2口的0.1.2.脚。我的程序如下,当前显示数字123 include <reg52.h> typedef unsigned char uint8;typedef unsigned int uint16;typedef long int uint32;code uint8 number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f...
51单片机控制3位7段共阴数码管
\/\/p2.0-p2.2控制123位,---注意:没有用P2.3。\/\/要使其间隔1S分别显示123,231,321,213...无限循环 \/\/下列程序,经过仿真,符合要求。include <reg52.h> define uchar unsigned char sbit bit1 = P2^0;sbit bit2 = P2^1;sbit bit3 = P2^2;uchar code dulatab[] = \/\/...
利用51单片机和3位数码管实现10分钟内的简易计时器
修改如下:#include<reg51.h>#define uint unsigned int#define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbit key1=P2^7;sbit key2=P2^6;sbit weiH=P3^0;sbit weiM=P3^1;sbit weiL=P3^...
各位大侠 我的老师让我用51单片机设计3个分别是8位 16位 32位 的DI...
51中一个P口就是8位的,P0,P1,P2,P3.P0和P2可合用为16,P0为低8位,P2为高8位。不过要通过直接寻址来实现。32位的话就用138+377 来实现好了...protel中可以找到非门的芯片啊如7414,如果你非要画可以在原理图库里画个三角型加个小圆圈就可以了,这就是非门的符号 由于你得叙述不详细,...
用51单片机来实现p1口的高5位置位,低3位不变,这段程序怎么编写呀...
用或指令 C P1|=0xF8;汇编 ORL P1,#0F8H
51单片机中,我想把 A 中的低三位分别赋值给 P0 口的3、4、5位,请问该...
51单片机中的位传送指令,必须通过CY位来执行,例如:MOV C,ACC.0 MOV P0.3,C MOV C,ACC.1 MOV P0.4,C MOV C,ACC.2 MOV P0.5,C
单片机MCS51 试编写一段程序,将P1口的高5位置位,低3位不变。
ORL P1,#0F8H
用51单片机设计一个由3个按键显示两位的程序分别是15,25,35。_百度知 ...
if(aa==216000) \/\/10800*50=3个小时 TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1; \/\/开总中断 ET1=1; \/\/开启T1中断 TR1=1; \/\/启动T2定时器 if (aa==72000) \/\/1800*50=半小时 \/\/以上是用定时器1.} void timer0() interrupt 1 { TH0=(65536-50000)\/2...
51单片机指令寄存器是八位宽度,为什么还有指令是3字节指令,不是说指...
指令长度等于指令寄存器长度,这并不矛盾。对于51单片机,执行指令时,是先取第一个字节的指令码,也叫操作码,进行译码,然后执行。如果是单字节指令就执行操作了。如果是两个字节,或三个字节的指令,就会再取出第二字节,第三个字节,第二,第三字节通常是立即数,地址,偏移量等操作数,取出这些操作...
厨人岭舒他: 其实这个很简单,你应该知道如果直接用单片机端口操作的程序void Display(void){ P2=0XFF; P0=ShowTable[0]; P2=0XFE; delaymS(5);P0=ShowTable[1]; P2=0XFD; delaymS(5);P0=ShowTable[2]; P2=0XFB; delaymS(5);P2=0XFF; }你换...
马村区15692203384: 用51单片机程序显示3位7段数码管,求具体程序 - ?
厨人岭舒他: 假设为共阴极数码管,驱动输入端接单片机P1口,共阴极接P2口的0.1.2.脚.我的程序如下,当前显示数字123 #include <reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; typedef long int uint32; code uint8 number[]={0x3f,0x06,0...
马村区15692203384: 用AT89C51设计一个3位的LED数码管显示作为“秒表”,显示时间为000—999秒,每秒自动加1 - ?
厨人岭舒他: 很简单,定时器计时1秒,按秒累计,供三位数码管动态显示.再加上几个按键即可! 手打不易,如有帮助请采纳,谢谢!!
马村区15692203384: 怎么用51单片机控制三个LED灯用不同的频率闪烁? - ?
厨人岭舒他: 给你说说我是怎么想的.led的公共端倪接到AD转换器的输出端,AD采用普通个8位就可以.这样,单片机调节AD的输出,从0到最大值,就有256(2的8次方)级了.补充: 下面哥们说的PWM,你也可以试试.调节PWM输出的占空比试试.先用仿真软件调试看看吧.补充: 上面写错了个地方,不是AD转换器(AD转换器是模拟转换成数字的),应该是DA转换器,把数字信号转换成模拟信号.
马村区15692203384: 用51单片机控制5个3位数码管动态显示,分别按五个键按下会加数.求程序啊 - ?
厨人岭舒他: 程序写出来,没有调试,也不知道能不能行啊.只能给你一个思路.把数码管显示字符的字符码存到一个数组中.所有数码管都送数组的第0个元素.然后判断按键,如果有按键动作,数组下标加1,把数值关入数码管.加1的同时判断是否到数组末尾,如果到就变0,另外一个数码管(十位)开始显示1.最好再弄一个初始化的键.
马村区15692203384: 51单片机问题 编写4个LED数码管循环显示2008的程序. 用C语言写.. - ?
厨人岭舒他: #include<reg51.h> //----------------------------------------------- void delay(unsigned int i) //延时 {unsigned char j;while(i--) for(j = 0; j < 115; j++); } //----------------------------------------------- void main(void) {unsigned char n1;unsigned char code SEG[] = {0xc0, ...
马村区15692203384: 求51单片机PWM汇编语言程序(用来控制3个红、绿、蓝LED灯,让这3个LED灯产生均色变化) - ?
厨人岭舒他: 1、程序实现上应该不难,假设用3个8位变量来调节这三个灯,理想上可以得到256单色灰度效果.但通常能做到16等级灰度,也能看到一定效果. 2、这三个PWM周期相同,占空比不同,亮度就各有不同. 3、确保单片机管脚输出1时(100%...
马村区15692203384: 设计一个STC51单片机控制的RGB三基色LED灯光模式控制系统. - ?
厨人岭舒他: 你最起码要做一个恒流源,给LED供电.D/A转换模块.控制电流的大小.然后调节个个灯的电流变化就可以了,应该有那种调光IC卖的,让单片机直接控制调光IC就可以了.调光IC自带恒流输出,这样就省事了.
马村区15692203384: 做一个计数器,如何用一个单片机控制三个光电传感器,并且结果在三个数码管上分别显示,求大神解答 - ?
厨人岭舒他: 你这只有一位数码管,还采用什么动态显示方法,两位以上时才用这种方法.一位时,要是用共阳数码管的话,数码管的公共端接VCC,要是用共阴数码管,数码管的公共端接GND就好了,而用一个I/O口输出段码就行了.
马村区15692203384: 用c语言编程三个按键对应点亮三个LED灯的程序,AT89S52单片机,最好有原理图,谢谢.急求 - ?
厨人岭舒他: 这个也求?用按键点亮LED灯这个是51入门最基础的东西,真心想学的话,买块51的开发板,都带有例程,很快就可以入门的.建议你还是多看看资料把基础的东西学好.推荐你看一下《十天学会单片机和C语言编程》的视频教程对入门还是不...