精华内容
下载资源
问答
  • 单片机STC89C52

    千次阅读 2018-12-04 23:40:55
        单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,...STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧...

        单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机
        STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。本篇文章以STC89C52为例.

    本博客分几部分,如下:
    1.实验一:LED灯点亮实验.
    2.实验二数码管静态显示实验.


    下面给出该单片机的开发原理图.

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述


    实验一:LED灯点亮实验.

    实验原理:

        LED 发光二极管具有单项导通性,通过 5mA 左右的电流就能正常点亮发光二极管, 电流越大,LED 的亮度就越强,但是如果通过的电流过大, 就会烧毁 LED,电流一般 有控制在 3~20mA,电路图中的 1K 的上拉电阻的作用就是限制通过 LED的电流,可称为 “限流电阻” 。

        电路中 LED 采用的是共阳的接法,正极接一个限流电阻再接到电源,负极接到单片 机的引脚,把单片机引脚的电平拉低就能点亮 LED。

    在这里插入图片描述

    代码如下:

    //点亮一个LED灯
    #include <reg52.h>    //此文件中定义了 52 的一些特殊功能寄存器 
    sbit LED1=P1^7;//声明端口 
    void main() {    
    	LED1  = 0; //置 P1_7 口为低电平 ,点亮 LED 
    } 
    

    课外拓展:

    //左向右流,库函数_crol_实现..右向左就用_cror_
    #include <reg52.h>
    #include <intrins.h>
    #define uint unsigned int;
    void delayZms(uint Z){
    	int i,j;
    	for(i=1;i<Z;i++){
    		for (j=1;j<113;j++);
    	}
    }
    void main(){
    	uint a;
    	a=0xfe;//P1端口对应8个管脚,0xfe就是给寄存器赋值,最低位低电平,其他高电平..
    	while(1){
    		P1=a;	//亮灯..
    		a=_crol_(a,1);	//循环左移,最高位放入最低位,其他位依次左移一位.
    		delayZms(500);	//延迟500ms输出.
    	}
    }
    

    不用库函数实现跑马灯.

    
    /*************************************************
    实现函数功能:正向流水点亮LED
    **************************************************/
    #include <reg52.h>
    #define uint unsigned int;
    void forward(void)
    {
    	P1=0xfe;         //第一个灯亮
        delayZms(200);
        P1=0xfd;         //第二个灯亮
        delayZms(200);
        P1=0xfb;          //第三个灯亮
        delayZms(200);
        P1=0xf7;          //第四个灯亮
        delayZms(200);
        P1=0xef;          //第五个灯亮
        delayZms(200);
        P1=0xdf;          //第六个灯亮
        delayZms(200);
        P1=0xbf;          //第七个灯亮
        delayZms(200);
        P1=0x7f;          //第八个灯亮
        delayZms(200); 
        P1=0xff;
        P1=0xfe;         //第一个灯亮
        delayZms(200);
    }
    void delayZms(uint Z){
    	int i,j;
    	for(i=1;i<Z;i++){
    		for (j=1;j<113;j++);
    	}
    }
    void main(){
    	while(1){
    		forward();
    	}
    }
    

    对于以上的改进,循环点亮LED灯.

    #include <reg52.h>
    #define uchar unsigned char;
    #define uint unsigned int;
    uchar code ledTable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};	//不同灯端口对应的十六进制
    void forward(){
    	int i;
    	for (i=0;i<8;i++){
    		P1=ledTable[i];	//依次点亮灯
    		delayZms(100);	//延迟100ms输出
    	}
    }
    void delayZms(uint Z){
    	int i,j;
    	for(i=1;i<Z;i++){
    		for (j=1;j<113;j++);	//延迟函数
    	}
    }
    void main(){
    	while(1){
    		forward();	//调用函数
    	}
    }
    

    数码管静态显示实验

    相应的寄存器
    在这里插入图片描述

    实验原理图.
    在这里插入图片描述

    介绍代码之前先了解一些概念:
    共阴极: 位选为低电平(即0)选中数码管, 各段选为高电平(即1接+5V时)选中各数码段(0~f)
    共阳极: 位选为高电平(即1)选中数码管, 各段选为低电平(即0接地时)选中各数码段(0~f)

    共阴数码管段选表,无小数点:
    unsigned char code distab[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

    共阳数码管段选码表,无小数点:

    unsigned char code distab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

    共阳数码管位选表-8个:
    unsigned char code distab[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选

    简单来讲:

    • 段选和位选是指单片机在控制数码管的时候,有2个部分,一个是位选,选择哪一位数码管可以通电(一般数码管都是有多位的)既被选中,二是段选,每一位都有8个段(一个数码管是由8个段构成的,一个段可以看成是一个小灯)段选控制被位选选中的这个数码管需要显示的数字。数码管要有显示需要两个条件,既一,位选被选中,二,有段选值(需要显示的图案或数字)
    • 如在第一位显示一个数字,则先在段选端口上输出需要的段选信号,然后置位第一位的位选端口使其第一位置位就可以了。
    • 位选就是你选择那个数码管,段选就是你选择这个数码管a,b,c,d,e,f,g,h这 八段中的哪一段
    #include <reg52.h> 
    #define uchar unsigned char  
    sbit wela1 = P1^0;  //第一位
    sbit wela2 = P1^1; //第二位 
    sbit wela3 = P1^2; //第三位 
     
    uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//不带小数点的共阴数码管段值 
    void delayms(uchar x) {  
    	uchar i;   
    	while(x--)  {   
    		for(i=0;i<113;i++);  
    	} 
    } /****************************显示函数***************************/ 
    void display() {       
    	P0=table[0]; //传递数据    
    	P1=0x01; //打开位选    
    	delayms(5); //延时    
    	wela1 = 0;   //关闭位选 
     
       	P1=0x02; //打开位选    
       	P0=table[1];    
       	delayms(5);    
       	wela2 = 0; 
     
       	P1=0x04; //打开位选    
       	P0=table[2];    
       	delayms(5);    
       	wela3 = 0; 
    } 
    void main(void) {     
    	unsigned int  a;      
    	while(1) {
    		for(a=100;a>0;a--) //设置不断显示    
    	  		display();  
    	  	}
    }  
    //运行结果,在数码管上显示012
    

        


    未完待续.本文会持续更新到学完该单片机.

    鉴于网上代码良莠不齐,因此有必要总结一下,为了更好的学习…
    由于本人刚入门,如有一些文章上的不足之处,还请各位大牛指点指点。
    我的Github,虽然目前没什么东西.https://github.com/Githubforusc2018/

    展开全文
  • 郭天祥TX-1C单片机STC89C52仿真版,最经典的仿真版哦!
  • 用51单片机STC89C52实现GSM程序用51单片机STC89C52实现GSM程序
  • 郭天祥10天学会51单片机_郭天祥TX-1C单片机STC89C52仿真版
  • 基于单片机STC89C52的直流电机PWM调速控制系统,学习直流电机PWM调速控制系统的好资料!
  • 单片机stc89C52rc 程序列子 新手入门例子代码(跑马灯、汉字显示等)
  • 单片机stc89c52rc

    2015-10-27 21:23:01
    stc89c52pdf,数据手册,讲述51单片机的各个寄存器和内部资源
  • 利用单片机STC89C52实现汉字LED点阵显示
  • 单片机STC89C52_C语言代码_来回流水 算法实现 #include<reg52.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit led1 = P1^0; void delay(uint dd); void ...

    单片机STC89C52_C语言代码_来回流水_软件延时


    //11.0592MHz:
    //50=3.3ms;80=5.2ms;100=6.5ms;1000=65ms;
    //5000=325ms;7800=508ms;10000=651ms;12000=782ms;
    //16000=1042ms;24000=1563ms;30000=1954ms;46000=2996ms;62000=4038ms;
    

    算法实现

    
    #include<reg52.h>
    
    #define uchar unsigned char 
    #define uint unsigned int
    #define ulong unsigned long
    
    sbit led1 = P1^0;
    
    void delay(uint dd);
    
    void main(void)
    {
    	uchar led_flag = 0;
    	uchar led_cnt = 0;
    	led1 = 0;
    	while(1)
    	{
    		if(led_flag==0)
    		{
    			for(led_cnt=1;led_cnt<8;led_cnt++)
    			{
    				delay(4000);
    				P1 = ~(0x01<<led_cnt);
    			}
    			led_flag = 1;
    		}				 
    		if(led_flag==1)
    		{
    			for(led_cnt=1;led_cnt<8;led_cnt++)
    			{
    				delay(4000);
    				P1 = ~(0x80>>led_cnt);
    			}
    			led_flag = 0;
    		}
    	}
    }
    
    void delay(uint dd)
    {
    	uint tt;
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    }
    
    



    调用库函数实现

    
    #include<reg52.h>
    #include<intrins.h>//_crol_&_cror_
    
    #define uchar unsigned char
    #define uint  unsigned int 
    #define ulong unsigned long
    
    sbit led1 = P1^0;
    
    void delay(uint dd);
    
    void main(void)
    {
    	uchar ledflag = 0;
    	uchar ledcnt = 1;
    	led1 = 0;
    	while(1)
    	{
    		if(ledflag==0)
    		{
    			for(ledcnt=1;ledcnt<8;ledcnt++)
    			{
    				delay(4000);
    				P1 = _crol_(P1,1);
    			}
    			ledflag = 1;
    		}
    		if(ledflag==1)
    		{
    			for(ledcnt=1;ledcnt<8;ledcnt++)
    			{
    				delay(4000);
    				P1 = _cror_(P1,1);
    			}
    			ledflag = 0;
    		}
    	}
    }
    
    void delay(uint dd)
    {
    	uint tt;
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    	for(tt=0;tt<dd;tt++){}
    }
    
    
    
    展开全文
  • 基于单片机STC89C52的LED数码管温度显示及报警器的实现,资源不错,希望对您有用。
  • 它主要采用了常见的STC89C52RC单片机作为主控制器,采用光电耦合器进行信号转换,用市场上采购的食人鱼LED灯条改装成八组LED扫描灯。能够产生拖尾和呼吸等效果,还可以进行底盘灯和无线遥控等功能的扩展。
  • LED,外部中断,定时器中断,串行通信,串行发汉字,EEPROM
  • stc89c52作为stc公司出的比较老的单片机展现出优良的性能,那么问题来了如何精通stc89c52如何为其烧写入语言,stc89c52又有怎么样的出路。 esp-01模块如何连接到单片机模块,esp01到底是什么?
  • STC 89C52RC 单片机芯片(40Pin 直插式DIP封装) x 1 10uF铝电解电容 x 1 10K直插式电阻 x 2 11.0592MHz晶振 x 1 30pF瓷片电容 x 2 电子元件图示 STC 89C52RC 单片机芯片(40Pin 直插式DIP封装): ...

    电子元件准备

    1. STC 89C52RC 单片机芯片(40Pin 直插式DIP封装) x 1

    2. 10uF铝电解电容 x 1

    3. 10K直插式电阻 x 2

    4. 11.0592MHz晶振 x 1

    5. 30pF瓷片电容 x 2

    电子元件图示

    1. STC 89C52RC 单片机芯片(40Pin 直插式DIP封装):
      在这里插入图片描述
    • 一定要是DIP封装的,如果买成贴片的是无法插在面包板上的
    1. 10uF铝电解电容:
      在这里插入图片描述
    • 正负极辨别:

    从侧面环顾一周,纵向查看电容外壳,标有“-”符号的一侧,顺势下去,此方向的引脚为负极,相反的另一方引脚为正极

    1. 10K直插式电阻:
      在这里插入图片描述
    • 一般包装上会有说明,如没有,可看电阻色环计算出阻值
    1. 11.0592MHz晶振:
      在这里插入图片描述
    • 注意要直插式
    1. 30pF瓷片电容:
      在这里插入图片描述
    • 不区分正负极,直接连即可

    STC 89C52RC电气特性

    管脚定义

    在这里插入图片描述

    管脚符号 管脚序号 管脚含义 备注
    T2/P1.0 ~ P1.7 1 ~ 8 带内部上拉电阻的8位双向I/O口 可输入或输出数据。同时可做定时器/计数器2的的外部技术输入(P1.0/T2)和触发输入(P1.1/T2EX)
    RST 9 复位输入 用来完成单片机单片机的复位初始化操作
    RXD/P3.0 10 串行输入口 使用USB转TTL下载器烧写程序时,此接口一般接下载器的TXD引脚
    TXD/P3.1 11 串行输出口 使用USB转TTL下载器烧写程序时,此接口一般接下载器的RXD引脚
    INTO/P3.2 12 外部中断口0
    INT1/P3.3 13 外部中断口1
    TO/P3.4 14 定时器0的外部输入
    T1/P3.5 15 定时器1的外部输入
    WR/P3.6 16 外部数据存储器写选通
    RD/P3.7 17 外部数据存储器读选通
    XTAL2 18 振荡器反相放大器的输入端
    XTAL1 19 振荡器反相放大器和内部时钟发生电路的输入端
    VSS 20 接地(GND)端
    P2.0/A8 ~ P2.7/A15 21 ~ 28 带内部上拉电阻的8位双向I/O端口 可输入或输出数据
    PSEN 29 外ROM读选通信号 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号
    ALE/PROG 30 地址锁存允许/片内EPROM编程脉冲 ALE:用来锁存P0口送出的低8位地址 PROG:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲
    EA 31 访问外部程序存储器控制信号 为了执行内部程序指令,应该接电源正极
    P0.0/AD0 ~ P0.7/AD7 32 ~ 39 漏极开路的8位双向I/O口 可输入或输出数据
    VCC 40 电源正极输入 接电源正极

    综上,使用STC 89C52RC构建51最小系统电路,STC
    89C52RC的引脚一共需要连接6处。要连接的6个引脚的“管脚符号”已使用红色字体标出,各自如何连接已用注释阐明。

    补充:表格注释:
    在这里插入图片描述

    电路图

    在这里插入图片描述

    这是官方文档中描述的51最小系统电路图。

    在这里插入图片描述
    这是另外绘制的高清简洁版51最小系统电路图。

    最小系统电路搭建

    1. 按照上一个标题中另外绘制的“STC 89C52RC最小系统
      电路图”,在面包板上将原件都插装好。

    2. 插装好后如图所示:
      在这里插入图片描述

    下图是后来改进的新搭建方式。比之前更清晰,该拐弯的地方拐弯腾出地方来,减少交叉,更便于观察和理解。
    在这里插入图片描述

    烧写程序

    烧写程序,需要使用USB转TTL来实现。在最小系统电路上进行添加。

    电路升级

    在这里插入图片描述

    • 原电路需要和USB转TTL程序下载器相连来烧写程序。因为USB转TTL下载器有5V电源输出,所以不烧写程序一直连着也充当了电源的角色。

    • USB转TTL程序下载器关键的地方在于:下载器的TXD、RXD针脚要和芯片的TXD、RXD引脚反着接。
      在这里插入图片描述

    • 在USB转TTL下载器上,只需要接4个针脚即可,3.3V的不用接。

    软件环境安装及配置

    开始之前

    烧写51单片机程序所需的环境和软件如下:

    1. USB转TTL下载器驱动程序(这里使用的是CH340芯片的USB转TTL下载器)

    2. Keil for C51 IDE(Version 4)

    3. STC-ISP(V6.85I)

    注意:

    • Win10下安装下载器驱动程序要以禁用签名驱动方式启动后再安装

    • Keil IDE不要下载成ARM版本的,里面没有C51的相关CPU选项

    安装USB转TTL驱动程序

    百度搜索CH340驱动程序,下载安装即可

    安装Keil IDE

    百度搜索“keilc51”,下载安装即可。里面一般有破解教程,按步骤来即可。注意版本最好是Version
    4。

    安装STC-ISP

    百度搜索“STC-ISP”,下载安装即可。此软件免安装,下载解压后双击即可运行。

    注意:

    • 此软件中也提供了诸如CH340的驱动,也要安装一下。

    使用Keil编写点亮一个LED的程序

    1. 点击“Project” – “New project”,选择项目文件的保存位置,然后保存。

    2. 弹出“选择CPU设备类型”对话框,在左侧树中依次选择“Atmel” –
      “AT89C52”,点击“OK”即可。

    3. 点击“File” – “New”创建一个空文件,直接点击保存,保存为后缀名为c的c语言文件。

    4. 在左侧“Project”选项卡中,找到“Source Group 1”,右键点击“Add Files to
      Group‘Source Group
      1’”,选择刚才保存的后缀名为c的c语言文件,点击“Add”后关闭对话框。

    5. 在c语言文件中写入以下代码:

    #include <reg52.h>
    
    sbit led = P2^0;
    void main()
    {
    	led=0;
    }
    
    1. 保存后,点击以下图标设置输出hex文件:
      在这里插入图片描述

    2. 在弹出的对话框中,切换到“Output”选项卡,勾选“Create HEX
      File”,值保持默认,点击“OK”即可。

    3. 保存后,点击以下图标开始编译:
      在这里插入图片描述

    4. 输出结果:

    Build target 'Target 1'
    
    assembling STARTUP.A51...
    
    compiling hello-led.c...
    
    linking...
    
    Program Size: data=9.0 xdata=0 code=18
    
    creating hex file from "hello-led"...
    
    >   "hello-led" - 0 Error(s), 0 Warning(s).
    

    以上表示编译成功。会在项目的同级目录下生成一个以hex为后缀名的文件。

    使用STC-ISP软件烧录程序

    1. 此时确保USB转TTL驱动程序都已安装好,USB转TTL下载器已插在电脑的USB口上。
      下载器插入以后,系统会自动检测USB设备,同时在“设备管理器”中的“端口”中也会有此设备对应的COM端口。

    2. 打开STC-ISP软件,首先选择“单片机型号”。这里选择“STC89C52RC”。
      在这里插入图片描述

    3. 检查“串口号”是否检测出下载器的COM端口。
      在这里插入图片描述
      以上就是成功检测到下载器。

    4. 点击“打开程序文件”,选择刚才生成的hex文件。
      在这里插入图片描述

    5. 点击“下载/编程”:
      在这里插入图片描述

    6. 此时,先将USB转TTL下载器5V的电源线拔掉,然后再接上,以触发冷启动后监听重新握手来实现程序的刷入。

    7. 软件日志输出框内输出结果:

    正在重新握手 ... 成功 [0.594"]
    
    当前的波特率: 115200
    
    正在擦除目标区域 ... 完成 ! [0.312"]
    
    正在下载用户代码 ... 完成 ! [0.109"]
    
    正在设置硬件选项 ... 完成 ! [0.016"]
    
    更新后的硬件选项为:
    
    . 当前的时钟频率: 11.088MHz
    
    . 系统频率为12T(单倍速)模式
    
    . 振荡器的放大增益不降低
    
    . 当看门狗启动后,任何复位都可停止看门狗
    
    . MCU内部的扩展RAM可用
    
    . ALE脚的功能选择仍然为ALE功能脚
    
    . P1.0和P1.1与下次下载无关
    
    . 下次下载用户程序时,不擦除用户EEPROM区
    
    单片机型号: STC89C52RC/LE52RC
    
    固件版本号: 6.6.4C
    
    操作成功 !
    

    以上即表示程序烧写成功,程序会立即执行。

    1. 看到LED成功被点亮。
      在这里插入图片描述

    扩展

    1. 程序烧写好了,只要电源一直供电,程序就会永久执行下去。但是不想一直插着下载器,太累赘。后来使用手机数据线(必须是4芯的,刚开始不知道找了个什么设备上的USB线,居然是2芯的),剥开以后,将红色线接电源正极输入,黑色线接GND,USB线接任意的USB口上都可以,51单片机正常运行。

    2. LED 间隔1秒亮灭切换代码:

    #include <reg52.h>
    
    sbit led = P2^0;
    
    void delay(int n) {
    	int i, j;
    	for(i = n; i > 0; i--)
    	for(j = 110; j > 0; j--);
    }
    
    void main()
    {
    	while(1) {
    
    		led=~led;
    		delay(1000);
    
    	}
    }
    
    
    展开全文
  • 这个我用了 proteus8.6亲测能打开 如果用这个配合视频学习起来很轻松 而且初学者用仿真我个人觉得比用实物要好不少
  • 它主要采用了常见的STC89C52RC单片机作为主控制器,采用光电耦合器进行信号转换,用市场上采购的食人鱼LED灯条改装成八组LED扫描灯。能够产生拖尾和呼吸等效果,还可以进行底盘灯和无线遥控等功能的扩展。  0 引言...
  • 本设计单片机采用AT89C52芯片,数字温度传感器采用美国DALASS公司的1–Wire器件DS18B20,即单总线器件DS18B20,与单片机组成一个测温系统,当系统上电时,温度传感器就会读出当前环境的温度,并在三位LED数模显示管...
  • 程序仿真电路 本设计主要内容如下: (1)风速设为从低到高共2个档位,可由用户通过键盘设定。 (2)每当温度低于下限值时,则电风扇风速关闭。 (3)每当温度在下限和上限之间时,则电风扇转速缓慢。 (4))每当温度高于上限...
  • mini51单片机 stc89c52rc

    2019-06-29 17:55:14
    烧程序怎么去测试该是哪个端口号?[img=https://img-bbs.csdn.net/upload/201906/29/1561802089_910496.jpg][/img]
  • 静态数码管显示 #include<reg51.h> #include<instrins.h> typedef unsigned char u8; typedef unsigned int u16; sbit LSA=P2^2;...u8 code smgduan[]={ 0x3f , 0x06 , 0x5b , ...

    静态数码管显示

    #include<reg51.h>
    #include<instrins.h>
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    
    u8 code smgduan[]={ 0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d,
    					0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c,
    					0x39 , 0x5e , 0x79 , 0x71 , 0x00};
    
    void delay(int i)
    {
    	while(i--);
    }
    int main()
    {
    	int i;
    	LSA=0;
    	LSB=0;
    	LSC=0;
    	while(1){
    		for(i=0;i<=9;i++){
    			P0=smgduan[i];
    			delay(50000);
    		}
    	}
    }
    	
    

    动态数码管显示

    #include<reg51.h>
    #include<intrins.h>
    typedef unsigned char u8;
    typedef unsigned int u16;
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    
    void delay(int i)
    {
    	while(i--);
    }
    //段选
    u8 code smgduan[]={ 0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d,
    					0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c,
    					0x39 , 0x5e , 0x79 , 0x71 , 0x00};
    typedef struct sortled{
    	int x,y,z;
    }sortled;
    sortled led[8]={{0,0,0},{1,0,0},{0,1,0},{1,1,0},{0,0,1},
    								{1,0,1},{0,1,1},{1,1,1},};
    void DigDisplay()
    {
    	u8 i;
    	for(i=0;i<8;i++)
    	{
    		LSA=led[i].x;
    		LSB=led[i].y;
    		LSC=led[i].z;
    		P0=smgduan[i];
    		delay(100);  //消影
    		P0=0x00;     //P0口数字清零
    	}
    }
    
    int main()
    {
    	int i;
    	while(1){
    		for(i=0;i<=9;i++){
    			DigDisplay();
    		}
    	}
    }
    	
    
    展开全文
  • 普中A2开发板,单片机stc89c52,步进电机28BYJ-48,驱动ULN2003,旋转某个设定的角度 注意:步进电机内有一个转子(在电机的内部,看不到),外部还有一个旋转的转子(就是直接能看见的),它俩旋转的角度不是一样...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,609
精华内容 1,043
关键字:

单片机stc89c52