找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
跳转到指定楼层
楼主
首先,本人原理图的水平有限,所以希望大家不要介意。
接下来我就废话少说直接上代码咯!

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


单片机源程序如下:
  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 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:686083 发表于 2020-1-17 17:26 | 只看该作者
你这个程序试过吗?
回复

使用道具 举报

板凳
ID:93483 发表于 2020-1-17 22:08 | 只看该作者
九齐ny1p简单
回复

使用道具 举报

地板
ID:403447 发表于 2020-2-29 11:40 | 只看该作者
谢谢楼主,先收藏了
回复

使用道具 举报

5#
ID:383374 发表于 2020-3-4 02:10 来自手机 | 只看该作者
程霖 发表于 2020-1-17 22:08
九齐ny1p简单

我想学有建议不?
回复

使用道具 举报

6#
ID:726786 发表于 2020-4-11 12:10 | 只看该作者
请问这个单片机用什么IDE呢?网上没搜索到
回复

使用道具 举报

7#
ID:403447 发表于 2020-5-29 09:01 | 只看该作者
请问各位大侠,九齐单片机用什么软件开发?
回复

使用道具 举报

8#
ID:580781 发表于 2020-6-26 19:09 | 只看该作者
大米861 发表于 2020-5-29 09:01
请问各位大侠,九齐单片机用什么软件开发?

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

使用道具 举报

9#
ID:143209 发表于 2020-6-30 22:49 | 只看该作者
使用九齐的芯片怎么样?
回复

使用道具 举报

10#
ID:136083 发表于 2021-2-18 09:58 | 只看该作者
jackenli 发表于 2020-6-30 22:49
使用九齐的芯片怎么样?

九齐的还可以,用得很多的,比应广的好。
回复

使用道具 举报

11#
ID:574482 发表于 2021-4-27 14:30 | 只看该作者
在学,很不友好,学到想砸电脑,要不是芯片涨价,
回复

使用道具 举报

12#
ID:521488 发表于 2021-5-8 21:25 | 只看该作者
汇编的有没有呀。
回复

使用道具 举报

13#
ID:390071 发表于 2021-5-30 01:11 | 只看该作者
shh.yang 发表于 2020-4-11 12:10
请问这个单片机用什么IDE呢?网上没搜索到

NYIDE 4.20
回复

使用道具 举报

14#
ID:511924 发表于 2021-6-18 20:26 | 只看该作者

刚刚开始学,一起呀。。。。。。
回复

使用道具 举报

15#
ID:615192 发表于 2021-6-28 09:39 | 只看该作者
CS801380 发表于 2021-6-18 20:26
刚刚开始学,一起呀。。。。。。

我也刚开始学这个。。。。。。
回复

使用道具 举报

16#
ID:927615 发表于 2021-6-30 22:32 来自手机 | 只看该作者
今天试了,不成功
回复

使用道具 举报

17#
ID:577423 发表于 2021-7-13 19:37 | 只看该作者
只要会51单片机学这个不难,大同小异,关键字不一样
回复

使用道具 举报

18#
ID:953214 发表于 2021-7-16 12:07 | 只看该作者
CS801380 发表于 2021-6-18 20:26
刚刚开始学,一起呀。。。。。。

我也刚开始学这个。。。。。。
回复

使用道具 举报

19#
ID:65880 发表于 2021-7-25 10:17 | 只看该作者
谢谢分享,烧录看看效果
回复

使用道具 举报

20#
ID:415044 发表于 2021-11-5 16:22 | 只看该作者
你好,开发环境是哪个,能分享吗
回复

使用道具 举报

21#
ID:113149 发表于 2021-11-14 00:26 | 只看该作者

九齐的单片机还是很有市场的,主要是价格便宜,做一些小商品性价比挺高的,比如小家电、小玩具之类的,就是仿真器和烧录器贵得离谱
回复

使用道具 举报

22#
ID:734899 发表于 2022-4-9 09:29 | 只看该作者
用的是九齐的哪一款呢?
回复

使用道具 举报

23#
ID:44347 发表于 2022-5-22 21:01 | 只看该作者
很好的 九齐C语言程序,美中不足的,就是没有详细的注释
回复

使用道具 举报

24#
ID:44347 发表于 2022-5-22 21:03 | 只看该作者
很好的九齐C语言程序, 要是给些注释 多好呀
回复

使用道具 举报

25#
ID:956508 发表于 2022-7-14 13:30 | 只看该作者
有没有九齐的培训班,我也想学习一下
回复

使用道具 举报

26#
ID:69115 发表于 2022-7-14 21:20 | 只看该作者
王剑龙 发表于 2022-7-14 13:30
有没有九齐的培训班,我也想学习一下

你想用九齐单片机,做那些方面的应用编程?
回复

使用道具 举报

27#
ID:956508 发表于 2022-7-15 16:37 | 只看该作者
xiexugang 发表于 2022-7-14 21:20
你想用九齐单片机,做那些方面的应用编程?

做太阳能灯控制器,电压检测
回复

使用道具 举报

28#
ID:967390 发表于 2022-9-2 12:34 | 只看该作者
我想学有建议不?
回复

使用道具 举报

29#
ID:1089833 发表于 2023-7-27 17:10 | 只看该作者
xiexugang 发表于 2022-7-14 21:20
你想用九齐单片机,做那些方面的应用编程?

你好,我有个NY8B062FS8芯片你能给我写程序吗?
回复

使用道具 举报

30#
ID:105826 发表于 2024-3-2 08:36 | 只看该作者
weibanxian 发表于 2023-7-27 17:10
你好,我有个NY8B062FS8芯片你能给我写程序吗?

刚看到了你去年的这篇贴子,不知道你这个是用来做什么产品?是否已经完成?我这边有在用九齐做一些小型产品的开发,如果有需要你可以回复我,谢谢!
回复

使用道具 举报

31#
ID:1113679 发表于 2024-3-21 13:08 | 只看该作者
bogejiayou 发表于 2024-3-2 08:36
刚看到了你去年的这篇贴子,不知道你这个是用来做什么产品?是否已经完成?我这边有在用九齐做一些小型产 ...

你好可以咨询一些问题吗
回复

使用道具 举报

32#
ID:433219 发表于 2024-3-22 10:46 | 只看该作者
yuyong308 发表于 2020-6-26 19:09
九齐官网有IDE下载,烧录软件,烧录机需要购买

看了官网,没看到C编译器软件,在哪下载的啊??????????
回复

使用道具 举报

33#
ID:433219 发表于 2024-3-22 10:47 | 只看该作者
fang355 发表于 2022-5-22 21:03
很好的九齐C语言程序, 要是给些注释 多好呀

c编译器是哪个,没找到
回复

使用道具 举报

34#
ID:433219 发表于 2024-3-22 17:00 | 只看该作者
wkman 发表于 2024-3-22 10:46
看了官网,没看到C编译器软件,在哪下载的啊??????????

上面的提问解决了。安装97IDE,安装97asm,里面有c编译器
回复

使用道具 举报

35#
ID:433219 发表于 2024-3-22 17:03 | 只看该作者
wkman 发表于 2024-3-22 10:46
看了官网,没看到C编译器软件,在哪下载的啊??????????

编译lz的程序,结果显示是失败的:

------ Start building 2 ------
Build failed.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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