欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序.doc

    • 资源ID:28485625       资源大小:151.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序经典按键控制数码管C程序#include     <htc.h>         #define     HC595_SER      RB7         #define     HC595_SCK       RB6         #define     HC595_RCK       RB5         #define     key_164_data     RB3        #define     key_164_clk      RB2        #define     key_com1         RB1        #define     key_com0         RB0        #define     TURE     1        bit     key_finish;      /定义的位变量,这是PICmate仿真软件环境的特有的地方        unsigned int     sample_key;        unsigned int     sample_keyBuf2;        unsigned int     key_value;        unsigned char key_row_sel;        unsigned char key_number;/键号       unsigned int     T100ms;        unsigned char disbuf8;       const unsigned char seven_seg16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;        /-        void disbuf_update(void)                    if(key_number>=16)                            disbuf0=0xff;                disbuf1=0xff;                disbuf2=0xff;                disbuf3=0xff;                disbuf4=0xff;                disbuf5=0xff;                disbuf6=0xff;                disbuf7=0xff;                return;                        disbuf0=seven_segkey_number;            disbuf1=seven_segkey_number;            disbuf2=seven_segkey_number;            disbuf3=seven_segkey_number;            disbuf4=seven_segkey_number;            disbuf5=seven_segkey_number;            disbuf6=seven_segkey_number;            disbuf7=seven_segkey_number;                /-        void inite_time0(void)        /对timer0中断进行初始化                   PSA=0;            T0CS=0;            T0IF=0;            GIE=1;            T0IE=1;            TMR0=0xf0;           PS0=1;            PS1=1;            PS2=1;                /-       /发送一个字节        void s_pData(unsigned char key)           /形参key对应着实参disbufi                    unsigned char i;           for(i=0;i<8;i+)                            if(0x80&(key<<i)                    HC595_SER=1;               else HC595_SER=0;                HC595_SCK=0;                HC595_SCK=1;                            /-        /发送一个字节        void Key_s_pData(unsigned char key)                    unsigned char i;            for(i=0;i<8;i+)                            if(0x80&(key<<i)                    key_164_data=1;                else                    key_164_data=0;                key_164_clk=0;                key_164_clk=1;                            /-        void display (void)                   unsigned char i;           for(i=0;i<8;i+)               s_pData(disbufi);           HC595_RCK=0;           HC595_RCK=1;              /-       void key_process(void)                 unsigned char i;           for(i=0;i<16;i+)                         if( (key_value&(0x0001<<i) )                                  key_number=i;                  return;                                        /-       /主程序       int main(void)                 PORTB=0;           TRISB=0x03;           inite_time0();           key_number=0xff;           while(1)                          if(key_finish=TURE)               /按键扫描成功                   key_process();                   key_finish=0;                              if(T100ms<10)                   continue;               T100ms=0;               disbuf_update();               display();                         /-       void scan_key(void)                  sample_key =sample_key<<1;           if(key_com1)               sample_key |=0x0001;           sample_key =sample_key<<1;           if(key_com0)               sample_key |=0x0001;           key_row_sel+;           if(key_row_sel<8)                          Key_s_pData(1<<key_row_sel);               return;                      key_row_sel=0;           Key_s_pData(1<<key_row_sel);           sample_keyBuf0=sample_key;           if(sample_keyBuf1!=sample_keyBuf0)                          sample_keyBuf1=sample_keyBuf0;               return;                      key_value=sample_keyBuf0;           if(key_value!=0)               key_finish=TURE;              /-       /2ms中断       interrupt       void time_int(void)                  if(T0IF=1)                          T0IF=0;               TMR0=0xf0;              T100ms+;               scan_key();                  -

    注意事项

    本文(用PIC16F877A单片机驱动按键控制8个数码管的显示的C程序.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开