找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3146|回复: 1
打印 上一主题 下一主题
收起左侧

中颖单片机SH88F516之LED流水灯源程序

[复制链接]
跳转到指定楼层
楼主
ID:246796 发表于 2017-11-18 04:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中颖单片机实现流水灯的源码如下:
  1. /********************************************************************************************************
  2. 说明: 使用了外部中断4,定时器中断1,实现了跑马灯程序
  3. 本程序通过按键S1改变LED灯工作的数量,按键S2改变LED灯闪烁的频率,实现跑马灯的效果  
  4. 要求:打开拨码开关J8
  5. *********************************************************************************************************/
  6. #include <sh88f516.h>

  7. unsigned char Num,Fnum;
  8. unsigned char Disp;
  9. unsigned char Time0Count;
  10. bit DispFlag;
  11. void mcu_init();

  12. main()
  13. {

  14.         mcu_init();
  15.                                        
  16.     while(1)
  17.         {

  18.                 if(DispFlag)
  19.                 {
  20.                         DispFlag = 0;

  21.                     P0 = (P0&0xFC) | (Disp&0x03);                //端口0的低2位对应LED灯的D2 D3
  22.                         P1 = (P1&0x03) | (Disp&0xFC);            //端口1的高6位对应LED灯的D4-D9

  23.                         Disp <<= 1;
  24.                         if(CY)
  25.                             Disp |= 0x01;
  26.                 }

  27.         }

  28. }



  29. void mcu_init()
  30. {

  31.         CLKCON = 0x60;        //系统频率=晶振频率/12

  32.         P0M0 = 0x00;
  33.         P0M1 = 0xFF;        //推挽输出模式

  34.         P1M0 = 0x00;
  35.         P1M1 = 0xFF;        //推挽输出模式

  36.         IENC = 0x70;        //0111 0000 外部中断4的选择寄存器,1-打开,0-关闭
  37.         EXF0 = 0x80;        //上升沿触发

  38.         TH0 = 0xFA;
  39.         TL0 = 0x00;       
  40.         TMOD = 0x01;        // Timer 0 is 16-bit counter, timer mode
  41.         ET0 = 1;            //enable timer 0 interrupt
  42.         TR0 = 1;            //enable timer 0

  43.         IEN1 = 0x40;        //ELPD EX4  EPWM ESCM    ECMP1 ES1 ECMP0 ESPI         0100 0000
  44.         EA = 1;                        //开启总中断

  45.         Num = 0;
  46.         Fnum = 4;
  47.         DispFlag = 1;
  48.         P0 = 0;
  49.         P1 = 0;
  50.         P2 =P2 |0x80;
  51.         Disp = 0x01;


  52. }

  53. void Timer0_int() interrupt 1
  54. {
  55.         Time0Count++;
  56.         if(Time0Count>=Fnum)
  57.         {
  58.                 Time0Count = 0;
  59.                 DispFlag = 1;
  60.         }
  61. }


  62. void EX4_INT() interrupt 13  //using 2  //外部中断4的中断号为13.
  63. {
  64.        
  65.         IEN1 &= 0xBF;

  66.         if(IF45)                                 //P2.5对应于板子上的S2
  67.         {       
  68.                 Fnum--;
  69.                 if(Fnum==0)
  70.                     Fnum = 6;

  71.         }

  72.         if(IF46)                                 //P2.6对应于板子上的S1
  73.         {       
  74.                 Num++;     
  75.                 if(Num==5)
  76.                     Num  = 0;

  77.                 switch(Num)
  78.                 {
  79.                     case 0:   Disp = 0x01;
  80.                               break;
  81.                         case 1:   Disp = 0x03;
  82.                               break;
  83.                         case 2:   Disp = 0x0F;
  84.                               break;
  85.                         case 3:   Disp = 0x11;
  86.                               break;
  87.                         case 4:   Disp = 0x55;
  88.                               break;
  89. ……………………

  90. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



压缩包里面包含有中颖单片机sh88f516常用功能的源码,中文注释都很详细
下载地址:http://www.51hei.com/bbs/dpj-98300-1.html



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:294632 发表于 2018-3-20 17:53 | 只看该作者
单片机方案开发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表