打印

学习PIC单片机的基础模块的C程序例子大集合

[复制链接]
2608|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fgjyt|  楼主 | 2010-11-19 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序为网上收集,供大家学习和参考。

下面贴出来的程序的内容如下:

AD程序实现模拟量到数字量的转换功能;
CAN程序实现CAN总线通讯功能;
keyboard_check程序实现键盘的扫描查询方式输入;
keyboard_disturb程序实现PORTB的"电平变化中断"进行键盘的输入;
led0-8程序实现在8个LED上依次显示1~8数字;
PWM程序用于使CCP1模块产生分辨率为10位的PWM波形,占空比为50%;
RS-232程序通过RS-232接口来完成PC计算机与单片机之间的通信;
simple_POARD程序为外围功能模块简单应用实例,点亮与PORTD口相连的八个发光二极管;
stopwatch程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度为0.01秒;
switchinput程序用于开关量的输入(采用SPI总线),并显示在与D口相连的LED上;
wakeup程序实现PIC18F458的休眠工作方式,并由实验板上的按键产生"电平变化中断"将其从休眠状态中激活;
WDT程序实现"看门狗"WDT的功能;
Yejing程序实现液晶显示器的接口和显示功能。


//该程序用于在8个LED上依次显示1~8

#include    "p18f458.h"

static volatile int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
volatile unsigned char data;

/*初始化子程序*/
void    initial()
{
    TRISA=0x00;                /*A口设置为输出*/
    TRISC=0x00;                /*SDO引脚为输出,SCK引脚为输出*/
    INTCON=0x00;                /*关闭所有中断*/
    SSPCON1=0x30;                /*SSPEN=1;CKP=1,FOSC/4*/
    SSPSTAT=0xC0;                /*时钟下降沿发送数据*/
    PIR1=0;                    /*清除SSPIF标志*/     
}

/*显示子程序*/
void    SPILED(char data)
{
    PORTAbits.RA5=0;                /*LACK送低电平,为锁存做准备*/
    SSPBUF=data;                /*启动发送*/
    do
    {
    ;
    }while(PIR1bits.SSPIF==0);                             /*等待发送完毕*/
    PIR1bits.SSPIF=0;                /*清除SSPIF标志*/
    PORTAbits.RA5=1;                /*最后给锁存信号,代表显示任务完成*/
}

/*主程序*/
main()
{
    unsigned  i;
    initial();                    /*系统初始化*/
     for(i=8;i>0;i--)                /*连续发送8个数据*/
      {
        data=table;            /*通过数组的转换获得待显示的段码*/     
        SPILED(data);            /*发送显示段码显示*/         
      }
    for(;;)
    {
    }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

17

帖子

1

粉丝