久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2984|回復: 0
打印 上一主題 下一主題
收起左側

單片機驅動LCM1604四行液晶例程

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序如下:
  1. /* Module---------------------------------------------------------------------*/
  2. #define    _MAIN_MODULE_

  3. /* Includes ------------------------------------------------------------------*/
  4. #include "main.h"

  5. /* Private typedef -----------------------------------------------------------*/
  6. #define DATAPORT  P0
  7. sbit  LCD_RS = P1^0;//0指令 1數據
  8. sbit  LCD_RW = P1^1;//0寫 1讀
  9. sbit  LCD_EN = P1^2;//使能信號腳
  10. /* Private define ------------------------------------------------------------*/


  11. /* Private macro -------------------------------------------------------------*/
  12. code const uint8_t revision_date[12] = __DATE__;        //固件生成日期
  13. code const uint8_t revision_time[16] = __TIME__;        //固件生成時間
  14. code const uint8_t revision_ver[13]={" Ver:1.0 \r\n"};//版本信息


  15. /* Private variables ---------------------------------------------------------*/

  16. /* Private function prototypes -----------------------------------------------*/

  17. /* Private functions ---------------------------------------------------------*/

  18. unsigned int time_ms;
  19. unsigned char  seg[]={
  20. "  LCD1604 Demo  "
  21. "  By    Liming  "
  22. "   2021-06-15   "
  23. "  PM: --:--:--  "
  24. };

  25. void IO_Init(void)
  26. {
  27.   P0M0 = 0x00;P0M1 = 0X00;
  28.     P1M0 = 0x07;P1M1 = 0X00;
  29. }
  30. /*******************************************************************************
  31.   * @brief  None
  32.   * @param  None
  33.   * @retval None
  34. ****************************************************************Author:Liming**/
  35. void TIM0_Init(void)    //1毫秒@22.1184MHz
  36. {
  37.   AUXR |= 0x80;   //定時器時鐘1T模式
  38.   TMOD &= 0xF0;   //設置定時器模式
  39.   TL0 = 0x9A;   //設置定時初值
  40.   TH0 = 0xA9;   //設置定時初值
  41.   TF0 = 0;    //清除TF0標志
  42.   ET0 = 1;    //定時器0中斷開啟
  43.   TR0 = 1;    //定時器0開始計時
  44.   EA = 1;
  45. }
  46. void TIM0_int (void) interrupt 1
  47. {
  48.   if(time_ms>0)time_ms--;
  49.   if(task1s)task1s--;  
  50. }
  51. void Delay(unsigned int t)
  52. {   
  53.     time_ms = t;
  54.     while(time_ms);
  55. }

  56. uint8_t LCD1604_ReadSta(void)
  57. {
  58.   uint8_t res;

  59.   LCD_RS = 0;
  60.   LCD_RW = 1;
  61.   LCD_EN = 1;Delay(5);
  62.   res = DATAPORT;
  63.   LCD_EN = 0;
  64.   return res;
  65. }


  66. void LCD1604_BusyWait(void)
  67. {
  68.   /*當P0^7為低電平時,P0口為空閑狀態*/
  69.   while((LCD1604_ReadSta()&0x80)==0x80);
  70.   Delay(1);
  71. }

  72. void LCD1604_WriteCmd(unsigned char Cmd)
  73. {
  74.   LCD1604_BusyWait();
  75.   LCD_RS = 0;
  76.   LCD_RW = 0;
  77.   DATAPORT = Cmd;
  78.   LCD_EN = 1;Delay(10);
  79.   LCD_EN = 0;
  80. }


  81. void LCD1604_WriteDat(unsigned char Dat)
  82. {
  83.   LCD1604_BusyWait();
  84.   LCD_RS = 1;
  85.   LCD_RW = 0;
  86.   DATAPORT = Dat;
  87.   LCD_EN = 1;
  88.   Delay(10);
  89.   LCD_EN = 0;
  90. }

  91. void initial(void){
  92.   LCD1604_WriteCmd(0x38);
  93.   LCD1604_WriteCmd(0x01);
  94.   LCD1604_WriteCmd(0x06);
  95.   LCD1604_WriteCmd(0x0c);
  96. }
  97.                                                                         
  98. void main(void){

  99.   unsigned char data_index;
  100.   unsigned char i;
  101.   
  102.   TIM0_Init();  //SysTick 1ms
  103.   initial();        //初始化LCD
  104.   while(1){
  105.     if(task1s==0)
  106.     {
  107.       task1s = 1000;sec++;
  108.       if(sec>=60){
  109.         sec = 0;min++;
  110.         if(min>=60){
  111.           min = 0;hour++;
  112.           if(hour>=12)hour = 0;
  113.         }
  114.       }
  115.       seg[54] = (hour/10)+'0';
  116.       seg[55] = (hour%10)+'0';
  117.       seg[57] = (min/10)+'0';
  118.       seg[58] = (min%10)+'0';
  119.       seg[60] = (sec/10)+'0';
  120.       seg[61] = (sec%10)+'0';
  121.   
  122.       data_index = 0;
  123.       LCD1604_WriteCmd(0x80);//第一行
  124.       while(data_index<=15){LCD1604_WriteDat(seg[data_index]);data_index++;}
  125.       LCD1604_WriteCmd(0xc0);//第二行
  126.       while(data_index<=31){LCD1604_WriteDat(seg[data_index]);data_index++;}
  127.       LCD1604_WriteCmd(0x90);//第三行
  128.       while(data_index<=47){LCD1604_WriteDat(seg[data_index]);data_index++;}
  129.       LCD1604_WriteCmd(0xd0);//第四行
  130.       while(data_index<=63){LCD1604_WriteDat(seg[data_index]);data_index++;}
  131.     }
  132. }
  133. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线资源 | 亚洲精品一区国产精品 | 91麻豆精品国产91久久久资源速度 | 亚洲综合无码一区二区 | 国产高清在线 | 亚洲精品高清视频在线观看 | 一区二区三区av夏目彩春 | 91婷婷韩国欧美一区二区 | 精品视频免费 | 亚洲国产精品久久久久 | 亚洲视频在线观看 | 日韩伦理电影免费在线观看 | 欧美成人aaa级毛片在线视频 | 第四色影音先锋 | 国产精品久久久久久久岛一牛影视 | av色在线 | 国产美女黄色片 | 欧美精品一区二区三区在线播放 | 天天干干 | av在线免费网 | 日韩免费一区二区 | 91亚洲视频在线 | 97人人澡人人爽91综合色 | 天天天操操操 | 精品国产91乱码一区二区三区 | 免费成人高清在线视频 | 成av人电影在线 | 免费久久精品视频 | 欧美大片黄 | 中文字幕av亚洲精品一部二部 | 欧美成人精品一区二区男人看 | 亚洲精品一区二区三区蜜桃久 | 国产日产精品一区二区三区四区 | 夜久久 | 日韩精品久久 | 精品一级 | 一级黄色短片 | 最新国产视频 | 欧美精品第一区 | 久久青视频 | 在线成人免费视频 |