找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3848|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)直接驅(qū)動(dòng)40-IO驅(qū)動(dòng)段碼LCD_6個(gè)8

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
IO直接驅(qū)動(dòng)LCD

單片機(jī)源程序如下:
  1. #include         <intrins.h>
  2. #include        "config.h"
  3. #include        "timer.h"
  4. #include        "LCD_IO16.h"


  5. /*************        功能說明        **************

  6. 用STC115系列測試IO直接驅(qū)動(dòng)段碼LCD(6個(gè)8字LCD, 1/4 Dutys, 1/3 bias)。

  7. 上電后顯示一個(gè)時(shí)間(時(shí)分秒).

  8. P3.2對(duì)地接一個(gè)開關(guān),用來進(jìn)入睡眠或喚醒.


  9. ******************************************/

  10. /*************        本地常量聲明        **************/





  11. /*************        本地變量聲明        **************/
  12. u8        cnt_500ms;
  13. u8        second,minute,hour;
  14. bit        B_Second;        //秒信號(hào)

  15. /*************        本地函數(shù)聲明        **************/



  16. /*************  外部函數(shù)和變量聲明 *****************/
  17. extern        bit        B_2ms;



  18. /************************ 定時(shí)器配置 ****************************/
  19. void        Timer_config(void)
  20. {
  21.         TIM_InitTypeDef                TIM_InitStructure;                                        //結(jié)構(gòu)定義
  22.         TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
  23.         TIM_InitStructure.TIM_Polity    = PolityLow;                        //指定中斷優(yōu)先級(jí), PolityHigh,PolityLow
  24.         TIM_InitStructure.TIM_Interrupt = ENABLE;                                //中斷是否允許,   ENABLE或DISABLE
  25.         TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;                        //指定時(shí)鐘源,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
  26.         TIM_InitStructure.TIM_ClkOut    = DISABLE;                                //是否輸出高速脈沖, ENABLE或DISABLE
  27.         TIM_InitStructure.TIM_Value     = 65536 - (MAIN_Fosc / 500);        //初值, 節(jié)拍為500HZ
  28.         TIM_InitStructure.TIM_Run       = ENABLE;                                //是否初始化后啟動(dòng)定時(shí)器, ENABLE或DISABLE
  29.         Timer_Inilize(Timer0,&TIM_InitStructure);                                //初始化Timer0          Timer0,Timer1,Timer2
  30. }

  31. /******************** 顯示時(shí)間 **************************/
  32. void        LoadRTC(void)
  33. {
  34.         LCD_load(1,hour/10);
  35.         LCD_load(2,hour%10);
  36.         LCD_load(3,minute/10);
  37.         LCD_load(4,minute%10);
  38.         LCD_load(5,second/10);
  39.         LCD_load(6,second%10);
  40. }

  41. //========================================================================
  42. // 函數(shù): void  delay_ms(unsigned char ms)
  43. // 描述: 延時(shí)函數(shù)。
  44. // 參數(shù): ms,要延時(shí)的ms數(shù), 這里只支持1~255ms. 自動(dòng)適應(yīng)主時(shí)鐘.
  45. // 返回: none.
  46. // 版本: VER1.0
  47. // 日期: 2013-4-1
  48. // 備注:
  49. //========================================================================
  50. void  delay_ms(u8 ms)
  51. {
  52.      unsigned int i;
  53.          do{
  54.               i = MAIN_Fosc / 13000;
  55.                   while(--i)        ;   //14T per loop
  56.      }while(--ms);
  57. }

  58. /******************** 主函數(shù)**************************/
  59. void main(void)
  60. {

  61.         Init_LCD_Buffer();
  62.         Timer_config();
  63.         EA = 1;

  64.         LCD_SET_2M;        //顯示時(shí)分間隔:
  65.         LCD_SET_4M;        //顯示分秒間隔:
  66.         LoadRTC();        //顯示時(shí)間
  67.                                
  68.         while (1)
  69.         {
  70.                 PCON |= 0x01;        //為了省電, 進(jìn)入空閑模式(電流大約2.5~3.0mA @5V),由Timer0 2ms喚醒退出
  71.                 _nop_();
  72.                 _nop_();
  73.                 _nop_();

  74.                 if(B_2ms)        //2ms節(jié)拍到
  75.                 {
  76.                         B_2ms = 0;

  77.                         if(++cnt_500ms >= 250)        //500ms到
  78.                         {
  79.                                 cnt_500ms = 0;
  80.                         //        LCD_FLASH_2M;        //閃爍時(shí)分間隔:
  81.                         //        LCD_FLASH_4M;        //閃爍分秒間隔:
  82.                        
  83.                                 B_Second = ~B_Second;
  84.                                 if(B_Second)
  85.                                 {
  86.                                         if(++second >= 60)        //1分鐘到
  87.                                         {
  88.                                                 second = 0;
  89.                                                 if(++minute >= 60)        //1小時(shí)到
  90.                                                 {
  91.                                                         minute = 0;
  92.                                                         if(++hour >= 24)        hour = 0;        //24小時(shí)到
  93.                                                 }
  94.                                         }
  95.                                         LoadRTC();        //顯示時(shí)間
  96.                                 }
  97.                         }
  98.                
  99.                         if(!P32)        //鍵按下,準(zhǔn)備睡眠
  100.                         {
  101.                                 LCD_CLR_2M;        //顯示時(shí)分間隔:
  102.                                 LCD_CLR_4M;        //顯示分秒間隔:
  103.                                 LCD_load(1,DIS_BLACK);
  104.                                 LCD_load(2,DIS_BLACK);
  105.                                 LCD_load(3,0);
  106.                                 LCD_load(4,0x0F);
  107.                                 LCD_load(5,0x0F);
  108.                                 LCD_load(6,DIS_BLACK);
  109.                                
  110.                                 while(!P32)        delay_ms(10);        //等待釋放按鍵
  111.                                 delay_ms(50);
  112.                                 while(!P32)        delay_ms(10);        //再次等待釋放按鍵
  113.                                
  114.                                 TR0 = 0;        //關(guān)閉定時(shí)器
  115.                                 IE0 = 0;        //外中斷0標(biāo)志位
  116.                                 EX0 = 1;        //INT0 Enable
  117.                                 IT0 = 1;        //INT0 下降沿中斷               

  118.                                 P1n_push_pull(0xff);        //com和seg全部輸出0
  119.                                 P2n_push_pull(0xff);        //com和seg全部輸出0
  120.                                 P1 = 0;
  121.                                 P2 = 0;

  122.                                 PCON |= 0x02;        //Sleep
  123.                                 _nop_();
  124.                                 _nop_();
  125.                                 _nop_();
  126. ……………………

  127. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
40-IO-LCD-8x6-2014-6-19.rar (1.72 MB, 下載次數(shù): 54)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:212386 發(fā)表于 2018-9-5 15:12 | 只看該作者
請(qǐng)問怎么做呀,我查了許多資料,不太懂,求大神解決
回復(fù)

使用道具 舉報(bào)

板凳
ID:269418 發(fā)表于 2021-1-30 21:34 | 只看該作者
應(yīng)該很不錯(cuò)非常需要
回復(fù)

使用道具 舉報(bào)

地板
ID:970519 發(fā)表于 2022-8-25 14:41 | 只看該作者
LCD段碼 I.O直驅(qū)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表