单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2303|回复: 8
收起左侧

给大家分享一个我自己做的九齐MCU呼吸灯的程序哈 并附上原理图

[复制链接]
迟迟不离去 发表于 2019-10-17 14:57 | 显示全部楼层 |阅读模式
首先,本人原理图的水平有限,所以希望大家不要介意。
接下来我就废话少说直接上代码咯!

对咯,这个是我用的一个不常见厂家的芯片,九齐的,有用这款芯片的可以大家一起交流交流呀!
电路原理图如下:
1213.png

单片机源程序如下:
  1. #include <at8.h>
  2. #include "at8_constant.h"

  3. #define W PORTBbits.PB0 //暖光灯
  4. #define G PORTBbits.PB1 //绿灯
  5. #define R PORTBbits.PB2        //红灯
  6. #define B PORTBbits.PB5 //蓝灯
  7. #define KEY PORTBbits.PB3
  8. void delay10ms();
  9. void delay(unsigned char k);
  10. void keyscan();
  11. void MOD();
  12. void qicaideng();
  13. unsigned char c,count,b,p;
  14. unsigned int t,h;
  15. void isr(void) __interrupt(0)
  16. {        
  17.         if(INTFbits.T1IF)
  18.         {
  19.                 p++;
  20.                 if(p==100)//30
  21.                 {
  22.                         p = 0;
  23.                         h++;
  24.                         if(h==2)
  25.                         {        
  26.                                 h = 0;
  27.                                 t++;
  28.                                 if(t==200)
  29.                                 {
  30.                                         t = 0;
  31.                                         c++;
  32.                                         {
  33.                                                 if(c==7)c=0;
  34.                                         }
  35.                                 }
  36.                         }
  37.                 }
  38.                 INTFbits.T1IF = 0;
  39.         }

  40.         if(INTFbits.PBIF)
  41.         {
  42.                 INTFbits.PBIF = 0;
  43.         }
  44. }
  45. void main()
  46. {
  47.         IOSTB = 0X08;
  48.         PORTB = 0X00;
  49.         /******  *****/
  50.         T1CR2=0XD8; //设置分频前不开分频器
  51.     T1CR2=0XD1;            
  52.     T1CR1=0X03;
  53.     TMR1=62;//定时器  97
  54.     INTEbits.T1IE=1;   //定时器1中断
  55.     /******  *****/        
  56.         INTEbits.PBIE = 1;
  57.     BWUCONbits.WUPB3 = 1;//PB口中断
  58.     ENI(); //总中断
  59.         while(1)
  60.         {        
  61.                 keyscan();
  62.                 MOD();
  63.         }
  64. }
  65. void keyscan()
  66. {
  67.         if(KEY == 1)
  68.         {        
  69.                 delay10ms();
  70.                 if(KEY== 1)
  71.                 {
  72.                         W = 0;B = 0;R = 0;G = 0;
  73.                         count++;
  74.                         if(count == 6)count = 1;                        
  75.                         SLEEP();
  76.                         while(KEY == 1);
  77.                         c=0;
  78.                         t=0;
  79.                 }
  80.         }
  81. }
  82. void MOD()
  83. {
  84.         switch(count)
  85.         {
  86.         case 0:PORTB=0X00;break;
  87.         case 1:PORTB=0X01;break;
  88.         case 2:PORTB=0X04;break;
  89.         case 3:PORTB=0X02;break;
  90.         case 4:PORTB=0X20;break;
  91.         case 5:qicaideng();break;
  92.         }
  93. }
  94. void qicaideng()
  95. {        
  96.                
  97.                 if(c == 0)
  98.                 {
  99.                         if(t<100)
  100.                         {
  101.                                 if(p==0)
  102.                                 {PORTB=0X00;}
  103.                                 else if(p==100-t)
  104.                                 {PORTB=0X04;}                                
  105.                         }
  106. //                        else if(t==100)
  107. //                        {
  108. //                                PORTB=0X04;
  109. //                        }
  110.                         else if(t<200)
  111.                         {                                       
  112.                                 if(p==0)
  113.                                 {PORTB=0X04;}        
  114.                                 else if(p==200-t)
  115.                                 {PORTB=0X00;}                        
  116.                         }
  117.                 }
  118.                 if(c == 1)//0x02
  119.                 {
  120.                         if(t<100)
  121.                         {
  122.                                 if(p==0)
  123.                                 {PORTB=0X00;}
  124.                                 else if(p==100-t)
  125.                                 {PORTB=0X02;}                                
  126.                         }
  127. //                        else if(t==100)
  128. //                        {
  129. //                                PORTB=0X04;
  130. //                        }
  131.                         else if(t<200)
  132.                         {                                       
  133.                                 if(p==0)
  134.                                 {PORTB=0X02;}        
  135.                                 else if(p==200-t)
  136.                                 {PORTB=0X00;}                        
  137.                         }
  138.                 }
  139.                 if(c == 2)//0x20
  140.                 {
  141.                         if(t<100)
  142.                         {
  143.                                 if(p==0)
  144.                                 {PORTB=0X00;}
  145.                                 else if(p==100-t)
  146.                                 {PORTB=0X20;}                                
  147.                         }
  148. //                        else if(t==100)
  149. //                        {
  150. //                                PORTB=0X04;
  151. //                        }
  152.                         else if(t<200)
  153.                         {                                       
  154.                                 if(p==0)
  155.                                 {PORTB=0X20;}        
  156.                                 else if(p==200-t)
  157.                                 {PORTB=0X00;}                        
  158.                         }
  159.                 }
  160.                 if(c == 3)//0x06
  161.                 {
  162.                         if(t<100)
  163.                         {
  164.                                 if(p==0)
  165.                                 {PORTB=0X00;}
  166.                                 else if(p==100-t)
  167.                                 {PORTB=0X06;}                                
  168.                         }
  169. //                        else if(t==100)
  170. //                        {
  171. //                                PORTB=0X04;
  172. //                        }
  173.                         else if(t<200)
  174.                         {                                       
  175.                                 if(p==0)
  176.                                 {PORTB=0X06;}        
  177.                                 else if(p==200-t)
  178.                                 {PORTB=0X00;}                        
  179.                         }
  180.                 }
  181.                 if(c == 4)//0x24
  182.                 {
  183.                         if(t<100)
  184.                         {
  185.                                 if(p==0)
  186.                                 {PORTB=0X00;}
  187.                                 else if(p==100-t)
  188.                                 {PORTB=0X24;}                                
  189.                         }
  190. //                        else if(t==100)
  191. //                        {
  192. //                                PORTB=0X04;
  193. //                        }
  194.                         else if(t<200)
  195.                         {                                       
  196.                                 if(p==0)
  197.                                 {PORTB=0X24;}        
  198.                                 else if(p==200-t)
  199.                                 {PORTB=0X00;}                        
  200.                         }
  201.                 }
  202.                 if(c == 5)//0x22
  203.                 {
  204.                         if(t<100)
  205.                         {
  206.                                 if(p==0)
  207.                                 {PORTB=0X00;}
  208.                                 else if(p==100-t)
  209.                                 {PORTB=0X22;}                                
  210.                         }
  211. //                        else if(t==100)
  212. //                        {
  213. //                                PORTB=0X04;
  214. //                        }
  215.                         else if(t<200)
  216.                         {                                       
  217.                                 if(p==0)
  218.                                 {PORTB=0X22;}        
  219.                                 else if(p==200-t)
  220.                                 {PORTB=0X00;}                        
  221.                         }
  222.                 }
  223.                 if(c == 6)//0x26
  224.                 {
  225.                         if(t<100)
  226.                         {
  227.                                 if(p==0)
  228.                                 {PORTB=0X00;}
  229.                                 else if(p==100-t)
  230.                                 {PORTB=0X26;}                                
  231.                         }
  232. //                        else if(t==100)
  233. //                        {
  234. //                                PORTB=0X04;
  235. //                        }
  236.                         else if(t<200)
  237.                         {                                       
  238.                                 if(p==0)
  239.                                 {PORTB=0X26;}        
  240.                                 else if(p==200-t)
  241.                                 {PORTB=0X00;}                        
  242.                         }
  243.                 }
  244. }



  245. void delay10ms()   //误差 0us
  246. {
  247.     unsigned char a,b,c;
  248.     for(c=1;c>0;c--)
  249.         for(b=38;b>0;b--)
  250.             for(a=130;a>0;a--);
  251. }
复制代码




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

zsq1243 发表于 2020-1-17 17:26 | 显示全部楼层
你这个程序试过吗?
回复

使用道具 举报

程霖 发表于 2020-1-17 22:08 | 显示全部楼层
九齐ny1p简单
回复

使用道具 举报

大米861 发表于 2020-2-29 11:40 | 显示全部楼层
谢谢楼主,先收藏了
回复

使用道具 举报

梦园心田 发表于 2020-3-4 02:10 来自手机 | 显示全部楼层
程霖 发表于 2020-1-17 22:08
九齐ny1p简单

我想学有建议不?
回复

使用道具 举报

shh.yang 发表于 2020-4-11 12:10 | 显示全部楼层
请问这个单片机用什么IDE呢?网上没搜索到
回复

使用道具 举报

大米861 发表于 2020-5-29 09:01 | 显示全部楼层
请问各位大侠,九齐单片机用什么软件开发?
回复

使用道具 举报

yuyong308 发表于 2020-6-26 19:09 | 显示全部楼层
大米861 发表于 2020-5-29 09:01
请问各位大侠,九齐单片机用什么软件开发?

九齐官网有IDE下载,烧录软件,烧录机需要购买
回复

使用道具 举报

jackenli 发表于 2020-6-30 22:49 | 显示全部楼层
使用九齐的芯片怎么样?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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